diff --git a/docs-gen/hook.mjs b/docs-gen/hook.mjs index 3e25a7b5..4066e381 100644 --- a/docs-gen/hook.mjs +++ b/docs-gen/hook.mjs @@ -5,6 +5,7 @@ const ROOT_SDK_NAME_REPLACEMENTS = [ ['@monocloud/auth-nextjs', 'Next.js'], ['@monocloud/auth-node-core', 'Node.js Core'], ['@monocloud/auth-core', 'Node.js'], + ['@monocloud/auth-js-core', 'js-core'], ]; const Type = { @@ -113,17 +114,21 @@ export const load = app => { if (type === Type.Types_Enums) { const typesLen = page.model.type.types.length; const items = []; + for (let i = 0; i < typesLen; i++) { - const item = { - value: page.model.type.types[i].value, - type: page.model.type.types[i].type, - description: page.model.type.elementSummaries[i][0].text.replace( - /\n\n/g, - ' ' - ), - }; - - items.push(item); + const summary = page.model.type.elementSummaries?.[i]; + + if (summary) { + const text = summary.map(x => x.text).join(''); + + const item = { + value: page.model.type.types[i].value, + type: page.model.type.types[i].type, + description: text.replace(/\n\n/g, ' '), + }; + + items.push(item); + } } const str = items diff --git a/docs-gen/post-generate.mjs b/docs-gen/post-generate.mjs index 84199964..c1027df0 100644 --- a/docs-gen/post-generate.mjs +++ b/docs-gen/post-generate.mjs @@ -7,6 +7,7 @@ const SDK_SLUGS = { '_monocloud_auth-nextjs': 'nextjs', '_monocloud_auth-node-core': 'nodejs-core', '_monocloud_auth-core': 'nodejs', + '_monocloud_auth-js-core': 'js-core', }; const CATEGORY_MAP = { diff --git a/docs-gen/typedoc.html.mjs b/docs-gen/typedoc.html.mjs index 3fc83950..00b40393 100644 --- a/docs-gen/typedoc.html.mjs +++ b/docs-gen/typedoc.html.mjs @@ -16,6 +16,7 @@ const config = { '../packages/core', '../packages/node-core', '../packages/nextjs', + '../packages/js-core', ], exclude: [ '**/dist/**', diff --git a/docs-gen/typedoc.markdown.mjs b/docs-gen/typedoc.markdown.mjs index 793bb849..b48aab6e 100644 --- a/docs-gen/typedoc.markdown.mjs +++ b/docs-gen/typedoc.markdown.mjs @@ -45,6 +45,7 @@ const config = { '../packages/core', '../packages/node-core', '../packages/nextjs', + '../packages/js-core', ], exclude: [ '**/dist/**', diff --git a/docs/html/assets/hierarchy.js b/docs/html/assets/hierarchy.js index d8219a04..199bc7ec 100644 --- a/docs/html/assets/hierarchy.js +++ b/docs/html/assets/hierarchy.js @@ -1 +1 @@ -window.hierarchyData = "eJytmEFv4zYQhf8Lz4xLcSiK8s0NFmkORYzstpciCASJWauRSVWkgQCL/PeCkpuVVHqXknlK4MPDpxnO8D1+Q53W1qDtXzRNUgyUU0xTkWMAxjDlIDDljGFgKcOUpgmmWSIwMCEwZSTHQCDHlEGCgQiCIaf8CaNOvjSytLVWBm2/IZqkxP1VxVGiLbqvvuhXqW6boj4ahNFrrSq0pSnH6NQ1aItqZWX3UpTS/PJ81EqXjT5Vz8XJHm5K3clNrSr5tpnIbA722CCMyqYwBm2RNdWN07350ELvGLkvGIH8rpW+ddq7kz38Whj5qet090GUUPEfUS/7Yxy/2EWu4QeMykPdVJ1UrgUABFPKE0yBpZhClj710NwL/Zu1bRTgD6GfwDoWAOJjedhHITnLhHCw1MfRn4goKN+VgmhyH80fRnbrz/dEJvB8Q+Yty59FU1eFm8cotZnJBRSIkXGBHuVLJ83hriuUfWiHNbG6TB6xgGJNBg8g4/2kMRhPmqt7rV70ozStVkauZ5wrLQV0C9QthbynTJNxk3dlKY3pj+tCQKUrOaYcKS0GzFMysIlxoz+p6rM0ptZqX3TFUVrZLe30HNInubjfhLOBNocR7Z20/cebdWdyTjqXCxxhTmiku3IOtObC5CDGNB8r4Fbr11o+yn9O0thrufyqi8+g4ICBs6xvLWfsh+CrRvrn5CvnW2Sip84SEdWfzIEjmJRcpJgKQjDNco5pzobVmeU8mkm5SL3EqQgSy6lcxAm3K4KDDybO/MzlAkdbZN6zFmk0/qcXSJUz7zlaZ+wuQi1yd3nqPUnDco9VpkEttEhpLL95kWeB6cxFbNN5kWqx83T5NKrznKNFsJ/Ohjz1rHx8Z32uv6qHUyTMqVhYY12ij2eH50RXe2JOKHaT0JcumaDuO21laW+bWiq7L77KlUWUb/Zvsyl7mc0l0cBiUgKz5t6rfafbtVD62GollTWbkVYoy2SjPcqq7mRpv+iIVM/nqnnFQzE5jRN0BrirUw5kpLdp7nFsnHLebFc4Q9UnkpWVO6ebqdRiQEoAu+4OlBmPmG7GmOuiDcDkorjr9KmNATPSWVwwkRIMgjAMInH/JRyDyAR2C2Uo4iTQXhXHxtArsph7gx2jGLdB71WsMvr0lj+kiP7J0r0Px80xY9LrQwxkDDCkJMPAE4ohI/17gPslXojxIi9IMA4tVoLxsgTHFxeqI8YXL8yi7OIaFjEleIGWRAR3McSLCJdxQjdFlnj7tSYfeGHCw4GbtNjhwIu0PBmIyRk6u7tdW+/aGOvUpxdYMpF4vOyura82snOy5SZWJNyH1sZGa1egpZ6qxWNaCDN5WzlLuG+KW6iZYiBcTnnEWDfGujbTucWFneV6en9//xcD54M/" \ No newline at end of file +window.hierarchyData = "eJytml1P5DYUhv9Lrs3U3x9zRxGiVK1AsO1NhVCUMZBlJp7GGYlqxX+vnExpEpxd2+MbdrUX7z5zjs/x+5r5VrTGdLZY/0WwIIBCjAAVCANCqAQUQQIIUQIQCgmgkjNAMSKAQKgAoUIAiqkAVBEJCOICEKEkYEgQQJBUgEiiAOWSAYYJegBFq5+2uupq09hi/a3ACkr3Z1PudLEurjdfzKtuLrZlvbMFKF7rZlOsMeOgOLTbYl3UTafbp7LS9qfHnWlMtTWHzWN56F7OKtPqVd1s9NtqIrN66XbbAhTVtrS2WBed3Zw53bMPreIdFO4DjUB+N425cNrnh+7l59Lqy7Y17QcRwvI/ol72+zh+sUWu4R9AUb3U202rG9cbKCUgEClA+o4gQh56aOSF/qXr9lmAP4R+ANuzSOljubnNQnKUCeBAkPg4+hORBeV/pSAa4aP5w+o2/XxPZALPNyLesvxZbutN6eYxS21mciEF4uMC3emnVtuXq7Zsupv9sCaSy+QRCyjWZPAoIqyfNCTHk+bqXjdP5k7bvWmsTmecK8UCugXqloLoKbEYN/m8qrS1/XGNBGzMRo8pR0qxgERA1bMROt4Pl83mXltbm+a2bMud7nQb2+k5pE8ymlbiYbMShke0V7rrP7xNO5Nz0rlc4AgTjjLdlXOglAuTqPHgXn+sgAtjXmt9p/8+aNudyuVXje4qxxhQCnnfWjq5ID7/F0kj/WPytPkmnAyjTYX3Ikn2J3PgDCZFUAoIY8r9YIAIOKxOxlg2k7JIHeNUGPO6pgSnsogTblc4xj6YPPMzlwscbU68Zy3TaHzSC6QS0HuO0ozdIlSUuxP+0DAs91xlGtRCi4S8LjzBby7yRJhOQWlm07lIFe88hZJZneccLYP9dDak36ESj++s+/q5uTlkwpyKBTZWkox2eE50qid2Rgm4SehLpyaot63pdNVdbGvddLfls04son7rvtpV1cuslkQDi6k4njX3urltzT4Vyuz2ptFNZ1cjrTAWOn0GudObutVV98VkpHo8Vs0rHoqJUZ6gM8CdnHIo5b1No9PXh8u3ri2doeoTSWLljulmKhU9E4pj4Lo7UBKWMd2MMdOiDUWTi+KqNYd9DpiRTnRHOVSAMk7cD/c3wQDlRAC3UIYi0lxPlxPohCzmnmTHKNZt0OsmVxl9evEPKZT2VcM0c44Zk54eYiiDGFDMOaBEIEApJwM25/lCjBc5IsE4tFwJxssSHF9cqM4YX7wwUdnFNSxjSvACxUQEdzHkiwjLOKGbggpvv1LygRcmPBy4ScsdDrxI0cnAbf3PlvF8X5/vc6xTn15oybjHy57v65ON7Jws2sS6+9GHts+Nto9H49BTtXxMkTCTt5WjhPtMeQs1UwyFkyxjrBtjnZrp3OICznL1t7FAOIv9/2oz/ZaDQQUHMinyOespXqK1FopnsqlTnBSfKvn4fF3fd6Ytn2PP1QzjKBJ9oBTCgCrMAENq8Hhqcqp+M1W5nRMGXEJTvLFKwM2j8OSNU+9M+8/JDBOZEAjifUNMtugzmpM9OoOSA6qoBAwKBBhyTYQQD02kXvgko74AHuHUHZYP51ebC+aoFIKSLTQsoASnBtfAfCZ9gSbGpbv1nc2lf48ncFEyqLy/WEiw6Qs04T7djVdmn77AFG3U3ffMsj7hT8FyfH9EyP5d0N0x4zfe4XsKJ2/2qU5AwTBB+QzelOVkhycUB+7gP7y/v/8L6CzoMw==" \ No newline at end of file diff --git a/docs/html/assets/navigation.js b/docs/html/assets/navigation.js index a2c82ed8..8d481a9c 100644 --- a/docs/html/assets/navigation.js +++ b/docs/html/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "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" \ No newline at end of file +window.navigationData = "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" \ No newline at end of file diff --git a/docs/html/assets/search.js b/docs/html/assets/search.js index 23fa556a..493f5c80 100644 --- a/docs/html/assets/search.js +++ b/docs/html/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/html/classes/_monocloud_auth-core.index.MonoCloudAuthBaseError.html b/docs/html/classes/_monocloud_auth-core.index.MonoCloudAuthBaseError.html index fbbfb03a..0de33ddb 100644 --- a/docs/html/classes/_monocloud_auth-core.index.MonoCloudAuthBaseError.html +++ b/docs/html/classes/_monocloud_auth-core.index.MonoCloudAuthBaseError.html @@ -1,4 +1,4 @@ MonoCloudAuthBaseError | MonoCloud Authentication SDK
MonoCloud Authentication SDK
    Preparing search index...

    Base class for all MonoCloud authentication errors.

    All errors thrown by the MonoCloud SDK extend this class, allowing applications to safely detect and handle MonoCloud-specific failures using instanceof.

    -

    Hierarchy

    Index

    Constructors

    Hierarchy

    Index

    Constructors

    Constructors

    • Parameters

      • Optionalmessage: string

      Returns MonoCloudAuthBaseError

    diff --git a/docs/html/classes/_monocloud_auth-core.index.MonoCloudHttpError.html b/docs/html/classes/_monocloud_auth-core.index.MonoCloudHttpError.html index a5a94bec..2fae6bae 100644 --- a/docs/html/classes/_monocloud_auth-core.index.MonoCloudHttpError.html +++ b/docs/html/classes/_monocloud_auth-core.index.MonoCloudHttpError.html @@ -1,4 +1,4 @@ MonoCloudHttpError | MonoCloud Authentication SDK
    MonoCloud Authentication SDK
      Preparing search index...

      Error thrown when a request to the MonoCloud authorization server fails.

      This error typically indicates a network failure, an unexpected HTTP response, or an unsuccessful response returned by the authorization server.

      -

      Hierarchy

      Index

      Constructors

      Hierarchy

      Index

      Constructors

      Constructors

      diff --git a/docs/html/classes/_monocloud_auth-core.index.MonoCloudOPError.html b/docs/html/classes/_monocloud_auth-core.index.MonoCloudOPError.html index 8ede873c..db3eed50 100644 --- a/docs/html/classes/_monocloud_auth-core.index.MonoCloudOPError.html +++ b/docs/html/classes/_monocloud_auth-core.index.MonoCloudOPError.html @@ -1,6 +1,6 @@ MonoCloudOPError | MonoCloud Authentication SDK
      MonoCloud Authentication SDK
        Preparing search index...

        OAuth error returned by the authorization server during an authentication or token request.

        These errors correspond to standard OAuth / OpenID Connect error responses such as invalid_request, access_denied, or invalid_grant.

        -

        Hierarchy

        Index

        Constructors

        Hierarchy

        Index

        Constructors

        Properties

        Constructors

        Properties

        error: string

        OAuth error code returned by the authorization server.

        diff --git a/docs/html/classes/_monocloud_auth-core.index.MonoCloudTokenError.html b/docs/html/classes/_monocloud_auth-core.index.MonoCloudTokenError.html index 66580065..3b6d4a3a 100644 --- a/docs/html/classes/_monocloud_auth-core.index.MonoCloudTokenError.html +++ b/docs/html/classes/_monocloud_auth-core.index.MonoCloudTokenError.html @@ -1,3 +1,3 @@ MonoCloudTokenError | MonoCloud Authentication SDK
        MonoCloud Authentication SDK
          Preparing search index...

          Error thrown when a token operation fails.

          -

          Hierarchy

          Index

          Constructors

          Hierarchy

          Index

          Constructors

          Constructors

          diff --git a/docs/html/classes/_monocloud_auth-core.index.MonoCloudValidationError.html b/docs/html/classes/_monocloud_auth-core.index.MonoCloudValidationError.html index a45c486a..b0121940 100644 --- a/docs/html/classes/_monocloud_auth-core.index.MonoCloudValidationError.html +++ b/docs/html/classes/_monocloud_auth-core.index.MonoCloudValidationError.html @@ -1,3 +1,3 @@ MonoCloudValidationError | MonoCloud Authentication SDK
          MonoCloud Authentication SDK
            Preparing search index...

            Error thrown when validation fails.

            -

            Hierarchy

            Index

            Constructors

            Hierarchy

            Index

            Constructors

            Constructors

            diff --git a/docs/html/classes/_monocloud_auth-js-core.index.LocalStorage.html b/docs/html/classes/_monocloud_auth-js-core.index.LocalStorage.html new file mode 100644 index 00000000..444289c7 --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.LocalStorage.html @@ -0,0 +1,15 @@ +LocalStorage | MonoCloud Authentication SDK
            MonoCloud Authentication SDK
              Preparing search index...

              window.localStorage-backed implementation of IStorage.

              +

              This is the default storage used by MonoCloudJSCoreClient.

              +

              Implements

              Index

              Constructors

              Methods

              Constructors

              Methods

              • Retrieves the value associated with the given key.

                +

                Parameters

                • key: string

                  The unique identifier for the stored item.

                  +

                Returns Promise<string | null>

                The stored value as a string, or null if the key does not exist.

                +
              • Removes the item associated with the specified key from storage.

                +

                Parameters

                • key: string

                  The unique identifier of the item to remove.

                  +

                Returns Promise<void>

              • Stores a key-value pair in the storage.

                +

                Parameters

                • key: string

                  The unique identifier for the item.

                  +
                • value: string

                  The string value to store.

                  +

                Returns Promise<void>

              diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MemoryStorage.html b/docs/html/classes/_monocloud_auth-js-core.index.MemoryStorage.html new file mode 100644 index 00000000..98020177 --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MemoryStorage.html @@ -0,0 +1,15 @@ +MemoryStorage | MonoCloud Authentication SDK
              MonoCloud Authentication SDK
                Preparing search index...

                In-memory implementation of IStorage.

                +

                Useful for testing or for sessions that should not persist across page reloads.

                +

                Implements

                Index

                Constructors

                Methods

                Constructors

                Methods

                • Retrieves the value associated with the given key.

                  +

                  Parameters

                  • key: string

                    The unique identifier for the stored item.

                    +

                  Returns Promise<string | null>

                  The stored value as a string, or null if the key does not exist.

                  +
                • Removes the item associated with the specified key from storage.

                  +

                  Parameters

                  • key: string

                    The unique identifier of the item to remove.

                    +

                  Returns Promise<void>

                • Stores a key-value pair in the storage.

                  +

                  Parameters

                  • key: string

                    The unique identifier for the item.

                    +
                  • value: string

                    The string value to store.

                    +

                  Returns Promise<void>

                diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudAuthBaseError.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudAuthBaseError.html new file mode 100644 index 00000000..be8d6b88 --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudAuthBaseError.html @@ -0,0 +1,4 @@ +MonoCloudAuthBaseError | MonoCloud Authentication SDK
                MonoCloud Authentication SDK
                  Preparing search index...

                  Base class for all MonoCloud authentication errors.

                  +

                  All errors thrown by the MonoCloud SDK extend this class, allowing applications to safely detect and handle MonoCloud-specific failures using instanceof.

                  +

                  Hierarchy

                  Index

                  Constructors

                  Constructors

                  • Parameters

                    • Optionalmessage: string

                    Returns MonoCloudAuthBaseError

                  diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudHttpError.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudHttpError.html new file mode 100644 index 00000000..77aa908d --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudHttpError.html @@ -0,0 +1,4 @@ +MonoCloudHttpError | MonoCloud Authentication SDK
                  MonoCloud Authentication SDK
                    Preparing search index...

                    Error thrown when a request to the MonoCloud authorization server fails.

                    +

                    This error typically indicates a network failure, an unexpected HTTP response, or an unsuccessful response returned by the authorization server.

                    +

                    Hierarchy

                    Index

                    Constructors

                    Constructors

                    diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudJSCoreClient.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudJSCoreClient.html new file mode 100644 index 00000000..c228ea6c --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudJSCoreClient.html @@ -0,0 +1,107 @@ +MonoCloudJSCoreClient | MonoCloud Authentication SDK
                    MonoCloud Authentication SDK
                      Preparing search index...

                      MonoCloudJSCoreClient is the core SDK entry point for integrating MonoCloud authentication into single-page applications (SPAs) and other browser-based JavaScript environments.

                      +

                      It provides:

                      +
                        +
                      • Redirection and popup-based sign-in and sign-out.
                      • +
                      • Session and token management.
                      • +
                      • Automatic PKCE and state validation.
                      • +
                      • Silent and explicit token refreshing.
                      • +
                      + +
                      import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core';

                      export const client = new MonoCloudJSCoreClient({
                      tenantDomain: 'your-tenant.monocloud.com',
                      clientId: 'your-client-id',
                      appUrl: 'http://localhost:3000',
                      callbackPath: '/callback',
                      signOutCallbackPath: '/logout'
                      }); +
                      + +
                      Index

                      Constructors

                      • Initializes a new instance of the MonoCloudJSCoreClient.

                        +

                        Parameters

                        • options: MonoCloudJSCoreClientOptions

                          Configuration options for the client.

                          +
                        • storage: IStorage = ...

                          Custom storage implementation for session persistence. Defaults to new LocalStorage().

                          +
                        • OptionalpostCallbackFn: PostCallback

                          A callback function executed after a successful sign-in or sign-out. Useful for client-side routing integration.

                          +
                        • OptionalonSessionCreating: OnSessionCreating

                          A hook used to modify or validate the session during creation.

                          +

                        Returns MonoCloudJSCoreClient

                        import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core';

                        const client = new MonoCloudJSCoreClient({
                        tenantDomain: 'your-tenant.monocloud.com',
                        clientId: 'your-client-id',
                        appUrl: 'http://localhost:3000',
                        }); +
                        + +
                        import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core';
                        import { MemoryStorage } from './storage';
                        import { router } from './router';

                        const client = new MonoCloudJSCoreClient(
                        options,
                        new MemoryStorage(),
                        (state) => {
                        // Use router to navigate instead of full page reload.
                        router.push(state.returnUrl || '/dashboard');
                        }
                        ); +
                        + +

                      Properties

                      Underlying OpenID Connect client used for advanced authorization and token operations.

                      +

                      Methods

                      • Retrieves the active tokens for the session.

                        +

                        If the tokens are expired or about to expire, this method will attempt to refresh them automatically before returning.

                        +

                        Parameters

                        • Optionaloptions: GetTokensOptions

                          Options to control token retrieval (e.g., force refresh).

                          +

                        Returns Promise<MonoCloudTokens>

                        The active tokens.

                        +
                        const tokens = await client.getTokens();
                        console.log(tokens.accessToken); +
                        + +
                        const tokens = await client.getTokens({ forceRefresh: true });
                        +
                        + +
                        const tokens = await client.getTokens({
                        resource: 'https://api.example.com',
                        scopes: 'read:data'
                        }); +
                        + +

                        MonoCloudValidationError If the session does not exist.

                        +
                      • Processes the authentication callback.

                        +

                        This method must be called on application startup (usually in the entry point or router) +to handle the response from the identity provider after a redirect flow.

                        +
                          +
                        • Main Window: Validates the state and code, exchanges them for tokens, and establishes the session.
                        • +
                        • Popup/Iframe: Posts the callback URL back to the parent/opener window to complete the flow.
                        • +
                        +

                        Returns Promise<void>

                        A promise that resolves when the callback processing is complete.

                        +

                        Example: Application Entry

                        import { client } from './auth';

                        async function init() {
                        // Process any pending redirect callbacks before rendering.
                        await client.processCallback();

                        // Continue mounting the app.
                        renderApp();
                        }

                        init(); +
                        + +
                      • Refetches user information from the UserInfo endpoint and updates the local session.

                        +

                        Returns Promise<void>

                        await client.refetchUserInfo();
                        const session = await client.getSession();
                        console.log('Updated user data:', session.user); +
                        + +

                        MonoCloudValidationError If the session is invalid or the default token is missing.

                        +
                      • Refreshes the user's session.

                        +

                        This method can be used to explicitly refresh tokens using various methods:

                        +
                          +
                        • silent: Uses a hidden iframe (requires third-party cookies).
                        • +
                        • refresh_token: Uses the Refresh Token Grant (requires offline_access scope).
                        • +
                        • popup: Opens a transient popup to refresh the session interactively.
                        • +
                        +

                        Parameters

                        • OptionalrefreshOptions: RefreshOptions

                          Optional configuration for the refresh flow.

                          +

                        Returns Promise<void>

                        await client.refreshSession({ mode: 'silent' });
                        +
                        + +
                        await client.refreshSession({ mode: 'refresh_token' });
                        +
                        + +

                        MonoCloudValidationError If the session is invalid or missing required tokens.

                        +

                        MonoCloudJsError If called from within a popup or iframe.

                        +
                      • Initiates the sign-in flow.

                        +

                        Parameters

                        • OptionalsignInOptions: SignInOptions

                          Optional configuration for the sign-in request.

                          +

                        Returns Promise<void>

                        document.getElementById('login-btn').addEventListener('click', async () => {
                        // Standard top-level redirect to the authorization server.
                        await client.signIn();
                        }); +
                        + +
                        document.getElementById('login-popup-btn').addEventListener('click', async () => {
                        // Opens a centered popup for authentication.
                        await client.signIn({ mode: 'popup' });
                        console.log('User finished popup flow!');
                        }); +
                        + +
                        document.getElementById('register-btn').addEventListener('click', async () => {
                        // Forces the identity provider to show the registration/sign-up screen.
                        await client.signIn({ signUp: true });
                        }); +
                        + +

                        MonoCloudJsError If called from within a popup or iframe.

                        +
                      • Initiates the sign-out flow.

                        +

                        Clears the local session and optionally redirects the user to the identity provider to end the session there (Federated Sign-Out).

                        +

                        Parameters

                        • OptionalsignOutOptions: SignOutOptions

                          Optional configuration for the sign-out request.

                          +

                        Returns Promise<void>

                        document.getElementById('logout-btn').addEventListener('click', async () => {
                        await client.signOut();
                        }); +
                        + +
                        document.getElementById('logout-popup-btn').addEventListener('click', async () => {
                        // Opens a popup to perform federated sign-out and keep the user on the current page.
                        await client.signOut({ mode: 'popup' });
                        }); +
                        + +

                        MonoCloudJsError If called from within a popup or iframe.

                        +
                      diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudJsError.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudJsError.html new file mode 100644 index 00000000..c194a88f --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudJsError.html @@ -0,0 +1,4 @@ +MonoCloudJsError | MonoCloud Authentication SDK
                      MonoCloud Authentication SDK
                        Preparing search index...

                        Base class for all MonoCloud authentication errors.

                        +

                        All errors thrown by the MonoCloud SDK extend this class, allowing applications to safely detect and handle MonoCloud-specific failures using instanceof.

                        +

                        Hierarchy

                        Index

                        Constructors

                        Constructors

                        diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudOPError.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudOPError.html new file mode 100644 index 00000000..2c558ef5 --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudOPError.html @@ -0,0 +1,8 @@ +MonoCloudOPError | MonoCloud Authentication SDK
                        MonoCloud Authentication SDK
                          Preparing search index...

                          OAuth error returned by the authorization server during an authentication or token request.

                          +

                          These errors correspond to standard OAuth / OpenID Connect error responses such as invalid_request, access_denied, or invalid_grant.

                          +

                          Hierarchy

                          Index

                          Constructors

                          Properties

                          Constructors

                          Properties

                          error: string

                          OAuth error code returned by the authorization server.

                          +
                          errorDescription?: string

                          Human-readable description of the error.

                          +
                          diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudOidcClient.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudOidcClient.html new file mode 100644 index 00000000..4c896a52 --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudOidcClient.html @@ -0,0 +1,138 @@ +MonoCloudOidcClient | MonoCloud Authentication SDK
                          MonoCloud Authentication SDK
                            Preparing search index...
                            Index

                            Constructors

                            Methods

                            • Generates a session with user and tokens by exchanging authorization code from callback params.

                              +

                              Parameters

                              • code: string

                                The authorization code received from the callback.

                                +
                              • redirectUri: string

                                The redirect URI that was used in the authorization request.

                                +
                              • requestedScopes: string

                                A space-separated list of scopes originally requested via the /authorize endpoint. +This is stored in the session to ensure the correct access token can be identified and refreshed during refreshSession().

                                +
                              • Optionalresource: string

                                A space-separated list of resource indicators originally requested via the /authorize endpoint. +Used alongside scopes to uniquely identify and refresh the specific access token associated with these resources.

                                +
                              • Optionaloptions: AuthenticateOptions

                                Options for authenticating a user with authorization code.

                                +

                              Returns Promise<MonoCloudSession>

                              The user's session containing authentication tokens and user information.

                              +

                              MonoCloudValidationError - When the token scope does not contain the openid scope, +or if 'expires_in' or 'scope' is missing from the token response.

                              +

                              MonoCloudOPError - When the OpenID Provider returns a standardized. +OAuth 2.0 error response.

                              +

                              MonoCloudTokenError - If ID Token validation fails.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Generates an authorization URL with specified parameters.

                              +

                              If no values are provided for responseType, or codeChallengeMethod, they default to code, and S256, respectively.

                              +

                              Parameters

                              Returns Promise<string>

                              Tenant's authorization URL.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Generates OpenID end session URL for signing out.

                              +

                              Note - The state is added only when postLogoutRedirectUri is present.

                              +

                              Parameters

                              Returns Promise<string>

                              Tenant's end session URL.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Exchanges an authorization code for tokens.

                              +

                              Parameters

                              • code: string

                                The authorization code received from the authorization server.

                                +
                              • redirectUri: string

                                The redirect URI used in the initial authorization request.

                                +
                              • OptionalcodeVerifier: string

                                Code verifier for PKCE.

                                +
                              • Optionalresource: string

                                Space-separated list of resources the access token should be scoped to.

                                +

                              Returns Promise<Tokens>

                              Tokens obtained by exchanging an authorization code at the token endpoint.

                              +

                              MonoCloudOPError - When the OpenID Provider returns a standardized +OAuth 2.0 error response.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Fetches the JSON Web Keys used to sign the ID token. +The JWKS is cached for 1 minute.

                              +

                              Parameters

                              • forceRefresh: boolean = false

                                If true, bypasses the cache and fetches fresh set of JWKS from the server.

                                +

                              Returns Promise<Jwks>

                              The JSON Web Key Set containing the public keys for token verification.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Fetches the authorization server metadata from the .well-known endpoint. +The metadata is cached for 1 minute.

                              +

                              Parameters

                              • forceRefresh: boolean = false

                                If true, bypasses the cache and fetches fresh metadata from the server.

                                +

                              Returns Promise<IssuerMetadata>

                              The issuer metadata for the tenant, retrieved from the OpenID Connect discovery endpoint.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Exchanges a refresh token for new tokens.

                              +

                              Parameters

                              • refreshToken: string

                                The refresh token used to request new tokens.

                                +
                              • Optionaloptions: RefreshGrantOptions

                                Refresh grant options.

                                +

                              Returns Promise<Tokens>

                              Tokens obtained by exchanging a refresh token at the token endpoint.

                              +

                              MonoCloudOPError - When the OpenID Provider returns a standardized +OAuth 2.0 error response.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Revokes an access token or refresh token, rendering it invalid for future use.

                              +

                              Parameters

                              • token: string

                                The token string to be revoked.

                                +
                              • OptionaltokenType: string

                                Hint about the token type ('access_token' or 'refresh_token').

                                +

                              Returns Promise<void>

                              If token revocation succeeded.

                              +

                              MonoCloudValidationError - If token is invalid or unsupported token type

                              +

                              MonoCloudOPError - When the OpenID Provider returns a standardized +OAuth 2.0 error response.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +
                            • Fetches userinfo associated with the provided access token.

                              +

                              Parameters

                              • accessToken: string

                                A valid access token used to retrieve userinfo.

                                +

                              Returns Promise<UserinfoResponse<Address>>

                              The authenticated user's claims.

                              +

                              MonoCloudOPError - When the OpenID Provider returns a standardized +OAuth 2.0 error (e.g., 'invalid_token') in the 'WWW-Authenticate' header +following a 401 Unauthorized response.

                              +

                              MonoCloudHttpError - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response.

                              +

                              MonoCloudValidationError - When the access token is invalid.

                              +
                            • Validates an ID Token.

                              +

                              Parameters

                              • idToken: string

                                The ID Token JWT string to validate.

                                +
                              • jwks: Jwk[]

                                Array of JSON Web Keys (JWK) used to verify the token's signature.

                                +
                              • clockSkew: number

                                Number of seconds to adjust the current time to account for clock differences.

                                +
                              • clockTolerance: number

                                Additional time tolerance in seconds for time-based claim validation.

                                +
                              • OptionalmaxAge: number

                                Maximum authentication age in seconds.

                                +
                              • Optionalnonce: string

                                Nonce value to validate against the token's nonce claim.

                                +

                              Returns Promise<IdTokenClaims>

                              Validated ID Token claims.

                              +

                              MonoCloudTokenError - If ID Token validation fails

                              +
                            diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudTokenError.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudTokenError.html new file mode 100644 index 00000000..d6079fd9 --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudTokenError.html @@ -0,0 +1,3 @@ +MonoCloudTokenError | MonoCloud Authentication SDK
                            MonoCloud Authentication SDK
                              Preparing search index...

                              Error thrown when a token operation fails.

                              +

                              Hierarchy

                              Index

                              Constructors

                              Constructors

                              diff --git a/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudValidationError.html b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudValidationError.html new file mode 100644 index 00000000..41d66f4d --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.MonoCloudValidationError.html @@ -0,0 +1,3 @@ +MonoCloudValidationError | MonoCloud Authentication SDK
                              MonoCloud Authentication SDK
                                Preparing search index...

                                Error thrown when validation fails.

                                +

                                Hierarchy

                                Index

                                Constructors

                                Constructors

                                diff --git a/docs/html/classes/_monocloud_auth-js-core.index.SessionStorage.html b/docs/html/classes/_monocloud_auth-js-core.index.SessionStorage.html new file mode 100644 index 00000000..d62bf34d --- /dev/null +++ b/docs/html/classes/_monocloud_auth-js-core.index.SessionStorage.html @@ -0,0 +1,15 @@ +SessionStorage | MonoCloud Authentication SDK
                                MonoCloud Authentication SDK
                                  Preparing search index...

                                  window.sessionStorage-backed implementation of IStorage.

                                  +

                                  Data persists for the lifetime of the current browser tab.

                                  +

                                  Implements

                                  Index

                                  Constructors

                                  Methods

                                  Constructors

                                  Methods

                                  • Retrieves the value associated with the given key.

                                    +

                                    Parameters

                                    • key: string

                                      The unique identifier for the stored item.

                                      +

                                    Returns Promise<string | null>

                                    The stored value as a string, or null if the key does not exist.

                                    +
                                  • Removes the item associated with the specified key from storage.

                                    +

                                    Parameters

                                    • key: string

                                      The unique identifier of the item to remove.

                                      +

                                    Returns Promise<void>

                                  • Stores a key-value pair in the storage.

                                    +

                                    Parameters

                                    • key: string

                                      The unique identifier for the item.

                                      +
                                    • value: string

                                      The string value to store.

                                      +

                                    Returns Promise<void>

                                  diff --git a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudAuthBaseError.html b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudAuthBaseError.html index fe93d12f..9569e745 100644 --- a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudAuthBaseError.html +++ b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudAuthBaseError.html @@ -1,4 +1,4 @@ MonoCloudAuthBaseError | MonoCloud Authentication SDK
                                  MonoCloud Authentication SDK
                                    Preparing search index...

                                    Base class for all MonoCloud authentication errors.

                                    All errors thrown by the MonoCloud SDK extend this class, allowing applications to safely detect and handle MonoCloud-specific failures using instanceof.

                                    -

                                    Hierarchy

                                    Index

                                    Constructors

                                    Hierarchy

                                    Index

                                    Constructors

                                    Constructors

                                    • Parameters

                                      • Optionalmessage: string

                                      Returns MonoCloudAuthBaseError

                                    diff --git a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudHttpError.html b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudHttpError.html index 7a543346..851b480a 100644 --- a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudHttpError.html +++ b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudHttpError.html @@ -1,4 +1,4 @@ MonoCloudHttpError | MonoCloud Authentication SDK
                                    MonoCloud Authentication SDK
                                      Preparing search index...

                                      Error thrown when a request to the MonoCloud authorization server fails.

                                      This error typically indicates a network failure, an unexpected HTTP response, or an unsuccessful response returned by the authorization server.

                                      -

                                      Hierarchy

                                      Index

                                      Constructors

                                      Hierarchy

                                      Index

                                      Constructors

                                      Constructors

                                      diff --git a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudOPError.html b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudOPError.html index 1a433b9d..84d26ebc 100644 --- a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudOPError.html +++ b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudOPError.html @@ -1,6 +1,6 @@ MonoCloudOPError | MonoCloud Authentication SDK
                                      MonoCloud Authentication SDK
                                        Preparing search index...

                                        OAuth error returned by the authorization server during an authentication or token request.

                                        These errors correspond to standard OAuth / OpenID Connect error responses such as invalid_request, access_denied, or invalid_grant.

                                        -

                                        Hierarchy

                                        Index

                                        Constructors

                                        Hierarchy

                                        Index

                                        Constructors

                                        Properties

                                        Constructors

                                        Properties

                                        error: string

                                        OAuth error code returned by the authorization server.

                                        diff --git a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudTokenError.html b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudTokenError.html index 562a427c..28322e34 100644 --- a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudTokenError.html +++ b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudTokenError.html @@ -1,3 +1,3 @@ MonoCloudTokenError | MonoCloud Authentication SDK
                                        MonoCloud Authentication SDK
                                          Preparing search index...

                                          Error thrown when a token operation fails.

                                          -

                                          Hierarchy

                                          Index

                                          Constructors

                                          Hierarchy

                                          Index

                                          Constructors

                                          Constructors

                                          diff --git a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudValidationError.html b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudValidationError.html index 432e1000..c17619af 100644 --- a/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudValidationError.html +++ b/docs/html/classes/_monocloud_auth-nextjs.index.MonoCloudValidationError.html @@ -1,3 +1,3 @@ MonoCloudValidationError | MonoCloud Authentication SDK
                                          MonoCloud Authentication SDK
                                            Preparing search index...

                                            Error thrown when validation fails.

                                            -

                                            Hierarchy

                                            Index

                                            Constructors

                                            Hierarchy

                                            Index

                                            Constructors

                                            Constructors

                                            diff --git a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudAuthBaseError.html b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudAuthBaseError.html index 763d6f16..e40ed6ec 100644 --- a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudAuthBaseError.html +++ b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudAuthBaseError.html @@ -1,4 +1,4 @@ MonoCloudAuthBaseError | MonoCloud Authentication SDK
                                            MonoCloud Authentication SDK
                                              Preparing search index...

                                              Base class for all MonoCloud authentication errors.

                                              All errors thrown by the MonoCloud SDK extend this class, allowing applications to safely detect and handle MonoCloud-specific failures using instanceof.

                                              -

                                              Hierarchy

                                              Index

                                              Constructors

                                              Hierarchy

                                              Index

                                              Constructors

                                              Constructors

                                              • Parameters

                                                • Optionalmessage: string

                                                Returns MonoCloudAuthBaseError

                                              diff --git a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudHttpError.html b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudHttpError.html index a0b60e03..82c959d0 100644 --- a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudHttpError.html +++ b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudHttpError.html @@ -1,4 +1,4 @@ MonoCloudHttpError | MonoCloud Authentication SDK
                                              MonoCloud Authentication SDK
                                                Preparing search index...

                                                Error thrown when a request to the MonoCloud authorization server fails.

                                                This error typically indicates a network failure, an unexpected HTTP response, or an unsuccessful response returned by the authorization server.

                                                -

                                                Hierarchy

                                                Index

                                                Constructors

                                                Hierarchy

                                                Index

                                                Constructors

                                                Constructors

                                                diff --git a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudOPError.html b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudOPError.html index 01f635db..170df5b9 100644 --- a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudOPError.html +++ b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudOPError.html @@ -1,6 +1,6 @@ MonoCloudOPError | MonoCloud Authentication SDK
                                                MonoCloud Authentication SDK
                                                  Preparing search index...

                                                  OAuth error returned by the authorization server during an authentication or token request.

                                                  These errors correspond to standard OAuth / OpenID Connect error responses such as invalid_request, access_denied, or invalid_grant.

                                                  -

                                                  Hierarchy

                                                  Index

                                                  Constructors

                                                  Hierarchy

                                                  Index

                                                  Constructors

                                                  Properties

                                                  Constructors

                                                  Properties

                                                  error: string

                                                  OAuth error code returned by the authorization server.

                                                  diff --git a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudTokenError.html b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudTokenError.html index dcc63749..3edf050c 100644 --- a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudTokenError.html +++ b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudTokenError.html @@ -1,3 +1,3 @@ MonoCloudTokenError | MonoCloud Authentication SDK
                                                  MonoCloud Authentication SDK
                                                    Preparing search index...

                                                    Error thrown when a token operation fails.

                                                    -

                                                    Hierarchy

                                                    Index

                                                    Constructors

                                                    Hierarchy

                                                    Index

                                                    Constructors

                                                    Constructors

                                                    diff --git a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudValidationError.html b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudValidationError.html index 627fcb24..38d72764 100644 --- a/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudValidationError.html +++ b/docs/html/classes/_monocloud_auth-node-core.index.MonoCloudValidationError.html @@ -1,3 +1,3 @@ MonoCloudValidationError | MonoCloud Authentication SDK
                                                    MonoCloud Authentication SDK
                                                      Preparing search index...

                                                      Error thrown when validation fails.

                                                      -

                                                      Hierarchy

                                                      Index

                                                      Constructors

                                                      Hierarchy

                                                      Index

                                                      Constructors

                                                      Constructors

                                                      diff --git a/docs/html/functions/_monocloud_auth-core.utils.decrypt.html b/docs/html/functions/_monocloud_auth-core.utils.decrypt.html index df72b6fa..402f34a8 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.decrypt.html +++ b/docs/html/functions/_monocloud_auth-core.utils.decrypt.html @@ -2,4 +2,4 @@

                                                      Parameters

                                                      • encrypted: string

                                                        The ciphertext to decrypt.

                                                      • secret: string

                                                        The secret used to derive the decryption key.

                                                      Returns Promise<string | undefined>

                                                      Decrypted plaintext string or undefined if decryption fails.

                                                      -
                                                      +
                                                      diff --git a/docs/html/functions/_monocloud_auth-core.utils.decryptAuthState.html b/docs/html/functions/_monocloud_auth-core.utils.decryptAuthState.html index 996f7d35..c556a938 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.decryptAuthState.html +++ b/docs/html/functions/_monocloud_auth-core.utils.decryptAuthState.html @@ -3,4 +3,4 @@
                                                    • secret: string

                                                      The secret used for decryption.

                                                    • Returns Promise<T>

                                                      State object on success.

                                                      If decryption fails or the auth state has expired.

                                                      -
                                                      +
                                                      diff --git a/docs/html/functions/_monocloud_auth-core.utils.decryptSession.html b/docs/html/functions/_monocloud_auth-core.utils.decryptSession.html index 484e1f84..73b671ba 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.decryptSession.html +++ b/docs/html/functions/_monocloud_auth-core.utils.decryptSession.html @@ -3,4 +3,4 @@
                                                    • secret: string

                                                      The secret used for decryption.

                                                    • Returns Promise<MonoCloudSession>

                                                      Session object on success.

                                                      If decryption fails or the session has expired.

                                                      -
                                                      +
                                                      diff --git a/docs/html/functions/_monocloud_auth-core.utils.encrypt.html b/docs/html/functions/_monocloud_auth-core.utils.encrypt.html index 6fb106b2..4cf7b7d3 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.encrypt.html +++ b/docs/html/functions/_monocloud_auth-core.utils.encrypt.html @@ -2,4 +2,4 @@

                                                      Parameters

                                                      Returns Promise<string>

                                                      Base64-encoded ciphertext.

                                                      -
                                                      +
                                                      diff --git a/docs/html/functions/_monocloud_auth-core.utils.encryptAuthState.html b/docs/html/functions/_monocloud_auth-core.utils.encryptAuthState.html index e256f770..1d0ed800 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.encryptAuthState.html +++ b/docs/html/functions/_monocloud_auth-core.utils.encryptAuthState.html @@ -3,4 +3,4 @@
                                                    • secret: string

                                                      The secret used for encryption.

                                                    • Optionalttl: number

                                                      Optional time-to-live in seconds, after which the auth state expires.

                                                    • Returns Promise<string>

                                                      Encrypted auth state string.

                                                      -
                                                      +
                                                      diff --git a/docs/html/functions/_monocloud_auth-core.utils.encryptSession.html b/docs/html/functions/_monocloud_auth-core.utils.encryptSession.html index 88cdebfc..b9251b1b 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.encryptSession.html +++ b/docs/html/functions/_monocloud_auth-core.utils.encryptSession.html @@ -3,4 +3,4 @@
                                                    • secret: string

                                                      The secret used for encryption.

                                                    • Optionalttl: number

                                                      Optional time-to-live in seconds, after which the session expires.

                                                    • Returns Promise<string>

                                                      Encrypted session string.

                                                      -
                                                      +
                                                      diff --git a/docs/html/functions/_monocloud_auth-core.utils.generateNonce.html b/docs/html/functions/_monocloud_auth-core.utils.generateNonce.html index 3a8dacb3..cce1691b 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.generateNonce.html +++ b/docs/html/functions/_monocloud_auth-core.utils.generateNonce.html @@ -1,2 +1,2 @@ generateNonce | MonoCloud Authentication SDK
                                                      MonoCloud Authentication SDK
                                                        Preparing search index...
                                                        +

                                                        Returns string

                                                        diff --git a/docs/html/functions/_monocloud_auth-core.utils.generatePKCE.html b/docs/html/functions/_monocloud_auth-core.utils.generatePKCE.html index ad808e65..c78a4dda 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.generatePKCE.html +++ b/docs/html/functions/_monocloud_auth-core.utils.generatePKCE.html @@ -1,2 +1,2 @@ generatePKCE | MonoCloud Authentication SDK
                                                        MonoCloud Authentication SDK
                                                          Preparing search index...
                                                          • Generates a PKCE (Proof Key for Code Exchange) code verifier and code challenge.

                                                            -

                                                            Returns Promise<{ codeChallenge: string; codeVerifier: string }>

                                                          +

                                                          Returns Promise<{ codeChallenge: string; codeVerifier: string }>

                                                          diff --git a/docs/html/functions/_monocloud_auth-core.utils.generateState.html b/docs/html/functions/_monocloud_auth-core.utils.generateState.html index 3971e273..9b61b579 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.generateState.html +++ b/docs/html/functions/_monocloud_auth-core.utils.generateState.html @@ -1,2 +1,2 @@ generateState | MonoCloud Authentication SDK
                                                          MonoCloud Authentication SDK
                                                            Preparing search index...
                                                            +

                                                            Returns string

                                                            diff --git a/docs/html/functions/_monocloud_auth-core.utils.isUserInGroup.html b/docs/html/functions/_monocloud_auth-core.utils.isUserInGroup.html index e94b6c4c..f6cd4c80 100644 --- a/docs/html/functions/_monocloud_auth-core.utils.isUserInGroup.html +++ b/docs/html/functions/_monocloud_auth-core.utils.isUserInGroup.html @@ -4,4 +4,4 @@
                                                          • groupsClaim: string = 'groups'

                                                            The claim in the user object that contains groups.

                                                          • matchAll: boolean = false

                                                            If true, requires the user to be in all specified groups; if false, checks if the user is in at least one of the groups.

                                                          • Returns boolean

                                                            true if the user is in the specified groups, false otherwise.

                                                            -
                                                            +
                                                            diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.decrypt.html b/docs/html/functions/_monocloud_auth-js-core.utils.decrypt.html new file mode 100644 index 00000000..7d727849 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.decrypt.html @@ -0,0 +1,5 @@ +decrypt | MonoCloud Authentication SDK
                                                            MonoCloud Authentication SDK
                                                              Preparing search index...
                                                              • Decrypts an encrypted string using a secret with AES-GCM.

                                                                +

                                                                Parameters

                                                                • encrypted: string

                                                                  The ciphertext to decrypt.

                                                                  +
                                                                • secret: string

                                                                  The secret used to derive the decryption key.

                                                                  +

                                                                Returns Promise<string | undefined>

                                                                Decrypted plaintext string or undefined if decryption fails.

                                                                +
                                                              diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.decryptAuthState.html b/docs/html/functions/_monocloud_auth-js-core.utils.decryptAuthState.html new file mode 100644 index 00000000..580d5211 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.decryptAuthState.html @@ -0,0 +1,6 @@ +decryptAuthState | MonoCloud Authentication SDK
                                                              MonoCloud Authentication SDK
                                                                Preparing search index...
                                                                • Decrypts an encrypted AuthState.

                                                                  +

                                                                  Type Parameters

                                                                  Parameters

                                                                  • encryptedAuthState: string

                                                                    The encrypted auth state string to decrypt.

                                                                    +
                                                                  • secret: string

                                                                    The secret used for decryption.

                                                                    +

                                                                  Returns Promise<T>

                                                                  State object on success.

                                                                  +

                                                                  If decryption fails or the auth state has expired.

                                                                  +
                                                                diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.decryptSession.html b/docs/html/functions/_monocloud_auth-js-core.utils.decryptSession.html new file mode 100644 index 00000000..d56fb5d3 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.decryptSession.html @@ -0,0 +1,6 @@ +decryptSession | MonoCloud Authentication SDK
                                                                MonoCloud Authentication SDK
                                                                  Preparing search index...
                                                                  • Decrypts an encrypted MonoCloud session.

                                                                    +

                                                                    Parameters

                                                                    • encryptedSession: string

                                                                      The encrypted session string to decrypt.

                                                                      +
                                                                    • secret: string

                                                                      The secret used for decryption.

                                                                      +

                                                                    Returns Promise<MonoCloudSession>

                                                                    Session object on success.

                                                                    +

                                                                    If decryption fails or the session has expired.

                                                                    +
                                                                  diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.encrypt.html b/docs/html/functions/_monocloud_auth-js-core.utils.encrypt.html new file mode 100644 index 00000000..833da589 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.encrypt.html @@ -0,0 +1,5 @@ +encrypt | MonoCloud Authentication SDK
                                                                  MonoCloud Authentication SDK
                                                                    Preparing search index...
                                                                    • Encrypts a given string using a secret with AES-GCM.

                                                                      +

                                                                      Parameters

                                                                      • data: string

                                                                        The plaintext data to encrypt.

                                                                        +
                                                                      • secret: string

                                                                        The secret used to derive the encryption key.

                                                                        +

                                                                      Returns Promise<string>

                                                                      Base64-encoded ciphertext.

                                                                      +
                                                                    diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.encryptAuthState.html b/docs/html/functions/_monocloud_auth-js-core.utils.encryptAuthState.html new file mode 100644 index 00000000..8640710f --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.encryptAuthState.html @@ -0,0 +1,6 @@ +encryptAuthState | MonoCloud Authentication SDK
                                                                    MonoCloud Authentication SDK
                                                                      Preparing search index...
                                                                      • Encrypts an AuthState object with a secret and optional time-to-live (TTL).

                                                                        +

                                                                        Type Parameters

                                                                        Parameters

                                                                        • authState: T

                                                                          A type that extends the AuthState interface.

                                                                          +
                                                                        • secret: string

                                                                          The secret used for encryption.

                                                                          +
                                                                        • Optionalttl: number

                                                                          Optional time-to-live in seconds, after which the auth state expires.

                                                                          +

                                                                        Returns Promise<string>

                                                                        Encrypted auth state string.

                                                                        +
                                                                      diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.encryptSession.html b/docs/html/functions/_monocloud_auth-js-core.utils.encryptSession.html new file mode 100644 index 00000000..220f12e0 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.encryptSession.html @@ -0,0 +1,6 @@ +encryptSession | MonoCloud Authentication SDK
                                                                      MonoCloud Authentication SDK
                                                                        Preparing search index...
                                                                        • Encrypts a MonoCloud session object with a secret and optional time-to-live (TTL).

                                                                          +

                                                                          Parameters

                                                                          • session: MonoCloudSession

                                                                            The session object to encrypt.

                                                                            +
                                                                          • secret: string

                                                                            The secret used for encryption.

                                                                            +
                                                                          • Optionalttl: number

                                                                            Optional time-to-live in seconds, after which the session expires.

                                                                            +

                                                                          Returns Promise<string>

                                                                          Encrypted session string.

                                                                          +
                                                                        diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.generateNonce.html b/docs/html/functions/_monocloud_auth-js-core.utils.generateNonce.html new file mode 100644 index 00000000..2ae21b1a --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.generateNonce.html @@ -0,0 +1,2 @@ +generateNonce | MonoCloud Authentication SDK
                                                                        MonoCloud Authentication SDK
                                                                          Preparing search index...
                                                                          diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.generatePKCE.html b/docs/html/functions/_monocloud_auth-js-core.utils.generatePKCE.html new file mode 100644 index 00000000..8ef7be95 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.generatePKCE.html @@ -0,0 +1,2 @@ +generatePKCE | MonoCloud Authentication SDK
                                                                          MonoCloud Authentication SDK
                                                                            Preparing search index...
                                                                            • Generates a PKCE (Proof Key for Code Exchange) code verifier and code challenge.

                                                                              +

                                                                              Returns Promise<{ codeChallenge: string; codeVerifier: string }>

                                                                            diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.generateState.html b/docs/html/functions/_monocloud_auth-js-core.utils.generateState.html new file mode 100644 index 00000000..9d28b563 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.generateState.html @@ -0,0 +1,2 @@ +generateState | MonoCloud Authentication SDK
                                                                            MonoCloud Authentication SDK
                                                                              Preparing search index...
                                                                              diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.isUserInGroup.html b/docs/html/functions/_monocloud_auth-js-core.utils.isUserInGroup.html new file mode 100644 index 00000000..ac97e6cf --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.isUserInGroup.html @@ -0,0 +1,7 @@ +isUserInGroup | MonoCloud Authentication SDK
                                                                              MonoCloud Authentication SDK
                                                                                Preparing search index...
                                                                                • Checks if a user is a member of a specified group or groups.

                                                                                  +

                                                                                  Parameters

                                                                                  • user: MonoCloudUser | IdTokenClaims

                                                                                    The user.

                                                                                    +
                                                                                  • groups: string[]

                                                                                    An array of group names or IDs to check membership against.

                                                                                    +
                                                                                  • groupsClaim: string = 'groups'

                                                                                    The claim in the user object that contains groups.

                                                                                    +
                                                                                  • matchAll: boolean = false

                                                                                    If true, requires the user to be in all specified groups; if false, checks if the user is in at least one of the groups.

                                                                                    +

                                                                                  Returns boolean

                                                                                  true if the user is in the specified groups, false otherwise.

                                                                                  +
                                                                                diff --git a/docs/html/functions/_monocloud_auth-js-core.utils.parseCallbackParams.html b/docs/html/functions/_monocloud_auth-js-core.utils.parseCallbackParams.html new file mode 100644 index 00000000..e6d83733 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils.parseCallbackParams.html @@ -0,0 +1,2 @@ +parseCallbackParams | MonoCloud Authentication SDK
                                                                                MonoCloud Authentication SDK
                                                                                  Preparing search index...
                                                                                  diff --git a/docs/html/functions/_monocloud_auth-js-core.utils_internal.findToken.html b/docs/html/functions/_monocloud_auth-js-core.utils_internal.findToken.html new file mode 100644 index 00000000..1b3f2604 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils_internal.findToken.html @@ -0,0 +1,6 @@ +findToken | MonoCloud Authentication SDK
                                                                                  MonoCloud Authentication SDK
                                                                                    Preparing search index...
                                                                                    • Finds a specific access token in an array based on resource and scopes.

                                                                                      +

                                                                                      Parameters

                                                                                      • Optionaltokens: AccessToken[]

                                                                                        The array of access tokens.

                                                                                        +
                                                                                      • Optionalresource: string

                                                                                        Space-separated resource indicators.

                                                                                        +
                                                                                      • Optionalscopes: string

                                                                                        Space-separated scopes.

                                                                                        +

                                                                                      Returns AccessToken | undefined

                                                                                      The matching AccessToken, or undefined if not found.

                                                                                      +
                                                                                    diff --git a/docs/html/functions/_monocloud_auth-js-core.utils_internal.getPublicSigKeyFromIssuerJwks.html b/docs/html/functions/_monocloud_auth-js-core.utils_internal.getPublicSigKeyFromIssuerJwks.html new file mode 100644 index 00000000..77451364 --- /dev/null +++ b/docs/html/functions/_monocloud_auth-js-core.utils_internal.getPublicSigKeyFromIssuerJwks.html @@ -0,0 +1,6 @@ +getPublicSigKeyFromIssuerJwks | MonoCloud Authentication SDK
                                                                                    MonoCloud Authentication SDK
                                                                                      Preparing search index...
                                                                                      • Retrieves a public CryptoKey from a JWK set based on the JWS header.

                                                                                        +

                                                                                        Parameters

                                                                                        • jwks: Jwk[]

                                                                                          The set of JSON Web Keys.

                                                                                          +
                                                                                        • header: JwsHeaderParameters

                                                                                          The JWS header containing the algorithm and key ID.

                                                                                          +

                                                                                        Returns Promise<CryptoKey>

                                                                                        A promise that resolves to the CryptoKey.

                                                                                        +

                                                                                        If no applicable key or multiple keys are found or the algorithm is unsupported.

                                                                                        +
                                                                                      diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.decrypt.html b/docs/html/functions/_monocloud_auth-node-core.utils.decrypt.html index 86f78f28..247ee483 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.decrypt.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.decrypt.html @@ -2,4 +2,4 @@

                                                                                      Parameters

                                                                                      Returns Promise<string | undefined>

                                                                                      Decrypted plaintext string or undefined if decryption fails.

                                                                                      -
                                                                                      +
                                                                                      diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.decryptAuthState.html b/docs/html/functions/_monocloud_auth-node-core.utils.decryptAuthState.html index 9f6d7f25..d0c25568 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.decryptAuthState.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.decryptAuthState.html @@ -3,4 +3,4 @@
                                                                                    • secret: string

                                                                                      The secret used for decryption.

                                                                                    • Returns Promise<T>

                                                                                      State object on success.

                                                                                      If decryption fails or the auth state has expired.

                                                                                      -
                                                                                      +
                                                                                      diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.decryptSession.html b/docs/html/functions/_monocloud_auth-node-core.utils.decryptSession.html index a9221a2e..a67b2f48 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.decryptSession.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.decryptSession.html @@ -3,4 +3,4 @@
                                                                                    • secret: string

                                                                                      The secret used for decryption.

                                                                                    • Returns Promise<MonoCloudSession>

                                                                                      Session object on success.

                                                                                      If decryption fails or the session has expired.

                                                                                      -
                                                                                      +
                                                                                      diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.encrypt.html b/docs/html/functions/_monocloud_auth-node-core.utils.encrypt.html index dc693ed9..a77c5dfa 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.encrypt.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.encrypt.html @@ -2,4 +2,4 @@

                                                                                      Parameters

                                                                                      Returns Promise<string>

                                                                                      Base64-encoded ciphertext.

                                                                                      -
                                                                                      +
                                                                                      diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.encryptAuthState.html b/docs/html/functions/_monocloud_auth-node-core.utils.encryptAuthState.html index c13b1d0c..8f9c175d 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.encryptAuthState.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.encryptAuthState.html @@ -3,4 +3,4 @@
                                                                                    • secret: string

                                                                                      The secret used for encryption.

                                                                                    • Optionalttl: number

                                                                                      Optional time-to-live in seconds, after which the auth state expires.

                                                                                    • Returns Promise<string>

                                                                                      Encrypted auth state string.

                                                                                      -
                                                                                      +
                                                                                      diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.encryptSession.html b/docs/html/functions/_monocloud_auth-node-core.utils.encryptSession.html index 56a92a58..3a2fb7c8 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.encryptSession.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.encryptSession.html @@ -3,4 +3,4 @@
                                                                                    • secret: string

                                                                                      The secret used for encryption.

                                                                                    • Optionalttl: number

                                                                                      Optional time-to-live in seconds, after which the session expires.

                                                                                    • Returns Promise<string>

                                                                                      Encrypted session string.

                                                                                      -
                                                                                      +
                                                                                      diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.generateNonce.html b/docs/html/functions/_monocloud_auth-node-core.utils.generateNonce.html index 82669d78..e8d30161 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.generateNonce.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.generateNonce.html @@ -1,2 +1,2 @@ generateNonce | MonoCloud Authentication SDK
                                                                                      MonoCloud Authentication SDK
                                                                                        Preparing search index...
                                                                                        +

                                                                                        Returns string

                                                                                        diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.generatePKCE.html b/docs/html/functions/_monocloud_auth-node-core.utils.generatePKCE.html index dd041555..5d47a955 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.generatePKCE.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.generatePKCE.html @@ -1,2 +1,2 @@ generatePKCE | MonoCloud Authentication SDK
                                                                                        MonoCloud Authentication SDK
                                                                                          Preparing search index...
                                                                                          • Generates a PKCE (Proof Key for Code Exchange) code verifier and code challenge.

                                                                                            -

                                                                                            Returns Promise<{ codeChallenge: string; codeVerifier: string }>

                                                                                          +

                                                                                          Returns Promise<{ codeChallenge: string; codeVerifier: string }>

                                                                                          diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.generateState.html b/docs/html/functions/_monocloud_auth-node-core.utils.generateState.html index 1b08e49e..2b128f23 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.generateState.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.generateState.html @@ -1,2 +1,2 @@ generateState | MonoCloud Authentication SDK
                                                                                          MonoCloud Authentication SDK
                                                                                            Preparing search index...
                                                                                            +

                                                                                            Returns string

                                                                                            diff --git a/docs/html/functions/_monocloud_auth-node-core.utils.isUserInGroup.html b/docs/html/functions/_monocloud_auth-node-core.utils.isUserInGroup.html index 057f4ddb..f4ce869b 100644 --- a/docs/html/functions/_monocloud_auth-node-core.utils.isUserInGroup.html +++ b/docs/html/functions/_monocloud_auth-node-core.utils.isUserInGroup.html @@ -4,4 +4,4 @@
                                                                                          • groupsClaim: string = 'groups'

                                                                                            The claim in the user object that contains groups.

                                                                                          • matchAll: boolean = false

                                                                                            If true, requires the user to be in all specified groups; if false, checks if the user is in at least one of the groups.

                                                                                          • Returns boolean

                                                                                            true if the user is in the specified groups, false otherwise.

                                                                                            -
                                                                                            +
                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-core.index.AccessToken.html b/docs/html/interfaces/_monocloud_auth-core.index.AccessToken.html index 06ead825..ce3810ab 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.AccessToken.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.AccessToken.html @@ -1,13 +1,13 @@ AccessToken | MonoCloud Authentication SDK
                                                                                            MonoCloud Authentication SDK
                                                                                              Preparing search index...

                                                                                              Represents an OAuth 2.0 access token and its associated metadata.

                                                                                              -
                                                                                              interface AccessToken {
                                                                                                  accessToken: string;
                                                                                                  accessTokenExpiration: number;
                                                                                                  requestedScopes?: string;
                                                                                                  resource?: string;
                                                                                                  scopes: string;
                                                                                              }
                                                                                              Index

                                                                                              Properties

                                                                                              interface AccessToken {
                                                                                                  accessToken: string;
                                                                                                  accessTokenExpiration: number;
                                                                                                  requestedScopes?: string;
                                                                                                  resource?: string;
                                                                                                  scopes: string;
                                                                                              }
                                                                                              Index

                                                                                              Properties

                                                                                              accessToken: string

                                                                                              The issued access token.

                                                                                              -
                                                                                              accessTokenExpiration: number

                                                                                              The expiration time of the access token (Unix epoch, in seconds).

                                                                                              -
                                                                                              requestedScopes?: string

                                                                                              Optional space-separated list of scopes originally requested during token acquisition.

                                                                                              -
                                                                                              resource?: string

                                                                                              Optional resource (audience) that the access token is scoped for.

                                                                                              -
                                                                                              scopes: string

                                                                                              Space-separated list of scopes granted to the access token.

                                                                                              +
                                                                                              accessTokenExpiration: number

                                                                                              The expiration time of the access token (Unix epoch, in seconds).

                                                                                              +
                                                                                              requestedScopes?: string

                                                                                              Optional space-separated list of scopes originally requested during token acquisition.

                                                                                              +
                                                                                              resource?: string

                                                                                              Optional resource (audience) that the access token is scoped for.

                                                                                              +
                                                                                              scopes: string

                                                                                              Space-separated list of scopes granted to the access token.

                                                                                              These represent the effective permissions approved by the authorization server.

                                                                                              -
                                                                                              +
                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-core.index.Address.html b/docs/html/interfaces/_monocloud_auth-core.index.Address.html index 3a282162..20ffb372 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.Address.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.Address.html @@ -1,15 +1,15 @@ Address | MonoCloud Authentication SDK
                                                                                              MonoCloud Authentication SDK
                                                                                                Preparing search index...

                                                                                                Represents a postal address as defined by the OpenID Connect standard address claim.

                                                                                                interface Address {
                                                                                                    country?: string;
                                                                                                    formatted?: string;
                                                                                                    locality?: string;
                                                                                                    postal_code?: string;
                                                                                                    region?: string;
                                                                                                    street_address?: string;
                                                                                                    [key: string]: unknown;
                                                                                                }

                                                                                                Indexable

                                                                                                • [key: string]: unknown

                                                                                                  Additional provider-specific address fields.

                                                                                                  -
                                                                                                Index

                                                                                                Properties

                                                                                                Index

                                                                                                Properties

                                                                                                country?: string

                                                                                                Country name or ISO country code.

                                                                                                -
                                                                                                formatted?: string

                                                                                                Full mailing address formatted for display or mailing labels.

                                                                                                -
                                                                                                locality?: string

                                                                                                City or locality component.

                                                                                                -
                                                                                                postal_code?: string

                                                                                                Postal or ZIP code.

                                                                                                -
                                                                                                region?: string

                                                                                                State, province, or region component.

                                                                                                -
                                                                                                street_address?: string

                                                                                                Full street address component, which may include house number, street name, apartment, suite, or unit information.

                                                                                                -
                                                                                                +
                                                                                                formatted?: string

                                                                                                Full mailing address formatted for display or mailing labels.

                                                                                                +
                                                                                                locality?: string

                                                                                                City or locality component.

                                                                                                +
                                                                                                postal_code?: string

                                                                                                Postal or ZIP code.

                                                                                                +
                                                                                                region?: string

                                                                                                State, province, or region component.

                                                                                                +
                                                                                                street_address?: string

                                                                                                Full street address component, which may include house number, street name, apartment, suite, or unit information.

                                                                                                +
                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-core.index.AuthState.html b/docs/html/interfaces/_monocloud_auth-core.index.AuthState.html index c0f11845..5b8a4fd9 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.AuthState.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.AuthState.html @@ -1,14 +1,14 @@ AuthState | MonoCloud Authentication SDK
                                                                                                MonoCloud Authentication SDK
                                                                                                  Preparing search index...

                                                                                                  Represents the authentication transaction state stored between the authorization request and the callback.

                                                                                                  -
                                                                                                  interface AuthState {
                                                                                                      codeVerifier?: string;
                                                                                                      maxAge?: number;
                                                                                                      nonce: string;
                                                                                                      resource?: string;
                                                                                                      scopes: string;
                                                                                                      state: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface AuthState {
                                                                                                      codeVerifier?: string;
                                                                                                      maxAge?: number;
                                                                                                      nonce: string;
                                                                                                      resource?: string;
                                                                                                      scopes: string;
                                                                                                      state: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  codeVerifier?: string

                                                                                                  Optional. PKCE code verifier used to validate the authorization code exchange.

                                                                                                  -
                                                                                                  maxAge?: number

                                                                                                  Optional. Maximum allowed time (in seconds) since the user's last authentication.

                                                                                                  -
                                                                                                  nonce: string

                                                                                                  A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks.

                                                                                                  -
                                                                                                  resource?: string

                                                                                                  Optional. Space-separated list of resource indicators requested for the access token.

                                                                                                  -
                                                                                                  scopes: string

                                                                                                  Space-separated list of scopes requested during authorization.

                                                                                                  -
                                                                                                  state: string

                                                                                                  A unique value used to correlate the authorization request with the callback and protect against CSRF attacks.

                                                                                                  -
                                                                                                  +
                                                                                                  maxAge?: number

                                                                                                  Optional. Maximum allowed time (in seconds) since the user's last authentication.

                                                                                                  +
                                                                                                  nonce: string

                                                                                                  A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks.

                                                                                                  +
                                                                                                  resource?: string

                                                                                                  Optional. Space-separated list of resource indicators requested for the access token.

                                                                                                  +
                                                                                                  scopes: string

                                                                                                  Space-separated list of scopes requested during authorization.

                                                                                                  +
                                                                                                  state: string

                                                                                                  A unique value used to correlate the authorization request with the callback and protect against CSRF attacks.

                                                                                                  +
                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-core.index.AuthenticateOptions.html b/docs/html/interfaces/_monocloud_auth-core.index.AuthenticateOptions.html index c9e04f77..3a4ba24f 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.AuthenticateOptions.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.AuthenticateOptions.html @@ -1,5 +1,5 @@ AuthenticateOptions | MonoCloud Authentication SDK
                                                                                                  MonoCloud Authentication SDK
                                                                                                    Preparing search index...

                                                                                                    Options used when authenticating a user via the Authorization Code flow.

                                                                                                    -
                                                                                                    interface AuthenticateOptions {
                                                                                                        codeVerifier?: string;
                                                                                                        fetchUserInfo?: boolean;
                                                                                                        filteredIdTokenClaims?: string[];
                                                                                                        idTokenClockSkew?: number;
                                                                                                        idTokenClockTolerance?: number;
                                                                                                        idTokenMaxAge?: number;
                                                                                                        idTokenNonce?: string;
                                                                                                        jwks?: Jwks;
                                                                                                        onSessionCreating?: OnSessionCreating;
                                                                                                        validateIdToken?: boolean;
                                                                                                    }
                                                                                                    Index

                                                                                                    Properties

                                                                                                    interface AuthenticateOptions {
                                                                                                        codeVerifier?: string;
                                                                                                        fetchUserInfo?: boolean;
                                                                                                        filteredIdTokenClaims?: string[];
                                                                                                        idTokenClockSkew?: number;
                                                                                                        idTokenClockTolerance?: number;
                                                                                                        idTokenMaxAge?: number;
                                                                                                        idTokenNonce?: string;
                                                                                                        jwks?: Jwks;
                                                                                                        onSessionCreating?: OnSessionCreating;
                                                                                                        validateIdToken?: boolean;
                                                                                                    }
                                                                                                    Index

                                                                                                    Properties

                                                                                                    codeVerifier?: string

                                                                                                    PKCE code verifier associated with the authorization request.

                                                                                                    -
                                                                                                    fetchUserInfo?: boolean

                                                                                                    When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object.

                                                                                                    +
                                                                                                    fetchUserInfo?: boolean

                                                                                                    When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object.

                                                                                                    false
                                                                                                     
                                                                                                    -
                                                                                                    filteredIdTokenClaims?: string[]

                                                                                                    List of ID token claims to remove before storing the session.

                                                                                                    -
                                                                                                    idTokenClockSkew?: number

                                                                                                    Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                    -
                                                                                                    idTokenClockTolerance?: number

                                                                                                    Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                    -
                                                                                                    idTokenMaxAge?: number

                                                                                                    Maximum allowed authentication age (in seconds) for the ID token.

                                                                                                    -
                                                                                                    idTokenNonce?: string

                                                                                                    Nonce value expected in the ID token. Used to prevent replay attacks.

                                                                                                    -
                                                                                                    jwks?: Jwks

                                                                                                    JSON Web Key Set used to validate the ID token signature.

                                                                                                    +
                                                                                                    filteredIdTokenClaims?: string[]

                                                                                                    List of ID token claims to remove before storing the session.

                                                                                                    +
                                                                                                    idTokenClockSkew?: number

                                                                                                    Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                    +
                                                                                                    idTokenClockTolerance?: number

                                                                                                    Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                    +
                                                                                                    idTokenMaxAge?: number

                                                                                                    Maximum allowed authentication age (in seconds) for the ID token.

                                                                                                    +
                                                                                                    idTokenNonce?: string

                                                                                                    Nonce value expected in the ID token. Used to prevent replay attacks.

                                                                                                    +
                                                                                                    jwks?: Jwks

                                                                                                    JSON Web Key Set used to validate the ID token signature.

                                                                                                    If not provided, the JWKS is automatically fetched from the authorization server metadata.

                                                                                                    -
                                                                                                    onSessionCreating?: OnSessionCreating

                                                                                                    Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                    -
                                                                                                    validateIdToken?: boolean

                                                                                                    Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                    +
                                                                                                    onSessionCreating?: OnSessionCreating

                                                                                                    Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                    +
                                                                                                    validateIdToken?: boolean

                                                                                                    Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                    true
                                                                                                     
                                                                                                    -
                                                                                                    +
                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-core.index.CallbackParams.html b/docs/html/interfaces/_monocloud_auth-core.index.CallbackParams.html index 6d4e14b7..90c38924 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.CallbackParams.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.CallbackParams.html @@ -1,20 +1,22 @@ CallbackParams | MonoCloud Authentication SDK
                                                                                                    MonoCloud Authentication SDK
                                                                                                      Preparing search index...

                                                                                                      Parameters returned to the application after the authorization server redirects the user back to the callback URL.

                                                                                                      -
                                                                                                      interface CallbackParams {
                                                                                                          accessToken?: string;
                                                                                                          code?: string;
                                                                                                          error?: string;
                                                                                                          errorDescription?: string;
                                                                                                          expiresIn?: number;
                                                                                                          idToken?: string;
                                                                                                          refreshToken?: string;
                                                                                                          sessionState?: string;
                                                                                                          state?: string;
                                                                                                      }
                                                                                                      Index

                                                                                                      Properties

                                                                                                      interface CallbackParams {
                                                                                                          accessToken?: string;
                                                                                                          code?: string;
                                                                                                          error?: string;
                                                                                                          errorDescription?: string;
                                                                                                          expiresIn?: number;
                                                                                                          idToken?: string;
                                                                                                          refreshToken?: string;
                                                                                                          scope?: string;
                                                                                                          sessionState?: string;
                                                                                                          state?: string;
                                                                                                      }
                                                                                                      Index

                                                                                                      Properties

                                                                                                      accessToken?: string

                                                                                                      Access token returned directly by implicit or hybrid flows.

                                                                                                      -
                                                                                                      code?: string

                                                                                                      Authorization code returned when using the Authorization Code Flow.

                                                                                                      -
                                                                                                      error?: string

                                                                                                      Error code returned when authorization fails.

                                                                                                      +
                                                                                                      code?: string

                                                                                                      Authorization code returned when using the Authorization Code Flow.

                                                                                                      +
                                                                                                      error?: string

                                                                                                      Error code returned when authorization fails.

                                                                                                      errorDescription?: string

                                                                                                      Human-readable description providing additional information about the authorization error.

                                                                                                      expiresIn?: number

                                                                                                      Lifetime of the access token in seconds.

                                                                                                      -
                                                                                                      idToken?: string

                                                                                                      ID token issued by the authorization server.

                                                                                                      -
                                                                                                      refreshToken?: string

                                                                                                      Refresh token issued during authorization (if enabled).

                                                                                                      -
                                                                                                      sessionState?: string

                                                                                                      OIDC session state value used for session monitoring and front-channel session management.

                                                                                                      -
                                                                                                      state?: string

                                                                                                      The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks.

                                                                                                      -
                                                                                                      +
                                                                                                      idToken?: string

                                                                                                      ID token issued by the authorization server.

                                                                                                      +
                                                                                                      refreshToken?: string

                                                                                                      Refresh token issued during authorization (if enabled).

                                                                                                      +
                                                                                                      scope?: string

                                                                                                      Access token scopes (Implicit Flow)

                                                                                                      +
                                                                                                      sessionState?: string

                                                                                                      OIDC session state value used for session monitoring and front-channel session management.

                                                                                                      +
                                                                                                      state?: string

                                                                                                      The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks.

                                                                                                      +
                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-core.index.EndSessionParameters.html b/docs/html/interfaces/_monocloud_auth-core.index.EndSessionParameters.html index c8537be0..b9e4fb12 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.EndSessionParameters.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.EndSessionParameters.html @@ -1,9 +1,9 @@ EndSessionParameters | MonoCloud Authentication SDK
                                                                                                      MonoCloud Authentication SDK
                                                                                                        Preparing search index...

                                                                                                        Interface EndSessionParameters

                                                                                                        Parameters used to construct an OpenID Connect end-session (sign-out) request.

                                                                                                        -
                                                                                                        interface EndSessionParameters {
                                                                                                            idToken?: string;
                                                                                                            postLogoutRedirectUri?: string;
                                                                                                            state?: string;
                                                                                                        }
                                                                                                        Index

                                                                                                        Properties

                                                                                                        interface EndSessionParameters {
                                                                                                            idToken?: string;
                                                                                                            postLogoutRedirectUri?: string;
                                                                                                            state?: string;
                                                                                                        }
                                                                                                        Index

                                                                                                        Properties

                                                                                                        idToken?: string

                                                                                                        ID token hint identifying the session to terminate.

                                                                                                        When provided, the authorization server can use this value to determine which user session should be signed out.

                                                                                                        -
                                                                                                        postLogoutRedirectUri?: string

                                                                                                        The URL the authorization server should redirect the user to after a successful sign-out.

                                                                                                        -
                                                                                                        state?: string

                                                                                                        Optional state value returned to the application after sign-out.

                                                                                                        -
                                                                                                        +
                                                                                                        postLogoutRedirectUri?: string

                                                                                                        The URL the authorization server should redirect the user to after a successful sign-out.

                                                                                                        +
                                                                                                        state?: string

                                                                                                        Optional state value returned to the application after sign-out.

                                                                                                        +
                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-core.index.IdTokenClaims.html b/docs/html/interfaces/_monocloud_auth-core.index.IdTokenClaims.html index 0ecdb03c..764896a5 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.IdTokenClaims.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.IdTokenClaims.html @@ -1,6 +1,6 @@ IdTokenClaims | MonoCloud Authentication SDK
                                                                                                        MonoCloud Authentication SDK
                                                                                                          Preparing search index...

                                                                                                          Standard OpenID Connect ID Token claims.

                                                                                                          -
                                                                                                          interface IdTokenClaims {
                                                                                                              acr?: string;
                                                                                                              address?: Address;
                                                                                                              amr?: string[];
                                                                                                              at_hash?: string;
                                                                                                              aud: string | string[];
                                                                                                              auth_time?: number;
                                                                                                              azp?: string;
                                                                                                              birthdate?: string;
                                                                                                              c_hash?: string;
                                                                                                              email?: string;
                                                                                                              email_verified?: boolean;
                                                                                                              exp: number;
                                                                                                              family_name?: string;
                                                                                                              gender?: string;
                                                                                                              given_name?: string;
                                                                                                              groups?: Group[];
                                                                                                              iat: number;
                                                                                                              iss: string;
                                                                                                              locale?: string;
                                                                                                              middle_name?: string;
                                                                                                              name?: string;
                                                                                                              nickname?: string;
                                                                                                              nonce?: string;
                                                                                                              phone_number?: string;
                                                                                                              phone_number_verified?: boolean;
                                                                                                              picture?: string;
                                                                                                              preferred_username?: string;
                                                                                                              profile?: string;
                                                                                                              s_hash?: string;
                                                                                                              sub: string;
                                                                                                              updated_at?: number;
                                                                                                              website?: string;
                                                                                                              zoneinfo?: string;
                                                                                                              [key: string]: unknown;
                                                                                                          }

                                                                                                          Hierarchy

                                                                                                          Indexable

                                                                                                          • [key: string]: unknown

                                                                                                            Additional custom or provider-specific claims.

                                                                                                            -
                                                                                                          Index

                                                                                                          Properties

                                                                                                          interface IdTokenClaims {
                                                                                                              acr?: string;
                                                                                                              address?: Address;
                                                                                                              amr?: string[];
                                                                                                              at_hash?: string;
                                                                                                              aud: string | string[];
                                                                                                              auth_time?: number;
                                                                                                              azp?: string;
                                                                                                              birthdate?: string;
                                                                                                              c_hash?: string;
                                                                                                              email?: string;
                                                                                                              email_verified?: boolean;
                                                                                                              exp: number;
                                                                                                              family_name?: string;
                                                                                                              gender?: string;
                                                                                                              given_name?: string;
                                                                                                              groups?: Group[];
                                                                                                              iat: number;
                                                                                                              iss: string;
                                                                                                              locale?: string;
                                                                                                              middle_name?: string;
                                                                                                              name?: string;
                                                                                                              nickname?: string;
                                                                                                              nonce?: string;
                                                                                                              phone_number?: string;
                                                                                                              phone_number_verified?: boolean;
                                                                                                              picture?: string;
                                                                                                              preferred_username?: string;
                                                                                                              profile?: string;
                                                                                                              s_hash?: string;
                                                                                                              sub: string;
                                                                                                              updated_at?: number;
                                                                                                              website?: string;
                                                                                                              zoneinfo?: string;
                                                                                                              [key: string]: unknown;
                                                                                                          }

                                                                                                          Hierarchy

                                                                                                          Indexable

                                                                                                          • [key: string]: unknown

                                                                                                            Additional custom or provider-specific claims.

                                                                                                            +
                                                                                                          Index

                                                                                                          Properties

                                                                                                          Properties

                                                                                                          acr?: string

                                                                                                          Authentication Context Class Reference. Indicates the assurance level of the authentication performed.

                                                                                                          -
                                                                                                          address?: Address

                                                                                                          Postal address.

                                                                                                          -
                                                                                                          amr?: string[]

                                                                                                          Authentication Methods References. Lists the authentication methods used (for example: pwd, mfa, otp).

                                                                                                          -
                                                                                                          at_hash?: string

                                                                                                          Access token hash. Used to validate access tokens returned alongside the ID token.

                                                                                                          -
                                                                                                          aud: string | string[]

                                                                                                          Intended audience(s) of the ID token.

                                                                                                          -
                                                                                                          auth_time?: number

                                                                                                          Time when the end-user authentication occurred (Unix epoch seconds).

                                                                                                          -
                                                                                                          azp?: string

                                                                                                          Authorized party - identifies the client to which the ID token was issued.

                                                                                                          -
                                                                                                          birthdate?: string

                                                                                                          Birthday.

                                                                                                          -
                                                                                                          c_hash?: string

                                                                                                          Authorization code hash. Used to validate authorization codes returned with hybrid flows.

                                                                                                          -
                                                                                                          email?: string

                                                                                                          Email address.

                                                                                                          -
                                                                                                          email_verified?: boolean

                                                                                                          Whether the email address has been verified by the provider.

                                                                                                          -
                                                                                                          exp: number

                                                                                                          Expiration time of the ID token (Unix epoch seconds).

                                                                                                          -
                                                                                                          family_name?: string

                                                                                                          Surname(s) / last name.

                                                                                                          -
                                                                                                          gender?: string

                                                                                                          Gender.

                                                                                                          -
                                                                                                          given_name?: string

                                                                                                          Given name(s) / first name.

                                                                                                          -
                                                                                                          groups?: Group[]

                                                                                                          Group memberships for the user.

                                                                                                          -
                                                                                                          iat: number

                                                                                                          Time at which the ID token was issued (Unix epoch seconds).

                                                                                                          -
                                                                                                          iss: string

                                                                                                          Issuer identifier - the authorization server that issued the token.

                                                                                                          -
                                                                                                          locale?: string

                                                                                                          Locale.

                                                                                                          -
                                                                                                          middle_name?: string

                                                                                                          Middle name(s).

                                                                                                          -
                                                                                                          name?: string

                                                                                                          Full name of the user (e.g. "Jane Doe").

                                                                                                          -
                                                                                                          nickname?: string

                                                                                                          Casual name used by the user.

                                                                                                          -
                                                                                                          nonce?: string

                                                                                                          Nonce value used to associate the authentication request with the issued ID token and prevent replay attacks.

                                                                                                          -
                                                                                                          phone_number?: string

                                                                                                          Phone number (formatted in E.164 standard).

                                                                                                          -
                                                                                                          phone_number_verified?: boolean

                                                                                                          Whether the phone number has been verified by the provider.

                                                                                                          -
                                                                                                          picture?: string

                                                                                                          URL of the user's profile picture.

                                                                                                          -
                                                                                                          preferred_username?: string

                                                                                                          Preferred username.

                                                                                                          -
                                                                                                          profile?: string

                                                                                                          URL of the user's profile page.

                                                                                                          -
                                                                                                          s_hash?: string

                                                                                                          State hash (used in some hybrid flow validations).

                                                                                                          -
                                                                                                          sub: string

                                                                                                          Subject identifier — uniquely identifies the authenticated user.

                                                                                                          -
                                                                                                          updated_at?: number

                                                                                                          Time the user's information was last updated (seconds since epoch).

                                                                                                          -
                                                                                                          website?: string

                                                                                                          URL of the user's website.

                                                                                                          -
                                                                                                          zoneinfo?: string

                                                                                                          Time zone name.

                                                                                                          -
                                                                                                          +
                                                                                                          address?: Address

                                                                                                          Postal address.

                                                                                                          +
                                                                                                          amr?: string[]

                                                                                                          Authentication Methods References. Lists the authentication methods used (for example: pwd, mfa, otp).

                                                                                                          +
                                                                                                          at_hash?: string

                                                                                                          Access token hash. Used to validate access tokens returned alongside the ID token.

                                                                                                          +
                                                                                                          aud: string | string[]

                                                                                                          Intended audience(s) of the ID token.

                                                                                                          +
                                                                                                          auth_time?: number

                                                                                                          Time when the end-user authentication occurred (Unix epoch seconds).

                                                                                                          +
                                                                                                          azp?: string

                                                                                                          Authorized party - identifies the client to which the ID token was issued.

                                                                                                          +
                                                                                                          birthdate?: string

                                                                                                          Birthday.

                                                                                                          +
                                                                                                          c_hash?: string

                                                                                                          Authorization code hash. Used to validate authorization codes returned with hybrid flows.

                                                                                                          +
                                                                                                          email?: string

                                                                                                          Email address.

                                                                                                          +
                                                                                                          email_verified?: boolean

                                                                                                          Whether the email address has been verified by the provider.

                                                                                                          +
                                                                                                          exp: number

                                                                                                          Expiration time of the ID token (Unix epoch seconds).

                                                                                                          +
                                                                                                          family_name?: string

                                                                                                          Surname(s) / last name.

                                                                                                          +
                                                                                                          gender?: string

                                                                                                          Gender.

                                                                                                          +
                                                                                                          given_name?: string

                                                                                                          Given name(s) / first name.

                                                                                                          +
                                                                                                          groups?: Group[]

                                                                                                          Group memberships for the user.

                                                                                                          +
                                                                                                          iat: number

                                                                                                          Time at which the ID token was issued (Unix epoch seconds).

                                                                                                          +
                                                                                                          iss: string

                                                                                                          Issuer identifier - the authorization server that issued the token.

                                                                                                          +
                                                                                                          locale?: string

                                                                                                          Locale.

                                                                                                          +
                                                                                                          middle_name?: string

                                                                                                          Middle name(s).

                                                                                                          +
                                                                                                          name?: string

                                                                                                          Full name of the user (e.g. "Jane Doe").

                                                                                                          +
                                                                                                          nickname?: string

                                                                                                          Casual name used by the user.

                                                                                                          +
                                                                                                          nonce?: string

                                                                                                          Nonce value used to associate the authentication request with the issued ID token and prevent replay attacks.

                                                                                                          +
                                                                                                          phone_number?: string

                                                                                                          Phone number (formatted in E.164 standard).

                                                                                                          +
                                                                                                          phone_number_verified?: boolean

                                                                                                          Whether the phone number has been verified by the provider.

                                                                                                          +
                                                                                                          picture?: string

                                                                                                          URL of the user's profile picture.

                                                                                                          +
                                                                                                          preferred_username?: string

                                                                                                          Preferred username.

                                                                                                          +
                                                                                                          profile?: string

                                                                                                          URL of the user's profile page.

                                                                                                          +
                                                                                                          s_hash?: string

                                                                                                          State hash (used in some hybrid flow validations).

                                                                                                          +
                                                                                                          sub: string

                                                                                                          Subject identifier — uniquely identifies the authenticated user.

                                                                                                          +
                                                                                                          updated_at?: number

                                                                                                          Time the user's information was last updated (seconds since epoch).

                                                                                                          +
                                                                                                          website?: string

                                                                                                          URL of the user's website.

                                                                                                          +
                                                                                                          zoneinfo?: string

                                                                                                          Time zone name.

                                                                                                          +
                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-core.index.IssuerMetadata.html b/docs/html/interfaces/_monocloud_auth-core.index.IssuerMetadata.html index ac49e647..0d2e8b0f 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.IssuerMetadata.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.IssuerMetadata.html @@ -1,5 +1,5 @@ IssuerMetadata | MonoCloud Authentication SDK
                                                                                                          MonoCloud Authentication SDK
                                                                                                            Preparing search index...

                                                                                                            OpenID Connect Discovery metadata published by the authorization server.

                                                                                                            -
                                                                                                            interface IssuerMetadata {
                                                                                                                authorization_endpoint: string;
                                                                                                                backchannel_logout_session_supported: boolean;
                                                                                                                backchannel_logout_supported: boolean;
                                                                                                                check_session_iframe: string;
                                                                                                                claims_supported: string[];
                                                                                                                code_challenge_methods_supported: string[];
                                                                                                                device_authorization_endpoint: string;
                                                                                                                end_session_endpoint: string;
                                                                                                                frontchannel_logout_session_supported: boolean;
                                                                                                                frontchannel_logout_supported: boolean;
                                                                                                                grant_types_supported: string[];
                                                                                                                id_token_signing_alg_values_supported: string[];
                                                                                                                introspection_endpoint: string;
                                                                                                                issuer: string;
                                                                                                                jwks_uri: string;
                                                                                                                pushed_authorization_request_endpoint?: string;
                                                                                                                request_object_signing_alg_values_supported: string[];
                                                                                                                request_parameter_supported: boolean;
                                                                                                                request_uri_parameter_supported: boolean;
                                                                                                                require_pushed_authorization_requests: boolean;
                                                                                                                response_modes_supported: string[];
                                                                                                                response_types_supported: string[];
                                                                                                                revocation_endpoint: string;
                                                                                                                scopes_supported: string[];
                                                                                                                subject_types_supported: string[];
                                                                                                                token_endpoint: string;
                                                                                                                token_endpoint_auth_methods_supported: string[];
                                                                                                                userinfo_endpoint: string;
                                                                                                            }
                                                                                                            Index

                                                                                                            Properties

                                                                                                            interface IssuerMetadata {
                                                                                                                authorization_endpoint: string;
                                                                                                                backchannel_logout_session_supported: boolean;
                                                                                                                backchannel_logout_supported: boolean;
                                                                                                                check_session_iframe: string;
                                                                                                                claims_supported: string[];
                                                                                                                code_challenge_methods_supported: string[];
                                                                                                                device_authorization_endpoint: string;
                                                                                                                end_session_endpoint: string;
                                                                                                                frontchannel_logout_session_supported: boolean;
                                                                                                                frontchannel_logout_supported: boolean;
                                                                                                                grant_types_supported: string[];
                                                                                                                id_token_signing_alg_values_supported: string[];
                                                                                                                introspection_endpoint: string;
                                                                                                                issuer: string;
                                                                                                                jwks_uri: string;
                                                                                                                pushed_authorization_request_endpoint?: string;
                                                                                                                request_object_signing_alg_values_supported: string[];
                                                                                                                request_parameter_supported: boolean;
                                                                                                                request_uri_parameter_supported: boolean;
                                                                                                                require_pushed_authorization_requests: boolean;
                                                                                                                response_modes_supported: string[];
                                                                                                                response_types_supported: string[];
                                                                                                                revocation_endpoint: string;
                                                                                                                scopes_supported: string[];
                                                                                                                subject_types_supported: string[];
                                                                                                                token_endpoint: string;
                                                                                                                token_endpoint_auth_methods_supported: string[];
                                                                                                                userinfo_endpoint: string;
                                                                                                            }
                                                                                                            Index

                                                                                                            Properties

                                                                                                            authorization_endpoint: string

                                                                                                            Authorization endpoint used to initiate authentication requests.

                                                                                                            -
                                                                                                            backchannel_logout_session_supported: boolean

                                                                                                            Indicates back-channel logout session support.

                                                                                                            -
                                                                                                            backchannel_logout_supported: boolean

                                                                                                            Indicates support for back-channel logout.

                                                                                                            -
                                                                                                            check_session_iframe: string

                                                                                                            Session management iframe endpoint.

                                                                                                            -
                                                                                                            claims_supported: string[]

                                                                                                            Claims that may be returned in tokens or UserInfo responses.

                                                                                                            -
                                                                                                            code_challenge_methods_supported: string[]

                                                                                                            Supported PKCE code challenge methods.

                                                                                                            -
                                                                                                            device_authorization_endpoint: string

                                                                                                            Device Authorization Grant endpoint.

                                                                                                            -
                                                                                                            end_session_endpoint: string

                                                                                                            End-session endpoint used to initiate logout.

                                                                                                            -
                                                                                                            frontchannel_logout_session_supported: boolean

                                                                                                            Indicates front-channel logout session support.

                                                                                                            -
                                                                                                            frontchannel_logout_supported: boolean

                                                                                                            Indicates support for front-channel logout.

                                                                                                            -
                                                                                                            grant_types_supported: string[]

                                                                                                            Supported OAuth grant types.

                                                                                                            -
                                                                                                            id_token_signing_alg_values_supported: string[]

                                                                                                            Supported signing algorithms for ID tokens.

                                                                                                            -
                                                                                                            introspection_endpoint: string

                                                                                                            Token introspection endpoint.

                                                                                                            -
                                                                                                            issuer: string

                                                                                                            The issuer identifier for the authorization server.

                                                                                                            -
                                                                                                            jwks_uri: string

                                                                                                            JSON Web Key Set (JWKS) endpoint used to obtain signing keys.

                                                                                                            -
                                                                                                            pushed_authorization_request_endpoint?: string

                                                                                                            Pushed Authorization Request (PAR) endpoint.

                                                                                                            -
                                                                                                            request_object_signing_alg_values_supported: string[]

                                                                                                            Supported signing algorithms for request objects.

                                                                                                            -
                                                                                                            request_parameter_supported: boolean

                                                                                                            Indicates support for request objects passed by value.

                                                                                                            -
                                                                                                            request_uri_parameter_supported: boolean

                                                                                                            Indicates support for request objects passed by reference (request_uri).

                                                                                                            -
                                                                                                            require_pushed_authorization_requests: boolean

                                                                                                            Indicates whether PAR is required for authorization requests.

                                                                                                            -
                                                                                                            response_modes_supported: string[]

                                                                                                            Supported response modes.

                                                                                                            -
                                                                                                            response_types_supported: string[]

                                                                                                            Supported OAuth/OIDC response types.

                                                                                                            -
                                                                                                            revocation_endpoint: string

                                                                                                            Token revocation endpoint.

                                                                                                            -
                                                                                                            scopes_supported: string[]

                                                                                                            OAuth scopes supported by the authorization server.

                                                                                                            -
                                                                                                            subject_types_supported: string[]

                                                                                                            Supported subject identifier types.

                                                                                                            -
                                                                                                            token_endpoint: string

                                                                                                            Token endpoint used to exchange authorization codes for tokens.

                                                                                                            -
                                                                                                            token_endpoint_auth_methods_supported: string[]

                                                                                                            Supported authentication methods for the token endpoint.

                                                                                                            -
                                                                                                            userinfo_endpoint: string

                                                                                                            UserInfo endpoint used to retrieve user profile claims.

                                                                                                            -
                                                                                                            +
                                                                                                            backchannel_logout_session_supported: boolean

                                                                                                            Indicates back-channel logout session support.

                                                                                                            +
                                                                                                            backchannel_logout_supported: boolean

                                                                                                            Indicates support for back-channel logout.

                                                                                                            +
                                                                                                            check_session_iframe: string

                                                                                                            Session management iframe endpoint.

                                                                                                            +
                                                                                                            claims_supported: string[]

                                                                                                            Claims that may be returned in tokens or UserInfo responses.

                                                                                                            +
                                                                                                            code_challenge_methods_supported: string[]

                                                                                                            Supported PKCE code challenge methods.

                                                                                                            +
                                                                                                            device_authorization_endpoint: string

                                                                                                            Device Authorization Grant endpoint.

                                                                                                            +
                                                                                                            end_session_endpoint: string

                                                                                                            End-session endpoint used to initiate logout.

                                                                                                            +
                                                                                                            frontchannel_logout_session_supported: boolean

                                                                                                            Indicates front-channel logout session support.

                                                                                                            +
                                                                                                            frontchannel_logout_supported: boolean

                                                                                                            Indicates support for front-channel logout.

                                                                                                            +
                                                                                                            grant_types_supported: string[]

                                                                                                            Supported OAuth grant types.

                                                                                                            +
                                                                                                            id_token_signing_alg_values_supported: string[]

                                                                                                            Supported signing algorithms for ID tokens.

                                                                                                            +
                                                                                                            introspection_endpoint: string

                                                                                                            Token introspection endpoint.

                                                                                                            +
                                                                                                            issuer: string

                                                                                                            The issuer identifier for the authorization server.

                                                                                                            +
                                                                                                            jwks_uri: string

                                                                                                            JSON Web Key Set (JWKS) endpoint used to obtain signing keys.

                                                                                                            +
                                                                                                            pushed_authorization_request_endpoint?: string

                                                                                                            Pushed Authorization Request (PAR) endpoint.

                                                                                                            +
                                                                                                            request_object_signing_alg_values_supported: string[]

                                                                                                            Supported signing algorithms for request objects.

                                                                                                            +
                                                                                                            request_parameter_supported: boolean

                                                                                                            Indicates support for request objects passed by value.

                                                                                                            +
                                                                                                            request_uri_parameter_supported: boolean

                                                                                                            Indicates support for request objects passed by reference (request_uri).

                                                                                                            +
                                                                                                            require_pushed_authorization_requests: boolean

                                                                                                            Indicates whether PAR is required for authorization requests.

                                                                                                            +
                                                                                                            response_modes_supported: string[]

                                                                                                            Supported response modes.

                                                                                                            +
                                                                                                            response_types_supported: string[]

                                                                                                            Supported OAuth/OIDC response types.

                                                                                                            +
                                                                                                            revocation_endpoint: string

                                                                                                            Token revocation endpoint.

                                                                                                            +
                                                                                                            scopes_supported: string[]

                                                                                                            OAuth scopes supported by the authorization server.

                                                                                                            +
                                                                                                            subject_types_supported: string[]

                                                                                                            Supported subject identifier types.

                                                                                                            +
                                                                                                            token_endpoint: string

                                                                                                            Token endpoint used to exchange authorization codes for tokens.

                                                                                                            +
                                                                                                            token_endpoint_auth_methods_supported: string[]

                                                                                                            Supported authentication methods for the token endpoint.

                                                                                                            +
                                                                                                            userinfo_endpoint: string

                                                                                                            UserInfo endpoint used to retrieve user profile claims.

                                                                                                            +
                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-core.index.Jwk.html b/docs/html/interfaces/_monocloud_auth-core.index.Jwk.html index 1ceb9090..dbb1e4bd 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.Jwk.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.Jwk.html @@ -1,7 +1,7 @@ Jwk | MonoCloud Authentication SDK
                                                                                                            MonoCloud Authentication SDK
                                                                                                              Preparing search index...

                                                                                                              Represents a JSON Web Key (JWK) as defined by RFC 7517.

                                                                                                              A JWK describes a cryptographic key used to verify or encrypt JSON Web Tokens (JWTs) as obtained from the JWKS (JSON Web Key Set) endpoint exposed by the authorization server.

                                                                                                              The available properties depend on the key type (kty).

                                                                                                              -
                                                                                                              interface Jwk {
                                                                                                                  alg?: string;
                                                                                                                  crv?: string;
                                                                                                                  d?: string;
                                                                                                                  dp?: string;
                                                                                                                  dq?: string;
                                                                                                                  e?: string;
                                                                                                                  ext?: boolean;
                                                                                                                  k?: string;
                                                                                                                  key_ops?: string[];
                                                                                                                  kid?: string;
                                                                                                                  kty: string;
                                                                                                                  n?: string;
                                                                                                                  oth?: { d?: string; r?: string; t?: string }[];
                                                                                                                  p?: string;
                                                                                                                  q?: string;
                                                                                                                  qi?: string;
                                                                                                                  use?: string;
                                                                                                                  x?: string;
                                                                                                                  x5c?: string[];
                                                                                                                  x5t?: string;
                                                                                                                  "x5t#S256"?: string;
                                                                                                                  x5u?: string;
                                                                                                                  y?: string;
                                                                                                              }
                                                                                                              Index

                                                                                                              Properties

                                                                                                              interface Jwk {
                                                                                                                  alg?: string;
                                                                                                                  crv?: string;
                                                                                                                  d?: string;
                                                                                                                  dp?: string;
                                                                                                                  dq?: string;
                                                                                                                  e?: string;
                                                                                                                  ext?: boolean;
                                                                                                                  k?: string;
                                                                                                                  key_ops?: string[];
                                                                                                                  kid?: string;
                                                                                                                  kty: string;
                                                                                                                  n?: string;
                                                                                                                  oth?: { d?: string; r?: string; t?: string }[];
                                                                                                                  p?: string;
                                                                                                                  q?: string;
                                                                                                                  qi?: string;
                                                                                                                  use?: string;
                                                                                                                  x?: string;
                                                                                                                  x5c?: string[];
                                                                                                                  x5t?: string;
                                                                                                                  "x5t#S256"?: string;
                                                                                                                  x5u?: string;
                                                                                                                  y?: string;
                                                                                                              }
                                                                                                              Index

                                                                                                              Properties

                                                                                                              alg? crv? d? dp? @@ -25,26 +25,26 @@ x5u? y?

                                                                                                              Properties

                                                                                                              alg?: string

                                                                                                              Intended algorithm for the key (for example: RS256).

                                                                                                              -
                                                                                                              crv?: string

                                                                                                              Elliptic curve name (for example: P-256).

                                                                                                              -
                                                                                                              d?: string

                                                                                                              RSA private exponent.

                                                                                                              -
                                                                                                              dp?: string

                                                                                                              RSA first factor CRT exponent.

                                                                                                              -
                                                                                                              dq?: string

                                                                                                              RSA second factor CRT exponent.

                                                                                                              -
                                                                                                              e?: string

                                                                                                              RSA public exponent.

                                                                                                              -
                                                                                                              ext?: boolean

                                                                                                              Indicates whether the key is extractable.

                                                                                                              -
                                                                                                              k?: string

                                                                                                              Symmetric key value (base64url encoded).

                                                                                                              -
                                                                                                              key_ops?: string[]

                                                                                                              Allowed operations for the key (e.g. sign, verify, encrypt).

                                                                                                              -
                                                                                                              kid?: string

                                                                                                              Key identifier used to match keys during verification.

                                                                                                              -
                                                                                                              kty: string

                                                                                                              Key type (for example: RSA, or EC).

                                                                                                              -
                                                                                                              n?: string

                                                                                                              RSA modulus.

                                                                                                              -
                                                                                                              oth?: { d?: string; r?: string; t?: string }[]

                                                                                                              Additional prime information (multi-prime RSA).

                                                                                                              -
                                                                                                              p?: string

                                                                                                              RSA first prime factor.

                                                                                                              -
                                                                                                              q?: string

                                                                                                              RSA second prime factor.

                                                                                                              -
                                                                                                              qi?: string

                                                                                                              RSA CRT coefficient.

                                                                                                              -
                                                                                                              use?: string

                                                                                                              Public key use (sig for signature or enc for encryption).

                                                                                                              -
                                                                                                              x?: string

                                                                                                              X coordinate for EC public keys.

                                                                                                              -
                                                                                                              x5c?: string[]

                                                                                                              X.509 certificate chain.

                                                                                                              -
                                                                                                              x5t?: string

                                                                                                              X.509 certificate SHA-1 thumbprint.

                                                                                                              -
                                                                                                              "x5t#S256"?: string

                                                                                                              X.509 certificate SHA-256 thumbprint.

                                                                                                              -
                                                                                                              x5u?: string

                                                                                                              URL referencing the X.509 certificate.

                                                                                                              -
                                                                                                              y?: string

                                                                                                              Y coordinate for EC public keys.

                                                                                                              -
                                                                                                              +
                                                                                                              crv?: string

                                                                                                              Elliptic curve name (for example: P-256).

                                                                                                              +
                                                                                                              d?: string

                                                                                                              RSA private exponent.

                                                                                                              +
                                                                                                              dp?: string

                                                                                                              RSA first factor CRT exponent.

                                                                                                              +
                                                                                                              dq?: string

                                                                                                              RSA second factor CRT exponent.

                                                                                                              +
                                                                                                              e?: string

                                                                                                              RSA public exponent.

                                                                                                              +
                                                                                                              ext?: boolean

                                                                                                              Indicates whether the key is extractable.

                                                                                                              +
                                                                                                              k?: string

                                                                                                              Symmetric key value (base64url encoded).

                                                                                                              +
                                                                                                              key_ops?: string[]

                                                                                                              Allowed operations for the key (e.g. sign, verify, encrypt).

                                                                                                              +
                                                                                                              kid?: string

                                                                                                              Key identifier used to match keys during verification.

                                                                                                              +
                                                                                                              kty: string

                                                                                                              Key type (for example: RSA, or EC).

                                                                                                              +
                                                                                                              n?: string

                                                                                                              RSA modulus.

                                                                                                              +
                                                                                                              oth?: { d?: string; r?: string; t?: string }[]

                                                                                                              Additional prime information (multi-prime RSA).

                                                                                                              +
                                                                                                              p?: string

                                                                                                              RSA first prime factor.

                                                                                                              +
                                                                                                              q?: string

                                                                                                              RSA second prime factor.

                                                                                                              +
                                                                                                              qi?: string

                                                                                                              RSA CRT coefficient.

                                                                                                              +
                                                                                                              use?: string

                                                                                                              Public key use (sig for signature or enc for encryption).

                                                                                                              +
                                                                                                              x?: string

                                                                                                              X coordinate for EC public keys.

                                                                                                              +
                                                                                                              x5c?: string[]

                                                                                                              X.509 certificate chain.

                                                                                                              +
                                                                                                              x5t?: string

                                                                                                              X.509 certificate SHA-1 thumbprint.

                                                                                                              +
                                                                                                              "x5t#S256"?: string

                                                                                                              X.509 certificate SHA-256 thumbprint.

                                                                                                              +
                                                                                                              x5u?: string

                                                                                                              URL referencing the X.509 certificate.

                                                                                                              +
                                                                                                              y?: string

                                                                                                              Y coordinate for EC public keys.

                                                                                                              +
                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-core.index.Jwks.html b/docs/html/interfaces/_monocloud_auth-core.index.Jwks.html index 2a4a943e..1ad9e03c 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.Jwks.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.Jwks.html @@ -1,5 +1,5 @@ Jwks | MonoCloud Authentication SDK
                                                                                                              MonoCloud Authentication SDK
                                                                                                                Preparing search index...

                                                                                                                Represents a JSON Web Key Set (JWKS).

                                                                                                                A JWKS is a collection of public JSON Web Keys used to verify signatures of JSON Web Tokens (JWTs).

                                                                                                                -
                                                                                                                interface Jwks {
                                                                                                                    keys: Jwk[];
                                                                                                                }
                                                                                                                Index

                                                                                                                Properties

                                                                                                                interface Jwks {
                                                                                                                    keys: Jwk[];
                                                                                                                }
                                                                                                                Index

                                                                                                                Properties

                                                                                                                Properties

                                                                                                                keys: Jwk[]

                                                                                                                The list of public keys contained in this key set.

                                                                                                                -
                                                                                                                +
                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-core.index.JwsHeaderParameters.html b/docs/html/interfaces/_monocloud_auth-core.index.JwsHeaderParameters.html index 977885ef..f21343f3 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.JwsHeaderParameters.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.JwsHeaderParameters.html @@ -1,12 +1,12 @@ JwsHeaderParameters | MonoCloud Authentication SDK
                                                                                                                MonoCloud Authentication SDK
                                                                                                                  Preparing search index...

                                                                                                                  Parameters contained in a JSON Web Signature (JWS) header.

                                                                                                                  -
                                                                                                                  interface JwsHeaderParameters {
                                                                                                                      alg: SecurityAlgorithms;
                                                                                                                      crit?: string[];
                                                                                                                      jwk?: Jwk;
                                                                                                                      kid?: string;
                                                                                                                      typ?: string;
                                                                                                                  }
                                                                                                                  Index

                                                                                                                  Properties

                                                                                                                  alg +
                                                                                                                  interface JwsHeaderParameters {
                                                                                                                      alg: SecurityAlgorithms;
                                                                                                                      crit?: string[];
                                                                                                                      jwk?: Jwk;
                                                                                                                      kid?: string;
                                                                                                                      typ?: string;
                                                                                                                  }
                                                                                                                  Index

                                                                                                                  Properties

                                                                                                                  Properties

                                                                                                                  The cryptographic algorithm used to sign the token.

                                                                                                                  -
                                                                                                                  crit?: string[]

                                                                                                                  List of header parameters that are marked as critical and must be understood by the token processor.

                                                                                                                  -
                                                                                                                  jwk?: Jwk

                                                                                                                  An embedded JSON Web Key (JWK) containing the signing key.

                                                                                                                  -
                                                                                                                  kid?: string

                                                                                                                  Identifier of the key used to sign the token.

                                                                                                                  -
                                                                                                                  typ?: string

                                                                                                                  The token type.

                                                                                                                  -
                                                                                                                  +
                                                                                                                  crit?: string[]

                                                                                                                  List of header parameters that are marked as critical and must be understood by the token processor.

                                                                                                                  +
                                                                                                                  jwk?: Jwk

                                                                                                                  An embedded JSON Web Key (JWK) containing the signing key.

                                                                                                                  +
                                                                                                                  kid?: string

                                                                                                                  Identifier of the key used to sign the token.

                                                                                                                  +
                                                                                                                  typ?: string

                                                                                                                  The token type.

                                                                                                                  +
                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudClientOptions.html b/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudClientOptions.html index 58ab86e8..e8ba6241 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudClientOptions.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudClientOptions.html @@ -1,23 +1,23 @@ MonoCloudClientOptions | MonoCloud Authentication SDK
                                                                                                                  MonoCloud Authentication SDK
                                                                                                                    Preparing search index...

                                                                                                                    Interface MonoCloudClientOptions

                                                                                                                    Configuration options used to initialize the MonoCloudClient.

                                                                                                                    -
                                                                                                                    interface MonoCloudClientOptions {
                                                                                                                        clientAuthMethod?: ClientAuthMethod;
                                                                                                                        clientSecret?: string | Jwk;
                                                                                                                        idTokenSigningAlgorithm?: SecurityAlgorithms;
                                                                                                                        jwksCacheDuration?: number;
                                                                                                                        metadataCacheDuration?: number;
                                                                                                                    }
                                                                                                                    Index

                                                                                                                    Properties

                                                                                                                    interface MonoCloudClientOptions {
                                                                                                                        clientAuthMethod?: ClientAuthMethod;
                                                                                                                        clientSecret?: string | Jwk;
                                                                                                                        idTokenSigningAlgorithm?: SecurityAlgorithms;
                                                                                                                        jwksCacheDuration?: number;
                                                                                                                        metadataCacheDuration?: number;
                                                                                                                    }
                                                                                                                    Index

                                                                                                                    Properties

                                                                                                                    clientAuthMethod?: ClientAuthMethod

                                                                                                                    Client authentication method used when communicating with the token endpoint.

                                                                                                                    -
                                                                                                                    clientSecret?: string | Jwk

                                                                                                                    Client secret used for client authentication.

                                                                                                                    +
                                                                                                                    clientSecret?: string | Jwk

                                                                                                                    Client secret used for client authentication.

                                                                                                                    When clientAuthMethod is client_secret_jwt and a plain-text secret is provided, the default signing algorithm is HS256.

                                                                                                                    To use a different algorithm, provide a symmetric JSON Web Key (JWK) (kty: "oct") with the desired algorithm specified in its alg property.

                                                                                                                    -
                                                                                                                    idTokenSigningAlgorithm?: SecurityAlgorithms

                                                                                                                    Expected signing algorithm for validating ID tokens.

                                                                                                                    +
                                                                                                                    idTokenSigningAlgorithm?: SecurityAlgorithms

                                                                                                                    Expected signing algorithm for validating ID tokens.

                                                                                                                    'RS256'
                                                                                                                     
                                                                                                                    -
                                                                                                                    jwksCacheDuration?: number

                                                                                                                    Duration (in seconds) to cache the JSON Web Key Set (JWKS) retrieved from the authorization server.

                                                                                                                    +
                                                                                                                    jwksCacheDuration?: number

                                                                                                                    Duration (in seconds) to cache the JSON Web Key Set (JWKS) retrieved from the authorization server.

                                                                                                                    300
                                                                                                                     
                                                                                                                    -
                                                                                                                    metadataCacheDuration?: number

                                                                                                                    Duration (in seconds) to cache OpenID Connect discovery metadata.

                                                                                                                    +
                                                                                                                    metadataCacheDuration?: number

                                                                                                                    Duration (in seconds) to cache OpenID Connect discovery metadata.

                                                                                                                    300
                                                                                                                     
                                                                                                                    -
                                                                                                                    +
                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudSession.html b/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudSession.html index b4f372dc..7ce4627d 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudSession.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudSession.html @@ -1,15 +1,15 @@ MonoCloudSession | MonoCloud Authentication SDK
                                                                                                                    MonoCloud Authentication SDK
                                                                                                                      Preparing search index...

                                                                                                                      Represents an authenticated session, containing the authenticated user profile along with the tokens and metadata issued during authentication.

                                                                                                                      interface MonoCloudSession {
                                                                                                                          accessTokens?: AccessToken[];
                                                                                                                          authorizedScopes?: string;
                                                                                                                          idToken?: string;
                                                                                                                          refreshToken?: string;
                                                                                                                          user: MonoCloudUser;
                                                                                                                          [key: string]: unknown;
                                                                                                                      }

                                                                                                                      Indexable

                                                                                                                      • [key: string]: unknown

                                                                                                                        Additional custom properties attached to the session.

                                                                                                                        These may be added via hooks such as onSessionCreating.

                                                                                                                        -
                                                                                                                      Index

                                                                                                                      Properties

                                                                                                                      Index

                                                                                                                      Properties

                                                                                                                      accessTokens?: AccessToken[]

                                                                                                                      Access tokens associated with the session.

                                                                                                                      Multiple tokens may exist when access tokens are issued for different resources or scope sets.

                                                                                                                      -
                                                                                                                      authorizedScopes?: string

                                                                                                                      Space-separated list of scopes authorized for the session.

                                                                                                                      -
                                                                                                                      idToken?: string

                                                                                                                      Optional ID token issued during authentication.

                                                                                                                      -
                                                                                                                      refreshToken?: string

                                                                                                                      Optional refresh token used to obtain new access tokens without requiring the user to re-authenticate.

                                                                                                                      -

                                                                                                                      The authenticated user profile, typically derived from ID token claims and/or the UserInfo endpoint.

                                                                                                                      -
                                                                                                                      +
                                                                                                                      authorizedScopes?: string

                                                                                                                      Space-separated list of scopes authorized for the session.

                                                                                                                      +
                                                                                                                      idToken?: string

                                                                                                                      Optional ID token issued during authentication.

                                                                                                                      +
                                                                                                                      refreshToken?: string

                                                                                                                      Optional refresh token used to obtain new access tokens without requiring the user to re-authenticate.

                                                                                                                      +
                                                                                                                      user: MonoCloudUser

                                                                                                                      The authenticated user profile, typically derived from ID token claims and/or the UserInfo endpoint.

                                                                                                                      +
                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudUser.html b/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudUser.html index 40dd45e8..e943377f 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudUser.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.MonoCloudUser.html @@ -1,6 +1,6 @@ MonoCloudUser | MonoCloud Authentication SDK
                                                                                                                      MonoCloud Authentication SDK
                                                                                                                        Preparing search index...

                                                                                                                        Represents the authenticated user stored in a MonoCloud session.

                                                                                                                        -
                                                                                                                        interface MonoCloudUser {
                                                                                                                            address?: Address;
                                                                                                                            amr?: string[];
                                                                                                                            birthdate?: string;
                                                                                                                            email?: string;
                                                                                                                            email_verified?: boolean;
                                                                                                                            family_name?: string;
                                                                                                                            gender?: string;
                                                                                                                            given_name?: string;
                                                                                                                            groups?: Group[];
                                                                                                                            idp?: string;
                                                                                                                            locale?: string;
                                                                                                                            middle_name?: string;
                                                                                                                            name?: string;
                                                                                                                            nickname?: string;
                                                                                                                            phone_number?: string;
                                                                                                                            phone_number_verified?: boolean;
                                                                                                                            picture?: string;
                                                                                                                            preferred_username?: string;
                                                                                                                            profile?: string;
                                                                                                                            sub: string;
                                                                                                                            updated_at?: number;
                                                                                                                            website?: string;
                                                                                                                            zoneinfo?: string;
                                                                                                                            [key: string]: unknown;
                                                                                                                        }

                                                                                                                        Hierarchy

                                                                                                                        Indexable

                                                                                                                        • [key: string]: unknown

                                                                                                                          Additional provider-specific claims.

                                                                                                                          -
                                                                                                                        Index

                                                                                                                        Properties

                                                                                                                        interface MonoCloudUser {
                                                                                                                            address?: Address;
                                                                                                                            amr?: string[];
                                                                                                                            birthdate?: string;
                                                                                                                            email?: string;
                                                                                                                            email_verified?: boolean;
                                                                                                                            family_name?: string;
                                                                                                                            gender?: string;
                                                                                                                            given_name?: string;
                                                                                                                            groups?: Group[];
                                                                                                                            idp?: string;
                                                                                                                            locale?: string;
                                                                                                                            middle_name?: string;
                                                                                                                            name?: string;
                                                                                                                            nickname?: string;
                                                                                                                            phone_number?: string;
                                                                                                                            phone_number_verified?: boolean;
                                                                                                                            picture?: string;
                                                                                                                            preferred_username?: string;
                                                                                                                            profile?: string;
                                                                                                                            sub: string;
                                                                                                                            updated_at?: number;
                                                                                                                            website?: string;
                                                                                                                            zoneinfo?: string;
                                                                                                                            [key: string]: unknown;
                                                                                                                        }

                                                                                                                        Hierarchy

                                                                                                                        Indexable

                                                                                                                        • [key: string]: unknown

                                                                                                                          Additional provider-specific claims.

                                                                                                                          +
                                                                                                                        Index

                                                                                                                        Properties

                                                                                                                        Properties

                                                                                                                        address?: Address

                                                                                                                        Postal address.

                                                                                                                        -
                                                                                                                        amr?: string[]

                                                                                                                        Authentication Methods References (AMR). Indicates how the user authenticated.

                                                                                                                        -
                                                                                                                        birthdate?: string

                                                                                                                        Birthday.

                                                                                                                        -
                                                                                                                        email?: string

                                                                                                                        Email address.

                                                                                                                        -
                                                                                                                        email_verified?: boolean

                                                                                                                        Whether the email address has been verified by the provider.

                                                                                                                        -
                                                                                                                        family_name?: string

                                                                                                                        Surname(s) / last name.

                                                                                                                        -
                                                                                                                        gender?: string

                                                                                                                        Gender.

                                                                                                                        -
                                                                                                                        given_name?: string

                                                                                                                        Given name(s) / first name.

                                                                                                                        -
                                                                                                                        groups?: Group[]

                                                                                                                        Group memberships for the user.

                                                                                                                        -
                                                                                                                        idp?: string

                                                                                                                        Identity Provider (IdP) identifier. Specifies the upstream provider used to authenticate the user.

                                                                                                                        -
                                                                                                                        locale?: string

                                                                                                                        Locale.

                                                                                                                        -
                                                                                                                        middle_name?: string

                                                                                                                        Middle name(s).

                                                                                                                        -
                                                                                                                        name?: string

                                                                                                                        Full name of the user (e.g. "Jane Doe").

                                                                                                                        -
                                                                                                                        nickname?: string

                                                                                                                        Casual name used by the user.

                                                                                                                        -
                                                                                                                        phone_number?: string

                                                                                                                        Phone number (formatted in E.164 standard).

                                                                                                                        -
                                                                                                                        phone_number_verified?: boolean

                                                                                                                        Whether the phone number has been verified by the provider.

                                                                                                                        -
                                                                                                                        picture?: string

                                                                                                                        URL of the user's profile picture.

                                                                                                                        -
                                                                                                                        preferred_username?: string

                                                                                                                        Preferred username.

                                                                                                                        -
                                                                                                                        profile?: string

                                                                                                                        URL of the user's profile page.

                                                                                                                        -
                                                                                                                        sub: string

                                                                                                                        Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                        -
                                                                                                                        updated_at?: number

                                                                                                                        Time the user's information was last updated (seconds since epoch).

                                                                                                                        -
                                                                                                                        website?: string

                                                                                                                        URL of the user's website.

                                                                                                                        -
                                                                                                                        zoneinfo?: string

                                                                                                                        Time zone name.

                                                                                                                        -
                                                                                                                        +
                                                                                                                        amr?: string[]

                                                                                                                        Authentication Methods References (AMR). Indicates how the user authenticated.

                                                                                                                        +
                                                                                                                        birthdate?: string

                                                                                                                        Birthday.

                                                                                                                        +
                                                                                                                        email?: string

                                                                                                                        Email address.

                                                                                                                        +
                                                                                                                        email_verified?: boolean

                                                                                                                        Whether the email address has been verified by the provider.

                                                                                                                        +
                                                                                                                        family_name?: string

                                                                                                                        Surname(s) / last name.

                                                                                                                        +
                                                                                                                        gender?: string

                                                                                                                        Gender.

                                                                                                                        +
                                                                                                                        given_name?: string

                                                                                                                        Given name(s) / first name.

                                                                                                                        +
                                                                                                                        groups?: Group[]

                                                                                                                        Group memberships for the user.

                                                                                                                        +
                                                                                                                        idp?: string

                                                                                                                        Identity Provider (IdP) identifier. Specifies the upstream provider used to authenticate the user.

                                                                                                                        +
                                                                                                                        locale?: string

                                                                                                                        Locale.

                                                                                                                        +
                                                                                                                        middle_name?: string

                                                                                                                        Middle name(s).

                                                                                                                        +
                                                                                                                        name?: string

                                                                                                                        Full name of the user (e.g. "Jane Doe").

                                                                                                                        +
                                                                                                                        nickname?: string

                                                                                                                        Casual name used by the user.

                                                                                                                        +
                                                                                                                        phone_number?: string

                                                                                                                        Phone number (formatted in E.164 standard).

                                                                                                                        +
                                                                                                                        phone_number_verified?: boolean

                                                                                                                        Whether the phone number has been verified by the provider.

                                                                                                                        +
                                                                                                                        picture?: string

                                                                                                                        URL of the user's profile picture.

                                                                                                                        +
                                                                                                                        preferred_username?: string

                                                                                                                        Preferred username.

                                                                                                                        +
                                                                                                                        profile?: string

                                                                                                                        URL of the user's profile page.

                                                                                                                        +
                                                                                                                        sub: string

                                                                                                                        Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                        +
                                                                                                                        updated_at?: number

                                                                                                                        Time the user's information was last updated (seconds since epoch).

                                                                                                                        +
                                                                                                                        website?: string

                                                                                                                        URL of the user's website.

                                                                                                                        +
                                                                                                                        zoneinfo?: string

                                                                                                                        Time zone name.

                                                                                                                        +
                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-core.index.ParResponse.html b/docs/html/interfaces/_monocloud_auth-core.index.ParResponse.html index 6fc9989f..2ef43f1c 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.ParResponse.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.ParResponse.html @@ -1,7 +1,7 @@ ParResponse | MonoCloud Authentication SDK
                                                                                                                        MonoCloud Authentication SDK
                                                                                                                          Preparing search index...

                                                                                                                          Response returned from the Pushed Authorization Request (PAR) endpoint.

                                                                                                                          -
                                                                                                                          interface ParResponse {
                                                                                                                              expires_in: number;
                                                                                                                              request_uri: string;
                                                                                                                          }
                                                                                                                          Index

                                                                                                                          Properties

                                                                                                                          interface ParResponse {
                                                                                                                              expires_in: number;
                                                                                                                              request_uri: string;
                                                                                                                          }
                                                                                                                          Index

                                                                                                                          Properties

                                                                                                                          expires_in: number

                                                                                                                          Lifetime of the request_uri, in seconds. After this duration expires, the authorization request becomes invalid.

                                                                                                                          -
                                                                                                                          request_uri: string

                                                                                                                          The URI reference identifying the pushed authorization request.

                                                                                                                          +
                                                                                                                          request_uri: string

                                                                                                                          The URI reference identifying the pushed authorization request.

                                                                                                                          This value must be supplied as the request_uri parameter when redirecting the user to the authorization endpoint.

                                                                                                                          -
                                                                                                                          +
                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-core.index.PushedAuthorizationParams.html b/docs/html/interfaces/_monocloud_auth-core.index.PushedAuthorizationParams.html index df12bf46..3861abcf 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.PushedAuthorizationParams.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.PushedAuthorizationParams.html @@ -2,7 +2,7 @@

                                                                                                                          This type mirrors AuthorizationParams but excludes requestUri, since the request_uri value is generated by the authorization server after a successful PAR request and must not be supplied by the client.

                                                                                                                          -
                                                                                                                          interface PushedAuthorizationParams {
                                                                                                                              acrValues?: string[];
                                                                                                                              authenticatorHint?: Authenticators;
                                                                                                                              codeChallenge?: string;
                                                                                                                              codeChallengeMethod?: CodeChallengeMethod;
                                                                                                                              display?: DisplayOptions;
                                                                                                                              loginHint?: string;
                                                                                                                              maxAge?: number;
                                                                                                                              nonce?: string;
                                                                                                                              prompt?: Prompt;
                                                                                                                              redirectUri?: string;
                                                                                                                              request?: string;
                                                                                                                              resource?: string;
                                                                                                                              responseMode?: ResponseModes;
                                                                                                                              responseType?: ResponseTypes;
                                                                                                                              scopes?: string;
                                                                                                                              state?: string;
                                                                                                                              uiLocales?: string;
                                                                                                                          }

                                                                                                                          Hierarchy

                                                                                                                          Index

                                                                                                                          Properties

                                                                                                                          interface PushedAuthorizationParams {
                                                                                                                              acrValues?: string[];
                                                                                                                              authenticatorHint?: Authenticators;
                                                                                                                              codeChallenge?: string;
                                                                                                                              codeChallengeMethod?: CodeChallengeMethod;
                                                                                                                              display?: DisplayOptions;
                                                                                                                              loginHint?: string;
                                                                                                                              maxAge?: number;
                                                                                                                              nonce?: string;
                                                                                                                              prompt?: Prompt;
                                                                                                                              redirectUri?: string;
                                                                                                                              request?: string;
                                                                                                                              resource?: string;
                                                                                                                              responseMode?: ResponseModes;
                                                                                                                              responseType?: ResponseTypes;
                                                                                                                              scopes?: string;
                                                                                                                              state?: string;
                                                                                                                              uiLocales?: string;
                                                                                                                          }

                                                                                                                          Hierarchy

                                                                                                                          Index

                                                                                                                          Properties

                                                                                                                          acrValues? authenticatorHint? codeChallenge? codeChallengeMethod? diff --git a/docs/html/interfaces/_monocloud_auth-core.index.RefetchUserInfoOptions.html b/docs/html/interfaces/_monocloud_auth-core.index.RefetchUserInfoOptions.html index db355f33..4cddcc8c 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.RefetchUserInfoOptions.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.RefetchUserInfoOptions.html @@ -1,4 +1,4 @@ RefetchUserInfoOptions | MonoCloud Authentication SDK
                                                                                                                          MonoCloud Authentication SDK
                                                                                                                            Preparing search index...

                                                                                                                            Interface RefetchUserInfoOptions

                                                                                                                            Options used when refetching user profile data from the UserInfo endpoint.

                                                                                                                            -
                                                                                                                            interface RefetchUserInfoOptions {
                                                                                                                                onSessionCreating?: OnSessionCreating;
                                                                                                                            }
                                                                                                                            Index

                                                                                                                            Properties

                                                                                                                            interface RefetchUserInfoOptions {
                                                                                                                                onSessionCreating?: OnSessionCreating;
                                                                                                                            }
                                                                                                                            Index

                                                                                                                            Properties

                                                                                                                            onSessionCreating?: OnSessionCreating

                                                                                                                            Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                            -
                                                                                                                            +
                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-core.index.RefreshGrantOptions.html b/docs/html/interfaces/_monocloud_auth-core.index.RefreshGrantOptions.html index 575b7a65..ab7c1d19 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.RefreshGrantOptions.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.RefreshGrantOptions.html @@ -1,9 +1,9 @@ RefreshGrantOptions | MonoCloud Authentication SDK
                                                                                                                            MonoCloud Authentication SDK
                                                                                                                              Preparing search index...

                                                                                                                              Options used when exchanging a refresh token for a new access token.

                                                                                                                              These parameters allow requesting an access token scoped to specific resources or scopes that were previously authorized by the user.

                                                                                                                              -
                                                                                                                              interface RefreshGrantOptions {
                                                                                                                                  resource?: string;
                                                                                                                                  scopes?: string;
                                                                                                                              }

                                                                                                                              Hierarchy

                                                                                                                              Index

                                                                                                                              Properties

                                                                                                                              interface RefreshGrantOptions {
                                                                                                                                  resource?: string;
                                                                                                                                  scopes?: string;
                                                                                                                              }

                                                                                                                              Hierarchy

                                                                                                                              Index

                                                                                                                              Properties

                                                                                                                              Properties

                                                                                                                              resource?: string

                                                                                                                              Space-separated list of resource indicators that the new access token should be issued for.

                                                                                                                              The requested resources must have been previously granted during the original authorization flow.

                                                                                                                              -
                                                                                                                              scopes?: string

                                                                                                                              Space-separated list of scopes to request for the refreshed access token.

                                                                                                                              +
                                                                                                                              scopes?: string

                                                                                                                              Space-separated list of scopes to request for the refreshed access token.

                                                                                                                              The requested scopes must have been granted during the original authorization flow.

                                                                                                                              -
                                                                                                                              +
                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-core.index.RefreshSessionOptions.html b/docs/html/interfaces/_monocloud_auth-core.index.RefreshSessionOptions.html index d64d0afa..0efd980a 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.RefreshSessionOptions.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.RefreshSessionOptions.html @@ -1,5 +1,5 @@ RefreshSessionOptions | MonoCloud Authentication SDK
                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                Preparing search index...

                                                                                                                                Interface RefreshSessionOptions

                                                                                                                                Options used when refreshing an existing MonoCloud session.

                                                                                                                                -
                                                                                                                                interface RefreshSessionOptions {
                                                                                                                                    fetchUserInfo?: boolean;
                                                                                                                                    filteredIdTokenClaims?: string[];
                                                                                                                                    idTokenClockSkew?: number;
                                                                                                                                    idTokenClockTolerance?: number;
                                                                                                                                    jwks?: Jwks;
                                                                                                                                    onSessionCreating?: OnSessionCreating;
                                                                                                                                    refreshGrantOptions?: RefreshGrantOptions;
                                                                                                                                    validateIdToken?: boolean;
                                                                                                                                }
                                                                                                                                Index

                                                                                                                                Properties

                                                                                                                                interface RefreshSessionOptions {
                                                                                                                                    fetchUserInfo?: boolean;
                                                                                                                                    filteredIdTokenClaims?: string[];
                                                                                                                                    idTokenClockSkew?: number;
                                                                                                                                    idTokenClockTolerance?: number;
                                                                                                                                    jwks?: Jwks;
                                                                                                                                    onSessionCreating?: OnSessionCreating;
                                                                                                                                    refreshGrantOptions?: RefreshGrantOptions;
                                                                                                                                    validateIdToken?: boolean;
                                                                                                                                }
                                                                                                                                Index

                                                                                                                                Properties

                                                                                                                                false
                                                                                                                                 
                                                                                                                                -
                                                                                                                                filteredIdTokenClaims?: string[]

                                                                                                                                List of ID token claims to remove before storing the session.

                                                                                                                                -
                                                                                                                                idTokenClockSkew?: number

                                                                                                                                Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                                                -
                                                                                                                                idTokenClockTolerance?: number

                                                                                                                                Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                                                -
                                                                                                                                jwks?: Jwks

                                                                                                                                JSON Web Key Set used to validate the ID token signature.

                                                                                                                                +
                                                                                                                                filteredIdTokenClaims?: string[]

                                                                                                                                List of ID token claims to remove before storing the session.

                                                                                                                                +
                                                                                                                                idTokenClockSkew?: number

                                                                                                                                Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                                                +
                                                                                                                                idTokenClockTolerance?: number

                                                                                                                                Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                                                +
                                                                                                                                jwks?: Jwks

                                                                                                                                JSON Web Key Set used to validate the ID token signature.

                                                                                                                                If not provided, the JWKS is automatically fetched from the authorization server metadata.

                                                                                                                                -
                                                                                                                                onSessionCreating?: OnSessionCreating

                                                                                                                                Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                                -
                                                                                                                                refreshGrantOptions?: RefreshGrantOptions

                                                                                                                                Options applied to the refresh token grant request, such as requesting tokens for specific resources or scopes.

                                                                                                                                -
                                                                                                                                validateIdToken?: boolean

                                                                                                                                Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                                                +
                                                                                                                                onSessionCreating?: OnSessionCreating

                                                                                                                                Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                                +
                                                                                                                                refreshGrantOptions?: RefreshGrantOptions

                                                                                                                                Options applied to the refresh token grant request, such as requesting tokens for specific resources or scopes.

                                                                                                                                +
                                                                                                                                validateIdToken?: boolean

                                                                                                                                Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                                                true
                                                                                                                                 
                                                                                                                                -
                                                                                                                                +
                                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-core.index.Tokens.html b/docs/html/interfaces/_monocloud_auth-core.index.Tokens.html index 329c6aad..c4d2ccc2 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.Tokens.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.Tokens.html @@ -1,14 +1,14 @@ Tokens | MonoCloud Authentication SDK
                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                  Preparing search index...

                                                                                                                                  OAuth 2.0 / OpenID Connect token endpoint response.

                                                                                                                                  -
                                                                                                                                  interface Tokens {
                                                                                                                                      access_token: string;
                                                                                                                                      expires_in?: number;
                                                                                                                                      id_token?: string;
                                                                                                                                      refresh_token?: string;
                                                                                                                                      scope?: string;
                                                                                                                                      token_type?: string;
                                                                                                                                  }
                                                                                                                                  Index

                                                                                                                                  Properties

                                                                                                                                  interface Tokens {
                                                                                                                                      access_token: string;
                                                                                                                                      expires_in?: number;
                                                                                                                                      id_token?: string;
                                                                                                                                      refresh_token?: string;
                                                                                                                                      scope?: string;
                                                                                                                                      token_type?: string;
                                                                                                                                  }
                                                                                                                                  Index

                                                                                                                                  Properties

                                                                                                                                  access_token: string

                                                                                                                                  Access token issued by the authorization server.

                                                                                                                                  -
                                                                                                                                  expires_in?: number

                                                                                                                                  Lifetime of the access token (in seconds) from the time the response was issued.

                                                                                                                                  -
                                                                                                                                  id_token?: string

                                                                                                                                  Optional ID token containing authentication claims about the user.

                                                                                                                                  -
                                                                                                                                  refresh_token?: string

                                                                                                                                  Optional refresh token used to obtain new access tokens without requiring user re-authentication.

                                                                                                                                  -
                                                                                                                                  scope?: string

                                                                                                                                  Space-separated list of scopes granted for the access token.

                                                                                                                                  -
                                                                                                                                  token_type?: string

                                                                                                                                  Token type issued.

                                                                                                                                  -
                                                                                                                                  +
                                                                                                                                  expires_in?: number

                                                                                                                                  Lifetime of the access token (in seconds) from the time the response was issued.

                                                                                                                                  +
                                                                                                                                  id_token?: string

                                                                                                                                  Optional ID token containing authentication claims about the user.

                                                                                                                                  +
                                                                                                                                  refresh_token?: string

                                                                                                                                  Optional refresh token used to obtain new access tokens without requiring user re-authentication.

                                                                                                                                  +
                                                                                                                                  scope?: string

                                                                                                                                  Space-separated list of scopes granted for the access token.

                                                                                                                                  +
                                                                                                                                  token_type?: string

                                                                                                                                  Token type issued.

                                                                                                                                  +
                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-core.index.UserinfoResponse.html b/docs/html/interfaces/_monocloud_auth-core.index.UserinfoResponse.html index 7ae709ad..a3f9268b 100644 --- a/docs/html/interfaces/_monocloud_auth-core.index.UserinfoResponse.html +++ b/docs/html/interfaces/_monocloud_auth-core.index.UserinfoResponse.html @@ -1,7 +1,7 @@ UserinfoResponse | MonoCloud Authentication SDK
                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                    Preparing search index...

                                                                                                                                    Interface UserinfoResponse<TAddress>

                                                                                                                                    Represents the OpenID Connect UserInfo response.

                                                                                                                                    interface UserinfoResponse<TAddress extends Address = Address> {
                                                                                                                                        address?: TAddress;
                                                                                                                                        birthdate?: string;
                                                                                                                                        email?: string;
                                                                                                                                        email_verified?: boolean;
                                                                                                                                        family_name?: string;
                                                                                                                                        gender?: string;
                                                                                                                                        given_name?: string;
                                                                                                                                        groups?: Group[];
                                                                                                                                        locale?: string;
                                                                                                                                        middle_name?: string;
                                                                                                                                        name?: string;
                                                                                                                                        nickname?: string;
                                                                                                                                        phone_number?: string;
                                                                                                                                        phone_number_verified?: boolean;
                                                                                                                                        picture?: string;
                                                                                                                                        preferred_username?: string;
                                                                                                                                        profile?: string;
                                                                                                                                        sub: string;
                                                                                                                                        updated_at?: number;
                                                                                                                                        website?: string;
                                                                                                                                        zoneinfo?: string;
                                                                                                                                        [key: string]: unknown;
                                                                                                                                    }

                                                                                                                                    Type Parameters

                                                                                                                                    Hierarchy

                                                                                                                                    Indexable

                                                                                                                                    • [key: string]: unknown

                                                                                                                                      Additional provider-specific claims.

                                                                                                                                      -
                                                                                                                                    Index

                                                                                                                                    Properties

                                                                                                                                    Hierarchy

                                                                                                                                    Indexable

                                                                                                                                    • [key: string]: unknown

                                                                                                                                      Additional provider-specific claims.

                                                                                                                                      +
                                                                                                                                    Index

                                                                                                                                    Properties

                                                                                                                                    address?: TAddress

                                                                                                                                    Postal address.

                                                                                                                                    -
                                                                                                                                    birthdate?: string

                                                                                                                                    Birthday.

                                                                                                                                    -
                                                                                                                                    email?: string

                                                                                                                                    Email address.

                                                                                                                                    -
                                                                                                                                    email_verified?: boolean

                                                                                                                                    Whether the email address has been verified by the provider.

                                                                                                                                    -
                                                                                                                                    family_name?: string

                                                                                                                                    Surname(s) / last name.

                                                                                                                                    -
                                                                                                                                    gender?: string

                                                                                                                                    Gender.

                                                                                                                                    -
                                                                                                                                    given_name?: string

                                                                                                                                    Given name(s) / first name.

                                                                                                                                    -
                                                                                                                                    groups?: Group[]

                                                                                                                                    Group memberships for the user.

                                                                                                                                    -
                                                                                                                                    locale?: string

                                                                                                                                    Locale.

                                                                                                                                    -
                                                                                                                                    middle_name?: string

                                                                                                                                    Middle name(s).

                                                                                                                                    -
                                                                                                                                    name?: string

                                                                                                                                    Full name of the user (e.g. "Jane Doe").

                                                                                                                                    -
                                                                                                                                    nickname?: string

                                                                                                                                    Casual name used by the user.

                                                                                                                                    -
                                                                                                                                    phone_number?: string

                                                                                                                                    Phone number (formatted in E.164 standard).

                                                                                                                                    -
                                                                                                                                    phone_number_verified?: boolean

                                                                                                                                    Whether the phone number has been verified by the provider.

                                                                                                                                    -
                                                                                                                                    picture?: string

                                                                                                                                    URL of the user's profile picture.

                                                                                                                                    -
                                                                                                                                    preferred_username?: string

                                                                                                                                    Preferred username.

                                                                                                                                    -
                                                                                                                                    profile?: string

                                                                                                                                    URL of the user's profile page.

                                                                                                                                    -
                                                                                                                                    sub: string

                                                                                                                                    Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                    -
                                                                                                                                    updated_at?: number

                                                                                                                                    Time the user's information was last updated (seconds since epoch).

                                                                                                                                    -
                                                                                                                                    website?: string

                                                                                                                                    URL of the user's website.

                                                                                                                                    -
                                                                                                                                    zoneinfo?: string

                                                                                                                                    Time zone name.

                                                                                                                                    -
                                                                                                                                    +
                                                                                                                                    birthdate?: string

                                                                                                                                    Birthday.

                                                                                                                                    +
                                                                                                                                    email?: string

                                                                                                                                    Email address.

                                                                                                                                    +
                                                                                                                                    email_verified?: boolean

                                                                                                                                    Whether the email address has been verified by the provider.

                                                                                                                                    +
                                                                                                                                    family_name?: string

                                                                                                                                    Surname(s) / last name.

                                                                                                                                    +
                                                                                                                                    gender?: string

                                                                                                                                    Gender.

                                                                                                                                    +
                                                                                                                                    given_name?: string

                                                                                                                                    Given name(s) / first name.

                                                                                                                                    +
                                                                                                                                    groups?: Group[]

                                                                                                                                    Group memberships for the user.

                                                                                                                                    +
                                                                                                                                    locale?: string

                                                                                                                                    Locale.

                                                                                                                                    +
                                                                                                                                    middle_name?: string

                                                                                                                                    Middle name(s).

                                                                                                                                    +
                                                                                                                                    name?: string

                                                                                                                                    Full name of the user (e.g. "Jane Doe").

                                                                                                                                    +
                                                                                                                                    nickname?: string

                                                                                                                                    Casual name used by the user.

                                                                                                                                    +
                                                                                                                                    phone_number?: string

                                                                                                                                    Phone number (formatted in E.164 standard).

                                                                                                                                    +
                                                                                                                                    phone_number_verified?: boolean

                                                                                                                                    Whether the phone number has been verified by the provider.

                                                                                                                                    +
                                                                                                                                    picture?: string

                                                                                                                                    URL of the user's profile picture.

                                                                                                                                    +
                                                                                                                                    preferred_username?: string

                                                                                                                                    Preferred username.

                                                                                                                                    +
                                                                                                                                    profile?: string

                                                                                                                                    URL of the user's profile page.

                                                                                                                                    +
                                                                                                                                    sub: string

                                                                                                                                    Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                    +
                                                                                                                                    updated_at?: number

                                                                                                                                    Time the user's information was last updated (seconds since epoch).

                                                                                                                                    +
                                                                                                                                    website?: string

                                                                                                                                    URL of the user's website.

                                                                                                                                    +
                                                                                                                                    zoneinfo?: string

                                                                                                                                    Time zone name.

                                                                                                                                    +
                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.AccessToken.html b/docs/html/interfaces/_monocloud_auth-js-core.index.AccessToken.html new file mode 100644 index 00000000..1c1ff77e --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.AccessToken.html @@ -0,0 +1,13 @@ +AccessToken | MonoCloud Authentication SDK
                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                      Preparing search index...

                                                                                                                                      Represents an OAuth 2.0 access token and its associated metadata.

                                                                                                                                      +
                                                                                                                                      interface AccessToken {
                                                                                                                                          accessToken: string;
                                                                                                                                          accessTokenExpiration: number;
                                                                                                                                          requestedScopes?: string;
                                                                                                                                          resource?: string;
                                                                                                                                          scopes: string;
                                                                                                                                      }

                                                                                                                                      Hierarchy

                                                                                                                                      Index

                                                                                                                                      Properties

                                                                                                                                      accessToken: string

                                                                                                                                      The issued access token.

                                                                                                                                      +
                                                                                                                                      accessTokenExpiration: number

                                                                                                                                      The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                      +
                                                                                                                                      requestedScopes?: string

                                                                                                                                      Optional space-separated list of scopes originally requested during token acquisition.

                                                                                                                                      +
                                                                                                                                      resource?: string

                                                                                                                                      Optional resource (audience) that the access token is scoped for.

                                                                                                                                      +
                                                                                                                                      scopes: string

                                                                                                                                      Space-separated list of scopes granted to the access token.

                                                                                                                                      +

                                                                                                                                      These represent the effective permissions approved by the authorization server.

                                                                                                                                      +
                                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.AuthState.html b/docs/html/interfaces/_monocloud_auth-js-core.index.AuthState.html new file mode 100644 index 00000000..6fad3c4d --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.AuthState.html @@ -0,0 +1,14 @@ +AuthState | MonoCloud Authentication SDK
                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                        Preparing search index...

                                                                                                                                        Represents the authentication transaction state stored between the authorization request and the callback.

                                                                                                                                        +
                                                                                                                                        interface AuthState {
                                                                                                                                            codeVerifier?: string;
                                                                                                                                            maxAge?: number;
                                                                                                                                            nonce: string;
                                                                                                                                            resource?: string;
                                                                                                                                            scopes: string;
                                                                                                                                            state: string;
                                                                                                                                        }
                                                                                                                                        Index

                                                                                                                                        Properties

                                                                                                                                        codeVerifier?: string

                                                                                                                                        Optional. PKCE code verifier used to validate the authorization code exchange.

                                                                                                                                        +
                                                                                                                                        maxAge?: number

                                                                                                                                        Optional. Maximum allowed time (in seconds) since the user's last authentication.

                                                                                                                                        +
                                                                                                                                        nonce: string

                                                                                                                                        A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks.

                                                                                                                                        +
                                                                                                                                        resource?: string

                                                                                                                                        Optional. Space-separated list of resource indicators requested for the access token.

                                                                                                                                        +
                                                                                                                                        scopes: string

                                                                                                                                        Space-separated list of scopes requested during authorization.

                                                                                                                                        +
                                                                                                                                        state: string

                                                                                                                                        A unique value used to correlate the authorization request with the callback and protect against CSRF attacks.

                                                                                                                                        +
                                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.AuthenticateOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.AuthenticateOptions.html new file mode 100644 index 00000000..482f4110 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.AuthenticateOptions.html @@ -0,0 +1,29 @@ +AuthenticateOptions | MonoCloud Authentication SDK
                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                          Preparing search index...

                                                                                                                                          Options used when authenticating a user via the Authorization Code flow.

                                                                                                                                          +
                                                                                                                                          interface AuthenticateOptions {
                                                                                                                                              codeVerifier?: string;
                                                                                                                                              fetchUserInfo?: boolean;
                                                                                                                                              filteredIdTokenClaims?: string[];
                                                                                                                                              idTokenClockSkew?: number;
                                                                                                                                              idTokenClockTolerance?: number;
                                                                                                                                              idTokenMaxAge?: number;
                                                                                                                                              idTokenNonce?: string;
                                                                                                                                              jwks?: Jwks;
                                                                                                                                              onSessionCreating?: OnSessionCreating;
                                                                                                                                              validateIdToken?: boolean;
                                                                                                                                          }
                                                                                                                                          Index

                                                                                                                                          Properties

                                                                                                                                          codeVerifier?: string

                                                                                                                                          PKCE code verifier associated with the authorization request.

                                                                                                                                          +
                                                                                                                                          fetchUserInfo?: boolean

                                                                                                                                          When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object.

                                                                                                                                          +
                                                                                                                                          false
                                                                                                                                          +
                                                                                                                                          + +
                                                                                                                                          filteredIdTokenClaims?: string[]

                                                                                                                                          List of ID token claims to remove before storing the session.

                                                                                                                                          +
                                                                                                                                          idTokenClockSkew?: number

                                                                                                                                          Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                                                          +
                                                                                                                                          idTokenClockTolerance?: number

                                                                                                                                          Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                                                          +
                                                                                                                                          idTokenMaxAge?: number

                                                                                                                                          Maximum allowed authentication age (in seconds) for the ID token.

                                                                                                                                          +
                                                                                                                                          idTokenNonce?: string

                                                                                                                                          Nonce value expected in the ID token. Used to prevent replay attacks.

                                                                                                                                          +
                                                                                                                                          jwks?: Jwks

                                                                                                                                          JSON Web Key Set used to validate the ID token signature.

                                                                                                                                          +

                                                                                                                                          If not provided, the JWKS is automatically fetched from the authorization server metadata.

                                                                                                                                          +
                                                                                                                                          onSessionCreating?: OnSessionCreating

                                                                                                                                          Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                                          +
                                                                                                                                          validateIdToken?: boolean

                                                                                                                                          Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                                                          +
                                                                                                                                          true
                                                                                                                                          +
                                                                                                                                          + +
                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.AuthorizationParams.html b/docs/html/interfaces/_monocloud_auth-js-core.index.AuthorizationParams.html new file mode 100644 index 00000000..b31a98a3 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.AuthorizationParams.html @@ -0,0 +1,40 @@ +AuthorizationParams | MonoCloud Authentication SDK
                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                            Preparing search index...

                                                                                                                                            Parameters used to construct an OAuth 2.0 / OpenID Connect authorization request.

                                                                                                                                            +
                                                                                                                                            interface AuthorizationParams {
                                                                                                                                                acrValues?: string[];
                                                                                                                                                authenticatorHint?: Authenticators;
                                                                                                                                                codeChallenge?: string;
                                                                                                                                                codeChallengeMethod?: CodeChallengeMethod;
                                                                                                                                                display?: DisplayOptions;
                                                                                                                                                loginHint?: string;
                                                                                                                                                maxAge?: number;
                                                                                                                                                nonce?: string;
                                                                                                                                                prompt?: Prompt;
                                                                                                                                                redirectUri?: string;
                                                                                                                                                request?: string;
                                                                                                                                                requestUri?: string;
                                                                                                                                                resource?: string;
                                                                                                                                                responseMode?: ResponseModes;
                                                                                                                                                responseType?: ResponseTypes;
                                                                                                                                                scopes?: string;
                                                                                                                                                state?: string;
                                                                                                                                                uiLocales?: string;
                                                                                                                                            }
                                                                                                                                            Index

                                                                                                                                            Properties

                                                                                                                                            acrValues?: string[]

                                                                                                                                            Authentication Context Class Reference (ACR) values requesting specific authentication assurance levels or methods.

                                                                                                                                            +
                                                                                                                                            authenticatorHint?: Authenticators

                                                                                                                                            Hint to the authorization server indicating which authenticator or connection should be used.

                                                                                                                                            +
                                                                                                                                            codeChallenge?: string

                                                                                                                                            PKCE code challenge derived from the code verifier. Used to secure authorization code exchanges.

                                                                                                                                            +
                                                                                                                                            codeChallengeMethod?: CodeChallengeMethod

                                                                                                                                            Method used to generate the PKCE code challenge.

                                                                                                                                            +
                                                                                                                                            display?: DisplayOptions

                                                                                                                                            Preferred display mode for the authentication UI.

                                                                                                                                            +
                                                                                                                                            loginHint?: string

                                                                                                                                            Hint identifying the user (for example, email or username). Used to prefill or optimize the sign-in experience.

                                                                                                                                            +
                                                                                                                                            maxAge?: number

                                                                                                                                            Maximum acceptable time (in seconds) since the user last authenticated. If exceeded, the user may be required to sign in again.

                                                                                                                                            +
                                                                                                                                            nonce?: string

                                                                                                                                            A cryptographically random value included in the ID token to prevent replay attacks.

                                                                                                                                            +
                                                                                                                                            prompt?: Prompt

                                                                                                                                            Controls authentication interaction behavior. For example, forcing login or consent.

                                                                                                                                            +
                                                                                                                                            redirectUri?: string

                                                                                                                                            The redirect URI where the authorization server sends the user after authentication completes.

                                                                                                                                            +
                                                                                                                                            request?: string

                                                                                                                                            A signed JWT containing authorization request parameters.

                                                                                                                                            +
                                                                                                                                            requestUri?: string

                                                                                                                                            URI referencing a previously created authorization request (typically via Pushed Authorization Requests — PAR).

                                                                                                                                            +

                                                                                                                                            When set, other authorization parameters may be ignored.

                                                                                                                                            +
                                                                                                                                            resource?: string

                                                                                                                                            Space-separated list of resource indicators that scope the issued access token.

                                                                                                                                            +
                                                                                                                                            responseMode?: ResponseModes

                                                                                                                                            Specifies how the authorization response is returned to the client.

                                                                                                                                            +
                                                                                                                                            responseType?: ResponseTypes

                                                                                                                                            Determines which artifacts are returned from the authorization endpoint.

                                                                                                                                            +
                                                                                                                                            scopes?: string

                                                                                                                                            Space-separated list of scopes requested during authentication.

                                                                                                                                            +
                                                                                                                                            state?: string

                                                                                                                                            A cryptographically random value used to maintain request state +and protect against CSRF attacks.

                                                                                                                                            +
                                                                                                                                            uiLocales?: string

                                                                                                                                            Preferred UI language.

                                                                                                                                            +
                                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.CallbackParams.html b/docs/html/interfaces/_monocloud_auth-js-core.index.CallbackParams.html new file mode 100644 index 00000000..7c78e89f --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.CallbackParams.html @@ -0,0 +1,22 @@ +CallbackParams | MonoCloud Authentication SDK
                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                              Preparing search index...

                                                                                                                                              Parameters returned to the application after the authorization server redirects the user back to the callback URL.

                                                                                                                                              +
                                                                                                                                              interface CallbackParams {
                                                                                                                                                  accessToken?: string;
                                                                                                                                                  code?: string;
                                                                                                                                                  error?: string;
                                                                                                                                                  errorDescription?: string;
                                                                                                                                                  expiresIn?: number;
                                                                                                                                                  idToken?: string;
                                                                                                                                                  refreshToken?: string;
                                                                                                                                                  scope?: string;
                                                                                                                                                  sessionState?: string;
                                                                                                                                                  state?: string;
                                                                                                                                              }
                                                                                                                                              Index

                                                                                                                                              Properties

                                                                                                                                              accessToken?: string

                                                                                                                                              Access token returned directly by implicit or hybrid flows.

                                                                                                                                              +
                                                                                                                                              code?: string

                                                                                                                                              Authorization code returned when using the Authorization Code Flow.

                                                                                                                                              +
                                                                                                                                              error?: string

                                                                                                                                              Error code returned when authorization fails.

                                                                                                                                              +
                                                                                                                                              errorDescription?: string

                                                                                                                                              Human-readable description providing additional information about the authorization error.

                                                                                                                                              +
                                                                                                                                              expiresIn?: number

                                                                                                                                              Lifetime of the access token in seconds.

                                                                                                                                              +
                                                                                                                                              idToken?: string

                                                                                                                                              ID token issued by the authorization server.

                                                                                                                                              +
                                                                                                                                              refreshToken?: string

                                                                                                                                              Refresh token issued during authorization (if enabled).

                                                                                                                                              +
                                                                                                                                              scope?: string

                                                                                                                                              Access token scopes (Implicit Flow)

                                                                                                                                              +
                                                                                                                                              sessionState?: string

                                                                                                                                              OIDC session state value used for session monitoring and front-channel session management.

                                                                                                                                              +
                                                                                                                                              state?: string

                                                                                                                                              The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks.

                                                                                                                                              +
                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.CallbackState.html b/docs/html/interfaces/_monocloud_auth-js-core.index.CallbackState.html new file mode 100644 index 00000000..81adf93c --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.CallbackState.html @@ -0,0 +1,19 @@ +CallbackState | MonoCloud Authentication SDK
                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                Preparing search index...

                                                                                                                                                Internal state persisted between authorization start and callback processing.

                                                                                                                                                +
                                                                                                                                                interface CallbackState {
                                                                                                                                                    appState?: ApplicationState;
                                                                                                                                                    codeVerifier?: string;
                                                                                                                                                    maxAge?: number;
                                                                                                                                                    mode: "popup" | "redirect" | "silent";
                                                                                                                                                    nonce?: string;
                                                                                                                                                    resource?: string;
                                                                                                                                                    responseType?: ResponseTypes;
                                                                                                                                                    returnUrl?: string;
                                                                                                                                                    scopes?: string;
                                                                                                                                                    signOut?: boolean;
                                                                                                                                                    state?: string;
                                                                                                                                                }

                                                                                                                                                Hierarchy

                                                                                                                                                Index

                                                                                                                                                Properties

                                                                                                                                                appState?: ApplicationState
                                                                                                                                                codeVerifier?: string

                                                                                                                                                Optional. PKCE code verifier used to validate the authorization code exchange.

                                                                                                                                                +
                                                                                                                                                maxAge?: number

                                                                                                                                                Optional. Maximum allowed time (in seconds) since the user's last authentication.

                                                                                                                                                +
                                                                                                                                                mode: "popup" | "redirect" | "silent"
                                                                                                                                                nonce?: string

                                                                                                                                                A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks.

                                                                                                                                                +
                                                                                                                                                resource?: string

                                                                                                                                                Optional. Space-separated list of resource indicators requested for the access token.

                                                                                                                                                +
                                                                                                                                                responseType?: ResponseTypes
                                                                                                                                                returnUrl?: string
                                                                                                                                                scopes?: string

                                                                                                                                                Space-separated list of scopes requested during authorization.

                                                                                                                                                +
                                                                                                                                                signOut?: boolean
                                                                                                                                                state?: string

                                                                                                                                                A unique value used to correlate the authorization request with the callback and protect against CSRF attacks.

                                                                                                                                                +
                                                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.EndSessionParameters.html b/docs/html/interfaces/_monocloud_auth-js-core.index.EndSessionParameters.html new file mode 100644 index 00000000..493c039e --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.EndSessionParameters.html @@ -0,0 +1,9 @@ +EndSessionParameters | MonoCloud Authentication SDK
                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                  Preparing search index...

                                                                                                                                                  Parameters used to construct an OpenID Connect end-session (sign-out) request.

                                                                                                                                                  +
                                                                                                                                                  interface EndSessionParameters {
                                                                                                                                                      idToken?: string;
                                                                                                                                                      postLogoutRedirectUri?: string;
                                                                                                                                                      state?: string;
                                                                                                                                                  }
                                                                                                                                                  Index

                                                                                                                                                  Properties

                                                                                                                                                  idToken?: string

                                                                                                                                                  ID token hint identifying the session to terminate.

                                                                                                                                                  +

                                                                                                                                                  When provided, the authorization server can use this value to determine which user session should be signed out.

                                                                                                                                                  +
                                                                                                                                                  postLogoutRedirectUri?: string

                                                                                                                                                  The URL the authorization server should redirect the user to after a successful sign-out.

                                                                                                                                                  +
                                                                                                                                                  state?: string

                                                                                                                                                  Optional state value returned to the application after sign-out.

                                                                                                                                                  +
                                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.GetTokensOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.GetTokensOptions.html new file mode 100644 index 00000000..c931d0be --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.GetTokensOptions.html @@ -0,0 +1,12 @@ +GetTokensOptions | MonoCloud Authentication SDK
                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                    Preparing search index...

                                                                                                                                                    Options for getTokens().

                                                                                                                                                    +
                                                                                                                                                    interface GetTokensOptions {
                                                                                                                                                        forceRefresh?: boolean;
                                                                                                                                                        refetchUserInfo?: boolean;
                                                                                                                                                        resource?: string;
                                                                                                                                                        scopes?: string;
                                                                                                                                                    }

                                                                                                                                                    Hierarchy

                                                                                                                                                    Index

                                                                                                                                                    Properties

                                                                                                                                                    forceRefresh?: boolean

                                                                                                                                                    Specifies whether to force the refresh of the access token.

                                                                                                                                                    +
                                                                                                                                                    refetchUserInfo?: boolean

                                                                                                                                                    Determines whether to refetch the user information.

                                                                                                                                                    +
                                                                                                                                                    resource?: string

                                                                                                                                                    Space-separated list of resource indicators that the new access token should be issued for.

                                                                                                                                                    +

                                                                                                                                                    The requested resources must have been previously granted during the original authorization flow.

                                                                                                                                                    +
                                                                                                                                                    scopes?: string

                                                                                                                                                    Space-separated list of scopes to request for the refreshed access token.

                                                                                                                                                    +

                                                                                                                                                    The requested scopes must have been granted during the original authorization flow.

                                                                                                                                                    +
                                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.IStorage.html b/docs/html/interfaces/_monocloud_auth-js-core.index.IStorage.html new file mode 100644 index 00000000..8aaf4d23 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.IStorage.html @@ -0,0 +1,13 @@ +IStorage | MonoCloud Authentication SDK
                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                      Preparing search index...

                                                                                                                                                      Defines a storage adapter used to persist session data.

                                                                                                                                                      +
                                                                                                                                                      interface IStorage {
                                                                                                                                                          getItem(key: string): Promise<string | null>;
                                                                                                                                                          removeItem(key: string): Promise<void>;
                                                                                                                                                          setItem(key: string, value: string): Promise<void>;
                                                                                                                                                      }

                                                                                                                                                      Implemented by

                                                                                                                                                      Index

                                                                                                                                                      Methods

                                                                                                                                                      • Retrieves the value associated with the given key.

                                                                                                                                                        +

                                                                                                                                                        Parameters

                                                                                                                                                        • key: string

                                                                                                                                                          The unique identifier for the stored item.

                                                                                                                                                          +

                                                                                                                                                        Returns Promise<string | null>

                                                                                                                                                        The stored value as a string, or null if the key does not exist.

                                                                                                                                                        +
                                                                                                                                                      • Removes the item associated with the specified key from storage.

                                                                                                                                                        +

                                                                                                                                                        Parameters

                                                                                                                                                        • key: string

                                                                                                                                                          The unique identifier of the item to remove.

                                                                                                                                                          +

                                                                                                                                                        Returns Promise<void>

                                                                                                                                                      • Stores a key-value pair in the storage.

                                                                                                                                                        +

                                                                                                                                                        Parameters

                                                                                                                                                        • key: string

                                                                                                                                                          The unique identifier for the item.

                                                                                                                                                          +
                                                                                                                                                        • value: string

                                                                                                                                                          The string value to store.

                                                                                                                                                          +

                                                                                                                                                        Returns Promise<void>

                                                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.IdTokenClaims.html b/docs/html/interfaces/_monocloud_auth-js-core.index.IdTokenClaims.html new file mode 100644 index 00000000..6bd412e7 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.IdTokenClaims.html @@ -0,0 +1,69 @@ +IdTokenClaims | MonoCloud Authentication SDK
                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                        Preparing search index...

                                                                                                                                                        Standard OpenID Connect ID Token claims.

                                                                                                                                                        +
                                                                                                                                                        interface IdTokenClaims {
                                                                                                                                                            acr?: string;
                                                                                                                                                            address?: Address;
                                                                                                                                                            amr?: string[];
                                                                                                                                                            at_hash?: string;
                                                                                                                                                            aud: string | string[];
                                                                                                                                                            auth_time?: number;
                                                                                                                                                            azp?: string;
                                                                                                                                                            birthdate?: string;
                                                                                                                                                            c_hash?: string;
                                                                                                                                                            email?: string;
                                                                                                                                                            email_verified?: boolean;
                                                                                                                                                            exp: number;
                                                                                                                                                            family_name?: string;
                                                                                                                                                            gender?: string;
                                                                                                                                                            given_name?: string;
                                                                                                                                                            groups?: Group[];
                                                                                                                                                            iat: number;
                                                                                                                                                            iss: string;
                                                                                                                                                            locale?: string;
                                                                                                                                                            middle_name?: string;
                                                                                                                                                            name?: string;
                                                                                                                                                            nickname?: string;
                                                                                                                                                            nonce?: string;
                                                                                                                                                            phone_number?: string;
                                                                                                                                                            phone_number_verified?: boolean;
                                                                                                                                                            picture?: string;
                                                                                                                                                            preferred_username?: string;
                                                                                                                                                            profile?: string;
                                                                                                                                                            s_hash?: string;
                                                                                                                                                            sub: string;
                                                                                                                                                            updated_at?: number;
                                                                                                                                                            website?: string;
                                                                                                                                                            zoneinfo?: string;
                                                                                                                                                            [key: string]: unknown;
                                                                                                                                                        }

                                                                                                                                                        Hierarchy

                                                                                                                                                        Indexable

                                                                                                                                                        • [key: string]: unknown

                                                                                                                                                          Additional custom or provider-specific claims.

                                                                                                                                                          +
                                                                                                                                                        Index

                                                                                                                                                        Properties

                                                                                                                                                        acr?: string

                                                                                                                                                        Authentication Context Class Reference. Indicates the assurance level of the authentication performed.

                                                                                                                                                        +
                                                                                                                                                        address?: Address

                                                                                                                                                        Postal address.

                                                                                                                                                        +
                                                                                                                                                        amr?: string[]

                                                                                                                                                        Authentication Methods References. Lists the authentication methods used (for example: pwd, mfa, otp).

                                                                                                                                                        +
                                                                                                                                                        at_hash?: string

                                                                                                                                                        Access token hash. Used to validate access tokens returned alongside the ID token.

                                                                                                                                                        +
                                                                                                                                                        aud: string | string[]

                                                                                                                                                        Intended audience(s) of the ID token.

                                                                                                                                                        +
                                                                                                                                                        auth_time?: number

                                                                                                                                                        Time when the end-user authentication occurred (Unix epoch seconds).

                                                                                                                                                        +
                                                                                                                                                        azp?: string

                                                                                                                                                        Authorized party - identifies the client to which the ID token was issued.

                                                                                                                                                        +
                                                                                                                                                        birthdate?: string

                                                                                                                                                        Birthday.

                                                                                                                                                        +
                                                                                                                                                        c_hash?: string

                                                                                                                                                        Authorization code hash. Used to validate authorization codes returned with hybrid flows.

                                                                                                                                                        +
                                                                                                                                                        email?: string

                                                                                                                                                        Email address.

                                                                                                                                                        +
                                                                                                                                                        email_verified?: boolean

                                                                                                                                                        Whether the email address has been verified by the provider.

                                                                                                                                                        +
                                                                                                                                                        exp: number

                                                                                                                                                        Expiration time of the ID token (Unix epoch seconds).

                                                                                                                                                        +
                                                                                                                                                        family_name?: string

                                                                                                                                                        Surname(s) / last name.

                                                                                                                                                        +
                                                                                                                                                        gender?: string

                                                                                                                                                        Gender.

                                                                                                                                                        +
                                                                                                                                                        given_name?: string

                                                                                                                                                        Given name(s) / first name.

                                                                                                                                                        +
                                                                                                                                                        groups?: Group[]

                                                                                                                                                        Group memberships for the user.

                                                                                                                                                        +
                                                                                                                                                        iat: number

                                                                                                                                                        Time at which the ID token was issued (Unix epoch seconds).

                                                                                                                                                        +
                                                                                                                                                        iss: string

                                                                                                                                                        Issuer identifier - the authorization server that issued the token.

                                                                                                                                                        +
                                                                                                                                                        locale?: string

                                                                                                                                                        Locale.

                                                                                                                                                        +
                                                                                                                                                        middle_name?: string

                                                                                                                                                        Middle name(s).

                                                                                                                                                        +
                                                                                                                                                        name?: string

                                                                                                                                                        Full name of the user (e.g. "Jane Doe").

                                                                                                                                                        +
                                                                                                                                                        nickname?: string

                                                                                                                                                        Casual name used by the user.

                                                                                                                                                        +
                                                                                                                                                        nonce?: string

                                                                                                                                                        Nonce value used to associate the authentication request with the issued ID token and prevent replay attacks.

                                                                                                                                                        +
                                                                                                                                                        phone_number?: string

                                                                                                                                                        Phone number (formatted in E.164 standard).

                                                                                                                                                        +
                                                                                                                                                        phone_number_verified?: boolean

                                                                                                                                                        Whether the phone number has been verified by the provider.

                                                                                                                                                        +
                                                                                                                                                        picture?: string

                                                                                                                                                        URL of the user's profile picture.

                                                                                                                                                        +
                                                                                                                                                        preferred_username?: string

                                                                                                                                                        Preferred username.

                                                                                                                                                        +
                                                                                                                                                        profile?: string

                                                                                                                                                        URL of the user's profile page.

                                                                                                                                                        +
                                                                                                                                                        s_hash?: string

                                                                                                                                                        State hash (used in some hybrid flow validations).

                                                                                                                                                        +
                                                                                                                                                        sub: string

                                                                                                                                                        Subject identifier — uniquely identifies the authenticated user.

                                                                                                                                                        +
                                                                                                                                                        updated_at?: number

                                                                                                                                                        Time the user's information was last updated (seconds since epoch).

                                                                                                                                                        +
                                                                                                                                                        website?: string

                                                                                                                                                        URL of the user's website.

                                                                                                                                                        +
                                                                                                                                                        zoneinfo?: string

                                                                                                                                                        Time zone name.

                                                                                                                                                        +
                                                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.Indicator.html b/docs/html/interfaces/_monocloud_auth-js-core.index.Indicator.html new file mode 100644 index 00000000..d2ceee93 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.Indicator.html @@ -0,0 +1,6 @@ +Indicator | MonoCloud Authentication SDK
                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                          Preparing search index...

                                                                                                                                                          Represents an additional resource indicator that can be requested when acquiring tokens.

                                                                                                                                                          +
                                                                                                                                                          interface Indicator {
                                                                                                                                                              resource: string;
                                                                                                                                                              scopes?: string;
                                                                                                                                                          }
                                                                                                                                                          Index

                                                                                                                                                          Properties

                                                                                                                                                          Properties

                                                                                                                                                          resource: string

                                                                                                                                                          Space-separated list of resources to scope the access token to.

                                                                                                                                                          +
                                                                                                                                                          scopes?: string

                                                                                                                                                          Optional space-separated list of scopes to request.

                                                                                                                                                          +
                                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.IssuerMetadata.html b/docs/html/interfaces/_monocloud_auth-js-core.index.IssuerMetadata.html new file mode 100644 index 00000000..1a9ac1af --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.IssuerMetadata.html @@ -0,0 +1,58 @@ +IssuerMetadata | MonoCloud Authentication SDK
                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                            Preparing search index...

                                                                                                                                                            OpenID Connect Discovery metadata published by the authorization server.

                                                                                                                                                            +
                                                                                                                                                            interface IssuerMetadata {
                                                                                                                                                                authorization_endpoint: string;
                                                                                                                                                                backchannel_logout_session_supported: boolean;
                                                                                                                                                                backchannel_logout_supported: boolean;
                                                                                                                                                                check_session_iframe: string;
                                                                                                                                                                claims_supported: string[];
                                                                                                                                                                code_challenge_methods_supported: string[];
                                                                                                                                                                device_authorization_endpoint: string;
                                                                                                                                                                end_session_endpoint: string;
                                                                                                                                                                frontchannel_logout_session_supported: boolean;
                                                                                                                                                                frontchannel_logout_supported: boolean;
                                                                                                                                                                grant_types_supported: string[];
                                                                                                                                                                id_token_signing_alg_values_supported: string[];
                                                                                                                                                                introspection_endpoint: string;
                                                                                                                                                                issuer: string;
                                                                                                                                                                jwks_uri: string;
                                                                                                                                                                pushed_authorization_request_endpoint?: string;
                                                                                                                                                                request_object_signing_alg_values_supported: string[];
                                                                                                                                                                request_parameter_supported: boolean;
                                                                                                                                                                request_uri_parameter_supported: boolean;
                                                                                                                                                                require_pushed_authorization_requests: boolean;
                                                                                                                                                                response_modes_supported: string[];
                                                                                                                                                                response_types_supported: string[];
                                                                                                                                                                revocation_endpoint: string;
                                                                                                                                                                scopes_supported: string[];
                                                                                                                                                                subject_types_supported: string[];
                                                                                                                                                                token_endpoint: string;
                                                                                                                                                                token_endpoint_auth_methods_supported: string[];
                                                                                                                                                                userinfo_endpoint: string;
                                                                                                                                                            }
                                                                                                                                                            Index

                                                                                                                                                            Properties

                                                                                                                                                            authorization_endpoint: string

                                                                                                                                                            Authorization endpoint used to initiate authentication requests.

                                                                                                                                                            +
                                                                                                                                                            backchannel_logout_session_supported: boolean

                                                                                                                                                            Indicates back-channel logout session support.

                                                                                                                                                            +
                                                                                                                                                            backchannel_logout_supported: boolean

                                                                                                                                                            Indicates support for back-channel logout.

                                                                                                                                                            +
                                                                                                                                                            check_session_iframe: string

                                                                                                                                                            Session management iframe endpoint.

                                                                                                                                                            +
                                                                                                                                                            claims_supported: string[]

                                                                                                                                                            Claims that may be returned in tokens or UserInfo responses.

                                                                                                                                                            +
                                                                                                                                                            code_challenge_methods_supported: string[]

                                                                                                                                                            Supported PKCE code challenge methods.

                                                                                                                                                            +
                                                                                                                                                            device_authorization_endpoint: string

                                                                                                                                                            Device Authorization Grant endpoint.

                                                                                                                                                            +
                                                                                                                                                            end_session_endpoint: string

                                                                                                                                                            End-session endpoint used to initiate logout.

                                                                                                                                                            +
                                                                                                                                                            frontchannel_logout_session_supported: boolean

                                                                                                                                                            Indicates front-channel logout session support.

                                                                                                                                                            +
                                                                                                                                                            frontchannel_logout_supported: boolean

                                                                                                                                                            Indicates support for front-channel logout.

                                                                                                                                                            +
                                                                                                                                                            grant_types_supported: string[]

                                                                                                                                                            Supported OAuth grant types.

                                                                                                                                                            +
                                                                                                                                                            id_token_signing_alg_values_supported: string[]

                                                                                                                                                            Supported signing algorithms for ID tokens.

                                                                                                                                                            +
                                                                                                                                                            introspection_endpoint: string

                                                                                                                                                            Token introspection endpoint.

                                                                                                                                                            +
                                                                                                                                                            issuer: string

                                                                                                                                                            The issuer identifier for the authorization server.

                                                                                                                                                            +
                                                                                                                                                            jwks_uri: string

                                                                                                                                                            JSON Web Key Set (JWKS) endpoint used to obtain signing keys.

                                                                                                                                                            +
                                                                                                                                                            pushed_authorization_request_endpoint?: string

                                                                                                                                                            Pushed Authorization Request (PAR) endpoint.

                                                                                                                                                            +
                                                                                                                                                            request_object_signing_alg_values_supported: string[]

                                                                                                                                                            Supported signing algorithms for request objects.

                                                                                                                                                            +
                                                                                                                                                            request_parameter_supported: boolean

                                                                                                                                                            Indicates support for request objects passed by value.

                                                                                                                                                            +
                                                                                                                                                            request_uri_parameter_supported: boolean

                                                                                                                                                            Indicates support for request objects passed by reference (request_uri).

                                                                                                                                                            +
                                                                                                                                                            require_pushed_authorization_requests: boolean

                                                                                                                                                            Indicates whether PAR is required for authorization requests.

                                                                                                                                                            +
                                                                                                                                                            response_modes_supported: string[]

                                                                                                                                                            Supported response modes.

                                                                                                                                                            +
                                                                                                                                                            response_types_supported: string[]

                                                                                                                                                            Supported OAuth/OIDC response types.

                                                                                                                                                            +
                                                                                                                                                            revocation_endpoint: string

                                                                                                                                                            Token revocation endpoint.

                                                                                                                                                            +
                                                                                                                                                            scopes_supported: string[]

                                                                                                                                                            OAuth scopes supported by the authorization server.

                                                                                                                                                            +
                                                                                                                                                            subject_types_supported: string[]

                                                                                                                                                            Supported subject identifier types.

                                                                                                                                                            +
                                                                                                                                                            token_endpoint: string

                                                                                                                                                            Token endpoint used to exchange authorization codes for tokens.

                                                                                                                                                            +
                                                                                                                                                            token_endpoint_auth_methods_supported: string[]

                                                                                                                                                            Supported authentication methods for the token endpoint.

                                                                                                                                                            +
                                                                                                                                                            userinfo_endpoint: string

                                                                                                                                                            UserInfo endpoint used to retrieve user profile claims.

                                                                                                                                                            +
                                                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.Jwk.html b/docs/html/interfaces/_monocloud_auth-js-core.index.Jwk.html new file mode 100644 index 00000000..e2818b97 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.Jwk.html @@ -0,0 +1,50 @@ +Jwk | MonoCloud Authentication SDK
                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                              Preparing search index...

                                                                                                                                                              Represents a JSON Web Key (JWK) as defined by RFC 7517.

                                                                                                                                                              +

                                                                                                                                                              A JWK describes a cryptographic key used to verify or encrypt JSON Web Tokens (JWTs) as obtained from the JWKS (JSON Web Key Set) endpoint exposed by the authorization server.

                                                                                                                                                              +

                                                                                                                                                              The available properties depend on the key type (kty).

                                                                                                                                                              +
                                                                                                                                                              interface Jwk {
                                                                                                                                                                  alg?: string;
                                                                                                                                                                  crv?: string;
                                                                                                                                                                  d?: string;
                                                                                                                                                                  dp?: string;
                                                                                                                                                                  dq?: string;
                                                                                                                                                                  e?: string;
                                                                                                                                                                  ext?: boolean;
                                                                                                                                                                  k?: string;
                                                                                                                                                                  key_ops?: string[];
                                                                                                                                                                  kid?: string;
                                                                                                                                                                  kty: string;
                                                                                                                                                                  n?: string;
                                                                                                                                                                  oth?: { d?: string; r?: string; t?: string }[];
                                                                                                                                                                  p?: string;
                                                                                                                                                                  q?: string;
                                                                                                                                                                  qi?: string;
                                                                                                                                                                  use?: string;
                                                                                                                                                                  x?: string;
                                                                                                                                                                  x5c?: string[];
                                                                                                                                                                  x5t?: string;
                                                                                                                                                                  "x5t#S256"?: string;
                                                                                                                                                                  x5u?: string;
                                                                                                                                                                  y?: string;
                                                                                                                                                              }
                                                                                                                                                              Index

                                                                                                                                                              Properties

                                                                                                                                                              Properties

                                                                                                                                                              alg?: string

                                                                                                                                                              Intended algorithm for the key (for example: RS256).

                                                                                                                                                              +
                                                                                                                                                              crv?: string

                                                                                                                                                              Elliptic curve name (for example: P-256).

                                                                                                                                                              +
                                                                                                                                                              d?: string

                                                                                                                                                              RSA private exponent.

                                                                                                                                                              +
                                                                                                                                                              dp?: string

                                                                                                                                                              RSA first factor CRT exponent.

                                                                                                                                                              +
                                                                                                                                                              dq?: string

                                                                                                                                                              RSA second factor CRT exponent.

                                                                                                                                                              +
                                                                                                                                                              e?: string

                                                                                                                                                              RSA public exponent.

                                                                                                                                                              +
                                                                                                                                                              ext?: boolean

                                                                                                                                                              Indicates whether the key is extractable.

                                                                                                                                                              +
                                                                                                                                                              k?: string

                                                                                                                                                              Symmetric key value (base64url encoded).

                                                                                                                                                              +
                                                                                                                                                              key_ops?: string[]

                                                                                                                                                              Allowed operations for the key (e.g. sign, verify, encrypt).

                                                                                                                                                              +
                                                                                                                                                              kid?: string

                                                                                                                                                              Key identifier used to match keys during verification.

                                                                                                                                                              +
                                                                                                                                                              kty: string

                                                                                                                                                              Key type (for example: RSA, or EC).

                                                                                                                                                              +
                                                                                                                                                              n?: string

                                                                                                                                                              RSA modulus.

                                                                                                                                                              +
                                                                                                                                                              oth?: { d?: string; r?: string; t?: string }[]

                                                                                                                                                              Additional prime information (multi-prime RSA).

                                                                                                                                                              +
                                                                                                                                                              p?: string

                                                                                                                                                              RSA first prime factor.

                                                                                                                                                              +
                                                                                                                                                              q?: string

                                                                                                                                                              RSA second prime factor.

                                                                                                                                                              +
                                                                                                                                                              qi?: string

                                                                                                                                                              RSA CRT coefficient.

                                                                                                                                                              +
                                                                                                                                                              use?: string

                                                                                                                                                              Public key use (sig for signature or enc for encryption).

                                                                                                                                                              +
                                                                                                                                                              x?: string

                                                                                                                                                              X coordinate for EC public keys.

                                                                                                                                                              +
                                                                                                                                                              x5c?: string[]

                                                                                                                                                              X.509 certificate chain.

                                                                                                                                                              +
                                                                                                                                                              x5t?: string

                                                                                                                                                              X.509 certificate SHA-1 thumbprint.

                                                                                                                                                              +
                                                                                                                                                              "x5t#S256"?: string

                                                                                                                                                              X.509 certificate SHA-256 thumbprint.

                                                                                                                                                              +
                                                                                                                                                              x5u?: string

                                                                                                                                                              URL referencing the X.509 certificate.

                                                                                                                                                              +
                                                                                                                                                              y?: string

                                                                                                                                                              Y coordinate for EC public keys.

                                                                                                                                                              +
                                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.Jwks.html b/docs/html/interfaces/_monocloud_auth-js-core.index.Jwks.html new file mode 100644 index 00000000..0fef5623 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.Jwks.html @@ -0,0 +1,5 @@ +Jwks | MonoCloud Authentication SDK
                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                Preparing search index...

                                                                                                                                                                Represents a JSON Web Key Set (JWKS).

                                                                                                                                                                +

                                                                                                                                                                A JWKS is a collection of public JSON Web Keys used to verify signatures of JSON Web Tokens (JWTs).

                                                                                                                                                                +
                                                                                                                                                                interface Jwks {
                                                                                                                                                                    keys: Jwk[];
                                                                                                                                                                }
                                                                                                                                                                Index

                                                                                                                                                                Properties

                                                                                                                                                                Properties

                                                                                                                                                                keys: Jwk[]

                                                                                                                                                                The list of public keys contained in this key set.

                                                                                                                                                                +
                                                                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.JwsHeaderParameters.html b/docs/html/interfaces/_monocloud_auth-js-core.index.JwsHeaderParameters.html new file mode 100644 index 00000000..74658cb2 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.JwsHeaderParameters.html @@ -0,0 +1,12 @@ +JwsHeaderParameters | MonoCloud Authentication SDK
                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                  Preparing search index...

                                                                                                                                                                  Parameters contained in a JSON Web Signature (JWS) header.

                                                                                                                                                                  +
                                                                                                                                                                  interface JwsHeaderParameters {
                                                                                                                                                                      alg: SecurityAlgorithms;
                                                                                                                                                                      crit?: string[];
                                                                                                                                                                      jwk?: Jwk;
                                                                                                                                                                      kid?: string;
                                                                                                                                                                      typ?: string;
                                                                                                                                                                  }
                                                                                                                                                                  Index

                                                                                                                                                                  Properties

                                                                                                                                                                  Properties

                                                                                                                                                                  The cryptographic algorithm used to sign the token.

                                                                                                                                                                  +
                                                                                                                                                                  crit?: string[]

                                                                                                                                                                  List of header parameters that are marked as critical and must be understood by the token processor.

                                                                                                                                                                  +
                                                                                                                                                                  jwk?: Jwk

                                                                                                                                                                  An embedded JSON Web Key (JWK) containing the signing key.

                                                                                                                                                                  +
                                                                                                                                                                  kid?: string

                                                                                                                                                                  Identifier of the key used to sign the token.

                                                                                                                                                                  +
                                                                                                                                                                  typ?: string

                                                                                                                                                                  The token type.

                                                                                                                                                                  +
                                                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudClientOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudClientOptions.html new file mode 100644 index 00000000..ffe47e69 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudClientOptions.html @@ -0,0 +1,23 @@ +MonoCloudClientOptions | MonoCloud Authentication SDK
                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                    Preparing search index...

                                                                                                                                                                    Configuration options used to initialize the MonoCloudClient.

                                                                                                                                                                    +
                                                                                                                                                                    interface MonoCloudClientOptions {
                                                                                                                                                                        clientAuthMethod?: ClientAuthMethod;
                                                                                                                                                                        clientSecret?: string | Jwk;
                                                                                                                                                                        idTokenSigningAlgorithm?: SecurityAlgorithms;
                                                                                                                                                                        jwksCacheDuration?: number;
                                                                                                                                                                        metadataCacheDuration?: number;
                                                                                                                                                                    }
                                                                                                                                                                    Index

                                                                                                                                                                    Properties

                                                                                                                                                                    clientAuthMethod?: ClientAuthMethod

                                                                                                                                                                    Client authentication method used when communicating with the token endpoint.

                                                                                                                                                                    +
                                                                                                                                                                    clientSecret?: string | Jwk

                                                                                                                                                                    Client secret used for client authentication.

                                                                                                                                                                    +

                                                                                                                                                                    When clientAuthMethod is client_secret_jwt and a plain-text secret is provided, the default signing algorithm is HS256.

                                                                                                                                                                    +

                                                                                                                                                                    To use a different algorithm, provide a symmetric JSON Web Key (JWK) (kty: "oct") with the desired algorithm specified in its alg property.

                                                                                                                                                                    +
                                                                                                                                                                    idTokenSigningAlgorithm?: SecurityAlgorithms

                                                                                                                                                                    Expected signing algorithm for validating ID tokens.

                                                                                                                                                                    +
                                                                                                                                                                    'RS256'
                                                                                                                                                                    +
                                                                                                                                                                    + +
                                                                                                                                                                    jwksCacheDuration?: number

                                                                                                                                                                    Duration (in seconds) to cache the JSON Web Key Set (JWKS) retrieved from the authorization server.

                                                                                                                                                                    +
                                                                                                                                                                    300
                                                                                                                                                                    +
                                                                                                                                                                    + +
                                                                                                                                                                    metadataCacheDuration?: number

                                                                                                                                                                    Duration (in seconds) to cache OpenID Connect discovery metadata.

                                                                                                                                                                    +
                                                                                                                                                                    300
                                                                                                                                                                    +
                                                                                                                                                                    + +
                                                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudJSCoreClientOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudJSCoreClientOptions.html new file mode 100644 index 00000000..d0810b85 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudJSCoreClientOptions.html @@ -0,0 +1,103 @@ +MonoCloudJSCoreClientOptions | MonoCloud Authentication SDK
                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                      Preparing search index...

                                                                                                                                                                      Interface MonoCloudJSCoreClientOptions

                                                                                                                                                                      Configuration options for initializing MonoCloudJSCoreClient.

                                                                                                                                                                      +
                                                                                                                                                                      interface MonoCloudJSCoreClientOptions {
                                                                                                                                                                          appUrl: string;
                                                                                                                                                                          authWindowTimeout?: number;
                                                                                                                                                                          callbackPath?: string;
                                                                                                                                                                          clientAuthMethod?: ClientAuthMethod;
                                                                                                                                                                          clientId: string;
                                                                                                                                                                          clientSecret?: string | Jwk;
                                                                                                                                                                          clockSkew?: number;
                                                                                                                                                                          clockTolerance?: number;
                                                                                                                                                                          defaultAuthParams?: AuthorizationParams;
                                                                                                                                                                          federatedSignOut?: boolean;
                                                                                                                                                                          fetchUserinfo?: boolean;
                                                                                                                                                                          filteredIdTokenClaims?: string[];
                                                                                                                                                                          idTokenSigningAlgorithm?: SecurityAlgorithms;
                                                                                                                                                                          jwksCacheDuration?: number;
                                                                                                                                                                          metadataCacheDuration?: number;
                                                                                                                                                                          popupWindowHeight?: number;
                                                                                                                                                                          popupWindowWidth?: number;
                                                                                                                                                                          resources?: Indicator[];
                                                                                                                                                                          responseType?: ResponseTypes;
                                                                                                                                                                          sessionKey?: string;
                                                                                                                                                                          signOutCallbackPath?: string | null;
                                                                                                                                                                          tenantDomain: string;
                                                                                                                                                                          validateIdToken?: boolean;
                                                                                                                                                                      }
                                                                                                                                                                      Index

                                                                                                                                                                      Properties

                                                                                                                                                                      appUrl: string

                                                                                                                                                                      The base URL of the application implementing authentication.

                                                                                                                                                                      +
                                                                                                                                                                      "https://example.com"
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      authWindowTimeout?: number

                                                                                                                                                                      Timeout duration (in seconds) for popups and iframes.

                                                                                                                                                                      +
                                                                                                                                                                      600 (seconds)
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      callbackPath?: string

                                                                                                                                                                      Relative callback path where MonoCloud redirects the user after sign-in.

                                                                                                                                                                      +

                                                                                                                                                                      This URL must be registered in the application's callback URL settings. +If omitted, the callback URL defaults to appUrl with path /.

                                                                                                                                                                      +
                                                                                                                                                                      /callback
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      clientAuthMethod?: ClientAuthMethod

                                                                                                                                                                      Method used for client authentication.

                                                                                                                                                                      +
                                                                                                                                                                      clientId: string

                                                                                                                                                                      Client identifier of the application registered in MonoCloud.

                                                                                                                                                                      +
                                                                                                                                                                      clientSecret?: string | Jwk

                                                                                                                                                                      Client secret or JSON Web Key for client authentication.

                                                                                                                                                                      +
                                                                                                                                                                      clockSkew?: number

                                                                                                                                                                      The maximum allowed clock skew (in seconds) for token validation.

                                                                                                                                                                      +
                                                                                                                                                                      60 (seconds)
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      clockTolerance?: number

                                                                                                                                                                      The maximum allowed clock tolerance for date-time-based claims.

                                                                                                                                                                      +
                                                                                                                                                                      60 (seconds)
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      defaultAuthParams?: AuthorizationParams

                                                                                                                                                                      Default authorization parameters to include in authentication requests.

                                                                                                                                                                      +
                                                                                                                                                                      federatedSignOut?: boolean

                                                                                                                                                                      When true, signs the user out from both the app and MonoCloud.

                                                                                                                                                                      +
                                                                                                                                                                      true
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      fetchUserinfo?: boolean

                                                                                                                                                                      Determines whether to fetch UserInfo after authentication.

                                                                                                                                                                      +
                                                                                                                                                                      true
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      filteredIdTokenClaims?: string[]

                                                                                                                                                                      List of ID token claims to exclude when constructing the final user object.

                                                                                                                                                                      +
                                                                                                                                                                      idTokenSigningAlgorithm?: SecurityAlgorithms

                                                                                                                                                                      Algorithm used for verifying ID token signature.

                                                                                                                                                                      +
                                                                                                                                                                      'RS256'
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      jwksCacheDuration?: number

                                                                                                                                                                      The duration in seconds to cache the JWKS document after it is fetched.

                                                                                                                                                                      +
                                                                                                                                                                      300 (seconds)
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      metadataCacheDuration?: number

                                                                                                                                                                      Time in seconds to cache the metadata document after it is fetched.

                                                                                                                                                                      +
                                                                                                                                                                      300 (seconds)
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      popupWindowHeight?: number

                                                                                                                                                                      The height of the popup window in pixels.

                                                                                                                                                                      +

                                                                                                                                                                      This value is used to size and center the window when signIn or signOut +is called with mode: 'popup'.

                                                                                                                                                                      +
                                                                                                                                                                      600
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      popupWindowWidth?: number

                                                                                                                                                                      The width of the popup window in pixels.

                                                                                                                                                                      +

                                                                                                                                                                      This value is used to size and center the window when signIn or signOut +is called with mode: 'popup'.

                                                                                                                                                                      +
                                                                                                                                                                      375
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      resources?: Indicator[]

                                                                                                                                                                      Additional resources that can be requested in getTokens().

                                                                                                                                                                      +
                                                                                                                                                                      responseType?: ResponseTypes

                                                                                                                                                                      Specifies the OpenID Connect response type for the authentication flow.

                                                                                                                                                                      +
                                                                                                                                                                      'code'
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      sessionKey?: string

                                                                                                                                                                      A unique identifier that differentiates sessions when multiple clients are used within the same application.

                                                                                                                                                                      +

                                                                                                                                                                      This key is appended to the internal session key to prevent conflicts.

                                                                                                                                                                      +
                                                                                                                                                                      signOutCallbackPath?: string | null

                                                                                                                                                                      Relative path where MonoCloud redirects the user after sign-out.

                                                                                                                                                                      +
                                                                                                                                                                      /signout
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      tenantDomain: string

                                                                                                                                                                      MonoCloud tenant domain.

                                                                                                                                                                      +
                                                                                                                                                                      "https://your-domain.as.monocloud.com"
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      validateIdToken?: boolean

                                                                                                                                                                      Whether the ID token should be validated.

                                                                                                                                                                      +
                                                                                                                                                                      true
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudSession.html b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudSession.html new file mode 100644 index 00000000..f5baf78d --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudSession.html @@ -0,0 +1,15 @@ +MonoCloudSession | MonoCloud Authentication SDK
                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                        Preparing search index...

                                                                                                                                                                        Represents an authenticated session, containing the authenticated user profile along with the tokens and metadata issued during authentication.

                                                                                                                                                                        +
                                                                                                                                                                        interface MonoCloudSession {
                                                                                                                                                                            accessTokens?: AccessToken[];
                                                                                                                                                                            authorizedScopes?: string;
                                                                                                                                                                            idToken?: string;
                                                                                                                                                                            refreshToken?: string;
                                                                                                                                                                            user: MonoCloudUser;
                                                                                                                                                                            [key: string]: unknown;
                                                                                                                                                                        }

                                                                                                                                                                        Indexable

                                                                                                                                                                        • [key: string]: unknown

                                                                                                                                                                          Additional custom properties attached to the session.

                                                                                                                                                                          +

                                                                                                                                                                          These may be added via hooks such as onSessionCreating.

                                                                                                                                                                          +
                                                                                                                                                                        Index

                                                                                                                                                                        Properties

                                                                                                                                                                        accessTokens?: AccessToken[]

                                                                                                                                                                        Access tokens associated with the session.

                                                                                                                                                                        +

                                                                                                                                                                        Multiple tokens may exist when access tokens are issued for different resources or scope sets.

                                                                                                                                                                        +
                                                                                                                                                                        authorizedScopes?: string

                                                                                                                                                                        Space-separated list of scopes authorized for the session.

                                                                                                                                                                        +
                                                                                                                                                                        idToken?: string

                                                                                                                                                                        Optional ID token issued during authentication.

                                                                                                                                                                        +
                                                                                                                                                                        refreshToken?: string

                                                                                                                                                                        Optional refresh token used to obtain new access tokens without requiring the user to re-authenticate.

                                                                                                                                                                        +

                                                                                                                                                                        The authenticated user profile, typically derived from ID token claims and/or the UserInfo endpoint.

                                                                                                                                                                        +
                                                                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudTokens.html b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudTokens.html new file mode 100644 index 00000000..3e649aae --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudTokens.html @@ -0,0 +1,19 @@ +MonoCloudTokens | MonoCloud Authentication SDK
                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                          Preparing search index...

                                                                                                                                                                          Tokens available in the current session.

                                                                                                                                                                          +
                                                                                                                                                                          interface MonoCloudTokens {
                                                                                                                                                                              accessToken: string;
                                                                                                                                                                              accessTokenExpiration: number;
                                                                                                                                                                              idToken?: string;
                                                                                                                                                                              isExpired: boolean;
                                                                                                                                                                              refreshToken?: string;
                                                                                                                                                                              requestedScopes?: string;
                                                                                                                                                                              resource?: string;
                                                                                                                                                                              scopes: string;
                                                                                                                                                                          }

                                                                                                                                                                          Hierarchy

                                                                                                                                                                          Index

                                                                                                                                                                          Properties

                                                                                                                                                                          accessToken: string

                                                                                                                                                                          The issued access token.

                                                                                                                                                                          +
                                                                                                                                                                          accessTokenExpiration: number

                                                                                                                                                                          The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                                                          +
                                                                                                                                                                          idToken?: string

                                                                                                                                                                          The ID token obtained during authentication.

                                                                                                                                                                          +
                                                                                                                                                                          isExpired: boolean

                                                                                                                                                                          Specifies if the access token has expired.

                                                                                                                                                                          +
                                                                                                                                                                          refreshToken?: string

                                                                                                                                                                          The refresh token obtained during authentication.

                                                                                                                                                                          +
                                                                                                                                                                          requestedScopes?: string

                                                                                                                                                                          Optional space-separated list of scopes originally requested during token acquisition.

                                                                                                                                                                          +
                                                                                                                                                                          resource?: string

                                                                                                                                                                          Optional resource (audience) that the access token is scoped for.

                                                                                                                                                                          +
                                                                                                                                                                          scopes: string

                                                                                                                                                                          Space-separated list of scopes granted to the access token.

                                                                                                                                                                          +

                                                                                                                                                                          These represent the effective permissions approved by the authorization server.

                                                                                                                                                                          +
                                                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudUser.html b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudUser.html new file mode 100644 index 00000000..6f7a3d93 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.MonoCloudUser.html @@ -0,0 +1,49 @@ +MonoCloudUser | MonoCloud Authentication SDK
                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                            Preparing search index...

                                                                                                                                                                            Represents the authenticated user stored in a MonoCloud session.

                                                                                                                                                                            +
                                                                                                                                                                            interface MonoCloudUser {
                                                                                                                                                                                address?: Address;
                                                                                                                                                                                amr?: string[];
                                                                                                                                                                                birthdate?: string;
                                                                                                                                                                                email?: string;
                                                                                                                                                                                email_verified?: boolean;
                                                                                                                                                                                family_name?: string;
                                                                                                                                                                                gender?: string;
                                                                                                                                                                                given_name?: string;
                                                                                                                                                                                groups?: Group[];
                                                                                                                                                                                idp?: string;
                                                                                                                                                                                locale?: string;
                                                                                                                                                                                middle_name?: string;
                                                                                                                                                                                name?: string;
                                                                                                                                                                                nickname?: string;
                                                                                                                                                                                phone_number?: string;
                                                                                                                                                                                phone_number_verified?: boolean;
                                                                                                                                                                                picture?: string;
                                                                                                                                                                                preferred_username?: string;
                                                                                                                                                                                profile?: string;
                                                                                                                                                                                sub: string;
                                                                                                                                                                                updated_at?: number;
                                                                                                                                                                                website?: string;
                                                                                                                                                                                zoneinfo?: string;
                                                                                                                                                                                [key: string]: unknown;
                                                                                                                                                                            }

                                                                                                                                                                            Hierarchy

                                                                                                                                                                            Indexable

                                                                                                                                                                            • [key: string]: unknown

                                                                                                                                                                              Additional provider-specific claims.

                                                                                                                                                                              +
                                                                                                                                                                            Index

                                                                                                                                                                            Properties

                                                                                                                                                                            address?: Address

                                                                                                                                                                            Postal address.

                                                                                                                                                                            +
                                                                                                                                                                            amr?: string[]

                                                                                                                                                                            Authentication Methods References (AMR). Indicates how the user authenticated.

                                                                                                                                                                            +
                                                                                                                                                                            birthdate?: string

                                                                                                                                                                            Birthday.

                                                                                                                                                                            +
                                                                                                                                                                            email?: string

                                                                                                                                                                            Email address.

                                                                                                                                                                            +
                                                                                                                                                                            email_verified?: boolean

                                                                                                                                                                            Whether the email address has been verified by the provider.

                                                                                                                                                                            +
                                                                                                                                                                            family_name?: string

                                                                                                                                                                            Surname(s) / last name.

                                                                                                                                                                            +
                                                                                                                                                                            gender?: string

                                                                                                                                                                            Gender.

                                                                                                                                                                            +
                                                                                                                                                                            given_name?: string

                                                                                                                                                                            Given name(s) / first name.

                                                                                                                                                                            +
                                                                                                                                                                            groups?: Group[]

                                                                                                                                                                            Group memberships for the user.

                                                                                                                                                                            +
                                                                                                                                                                            idp?: string

                                                                                                                                                                            Identity Provider (IdP) identifier. Specifies the upstream provider used to authenticate the user.

                                                                                                                                                                            +
                                                                                                                                                                            locale?: string

                                                                                                                                                                            Locale.

                                                                                                                                                                            +
                                                                                                                                                                            middle_name?: string

                                                                                                                                                                            Middle name(s).

                                                                                                                                                                            +
                                                                                                                                                                            name?: string

                                                                                                                                                                            Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                            +
                                                                                                                                                                            nickname?: string

                                                                                                                                                                            Casual name used by the user.

                                                                                                                                                                            +
                                                                                                                                                                            phone_number?: string

                                                                                                                                                                            Phone number (formatted in E.164 standard).

                                                                                                                                                                            +
                                                                                                                                                                            phone_number_verified?: boolean

                                                                                                                                                                            Whether the phone number has been verified by the provider.

                                                                                                                                                                            +
                                                                                                                                                                            picture?: string

                                                                                                                                                                            URL of the user's profile picture.

                                                                                                                                                                            +
                                                                                                                                                                            preferred_username?: string

                                                                                                                                                                            Preferred username.

                                                                                                                                                                            +
                                                                                                                                                                            profile?: string

                                                                                                                                                                            URL of the user's profile page.

                                                                                                                                                                            +
                                                                                                                                                                            sub: string

                                                                                                                                                                            Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                                                            +
                                                                                                                                                                            updated_at?: number

                                                                                                                                                                            Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                            +
                                                                                                                                                                            website?: string

                                                                                                                                                                            URL of the user's website.

                                                                                                                                                                            +
                                                                                                                                                                            zoneinfo?: string

                                                                                                                                                                            Time zone name.

                                                                                                                                                                            +
                                                                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.ParResponse.html b/docs/html/interfaces/_monocloud_auth-js-core.index.ParResponse.html new file mode 100644 index 00000000..26b3dcfa --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.ParResponse.html @@ -0,0 +1,7 @@ +ParResponse | MonoCloud Authentication SDK
                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                              Preparing search index...

                                                                                                                                                                              Response returned from the Pushed Authorization Request (PAR) endpoint.

                                                                                                                                                                              +
                                                                                                                                                                              interface ParResponse {
                                                                                                                                                                                  expires_in: number;
                                                                                                                                                                                  request_uri: string;
                                                                                                                                                                              }
                                                                                                                                                                              Index

                                                                                                                                                                              Properties

                                                                                                                                                                              Properties

                                                                                                                                                                              expires_in: number

                                                                                                                                                                              Lifetime of the request_uri, in seconds. After this duration expires, the authorization request becomes invalid.

                                                                                                                                                                              +
                                                                                                                                                                              request_uri: string

                                                                                                                                                                              The URI reference identifying the pushed authorization request.

                                                                                                                                                                              +

                                                                                                                                                                              This value must be supplied as the request_uri parameter when redirecting the user to the authorization endpoint.

                                                                                                                                                                              +
                                                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.PushedAuthorizationParams.html b/docs/html/interfaces/_monocloud_auth-js-core.index.PushedAuthorizationParams.html new file mode 100644 index 00000000..ff40f68f --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.PushedAuthorizationParams.html @@ -0,0 +1,40 @@ +PushedAuthorizationParams | MonoCloud Authentication SDK
                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                Parameters used when creating a Pushed Authorization Request (PAR).

                                                                                                                                                                                +

                                                                                                                                                                                This type mirrors AuthorizationParams but excludes requestUri, +since the request_uri value is generated by the authorization server +after a successful PAR request and must not be supplied by the client.

                                                                                                                                                                                +
                                                                                                                                                                                interface PushedAuthorizationParams {
                                                                                                                                                                                    acrValues?: string[];
                                                                                                                                                                                    authenticatorHint?: Authenticators;
                                                                                                                                                                                    codeChallenge?: string;
                                                                                                                                                                                    codeChallengeMethod?: CodeChallengeMethod;
                                                                                                                                                                                    display?: DisplayOptions;
                                                                                                                                                                                    loginHint?: string;
                                                                                                                                                                                    maxAge?: number;
                                                                                                                                                                                    nonce?: string;
                                                                                                                                                                                    prompt?: Prompt;
                                                                                                                                                                                    redirectUri?: string;
                                                                                                                                                                                    request?: string;
                                                                                                                                                                                    resource?: string;
                                                                                                                                                                                    responseMode?: ResponseModes;
                                                                                                                                                                                    responseType?: ResponseTypes;
                                                                                                                                                                                    scopes?: string;
                                                                                                                                                                                    state?: string;
                                                                                                                                                                                    uiLocales?: string;
                                                                                                                                                                                }

                                                                                                                                                                                Hierarchy

                                                                                                                                                                                Index

                                                                                                                                                                                Properties

                                                                                                                                                                                acrValues?: string[]

                                                                                                                                                                                Authentication Context Class Reference (ACR) values requesting specific authentication assurance levels or methods.

                                                                                                                                                                                +
                                                                                                                                                                                authenticatorHint?: Authenticators

                                                                                                                                                                                Hint to the authorization server indicating which authenticator or connection should be used.

                                                                                                                                                                                +
                                                                                                                                                                                codeChallenge?: string

                                                                                                                                                                                PKCE code challenge derived from the code verifier. Used to secure authorization code exchanges.

                                                                                                                                                                                +
                                                                                                                                                                                codeChallengeMethod?: CodeChallengeMethod

                                                                                                                                                                                Method used to generate the PKCE code challenge.

                                                                                                                                                                                +
                                                                                                                                                                                display?: DisplayOptions

                                                                                                                                                                                Preferred display mode for the authentication UI.

                                                                                                                                                                                +
                                                                                                                                                                                loginHint?: string

                                                                                                                                                                                Hint identifying the user (for example, email or username). Used to prefill or optimize the sign-in experience.

                                                                                                                                                                                +
                                                                                                                                                                                maxAge?: number

                                                                                                                                                                                Maximum acceptable time (in seconds) since the user last authenticated. If exceeded, the user may be required to sign in again.

                                                                                                                                                                                +
                                                                                                                                                                                nonce?: string

                                                                                                                                                                                A cryptographically random value included in the ID token to prevent replay attacks.

                                                                                                                                                                                +
                                                                                                                                                                                prompt?: Prompt

                                                                                                                                                                                Controls authentication interaction behavior. For example, forcing login or consent.

                                                                                                                                                                                +
                                                                                                                                                                                redirectUri?: string

                                                                                                                                                                                The redirect URI where the authorization server sends the user after authentication completes.

                                                                                                                                                                                +
                                                                                                                                                                                request?: string

                                                                                                                                                                                A signed JWT containing authorization request parameters.

                                                                                                                                                                                +
                                                                                                                                                                                resource?: string

                                                                                                                                                                                Space-separated list of resource indicators that scope the issued access token.

                                                                                                                                                                                +
                                                                                                                                                                                responseMode?: ResponseModes

                                                                                                                                                                                Specifies how the authorization response is returned to the client.

                                                                                                                                                                                +
                                                                                                                                                                                responseType?: ResponseTypes

                                                                                                                                                                                Determines which artifacts are returned from the authorization endpoint.

                                                                                                                                                                                +
                                                                                                                                                                                scopes?: string

                                                                                                                                                                                Space-separated list of scopes requested during authentication.

                                                                                                                                                                                +
                                                                                                                                                                                state?: string

                                                                                                                                                                                A cryptographically random value used to maintain request state +and protect against CSRF attacks.

                                                                                                                                                                                +
                                                                                                                                                                                uiLocales?: string

                                                                                                                                                                                Preferred UI language.

                                                                                                                                                                                +
                                                                                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.RefetchUserInfoOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.RefetchUserInfoOptions.html new file mode 100644 index 00000000..edae3c24 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.RefetchUserInfoOptions.html @@ -0,0 +1,4 @@ +RefetchUserInfoOptions | MonoCloud Authentication SDK
                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                  Options used when refetching user profile data from the UserInfo endpoint.

                                                                                                                                                                                  +
                                                                                                                                                                                  interface RefetchUserInfoOptions {
                                                                                                                                                                                      onSessionCreating?: OnSessionCreating;
                                                                                                                                                                                  }
                                                                                                                                                                                  Index

                                                                                                                                                                                  Properties

                                                                                                                                                                                  Properties

                                                                                                                                                                                  onSessionCreating?: OnSessionCreating

                                                                                                                                                                                  Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                                                                                  +
                                                                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshGrantOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshGrantOptions.html new file mode 100644 index 00000000..c95e5b2c --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshGrantOptions.html @@ -0,0 +1,9 @@ +RefreshGrantOptions | MonoCloud Authentication SDK
                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                    Options used when exchanging a refresh token for a new access token.

                                                                                                                                                                                    +

                                                                                                                                                                                    These parameters allow requesting an access token scoped to specific resources or scopes that were previously authorized by the user.

                                                                                                                                                                                    +
                                                                                                                                                                                    interface RefreshGrantOptions {
                                                                                                                                                                                        resource?: string;
                                                                                                                                                                                        scopes?: string;
                                                                                                                                                                                    }

                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                    Index

                                                                                                                                                                                    Properties

                                                                                                                                                                                    Properties

                                                                                                                                                                                    resource?: string

                                                                                                                                                                                    Space-separated list of resource indicators that the new access token should be issued for.

                                                                                                                                                                                    +

                                                                                                                                                                                    The requested resources must have been previously granted during the original authorization flow.

                                                                                                                                                                                    +
                                                                                                                                                                                    scopes?: string

                                                                                                                                                                                    Space-separated list of scopes to request for the refreshed access token.

                                                                                                                                                                                    +

                                                                                                                                                                                    The requested scopes must have been granted during the original authorization flow.

                                                                                                                                                                                    +
                                                                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshOptions.html new file mode 100644 index 00000000..593b3cac --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshOptions.html @@ -0,0 +1,12 @@ +RefreshOptions | MonoCloud Authentication SDK
                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                      Options for refreshSession().

                                                                                                                                                                                      +
                                                                                                                                                                                      interface RefreshOptions {
                                                                                                                                                                                          appState?: ApplicationState;
                                                                                                                                                                                          mode?: RefreshMode;
                                                                                                                                                                                          refreshGrantOptions?: RefreshGrantOptions;
                                                                                                                                                                                      }
                                                                                                                                                                                      Index

                                                                                                                                                                                      Properties

                                                                                                                                                                                      appState?: ApplicationState

                                                                                                                                                                                      Additional custom application-specific state information.

                                                                                                                                                                                      +

                                                                                                                                                                                      Determines the interaction mode for the session refresh process.

                                                                                                                                                                                      +

                                                                                                                                                                                      Using popup or silent starts a new authorization request and replaces the current session.

                                                                                                                                                                                      +
                                                                                                                                                                                      'silent'
                                                                                                                                                                                      +
                                                                                                                                                                                      + +
                                                                                                                                                                                      refreshGrantOptions?: RefreshGrantOptions

                                                                                                                                                                                      Configuration specific to the Refresh Token Grant flow.

                                                                                                                                                                                      +
                                                                                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshSessionOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshSessionOptions.html new file mode 100644 index 00000000..6a7ceb97 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.RefreshSessionOptions.html @@ -0,0 +1,25 @@ +RefreshSessionOptions | MonoCloud Authentication SDK
                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                        Options used when refreshing an existing MonoCloud session.

                                                                                                                                                                                        +
                                                                                                                                                                                        interface RefreshSessionOptions {
                                                                                                                                                                                            fetchUserInfo?: boolean;
                                                                                                                                                                                            filteredIdTokenClaims?: string[];
                                                                                                                                                                                            idTokenClockSkew?: number;
                                                                                                                                                                                            idTokenClockTolerance?: number;
                                                                                                                                                                                            jwks?: Jwks;
                                                                                                                                                                                            onSessionCreating?: OnSessionCreating;
                                                                                                                                                                                            refreshGrantOptions?: RefreshGrantOptions;
                                                                                                                                                                                            validateIdToken?: boolean;
                                                                                                                                                                                        }
                                                                                                                                                                                        Index

                                                                                                                                                                                        Properties

                                                                                                                                                                                        fetchUserInfo?: boolean

                                                                                                                                                                                        When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object.

                                                                                                                                                                                        +
                                                                                                                                                                                        false
                                                                                                                                                                                        +
                                                                                                                                                                                        + +
                                                                                                                                                                                        filteredIdTokenClaims?: string[]

                                                                                                                                                                                        List of ID token claims to remove before storing the session.

                                                                                                                                                                                        +
                                                                                                                                                                                        idTokenClockSkew?: number

                                                                                                                                                                                        Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                                                                                                        +
                                                                                                                                                                                        idTokenClockTolerance?: number

                                                                                                                                                                                        Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                                                                                                        +
                                                                                                                                                                                        jwks?: Jwks

                                                                                                                                                                                        JSON Web Key Set used to validate the ID token signature.

                                                                                                                                                                                        +

                                                                                                                                                                                        If not provided, the JWKS is automatically fetched from the authorization server metadata.

                                                                                                                                                                                        +
                                                                                                                                                                                        onSessionCreating?: OnSessionCreating

                                                                                                                                                                                        Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                                                                                        +
                                                                                                                                                                                        refreshGrantOptions?: RefreshGrantOptions

                                                                                                                                                                                        Options applied to the refresh token grant request, such as requesting tokens for specific resources or scopes.

                                                                                                                                                                                        +
                                                                                                                                                                                        validateIdToken?: boolean

                                                                                                                                                                                        Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                                                                                                        +
                                                                                                                                                                                        true
                                                                                                                                                                                        +
                                                                                                                                                                                        + +
                                                                                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.SignInOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.SignInOptions.html new file mode 100644 index 00000000..3a1faf82 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.SignInOptions.html @@ -0,0 +1,38 @@ +SignInOptions | MonoCloud Authentication SDK
                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                          Options for signIn().

                                                                                                                                                                                          +
                                                                                                                                                                                          interface SignInOptions {
                                                                                                                                                                                              acrValues?: string[];
                                                                                                                                                                                              appState?: ApplicationState;
                                                                                                                                                                                              authenticatorHint?: Authenticators;
                                                                                                                                                                                              display?: DisplayOptions;
                                                                                                                                                                                              loginHint?: string;
                                                                                                                                                                                              maxAge?: number;
                                                                                                                                                                                              mode?: InteractionMode;
                                                                                                                                                                                              prompt?: Prompt;
                                                                                                                                                                                              resource?: string;
                                                                                                                                                                                              returnUrl?: string;
                                                                                                                                                                                              scopes?: string;
                                                                                                                                                                                              signUp?: boolean;
                                                                                                                                                                                              uiLocales?: string;
                                                                                                                                                                                          }
                                                                                                                                                                                          Index

                                                                                                                                                                                          Properties

                                                                                                                                                                                          acrValues?: string[]

                                                                                                                                                                                          An array of authentication context class references (ACRs).

                                                                                                                                                                                          +
                                                                                                                                                                                          appState?: ApplicationState

                                                                                                                                                                                          Additional custom application-specific state information.

                                                                                                                                                                                          +
                                                                                                                                                                                          authenticatorHint?: Authenticators

                                                                                                                                                                                          Specifies the preferred authenticator for sign-in.

                                                                                                                                                                                          +
                                                                                                                                                                                          display?: DisplayOptions

                                                                                                                                                                                          The desired user interface mode.

                                                                                                                                                                                          +
                                                                                                                                                                                          loginHint?: string

                                                                                                                                                                                          Provides a hint about the user's login identifier. Used to pre-fill or suggest a username.

                                                                                                                                                                                          +
                                                                                                                                                                                          "user@example.com"
                                                                                                                                                                                          +
                                                                                                                                                                                          + +
                                                                                                                                                                                          maxAge?: number

                                                                                                                                                                                          Maximum allowed time (in seconds) since the user's last authentication.

                                                                                                                                                                                          +

                                                                                                                                                                                          Used to force re-authentication if the last login exceeds this time.

                                                                                                                                                                                          +

                                                                                                                                                                                          Determines the interaction mode for sign-in.

                                                                                                                                                                                          +
                                                                                                                                                                                          'redirect'
                                                                                                                                                                                          +
                                                                                                                                                                                          + +
                                                                                                                                                                                          prompt?: Prompt

                                                                                                                                                                                          The desired authentication behavior.

                                                                                                                                                                                          +
                                                                                                                                                                                          resource?: string

                                                                                                                                                                                          Space-separated resources the access token should be scoped to.

                                                                                                                                                                                          +
                                                                                                                                                                                          returnUrl?: string

                                                                                                                                                                                          Relative path to return to after sign-in.

                                                                                                                                                                                          +
                                                                                                                                                                                          scopes?: string

                                                                                                                                                                                          Space-separated scopes requested from the authorization server.

                                                                                                                                                                                          +
                                                                                                                                                                                          signUp?: boolean

                                                                                                                                                                                          When true, starts the sign-up flow.

                                                                                                                                                                                          +
                                                                                                                                                                                          uiLocales?: string

                                                                                                                                                                                          Specifies preferred locales for the sign-in page.

                                                                                                                                                                                          +
                                                                                                                                                                                          "en-US"
                                                                                                                                                                                          +
                                                                                                                                                                                          + +
                                                                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.SignOutOptions.html b/docs/html/interfaces/_monocloud_auth-js-core.index.SignOutOptions.html new file mode 100644 index 00000000..34e454cf --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.SignOutOptions.html @@ -0,0 +1,12 @@ +SignOutOptions | MonoCloud Authentication SDK
                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                            Options for signOut().

                                                                                                                                                                                            +
                                                                                                                                                                                            interface SignOutOptions {
                                                                                                                                                                                                mode?: InteractionMode;
                                                                                                                                                                                                postLogoutRedirectUri?: string;
                                                                                                                                                                                                returnUrl?: string;
                                                                                                                                                                                            }
                                                                                                                                                                                            Index

                                                                                                                                                                                            Properties

                                                                                                                                                                                            Determines the interaction mode for the sign-out process.

                                                                                                                                                                                            +
                                                                                                                                                                                            'redirect'
                                                                                                                                                                                            +
                                                                                                                                                                                            + +
                                                                                                                                                                                            postLogoutRedirectUri?: string

                                                                                                                                                                                            URI to redirect to after successful sign-out.

                                                                                                                                                                                            +

                                                                                                                                                                                            This URI must be configured in the application's allowed sign-out callback URLs.

                                                                                                                                                                                            +
                                                                                                                                                                                            returnUrl?: string

                                                                                                                                                                                            Relative path to return to after sign-out.

                                                                                                                                                                                            +
                                                                                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.Tokens.html b/docs/html/interfaces/_monocloud_auth-js-core.index.Tokens.html new file mode 100644 index 00000000..8439a082 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.Tokens.html @@ -0,0 +1,14 @@ +Tokens | MonoCloud Authentication SDK
                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                              OAuth 2.0 / OpenID Connect token endpoint response.

                                                                                                                                                                                              +
                                                                                                                                                                                              interface Tokens {
                                                                                                                                                                                                  access_token: string;
                                                                                                                                                                                                  expires_in?: number;
                                                                                                                                                                                                  id_token?: string;
                                                                                                                                                                                                  refresh_token?: string;
                                                                                                                                                                                                  scope?: string;
                                                                                                                                                                                                  token_type?: string;
                                                                                                                                                                                              }
                                                                                                                                                                                              Index

                                                                                                                                                                                              Properties

                                                                                                                                                                                              access_token: string

                                                                                                                                                                                              Access token issued by the authorization server.

                                                                                                                                                                                              +
                                                                                                                                                                                              expires_in?: number

                                                                                                                                                                                              Lifetime of the access token (in seconds) from the time the response was issued.

                                                                                                                                                                                              +
                                                                                                                                                                                              id_token?: string

                                                                                                                                                                                              Optional ID token containing authentication claims about the user.

                                                                                                                                                                                              +
                                                                                                                                                                                              refresh_token?: string

                                                                                                                                                                                              Optional refresh token used to obtain new access tokens without requiring user re-authentication.

                                                                                                                                                                                              +
                                                                                                                                                                                              scope?: string

                                                                                                                                                                                              Space-separated list of scopes granted for the access token.

                                                                                                                                                                                              +
                                                                                                                                                                                              token_type?: string

                                                                                                                                                                                              Token type issued.

                                                                                                                                                                                              +
                                                                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-js-core.index.UserinfoResponse.html b/docs/html/interfaces/_monocloud_auth-js-core.index.UserinfoResponse.html new file mode 100644 index 00000000..f6c6aca3 --- /dev/null +++ b/docs/html/interfaces/_monocloud_auth-js-core.index.UserinfoResponse.html @@ -0,0 +1,46 @@ +UserinfoResponse | MonoCloud Authentication SDK
                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                Interface UserinfoResponse<TAddress>

                                                                                                                                                                                                Represents the OpenID Connect UserInfo response.

                                                                                                                                                                                                +
                                                                                                                                                                                                interface UserinfoResponse<TAddress extends Address = Address> {
                                                                                                                                                                                                    address?: TAddress;
                                                                                                                                                                                                    birthdate?: string;
                                                                                                                                                                                                    email?: string;
                                                                                                                                                                                                    email_verified?: boolean;
                                                                                                                                                                                                    family_name?: string;
                                                                                                                                                                                                    gender?: string;
                                                                                                                                                                                                    given_name?: string;
                                                                                                                                                                                                    groups?: Group[];
                                                                                                                                                                                                    locale?: string;
                                                                                                                                                                                                    middle_name?: string;
                                                                                                                                                                                                    name?: string;
                                                                                                                                                                                                    nickname?: string;
                                                                                                                                                                                                    phone_number?: string;
                                                                                                                                                                                                    phone_number_verified?: boolean;
                                                                                                                                                                                                    picture?: string;
                                                                                                                                                                                                    preferred_username?: string;
                                                                                                                                                                                                    profile?: string;
                                                                                                                                                                                                    sub: string;
                                                                                                                                                                                                    updated_at?: number;
                                                                                                                                                                                                    website?: string;
                                                                                                                                                                                                    zoneinfo?: string;
                                                                                                                                                                                                    [key: string]: unknown;
                                                                                                                                                                                                }

                                                                                                                                                                                                Type Parameters

                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                Indexable

                                                                                                                                                                                                • [key: string]: unknown

                                                                                                                                                                                                  Additional provider-specific claims.

                                                                                                                                                                                                  +
                                                                                                                                                                                                Index

                                                                                                                                                                                                Properties

                                                                                                                                                                                                address?: TAddress

                                                                                                                                                                                                Postal address.

                                                                                                                                                                                                +
                                                                                                                                                                                                birthdate?: string

                                                                                                                                                                                                Birthday.

                                                                                                                                                                                                +
                                                                                                                                                                                                email?: string

                                                                                                                                                                                                Email address.

                                                                                                                                                                                                +
                                                                                                                                                                                                email_verified?: boolean

                                                                                                                                                                                                Whether the email address has been verified by the provider.

                                                                                                                                                                                                +
                                                                                                                                                                                                family_name?: string

                                                                                                                                                                                                Surname(s) / last name.

                                                                                                                                                                                                +
                                                                                                                                                                                                gender?: string

                                                                                                                                                                                                Gender.

                                                                                                                                                                                                +
                                                                                                                                                                                                given_name?: string

                                                                                                                                                                                                Given name(s) / first name.

                                                                                                                                                                                                +
                                                                                                                                                                                                groups?: Group[]

                                                                                                                                                                                                Group memberships for the user.

                                                                                                                                                                                                +
                                                                                                                                                                                                locale?: string

                                                                                                                                                                                                Locale.

                                                                                                                                                                                                +
                                                                                                                                                                                                middle_name?: string

                                                                                                                                                                                                Middle name(s).

                                                                                                                                                                                                +
                                                                                                                                                                                                name?: string

                                                                                                                                                                                                Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                +
                                                                                                                                                                                                nickname?: string

                                                                                                                                                                                                Casual name used by the user.

                                                                                                                                                                                                +
                                                                                                                                                                                                phone_number?: string

                                                                                                                                                                                                Phone number (formatted in E.164 standard).

                                                                                                                                                                                                +
                                                                                                                                                                                                phone_number_verified?: boolean

                                                                                                                                                                                                Whether the phone number has been verified by the provider.

                                                                                                                                                                                                +
                                                                                                                                                                                                picture?: string

                                                                                                                                                                                                URL of the user's profile picture.

                                                                                                                                                                                                +
                                                                                                                                                                                                preferred_username?: string

                                                                                                                                                                                                Preferred username.

                                                                                                                                                                                                +
                                                                                                                                                                                                profile?: string

                                                                                                                                                                                                URL of the user's profile page.

                                                                                                                                                                                                +
                                                                                                                                                                                                sub: string

                                                                                                                                                                                                Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                                                                                +
                                                                                                                                                                                                updated_at?: number

                                                                                                                                                                                                Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                +
                                                                                                                                                                                                website?: string

                                                                                                                                                                                                URL of the user's website.

                                                                                                                                                                                                +
                                                                                                                                                                                                zoneinfo?: string

                                                                                                                                                                                                Time zone name.

                                                                                                                                                                                                +
                                                                                                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.client.ProtectClientPageOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.client.ProtectClientPageOptions.html index b16ff66f..b915fc67 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.client.ProtectClientPageOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.client.ProtectClientPageOptions.html @@ -1,5 +1,5 @@ ProtectClientPageOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                  Options for configuring page protection.

                                                                                                                                                                                                  -
                                                                                                                                                                                                  interface ProtectClientPageOptions {
                                                                                                                                                                                                      authParams?: ExtraAuthParams;
                                                                                                                                                                                                      groups?: string[];
                                                                                                                                                                                                      groupsClaim?: string;
                                                                                                                                                                                                      matchAll?: boolean;
                                                                                                                                                                                                      onAccessDenied?: () => ReactNode;
                                                                                                                                                                                                      onError?: (error: Error) => ReactNode;
                                                                                                                                                                                                      onGroupAccessDenied?: (user: MonoCloudUser) => ReactNode;
                                                                                                                                                                                                      returnUrl?: string;
                                                                                                                                                                                                  }

                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                  Index

                                                                                                                                                                                                  Properties

                                                                                                                                                                                                  interface ProtectClientPageOptions {
                                                                                                                                                                                                      authParams?: ExtraAuthParams;
                                                                                                                                                                                                      groups?: string[];
                                                                                                                                                                                                      groupsClaim?: string;
                                                                                                                                                                                                      matchAll?: boolean;
                                                                                                                                                                                                      onAccessDenied?: () => ReactNode;
                                                                                                                                                                                                      onError?: (error: Error) => ReactNode;
                                                                                                                                                                                                      onGroupAccessDenied?: (user: MonoCloudUser) => ReactNode;
                                                                                                                                                                                                      returnUrl?: string;
                                                                                                                                                                                                  }

                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                  Index

                                                                                                                                                                                                  Properties

                                                                                                                                                                                                  authParams? groups? groupsClaim? matchAll? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.components.SignInProps.html b/docs/html/interfaces/_monocloud_auth-nextjs.components.SignInProps.html index 035648a1..76d06c95 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.components.SignInProps.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.components.SignInProps.html @@ -1,5 +1,5 @@ SignInProps | MonoCloud Authentication SDK
                                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                    Props for the <SignIn /> component.

                                                                                                                                                                                                    -
                                                                                                                                                                                                    interface SignInProps {
                                                                                                                                                                                                        acrValues?: string[];
                                                                                                                                                                                                        authenticatorHint?: Authenticators;
                                                                                                                                                                                                        children: ReactNode;
                                                                                                                                                                                                        display?: DisplayOptions;
                                                                                                                                                                                                        loginHint?: string;
                                                                                                                                                                                                        maxAge?: number;
                                                                                                                                                                                                        prompt?: Prompt;
                                                                                                                                                                                                        resource?: string;
                                                                                                                                                                                                        returnUrl?: string;
                                                                                                                                                                                                        scopes?: string;
                                                                                                                                                                                                        uiLocales?: string;
                                                                                                                                                                                                    }

                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                    Index

                                                                                                                                                                                                    Properties

                                                                                                                                                                                                    interface SignInProps {
                                                                                                                                                                                                        acrValues?: string[];
                                                                                                                                                                                                        authenticatorHint?: Authenticators;
                                                                                                                                                                                                        children: ReactNode;
                                                                                                                                                                                                        display?: DisplayOptions;
                                                                                                                                                                                                        loginHint?: string;
                                                                                                                                                                                                        maxAge?: number;
                                                                                                                                                                                                        prompt?: Prompt;
                                                                                                                                                                                                        resource?: string;
                                                                                                                                                                                                        returnUrl?: string;
                                                                                                                                                                                                        scopes?: string;
                                                                                                                                                                                                        uiLocales?: string;
                                                                                                                                                                                                    }

                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                    Index

                                                                                                                                                                                                    Properties

                                                                                                                                                                                                    acrValues? authenticatorHint? children display? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.components.SignUpProps.html b/docs/html/interfaces/_monocloud_auth-nextjs.components.SignUpProps.html index 32d7d95b..daf9bf6b 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.components.SignUpProps.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.components.SignUpProps.html @@ -1,5 +1,5 @@ SignUpProps | MonoCloud Authentication SDK
                                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                      Props for the <SignUp /> component.

                                                                                                                                                                                                      -
                                                                                                                                                                                                      interface SignUpProps {
                                                                                                                                                                                                          acrValues?: string[];
                                                                                                                                                                                                          display?: DisplayOptions;
                                                                                                                                                                                                          maxAge?: number;
                                                                                                                                                                                                          resource?: string;
                                                                                                                                                                                                          returnUrl?: string;
                                                                                                                                                                                                          scopes?: string;
                                                                                                                                                                                                          uiLocales?: string;
                                                                                                                                                                                                      }

                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                      • Omit<ExtraAuthParams, "authenticatorHint" | "loginHint" | "prompt">
                                                                                                                                                                                                        • SignUpProps
                                                                                                                                                                                                      Index

                                                                                                                                                                                                      Properties

                                                                                                                                                                                                      interface SignUpProps {
                                                                                                                                                                                                          acrValues?: string[];
                                                                                                                                                                                                          display?: DisplayOptions;
                                                                                                                                                                                                          maxAge?: number;
                                                                                                                                                                                                          resource?: string;
                                                                                                                                                                                                          returnUrl?: string;
                                                                                                                                                                                                          scopes?: string;
                                                                                                                                                                                                          uiLocales?: string;
                                                                                                                                                                                                      }

                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                      • Omit<ExtraAuthParams, "authenticatorHint" | "loginHint" | "prompt">
                                                                                                                                                                                                        • SignUpProps
                                                                                                                                                                                                      Index

                                                                                                                                                                                                      Properties

                                                                                                                                                                                                      acrValues? display? maxAge? resource? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.components_client.RedirectToSignInProps.html b/docs/html/interfaces/_monocloud_auth-nextjs.components_client.RedirectToSignInProps.html index 947cabd4..e0e082ce 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.components_client.RedirectToSignInProps.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.components_client.RedirectToSignInProps.html @@ -1,5 +1,5 @@ RedirectToSignInProps | MonoCloud Authentication SDK
                                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                        Props for the <RedirectToSignIn /> Component

                                                                                                                                                                                                        -
                                                                                                                                                                                                        interface RedirectToSignInProps {
                                                                                                                                                                                                            acrValues?: string[];
                                                                                                                                                                                                            authenticatorHint?: Authenticators;
                                                                                                                                                                                                            display?: DisplayOptions;
                                                                                                                                                                                                            loginHint?: string;
                                                                                                                                                                                                            maxAge?: number;
                                                                                                                                                                                                            prompt?: Prompt;
                                                                                                                                                                                                            resource?: string;
                                                                                                                                                                                                            returnUrl?: string;
                                                                                                                                                                                                            scopes?: string;
                                                                                                                                                                                                            uiLocales?: string;
                                                                                                                                                                                                        }

                                                                                                                                                                                                        Hierarchy

                                                                                                                                                                                                        Index

                                                                                                                                                                                                        Properties

                                                                                                                                                                                                        interface RedirectToSignInProps {
                                                                                                                                                                                                            acrValues?: string[];
                                                                                                                                                                                                            authenticatorHint?: Authenticators;
                                                                                                                                                                                                            display?: DisplayOptions;
                                                                                                                                                                                                            loginHint?: string;
                                                                                                                                                                                                            maxAge?: number;
                                                                                                                                                                                                            prompt?: Prompt;
                                                                                                                                                                                                            resource?: string;
                                                                                                                                                                                                            returnUrl?: string;
                                                                                                                                                                                                            scopes?: string;
                                                                                                                                                                                                            uiLocales?: string;
                                                                                                                                                                                                        }

                                                                                                                                                                                                        Hierarchy

                                                                                                                                                                                                        Index

                                                                                                                                                                                                        Properties

                                                                                                                                                                                                        acrValues? authenticatorHint? display? loginHint? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.AccessToken.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.AccessToken.html index d9afd91d..00a292d8 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.AccessToken.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.AccessToken.html @@ -1,13 +1,13 @@ AccessToken | MonoCloud Authentication SDK
                                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                          Represents an OAuth 2.0 access token and its associated metadata.

                                                                                                                                                                                                          -
                                                                                                                                                                                                          interface AccessToken {
                                                                                                                                                                                                              accessToken: string;
                                                                                                                                                                                                              accessTokenExpiration: number;
                                                                                                                                                                                                              requestedScopes?: string;
                                                                                                                                                                                                              resource?: string;
                                                                                                                                                                                                              scopes: string;
                                                                                                                                                                                                          }

                                                                                                                                                                                                          Hierarchy

                                                                                                                                                                                                          Index

                                                                                                                                                                                                          Properties

                                                                                                                                                                                                          interface AccessToken {
                                                                                                                                                                                                              accessToken: string;
                                                                                                                                                                                                              accessTokenExpiration: number;
                                                                                                                                                                                                              requestedScopes?: string;
                                                                                                                                                                                                              resource?: string;
                                                                                                                                                                                                              scopes: string;
                                                                                                                                                                                                          }

                                                                                                                                                                                                          Hierarchy

                                                                                                                                                                                                          Index

                                                                                                                                                                                                          Properties

                                                                                                                                                                                                          accessToken: string

                                                                                                                                                                                                          The issued access token.

                                                                                                                                                                                                          -
                                                                                                                                                                                                          accessTokenExpiration: number

                                                                                                                                                                                                          The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                                                                                          -
                                                                                                                                                                                                          requestedScopes?: string

                                                                                                                                                                                                          Optional space-separated list of scopes originally requested during token acquisition.

                                                                                                                                                                                                          -
                                                                                                                                                                                                          resource?: string

                                                                                                                                                                                                          Optional resource (audience) that the access token is scoped for.

                                                                                                                                                                                                          -
                                                                                                                                                                                                          scopes: string

                                                                                                                                                                                                          Space-separated list of scopes granted to the access token.

                                                                                                                                                                                                          +
                                                                                                                                                                                                          accessTokenExpiration: number

                                                                                                                                                                                                          The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                                                                                          +
                                                                                                                                                                                                          requestedScopes?: string

                                                                                                                                                                                                          Optional space-separated list of scopes originally requested during token acquisition.

                                                                                                                                                                                                          +
                                                                                                                                                                                                          resource?: string

                                                                                                                                                                                                          Optional resource (audience) that the access token is scoped for.

                                                                                                                                                                                                          +
                                                                                                                                                                                                          scopes: string

                                                                                                                                                                                                          Space-separated list of scopes granted to the access token.

                                                                                                                                                                                                          These represent the effective permissions approved by the authorization server.

                                                                                                                                                                                                          -
                                                                                                                                                                                                          +
                                                                                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.Address.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.Address.html index dff9646d..5256ec8c 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.Address.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.Address.html @@ -1,15 +1,15 @@ Address | MonoCloud Authentication SDK
                                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                            Represents a postal address as defined by the OpenID Connect standard address claim.

                                                                                                                                                                                                            interface Address {
                                                                                                                                                                                                                country?: string;
                                                                                                                                                                                                                formatted?: string;
                                                                                                                                                                                                                locality?: string;
                                                                                                                                                                                                                postal_code?: string;
                                                                                                                                                                                                                region?: string;
                                                                                                                                                                                                                street_address?: string;
                                                                                                                                                                                                                [key: string]: unknown;
                                                                                                                                                                                                            }

                                                                                                                                                                                                            Indexable

                                                                                                                                                                                                            • [key: string]: unknown

                                                                                                                                                                                                              Additional provider-specific address fields.

                                                                                                                                                                                                              -
                                                                                                                                                                                                            Index

                                                                                                                                                                                                            Properties

                                                                                                                                                                                                            Index

                                                                                                                                                                                                            Properties

                                                                                                                                                                                                            country?: string

                                                                                                                                                                                                            Country name or ISO country code.

                                                                                                                                                                                                            -
                                                                                                                                                                                                            formatted?: string

                                                                                                                                                                                                            Full mailing address formatted for display or mailing labels.

                                                                                                                                                                                                            -
                                                                                                                                                                                                            locality?: string

                                                                                                                                                                                                            City or locality component.

                                                                                                                                                                                                            -
                                                                                                                                                                                                            postal_code?: string

                                                                                                                                                                                                            Postal or ZIP code.

                                                                                                                                                                                                            -
                                                                                                                                                                                                            region?: string

                                                                                                                                                                                                            State, province, or region component.

                                                                                                                                                                                                            -
                                                                                                                                                                                                            street_address?: string

                                                                                                                                                                                                            Full street address component, which may include house number, street name, apartment, suite, or unit information.

                                                                                                                                                                                                            -
                                                                                                                                                                                                            +
                                                                                                                                                                                                            formatted?: string

                                                                                                                                                                                                            Full mailing address formatted for display or mailing labels.

                                                                                                                                                                                                            +
                                                                                                                                                                                                            locality?: string

                                                                                                                                                                                                            City or locality component.

                                                                                                                                                                                                            +
                                                                                                                                                                                                            postal_code?: string

                                                                                                                                                                                                            Postal or ZIP code.

                                                                                                                                                                                                            +
                                                                                                                                                                                                            region?: string

                                                                                                                                                                                                            State, province, or region component.

                                                                                                                                                                                                            +
                                                                                                                                                                                                            street_address?: string

                                                                                                                                                                                                            Full street address component, which may include house number, street name, apartment, suite, or unit information.

                                                                                                                                                                                                            +
                                                                                                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.ApplicationState.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.ApplicationState.html index cec866c9..2ba1af5c 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.ApplicationState.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.ApplicationState.html @@ -1,3 +1,3 @@ ApplicationState | MonoCloud Authentication SDK
                                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                              Represents custom application state associated with an authentication request.

                                                                                                                                                                                                              This object is populated via onSetApplicationState and is persisted through the authentication flow. The resolved value is later available during session creation and can be used to carry application-specific context (for example: return targets, workflow state, or tenant hints).

                                                                                                                                                                                                              -

                                                                                                                                                                                                              Hierarchy

                                                                                                                                                                                                              • Record<string, any>
                                                                                                                                                                                                                • ApplicationState

                                                                                                                                                                                                              Indexable

                                                                                                                                                                                                              • [key: string]: any
                                                                                                                                                                                                              +

                                                                                                                                                                                                              Hierarchy

                                                                                                                                                                                                              • Record<string, any>
                                                                                                                                                                                                                • ApplicationState

                                                                                                                                                                                                              Indexable

                                                                                                                                                                                                              • [key: string]: any
                                                                                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.ExtraAuthParams.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.ExtraAuthParams.html index df16b94a..941074c6 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.ExtraAuthParams.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.ExtraAuthParams.html @@ -1,5 +1,5 @@ ExtraAuthParams | MonoCloud Authentication SDK
                                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                A subset of authorization parameters supported by client-side helpers.

                                                                                                                                                                                                                -
                                                                                                                                                                                                                interface ExtraAuthParams {
                                                                                                                                                                                                                    acrValues?: string[];
                                                                                                                                                                                                                    authenticatorHint?: Authenticators;
                                                                                                                                                                                                                    display?: DisplayOptions;
                                                                                                                                                                                                                    loginHint?: string;
                                                                                                                                                                                                                    maxAge?: number;
                                                                                                                                                                                                                    prompt?: Prompt;
                                                                                                                                                                                                                    resource?: string;
                                                                                                                                                                                                                    scopes?: string;
                                                                                                                                                                                                                    uiLocales?: string;
                                                                                                                                                                                                                }

                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                • Pick<
                                                                                                                                                                                                                      AuthorizationParams,
                                                                                                                                                                                                                      | "scopes"
                                                                                                                                                                                                                      | "resource"
                                                                                                                                                                                                                      | "prompt"
                                                                                                                                                                                                                      | "display"
                                                                                                                                                                                                                      | "uiLocales"
                                                                                                                                                                                                                      | "acrValues"
                                                                                                                                                                                                                      | "authenticatorHint"
                                                                                                                                                                                                                      | "maxAge"
                                                                                                                                                                                                                      | "loginHint",
                                                                                                                                                                                                                  >
                                                                                                                                                                                                                Index

                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                interface ExtraAuthParams {
                                                                                                                                                                                                                    acrValues?: string[];
                                                                                                                                                                                                                    authenticatorHint?: Authenticators;
                                                                                                                                                                                                                    display?: DisplayOptions;
                                                                                                                                                                                                                    loginHint?: string;
                                                                                                                                                                                                                    maxAge?: number;
                                                                                                                                                                                                                    prompt?: Prompt;
                                                                                                                                                                                                                    resource?: string;
                                                                                                                                                                                                                    scopes?: string;
                                                                                                                                                                                                                    uiLocales?: string;
                                                                                                                                                                                                                }

                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                • Pick<
                                                                                                                                                                                                                      AuthorizationParams,
                                                                                                                                                                                                                      | "scopes"
                                                                                                                                                                                                                      | "resource"
                                                                                                                                                                                                                      | "prompt"
                                                                                                                                                                                                                      | "display"
                                                                                                                                                                                                                      | "uiLocales"
                                                                                                                                                                                                                      | "acrValues"
                                                                                                                                                                                                                      | "authenticatorHint"
                                                                                                                                                                                                                      | "maxAge"
                                                                                                                                                                                                                      | "loginHint",
                                                                                                                                                                                                                  >
                                                                                                                                                                                                                Index

                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                acrValues? authenticatorHint? display? loginHint? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.GetTokensOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.GetTokensOptions.html index b334be31..560cbcf7 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.GetTokensOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.GetTokensOptions.html @@ -1,5 +1,5 @@ GetTokensOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                  Options used to control token retrieval and refresh behavior when calling getTokens().

                                                                                                                                                                                                                  -
                                                                                                                                                                                                                  interface GetTokensOptions {
                                                                                                                                                                                                                      forceRefresh?: boolean;
                                                                                                                                                                                                                      refetchUserInfo?: boolean;
                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                      scopes?: string;
                                                                                                                                                                                                                  }

                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                  interface GetTokensOptions {
                                                                                                                                                                                                                      forceRefresh?: boolean;
                                                                                                                                                                                                                      refetchUserInfo?: boolean;
                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                      scopes?: string;
                                                                                                                                                                                                                  }

                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                  refetchUserInfo?: boolean

                                                                                                                                                                                                                  When enabled, refetches user information from the UserInfo endpoint after tokens are refreshed.

                                                                                                                                                                                                                  resource?: string

                                                                                                                                                                                                                  Space-separated list of resource indicators that the new access token should be issued for.

                                                                                                                                                                                                                  The requested resources must have been previously granted during the original authorization flow.

                                                                                                                                                                                                                  -
                                                                                                                                                                                                                  scopes?: string

                                                                                                                                                                                                                  Space-separated list of scopes to request for the refreshed access token.

                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  scopes?: string

                                                                                                                                                                                                                  Space-separated list of scopes to request for the refreshed access token.

                                                                                                                                                                                                                  The requested scopes must have been granted during the original authorization flow.

                                                                                                                                                                                                                  -
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.GroupOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.GroupOptions.html index c7b124bd..e32fdb00 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.GroupOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.GroupOptions.html @@ -1,5 +1,5 @@ GroupOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                    Configuration options that require the user to belong to specific groups.

                                                                                                                                                                                                                    -
                                                                                                                                                                                                                    interface GroupOptions {
                                                                                                                                                                                                                        groups?: string[];
                                                                                                                                                                                                                        groupsClaim?: string;
                                                                                                                                                                                                                        matchAll?: boolean;
                                                                                                                                                                                                                    }

                                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                    Properties

                                                                                                                                                                                                                    interface GroupOptions {
                                                                                                                                                                                                                        groups?: string[];
                                                                                                                                                                                                                        groupsClaim?: string;
                                                                                                                                                                                                                        matchAll?: boolean;
                                                                                                                                                                                                                    }

                                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                    Properties

                                                                                                                                                                                                                    groups?: string[]

                                                                                                                                                                                                                    A list of group IDs or group names the authenticated user must belong to.

                                                                                                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.IdTokenClaims.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.IdTokenClaims.html index 24947fbe..2905b7b0 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.IdTokenClaims.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.IdTokenClaims.html @@ -1,6 +1,6 @@ IdTokenClaims | MonoCloud Authentication SDK
                                                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                      Standard OpenID Connect ID Token claims.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      interface IdTokenClaims {
                                                                                                                                                                                                                          acr?: string;
                                                                                                                                                                                                                          address?: Address;
                                                                                                                                                                                                                          amr?: string[];
                                                                                                                                                                                                                          at_hash?: string;
                                                                                                                                                                                                                          aud: string | string[];
                                                                                                                                                                                                                          auth_time?: number;
                                                                                                                                                                                                                          azp?: string;
                                                                                                                                                                                                                          birthdate?: string;
                                                                                                                                                                                                                          c_hash?: string;
                                                                                                                                                                                                                          email?: string;
                                                                                                                                                                                                                          email_verified?: boolean;
                                                                                                                                                                                                                          exp: number;
                                                                                                                                                                                                                          family_name?: string;
                                                                                                                                                                                                                          gender?: string;
                                                                                                                                                                                                                          given_name?: string;
                                                                                                                                                                                                                          groups?: Group[];
                                                                                                                                                                                                                          iat: number;
                                                                                                                                                                                                                          iss: string;
                                                                                                                                                                                                                          locale?: string;
                                                                                                                                                                                                                          middle_name?: string;
                                                                                                                                                                                                                          name?: string;
                                                                                                                                                                                                                          nickname?: string;
                                                                                                                                                                                                                          nonce?: string;
                                                                                                                                                                                                                          phone_number?: string;
                                                                                                                                                                                                                          phone_number_verified?: boolean;
                                                                                                                                                                                                                          picture?: string;
                                                                                                                                                                                                                          preferred_username?: string;
                                                                                                                                                                                                                          profile?: string;
                                                                                                                                                                                                                          s_hash?: string;
                                                                                                                                                                                                                          sub: string;
                                                                                                                                                                                                                          updated_at?: number;
                                                                                                                                                                                                                          website?: string;
                                                                                                                                                                                                                          zoneinfo?: string;
                                                                                                                                                                                                                          [key: string]: unknown;
                                                                                                                                                                                                                      }

                                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                                      Indexable

                                                                                                                                                                                                                      • [key: string]: unknown

                                                                                                                                                                                                                        Additional custom or provider-specific claims.

                                                                                                                                                                                                                        -
                                                                                                                                                                                                                      Index

                                                                                                                                                                                                                      Properties

                                                                                                                                                                                                                      interface IdTokenClaims {
                                                                                                                                                                                                                          acr?: string;
                                                                                                                                                                                                                          address?: Address;
                                                                                                                                                                                                                          amr?: string[];
                                                                                                                                                                                                                          at_hash?: string;
                                                                                                                                                                                                                          aud: string | string[];
                                                                                                                                                                                                                          auth_time?: number;
                                                                                                                                                                                                                          azp?: string;
                                                                                                                                                                                                                          birthdate?: string;
                                                                                                                                                                                                                          c_hash?: string;
                                                                                                                                                                                                                          email?: string;
                                                                                                                                                                                                                          email_verified?: boolean;
                                                                                                                                                                                                                          exp: number;
                                                                                                                                                                                                                          family_name?: string;
                                                                                                                                                                                                                          gender?: string;
                                                                                                                                                                                                                          given_name?: string;
                                                                                                                                                                                                                          groups?: Group[];
                                                                                                                                                                                                                          iat: number;
                                                                                                                                                                                                                          iss: string;
                                                                                                                                                                                                                          locale?: string;
                                                                                                                                                                                                                          middle_name?: string;
                                                                                                                                                                                                                          name?: string;
                                                                                                                                                                                                                          nickname?: string;
                                                                                                                                                                                                                          nonce?: string;
                                                                                                                                                                                                                          phone_number?: string;
                                                                                                                                                                                                                          phone_number_verified?: boolean;
                                                                                                                                                                                                                          picture?: string;
                                                                                                                                                                                                                          preferred_username?: string;
                                                                                                                                                                                                                          profile?: string;
                                                                                                                                                                                                                          s_hash?: string;
                                                                                                                                                                                                                          sub: string;
                                                                                                                                                                                                                          updated_at?: number;
                                                                                                                                                                                                                          website?: string;
                                                                                                                                                                                                                          zoneinfo?: string;
                                                                                                                                                                                                                          [key: string]: unknown;
                                                                                                                                                                                                                      }

                                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                                      Indexable

                                                                                                                                                                                                                      • [key: string]: unknown

                                                                                                                                                                                                                        Additional custom or provider-specific claims.

                                                                                                                                                                                                                        +
                                                                                                                                                                                                                      Index

                                                                                                                                                                                                                      Properties

                                                                                                                                                                                                                      Properties

                                                                                                                                                                                                                      acr?: string

                                                                                                                                                                                                                      Authentication Context Class Reference. Indicates the assurance level of the authentication performed.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      address?: Address

                                                                                                                                                                                                                      Postal address.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      amr?: string[]

                                                                                                                                                                                                                      Authentication Methods References. Lists the authentication methods used (for example: pwd, mfa, otp).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      at_hash?: string

                                                                                                                                                                                                                      Access token hash. Used to validate access tokens returned alongside the ID token.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      aud: string | string[]

                                                                                                                                                                                                                      Intended audience(s) of the ID token.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      auth_time?: number

                                                                                                                                                                                                                      Time when the end-user authentication occurred (Unix epoch seconds).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      azp?: string

                                                                                                                                                                                                                      Authorized party - identifies the client to which the ID token was issued.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      birthdate?: string

                                                                                                                                                                                                                      Birthday.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      c_hash?: string

                                                                                                                                                                                                                      Authorization code hash. Used to validate authorization codes returned with hybrid flows.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      email?: string

                                                                                                                                                                                                                      Email address.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      email_verified?: boolean

                                                                                                                                                                                                                      Whether the email address has been verified by the provider.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      exp: number

                                                                                                                                                                                                                      Expiration time of the ID token (Unix epoch seconds).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      family_name?: string

                                                                                                                                                                                                                      Surname(s) / last name.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      gender?: string

                                                                                                                                                                                                                      Gender.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      given_name?: string

                                                                                                                                                                                                                      Given name(s) / first name.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      groups?: Group[]

                                                                                                                                                                                                                      Group memberships for the user.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      iat: number

                                                                                                                                                                                                                      Time at which the ID token was issued (Unix epoch seconds).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      iss: string

                                                                                                                                                                                                                      Issuer identifier - the authorization server that issued the token.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      locale?: string

                                                                                                                                                                                                                      Locale.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      middle_name?: string

                                                                                                                                                                                                                      Middle name(s).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      name?: string

                                                                                                                                                                                                                      Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      nickname?: string

                                                                                                                                                                                                                      Casual name used by the user.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      nonce?: string

                                                                                                                                                                                                                      Nonce value used to associate the authentication request with the issued ID token and prevent replay attacks.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      phone_number?: string

                                                                                                                                                                                                                      Phone number (formatted in E.164 standard).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      phone_number_verified?: boolean

                                                                                                                                                                                                                      Whether the phone number has been verified by the provider.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      picture?: string

                                                                                                                                                                                                                      URL of the user's profile picture.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      preferred_username?: string

                                                                                                                                                                                                                      Preferred username.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      profile?: string

                                                                                                                                                                                                                      URL of the user's profile page.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      s_hash?: string

                                                                                                                                                                                                                      State hash (used in some hybrid flow validations).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      sub: string

                                                                                                                                                                                                                      Subject identifier — uniquely identifies the authenticated user.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      updated_at?: number

                                                                                                                                                                                                                      Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      website?: string

                                                                                                                                                                                                                      URL of the user's website.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      zoneinfo?: string

                                                                                                                                                                                                                      Time zone name.

                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      address?: Address

                                                                                                                                                                                                                      Postal address.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      amr?: string[]

                                                                                                                                                                                                                      Authentication Methods References. Lists the authentication methods used (for example: pwd, mfa, otp).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      at_hash?: string

                                                                                                                                                                                                                      Access token hash. Used to validate access tokens returned alongside the ID token.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      aud: string | string[]

                                                                                                                                                                                                                      Intended audience(s) of the ID token.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      auth_time?: number

                                                                                                                                                                                                                      Time when the end-user authentication occurred (Unix epoch seconds).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      azp?: string

                                                                                                                                                                                                                      Authorized party - identifies the client to which the ID token was issued.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      birthdate?: string

                                                                                                                                                                                                                      Birthday.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      c_hash?: string

                                                                                                                                                                                                                      Authorization code hash. Used to validate authorization codes returned with hybrid flows.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      email?: string

                                                                                                                                                                                                                      Email address.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      email_verified?: boolean

                                                                                                                                                                                                                      Whether the email address has been verified by the provider.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      exp: number

                                                                                                                                                                                                                      Expiration time of the ID token (Unix epoch seconds).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      family_name?: string

                                                                                                                                                                                                                      Surname(s) / last name.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      gender?: string

                                                                                                                                                                                                                      Gender.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      given_name?: string

                                                                                                                                                                                                                      Given name(s) / first name.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      groups?: Group[]

                                                                                                                                                                                                                      Group memberships for the user.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      iat: number

                                                                                                                                                                                                                      Time at which the ID token was issued (Unix epoch seconds).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      iss: string

                                                                                                                                                                                                                      Issuer identifier - the authorization server that issued the token.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      locale?: string

                                                                                                                                                                                                                      Locale.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      middle_name?: string

                                                                                                                                                                                                                      Middle name(s).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      name?: string

                                                                                                                                                                                                                      Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      nickname?: string

                                                                                                                                                                                                                      Casual name used by the user.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      nonce?: string

                                                                                                                                                                                                                      Nonce value used to associate the authentication request with the issued ID token and prevent replay attacks.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      phone_number?: string

                                                                                                                                                                                                                      Phone number (formatted in E.164 standard).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      phone_number_verified?: boolean

                                                                                                                                                                                                                      Whether the phone number has been verified by the provider.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      picture?: string

                                                                                                                                                                                                                      URL of the user's profile picture.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      preferred_username?: string

                                                                                                                                                                                                                      Preferred username.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      profile?: string

                                                                                                                                                                                                                      URL of the user's profile page.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      s_hash?: string

                                                                                                                                                                                                                      State hash (used in some hybrid flow validations).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      sub: string

                                                                                                                                                                                                                      Subject identifier — uniquely identifies the authenticated user.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      updated_at?: number

                                                                                                                                                                                                                      Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      website?: string

                                                                                                                                                                                                                      URL of the user's website.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      zoneinfo?: string

                                                                                                                                                                                                                      Time zone name.

                                                                                                                                                                                                                      +
                                                                                                                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.IsUserInGroupOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.IsUserInGroupOptions.html index d746355f..49342d00 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.IsUserInGroupOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.IsUserInGroupOptions.html @@ -1,5 +1,5 @@ IsUserInGroupOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                        Configuration options for evaluating user group membership.

                                                                                                                                                                                                                        -
                                                                                                                                                                                                                        interface IsUserInGroupOptions {
                                                                                                                                                                                                                            groupsClaim?: string;
                                                                                                                                                                                                                            matchAll?: boolean;
                                                                                                                                                                                                                        }

                                                                                                                                                                                                                        Hierarchy

                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                        interface IsUserInGroupOptions {
                                                                                                                                                                                                                            groupsClaim?: string;
                                                                                                                                                                                                                            matchAll?: boolean;
                                                                                                                                                                                                                        }

                                                                                                                                                                                                                        Hierarchy

                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                        groupsClaim?: string

                                                                                                                                                                                                                        The name of the claim in the user profile that contains group information. This value is read from the authenticated user's session.

                                                                                                                                                                                                                        'groups'
                                                                                                                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.Jwk.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.Jwk.html
                                                                                                                                                                                                                        index 2cc2320b..61c7e225 100644
                                                                                                                                                                                                                        --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.Jwk.html
                                                                                                                                                                                                                        +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.Jwk.html
                                                                                                                                                                                                                        @@ -1,7 +1,7 @@
                                                                                                                                                                                                                         Jwk | MonoCloud Authentication SDK
                                                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                          Represents a JSON Web Key (JWK) as defined by RFC 7517.

                                                                                                                                                                                                                          A JWK describes a cryptographic key used to verify or encrypt JSON Web Tokens (JWTs) as obtained from the JWKS (JSON Web Key Set) endpoint exposed by the authorization server.

                                                                                                                                                                                                                          The available properties depend on the key type (kty).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          interface Jwk {
                                                                                                                                                                                                                              alg?: string;
                                                                                                                                                                                                                              crv?: string;
                                                                                                                                                                                                                              d?: string;
                                                                                                                                                                                                                              dp?: string;
                                                                                                                                                                                                                              dq?: string;
                                                                                                                                                                                                                              e?: string;
                                                                                                                                                                                                                              ext?: boolean;
                                                                                                                                                                                                                              k?: string;
                                                                                                                                                                                                                              key_ops?: string[];
                                                                                                                                                                                                                              kid?: string;
                                                                                                                                                                                                                              kty: string;
                                                                                                                                                                                                                              n?: string;
                                                                                                                                                                                                                              oth?: { d?: string; r?: string; t?: string }[];
                                                                                                                                                                                                                              p?: string;
                                                                                                                                                                                                                              q?: string;
                                                                                                                                                                                                                              qi?: string;
                                                                                                                                                                                                                              use?: string;
                                                                                                                                                                                                                              x?: string;
                                                                                                                                                                                                                              x5c?: string[];
                                                                                                                                                                                                                              x5t?: string;
                                                                                                                                                                                                                              "x5t#S256"?: string;
                                                                                                                                                                                                                              x5u?: string;
                                                                                                                                                                                                                              y?: string;
                                                                                                                                                                                                                          }
                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                          interface Jwk {
                                                                                                                                                                                                                              alg?: string;
                                                                                                                                                                                                                              crv?: string;
                                                                                                                                                                                                                              d?: string;
                                                                                                                                                                                                                              dp?: string;
                                                                                                                                                                                                                              dq?: string;
                                                                                                                                                                                                                              e?: string;
                                                                                                                                                                                                                              ext?: boolean;
                                                                                                                                                                                                                              k?: string;
                                                                                                                                                                                                                              key_ops?: string[];
                                                                                                                                                                                                                              kid?: string;
                                                                                                                                                                                                                              kty: string;
                                                                                                                                                                                                                              n?: string;
                                                                                                                                                                                                                              oth?: { d?: string; r?: string; t?: string }[];
                                                                                                                                                                                                                              p?: string;
                                                                                                                                                                                                                              q?: string;
                                                                                                                                                                                                                              qi?: string;
                                                                                                                                                                                                                              use?: string;
                                                                                                                                                                                                                              x?: string;
                                                                                                                                                                                                                              x5c?: string[];
                                                                                                                                                                                                                              x5t?: string;
                                                                                                                                                                                                                              "x5t#S256"?: string;
                                                                                                                                                                                                                              x5u?: string;
                                                                                                                                                                                                                              y?: string;
                                                                                                                                                                                                                          }
                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                          alg? crv? d? dp? @@ -25,26 +25,26 @@ x5u? y?

                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                          alg?: string

                                                                                                                                                                                                                          Intended algorithm for the key (for example: RS256).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          crv?: string

                                                                                                                                                                                                                          Elliptic curve name (for example: P-256).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          d?: string

                                                                                                                                                                                                                          RSA private exponent.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          dp?: string

                                                                                                                                                                                                                          RSA first factor CRT exponent.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          dq?: string

                                                                                                                                                                                                                          RSA second factor CRT exponent.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          e?: string

                                                                                                                                                                                                                          RSA public exponent.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          ext?: boolean

                                                                                                                                                                                                                          Indicates whether the key is extractable.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          k?: string

                                                                                                                                                                                                                          Symmetric key value (base64url encoded).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          key_ops?: string[]

                                                                                                                                                                                                                          Allowed operations for the key (e.g. sign, verify, encrypt).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          kid?: string

                                                                                                                                                                                                                          Key identifier used to match keys during verification.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          kty: string

                                                                                                                                                                                                                          Key type (for example: RSA, or EC).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          n?: string

                                                                                                                                                                                                                          RSA modulus.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          oth?: { d?: string; r?: string; t?: string }[]

                                                                                                                                                                                                                          Additional prime information (multi-prime RSA).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          p?: string

                                                                                                                                                                                                                          RSA first prime factor.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          q?: string

                                                                                                                                                                                                                          RSA second prime factor.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          qi?: string

                                                                                                                                                                                                                          RSA CRT coefficient.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          use?: string

                                                                                                                                                                                                                          Public key use (sig for signature or enc for encryption).

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          x?: string

                                                                                                                                                                                                                          X coordinate for EC public keys.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          x5c?: string[]

                                                                                                                                                                                                                          X.509 certificate chain.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          x5t?: string

                                                                                                                                                                                                                          X.509 certificate SHA-1 thumbprint.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          "x5t#S256"?: string

                                                                                                                                                                                                                          X.509 certificate SHA-256 thumbprint.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          x5u?: string

                                                                                                                                                                                                                          URL referencing the X.509 certificate.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          y?: string

                                                                                                                                                                                                                          Y coordinate for EC public keys.

                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          crv?: string

                                                                                                                                                                                                                          Elliptic curve name (for example: P-256).

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          d?: string

                                                                                                                                                                                                                          RSA private exponent.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          dp?: string

                                                                                                                                                                                                                          RSA first factor CRT exponent.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          dq?: string

                                                                                                                                                                                                                          RSA second factor CRT exponent.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          e?: string

                                                                                                                                                                                                                          RSA public exponent.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          ext?: boolean

                                                                                                                                                                                                                          Indicates whether the key is extractable.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          k?: string

                                                                                                                                                                                                                          Symmetric key value (base64url encoded).

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          key_ops?: string[]

                                                                                                                                                                                                                          Allowed operations for the key (e.g. sign, verify, encrypt).

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          kid?: string

                                                                                                                                                                                                                          Key identifier used to match keys during verification.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          kty: string

                                                                                                                                                                                                                          Key type (for example: RSA, or EC).

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          n?: string

                                                                                                                                                                                                                          RSA modulus.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          oth?: { d?: string; r?: string; t?: string }[]

                                                                                                                                                                                                                          Additional prime information (multi-prime RSA).

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          p?: string

                                                                                                                                                                                                                          RSA first prime factor.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          q?: string

                                                                                                                                                                                                                          RSA second prime factor.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          qi?: string

                                                                                                                                                                                                                          RSA CRT coefficient.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          use?: string

                                                                                                                                                                                                                          Public key use (sig for signature or enc for encryption).

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          x?: string

                                                                                                                                                                                                                          X coordinate for EC public keys.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          x5c?: string[]

                                                                                                                                                                                                                          X.509 certificate chain.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          x5t?: string

                                                                                                                                                                                                                          X.509 certificate SHA-1 thumbprint.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          "x5t#S256"?: string

                                                                                                                                                                                                                          X.509 certificate SHA-256 thumbprint.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          x5u?: string

                                                                                                                                                                                                                          URL referencing the X.509 certificate.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          y?: string

                                                                                                                                                                                                                          Y coordinate for EC public keys.

                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudOptions.html index 4ae341f0..f6fbb9b2 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudOptions.html @@ -229,7 +229,7 @@

                                                                                                                                                                                                                          Hierarchy

                                                                                                                                                                                                                          • Partial<
                                                                                                                                                                                                                                Omit<
                                                                                                                                                                                                                                    MonoCloudOptionsBase,
                                                                                                                                                                                                                                    "defaultAuthParams"
                                                                                                                                                                                                                                    | "session"
                                                                                                                                                                                                                                    | "routes"
                                                                                                                                                                                                                                    | "state",
                                                                                                                                                                                                                                >,
                                                                                                                                                                                                                            >
                                                                                                                                                                                                                            • MonoCloudOptions
                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                          interface MonoCloudOptions {
                                                                                                                                                                                                                              allowQueryParamOverrides?: boolean;
                                                                                                                                                                                                                              appUrl?: string;
                                                                                                                                                                                                                              clientId?: string;
                                                                                                                                                                                                                              clientSecret?: string;
                                                                                                                                                                                                                              clockSkew?: number;
                                                                                                                                                                                                                              cookieSecret?: string;
                                                                                                                                                                                                                              debugger?: string;
                                                                                                                                                                                                                              defaultAuthParams?: AuthorizationParams;
                                                                                                                                                                                                                              federatedSignOut?: boolean;
                                                                                                                                                                                                                              filteredIdTokenClaims?: string[];
                                                                                                                                                                                                                              idTokenSigningAlg?: SecurityAlgorithms;
                                                                                                                                                                                                                              jwksCacheDuration?: number;
                                                                                                                                                                                                                              metadataCacheDuration?: number;
                                                                                                                                                                                                                              onBackChannelLogout?: OnBackChannelLogout;
                                                                                                                                                                                                                              onSessionCreating?: OnSessionCreating;
                                                                                                                                                                                                                              onSetApplicationState?: OnSetApplicationState;
                                                                                                                                                                                                                              postLogoutRedirectUri?: string;
                                                                                                                                                                                                                              refetchUserInfo?: boolean;
                                                                                                                                                                                                                              resources?: Indicator[];
                                                                                                                                                                                                                              responseTimeout?: number;
                                                                                                                                                                                                                              routes?: Partial<MonoCloudRoutes>;
                                                                                                                                                                                                                              session?: MonoCloudSessionOptions;
                                                                                                                                                                                                                              state?: MonoCloudStatePartialOptions;
                                                                                                                                                                                                                              tenantDomain?: string;
                                                                                                                                                                                                                              usePar?: boolean;
                                                                                                                                                                                                                              userAgent?: string;
                                                                                                                                                                                                                              userInfo?: boolean;
                                                                                                                                                                                                                          }

                                                                                                                                                                                                                          Hierarchy

                                                                                                                                                                                                                          • Partial<
                                                                                                                                                                                                                                Omit<
                                                                                                                                                                                                                                    MonoCloudOptionsBase,
                                                                                                                                                                                                                                    "defaultAuthParams"
                                                                                                                                                                                                                                    | "session"
                                                                                                                                                                                                                                    | "routes"
                                                                                                                                                                                                                                    | "state",
                                                                                                                                                                                                                                >,
                                                                                                                                                                                                                            >
                                                                                                                                                                                                                            • MonoCloudOptions
                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                          allowQueryParamOverrides? appUrl? clientId? clientSecret? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudRequest.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudRequest.html index 25e4225f..7d0446cc 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudRequest.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudRequest.html @@ -1,5 +1,5 @@ MonoCloudRequest | MonoCloud Authentication SDK
                                                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                            Represents a request object that includes cookie handling capabilities.

                                                                                                                                                                                                                            -
                                                                                                                                                                                                                            interface MonoCloudRequest {
                                                                                                                                                                                                                                getAllCookies(): Promise<Map<string, string>>;
                                                                                                                                                                                                                                getCookie(name: string): Promise<string | undefined>;
                                                                                                                                                                                                                                getQuery(parameter: string): string | string[] | undefined;
                                                                                                                                                                                                                                getRawRequest(): Promise<
                                                                                                                                                                                                                                    { body: string
                                                                                                                                                                                                                                    | Record<string, string>; method: string; url: string },
                                                                                                                                                                                                                                >;
                                                                                                                                                                                                                            }

                                                                                                                                                                                                                            Hierarchy

                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                            Methods

                                                                                                                                                                                                                            interface MonoCloudRequest {
                                                                                                                                                                                                                                getAllCookies(): Promise<Map<string, string>>;
                                                                                                                                                                                                                                getCookie(name: string): Promise<string | undefined>;
                                                                                                                                                                                                                                getQuery(parameter: string): string | string[] | undefined;
                                                                                                                                                                                                                                getRawRequest(): Promise<
                                                                                                                                                                                                                                    { body: string
                                                                                                                                                                                                                                    | Record<string, string>; method: string; url: string },
                                                                                                                                                                                                                                >;
                                                                                                                                                                                                                            }

                                                                                                                                                                                                                            Hierarchy

                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                            Methods

                                                                                                                                                                                                                            getAllCookies getCookie getQuery getRawRequest diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSession.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSession.html index 3f613481..2471efd1 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSession.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSession.html @@ -1,15 +1,15 @@ MonoCloudSession | MonoCloud Authentication SDK
                                                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                              Represents an authenticated session, containing the authenticated user profile along with the tokens and metadata issued during authentication.

                                                                                                                                                                                                                              interface MonoCloudSession {
                                                                                                                                                                                                                                  accessTokens?: AccessToken[];
                                                                                                                                                                                                                                  authorizedScopes?: string;
                                                                                                                                                                                                                                  idToken?: string;
                                                                                                                                                                                                                                  refreshToken?: string;
                                                                                                                                                                                                                                  user: MonoCloudUser;
                                                                                                                                                                                                                                  [key: string]: unknown;
                                                                                                                                                                                                                              }

                                                                                                                                                                                                                              Indexable

                                                                                                                                                                                                                              • [key: string]: unknown

                                                                                                                                                                                                                                Additional custom properties attached to the session.

                                                                                                                                                                                                                                These may be added via hooks such as onSessionCreating.

                                                                                                                                                                                                                                -
                                                                                                                                                                                                                              Index

                                                                                                                                                                                                                              Properties

                                                                                                                                                                                                                              Index

                                                                                                                                                                                                                              Properties

                                                                                                                                                                                                                              accessTokens?: AccessToken[]

                                                                                                                                                                                                                              Access tokens associated with the session.

                                                                                                                                                                                                                              Multiple tokens may exist when access tokens are issued for different resources or scope sets.

                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              authorizedScopes?: string

                                                                                                                                                                                                                              Space-separated list of scopes authorized for the session.

                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              idToken?: string

                                                                                                                                                                                                                              Optional ID token issued during authentication.

                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              refreshToken?: string

                                                                                                                                                                                                                              Optional refresh token used to obtain new access tokens without requiring the user to re-authenticate.

                                                                                                                                                                                                                              -

                                                                                                                                                                                                                              The authenticated user profile, typically derived from ID token claims and/or the UserInfo endpoint.

                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              +
                                                                                                                                                                                                                              authorizedScopes?: string

                                                                                                                                                                                                                              Space-separated list of scopes authorized for the session.

                                                                                                                                                                                                                              +
                                                                                                                                                                                                                              idToken?: string

                                                                                                                                                                                                                              Optional ID token issued during authentication.

                                                                                                                                                                                                                              +
                                                                                                                                                                                                                              refreshToken?: string

                                                                                                                                                                                                                              Optional refresh token used to obtain new access tokens without requiring the user to re-authenticate.

                                                                                                                                                                                                                              +

                                                                                                                                                                                                                              The authenticated user profile, typically derived from ID token claims and/or the UserInfo endpoint.

                                                                                                                                                                                                                              +
                                                                                                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSessionOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSessionOptions.html index 0096aea8..94de785f 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSessionOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudSessionOptions.html @@ -1,5 +1,5 @@ MonoCloudSessionOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                Partial configuration options for authentication sessions.

                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                interface MonoCloudSessionOptions {
                                                                                                                                                                                                                                    cookie?: Partial<MonoCloudCookieOptions>;
                                                                                                                                                                                                                                    duration?: number;
                                                                                                                                                                                                                                    maximumDuration?: number;
                                                                                                                                                                                                                                    sliding?: boolean;
                                                                                                                                                                                                                                    store?: MonoCloudSessionStore;
                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                                Index

                                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                                interface MonoCloudSessionOptions {
                                                                                                                                                                                                                                    cookie?: Partial<MonoCloudCookieOptions>;
                                                                                                                                                                                                                                    duration?: number;
                                                                                                                                                                                                                                    maximumDuration?: number;
                                                                                                                                                                                                                                    sliding?: boolean;
                                                                                                                                                                                                                                    store?: MonoCloudSessionStore;
                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                                Index

                                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                                cookie? duration? maximumDuration? sliding? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudTokens.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudTokens.html index 624cbee8..07258b0e 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudTokens.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudTokens.html @@ -1,6 +1,6 @@ MonoCloudTokens | MonoCloud Authentication SDK
                                                                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                  Represents the token set associated with the currently authenticated user.

                                                                                                                                                                                                                                  This object extends AccessToken and includes additional tokens issued during authentication, along with convenience metadata used by the SDK to indicate token validity.

                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  interface MonoCloudTokens {
                                                                                                                                                                                                                                      accessToken: string;
                                                                                                                                                                                                                                      accessTokenExpiration: number;
                                                                                                                                                                                                                                      idToken?: string;
                                                                                                                                                                                                                                      isExpired: boolean;
                                                                                                                                                                                                                                      refreshToken?: string;
                                                                                                                                                                                                                                      requestedScopes?: string;
                                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                                      scopes: string;
                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                                  interface MonoCloudTokens {
                                                                                                                                                                                                                                      accessToken: string;
                                                                                                                                                                                                                                      accessTokenExpiration: number;
                                                                                                                                                                                                                                      idToken?: string;
                                                                                                                                                                                                                                      isExpired: boolean;
                                                                                                                                                                                                                                      refreshToken?: string;
                                                                                                                                                                                                                                      requestedScopes?: string;
                                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                                      scopes: string;
                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                                  accessToken: string

                                                                                                                                                                                                                                  The issued access token.

                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  accessTokenExpiration: number

                                                                                                                                                                                                                                  The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  idToken?: string

                                                                                                                                                                                                                                  The ID token issued during authentication. Contains identity claims about the authenticated user.

                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                  accessTokenExpiration: number

                                                                                                                                                                                                                                  The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                  idToken?: string

                                                                                                                                                                                                                                  The ID token issued during authentication. Contains identity claims about the authenticated user.

                                                                                                                                                                                                                                  isExpired: boolean

                                                                                                                                                                                                                                  Indicates whether the current access token is expired at the time of evaluation.

                                                                                                                                                                                                                                  refreshToken?: string

                                                                                                                                                                                                                                  The refresh token used to obtain new access tokens without requiring the user to re-authenticate.

                                                                                                                                                                                                                                  requestedScopes?: string

                                                                                                                                                                                                                                  Optional space-separated list of scopes originally requested during token acquisition.

                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  resource?: string

                                                                                                                                                                                                                                  Optional resource (audience) that the access token is scoped for.

                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  scopes: string

                                                                                                                                                                                                                                  Space-separated list of scopes granted to the access token.

                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                  resource?: string

                                                                                                                                                                                                                                  Optional resource (audience) that the access token is scoped for.

                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                  scopes: string

                                                                                                                                                                                                                                  Space-separated list of scopes granted to the access token.

                                                                                                                                                                                                                                  These represent the effective permissions approved by the authorization server.

                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudUser.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudUser.html index 1d66148b..739bddb8 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudUser.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.MonoCloudUser.html @@ -1,6 +1,6 @@ MonoCloudUser | MonoCloud Authentication SDK
                                                                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                    Represents the authenticated user stored in a MonoCloud session.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    interface MonoCloudUser {
                                                                                                                                                                                                                                        address?: Address;
                                                                                                                                                                                                                                        amr?: string[];
                                                                                                                                                                                                                                        birthdate?: string;
                                                                                                                                                                                                                                        email?: string;
                                                                                                                                                                                                                                        email_verified?: boolean;
                                                                                                                                                                                                                                        family_name?: string;
                                                                                                                                                                                                                                        gender?: string;
                                                                                                                                                                                                                                        given_name?: string;
                                                                                                                                                                                                                                        groups?: Group[];
                                                                                                                                                                                                                                        idp?: string;
                                                                                                                                                                                                                                        locale?: string;
                                                                                                                                                                                                                                        middle_name?: string;
                                                                                                                                                                                                                                        name?: string;
                                                                                                                                                                                                                                        nickname?: string;
                                                                                                                                                                                                                                        phone_number?: string;
                                                                                                                                                                                                                                        phone_number_verified?: boolean;
                                                                                                                                                                                                                                        picture?: string;
                                                                                                                                                                                                                                        preferred_username?: string;
                                                                                                                                                                                                                                        profile?: string;
                                                                                                                                                                                                                                        sub: string;
                                                                                                                                                                                                                                        updated_at?: number;
                                                                                                                                                                                                                                        website?: string;
                                                                                                                                                                                                                                        zoneinfo?: string;
                                                                                                                                                                                                                                        [key: string]: unknown;
                                                                                                                                                                                                                                    }

                                                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                                                    Indexable

                                                                                                                                                                                                                                    • [key: string]: unknown

                                                                                                                                                                                                                                      Additional provider-specific claims.

                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                                    Properties

                                                                                                                                                                                                                                    interface MonoCloudUser {
                                                                                                                                                                                                                                        address?: Address;
                                                                                                                                                                                                                                        amr?: string[];
                                                                                                                                                                                                                                        birthdate?: string;
                                                                                                                                                                                                                                        email?: string;
                                                                                                                                                                                                                                        email_verified?: boolean;
                                                                                                                                                                                                                                        family_name?: string;
                                                                                                                                                                                                                                        gender?: string;
                                                                                                                                                                                                                                        given_name?: string;
                                                                                                                                                                                                                                        groups?: Group[];
                                                                                                                                                                                                                                        idp?: string;
                                                                                                                                                                                                                                        locale?: string;
                                                                                                                                                                                                                                        middle_name?: string;
                                                                                                                                                                                                                                        name?: string;
                                                                                                                                                                                                                                        nickname?: string;
                                                                                                                                                                                                                                        phone_number?: string;
                                                                                                                                                                                                                                        phone_number_verified?: boolean;
                                                                                                                                                                                                                                        picture?: string;
                                                                                                                                                                                                                                        preferred_username?: string;
                                                                                                                                                                                                                                        profile?: string;
                                                                                                                                                                                                                                        sub: string;
                                                                                                                                                                                                                                        updated_at?: number;
                                                                                                                                                                                                                                        website?: string;
                                                                                                                                                                                                                                        zoneinfo?: string;
                                                                                                                                                                                                                                        [key: string]: unknown;
                                                                                                                                                                                                                                    }

                                                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                                                    Indexable

                                                                                                                                                                                                                                    • [key: string]: unknown

                                                                                                                                                                                                                                      Additional provider-specific claims.

                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                                    Properties

                                                                                                                                                                                                                                    Properties

                                                                                                                                                                                                                                    address?: Address

                                                                                                                                                                                                                                    Postal address.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    amr?: string[]

                                                                                                                                                                                                                                    Authentication Methods References (AMR). Indicates how the user authenticated.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    birthdate?: string

                                                                                                                                                                                                                                    Birthday.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    email?: string

                                                                                                                                                                                                                                    Email address.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    email_verified?: boolean

                                                                                                                                                                                                                                    Whether the email address has been verified by the provider.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    family_name?: string

                                                                                                                                                                                                                                    Surname(s) / last name.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    gender?: string

                                                                                                                                                                                                                                    Gender.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    given_name?: string

                                                                                                                                                                                                                                    Given name(s) / first name.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    groups?: Group[]

                                                                                                                                                                                                                                    Group memberships for the user.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    idp?: string

                                                                                                                                                                                                                                    Identity Provider (IdP) identifier. Specifies the upstream provider used to authenticate the user.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    locale?: string

                                                                                                                                                                                                                                    Locale.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    middle_name?: string

                                                                                                                                                                                                                                    Middle name(s).

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    name?: string

                                                                                                                                                                                                                                    Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    nickname?: string

                                                                                                                                                                                                                                    Casual name used by the user.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    phone_number?: string

                                                                                                                                                                                                                                    Phone number (formatted in E.164 standard).

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    phone_number_verified?: boolean

                                                                                                                                                                                                                                    Whether the phone number has been verified by the provider.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    picture?: string

                                                                                                                                                                                                                                    URL of the user's profile picture.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    preferred_username?: string

                                                                                                                                                                                                                                    Preferred username.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    profile?: string

                                                                                                                                                                                                                                    URL of the user's profile page.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    sub: string

                                                                                                                                                                                                                                    Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    updated_at?: number

                                                                                                                                                                                                                                    Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    website?: string

                                                                                                                                                                                                                                    URL of the user's website.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    zoneinfo?: string

                                                                                                                                                                                                                                    Time zone name.

                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    amr?: string[]

                                                                                                                                                                                                                                    Authentication Methods References (AMR). Indicates how the user authenticated.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    birthdate?: string

                                                                                                                                                                                                                                    Birthday.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    email?: string

                                                                                                                                                                                                                                    Email address.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    email_verified?: boolean

                                                                                                                                                                                                                                    Whether the email address has been verified by the provider.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    family_name?: string

                                                                                                                                                                                                                                    Surname(s) / last name.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    gender?: string

                                                                                                                                                                                                                                    Gender.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    given_name?: string

                                                                                                                                                                                                                                    Given name(s) / first name.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    groups?: Group[]

                                                                                                                                                                                                                                    Group memberships for the user.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    idp?: string

                                                                                                                                                                                                                                    Identity Provider (IdP) identifier. Specifies the upstream provider used to authenticate the user.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    locale?: string

                                                                                                                                                                                                                                    Locale.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    middle_name?: string

                                                                                                                                                                                                                                    Middle name(s).

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    name?: string

                                                                                                                                                                                                                                    Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    nickname?: string

                                                                                                                                                                                                                                    Casual name used by the user.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    phone_number?: string

                                                                                                                                                                                                                                    Phone number (formatted in E.164 standard).

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    phone_number_verified?: boolean

                                                                                                                                                                                                                                    Whether the phone number has been verified by the provider.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    picture?: string

                                                                                                                                                                                                                                    URL of the user's profile picture.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    preferred_username?: string

                                                                                                                                                                                                                                    Preferred username.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    profile?: string

                                                                                                                                                                                                                                    URL of the user's profile page.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    sub: string

                                                                                                                                                                                                                                    Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    updated_at?: number

                                                                                                                                                                                                                                    Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    website?: string

                                                                                                                                                                                                                                    URL of the user's website.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    zoneinfo?: string

                                                                                                                                                                                                                                    Time zone name.

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiAppOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiAppOptions.html index 56e86ed1..3baa3e36 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiAppOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiAppOptions.html @@ -1,5 +1,5 @@ ProtectApiAppOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                      Options for configuring protectApi() in the App Router.

                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                      interface ProtectApiAppOptions {
                                                                                                                                                                                                                                          groups?: string[];
                                                                                                                                                                                                                                          groupsClaim?: string;
                                                                                                                                                                                                                                          matchAll?: boolean;
                                                                                                                                                                                                                                          onAccessDenied?: AppRouterApiOnAccessDeniedHandler;
                                                                                                                                                                                                                                          onGroupAccessDenied?: AppRouterApiOnGroupAccessDeniedHandler;
                                                                                                                                                                                                                                      }

                                                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                                                      Index

                                                                                                                                                                                                                                      Properties

                                                                                                                                                                                                                                      interface ProtectApiAppOptions {
                                                                                                                                                                                                                                          groups?: string[];
                                                                                                                                                                                                                                          groupsClaim?: string;
                                                                                                                                                                                                                                          matchAll?: boolean;
                                                                                                                                                                                                                                          onAccessDenied?: AppRouterApiOnAccessDeniedHandler;
                                                                                                                                                                                                                                          onGroupAccessDenied?: AppRouterApiOnGroupAccessDeniedHandler;
                                                                                                                                                                                                                                      }

                                                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                                                      Index

                                                                                                                                                                                                                                      Properties

                                                                                                                                                                                                                                      groups? groupsClaim? matchAll? onAccessDenied? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiPageOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiPageOptions.html index dd9295e4..7262c29b 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiPageOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectApiPageOptions.html @@ -1,5 +1,5 @@ ProtectApiPageOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                        Options for configuring protectApi() in the Pages Router.

                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                        interface ProtectApiPageOptions {
                                                                                                                                                                                                                                            groups?: string[];
                                                                                                                                                                                                                                            groupsClaim?: string;
                                                                                                                                                                                                                                            matchAll?: boolean;
                                                                                                                                                                                                                                            onAccessDenied?: PageRouterApiOnAccessDeniedHandler;
                                                                                                                                                                                                                                            onGroupAccessDenied?: PageRouterApiOnGroupAccessDeniedHandler;
                                                                                                                                                                                                                                        }

                                                                                                                                                                                                                                        Hierarchy

                                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                                        interface ProtectApiPageOptions {
                                                                                                                                                                                                                                            groups?: string[];
                                                                                                                                                                                                                                            groupsClaim?: string;
                                                                                                                                                                                                                                            matchAll?: boolean;
                                                                                                                                                                                                                                            onAccessDenied?: PageRouterApiOnAccessDeniedHandler;
                                                                                                                                                                                                                                            onGroupAccessDenied?: PageRouterApiOnGroupAccessDeniedHandler;
                                                                                                                                                                                                                                        }

                                                                                                                                                                                                                                        Hierarchy

                                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                                        groups? groupsClaim? matchAll? onAccessDenied? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectAppPageOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectAppPageOptions.html index 45d90fa1..3b62128d 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectAppPageOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectAppPageOptions.html @@ -1,5 +1,5 @@ ProtectAppPageOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                          Options for configuring protectPage() in the App Router.

                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          interface ProtectAppPageOptions {
                                                                                                                                                                                                                                              authParams?: ExtraAuthParams;
                                                                                                                                                                                                                                              groups?: string[];
                                                                                                                                                                                                                                              groupsClaim?: string;
                                                                                                                                                                                                                                              matchAll?: boolean;
                                                                                                                                                                                                                                              onAccessDenied?: (
                                                                                                                                                                                                                                                  props: {
                                                                                                                                                                                                                                                      params?: Record<string, string | string[]>;
                                                                                                                                                                                                                                                      searchParams?: Record<string, string | string[] | undefined>;
                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                              ) => Element
                                                                                                                                                                                                                                              | Promise<Element>;
                                                                                                                                                                                                                                              onGroupAccessDenied?: (
                                                                                                                                                                                                                                                  props: {
                                                                                                                                                                                                                                                      params?: Record<string, string | string[]>;
                                                                                                                                                                                                                                                      searchParams?: Record<string, string | string[] | undefined>;
                                                                                                                                                                                                                                                      user: MonoCloudUser;
                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                              ) => Element
                                                                                                                                                                                                                                              | Promise<Element>;
                                                                                                                                                                                                                                              returnUrl?: string;
                                                                                                                                                                                                                                          }

                                                                                                                                                                                                                                          Hierarchy

                                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                                          interface ProtectAppPageOptions {
                                                                                                                                                                                                                                              authParams?: ExtraAuthParams;
                                                                                                                                                                                                                                              groups?: string[];
                                                                                                                                                                                                                                              groupsClaim?: string;
                                                                                                                                                                                                                                              matchAll?: boolean;
                                                                                                                                                                                                                                              onAccessDenied?: (
                                                                                                                                                                                                                                                  props: {
                                                                                                                                                                                                                                                      params?: Record<string, string | string[]>;
                                                                                                                                                                                                                                                      searchParams?: Record<string, string | string[] | undefined>;
                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                              ) => Element
                                                                                                                                                                                                                                              | Promise<Element>;
                                                                                                                                                                                                                                              onGroupAccessDenied?: (
                                                                                                                                                                                                                                                  props: {
                                                                                                                                                                                                                                                      params?: Record<string, string | string[]>;
                                                                                                                                                                                                                                                      searchParams?: Record<string, string | string[] | undefined>;
                                                                                                                                                                                                                                                      user: MonoCloudUser;
                                                                                                                                                                                                                                                  },
                                                                                                                                                                                                                                              ) => Element
                                                                                                                                                                                                                                              | Promise<Element>;
                                                                                                                                                                                                                                              returnUrl?: string;
                                                                                                                                                                                                                                          }

                                                                                                                                                                                                                                          Hierarchy

                                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                                          authParams? groups? groupsClaim? matchAll? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectOptions.html index 12d6dbd4..eb3111b3 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectOptions.html @@ -1,5 +1,5 @@ ProtectOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                            Options for configuring the protect() helper.

                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                            interface ProtectOptions {
                                                                                                                                                                                                                                                authParams?: ExtraAuthParams;
                                                                                                                                                                                                                                                groups?: string[];
                                                                                                                                                                                                                                                groupsClaim?: string;
                                                                                                                                                                                                                                                matchAll?: boolean;
                                                                                                                                                                                                                                                returnUrl?: string;
                                                                                                                                                                                                                                            }

                                                                                                                                                                                                                                            Hierarchy

                                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                                            Properties

                                                                                                                                                                                                                                            interface ProtectOptions {
                                                                                                                                                                                                                                                authParams?: ExtraAuthParams;
                                                                                                                                                                                                                                                groups?: string[];
                                                                                                                                                                                                                                                groupsClaim?: string;
                                                                                                                                                                                                                                                matchAll?: boolean;
                                                                                                                                                                                                                                                returnUrl?: string;
                                                                                                                                                                                                                                            }

                                                                                                                                                                                                                                            Hierarchy

                                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                                            Properties

                                                                                                                                                                                                                                            authParams? groups? groupsClaim? matchAll? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectPagePageOptions.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectPagePageOptions.html index 22b61a63..e2aa4177 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectPagePageOptions.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.ProtectPagePageOptions.html @@ -1,7 +1,7 @@ ProtectPagePageOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                              Interface ProtectPagePageOptions<P, Q>

                                                                                                                                                                                                                                              Options for configuring protectPage() in the Pages Router.

                                                                                                                                                                                                                                              interface ProtectPagePageOptions<
                                                                                                                                                                                                                                                  P extends Record<string, any> = Record<string, any>,
                                                                                                                                                                                                                                                  Q extends ParsedUrlQuery = ParsedUrlQuery,
                                                                                                                                                                                                                                              > {
                                                                                                                                                                                                                                                  authParams?: ExtraAuthParams;
                                                                                                                                                                                                                                                  getServerSideProps?: GetServerSideProps<P, Q>;
                                                                                                                                                                                                                                                  groups?: string[];
                                                                                                                                                                                                                                                  groupsClaim?: string;
                                                                                                                                                                                                                                                  matchAll?: boolean;
                                                                                                                                                                                                                                                  onAccessDenied?: ProtectPagePageOnAccessDeniedType<P, Q>;
                                                                                                                                                                                                                                                  onGroupAccessDenied?: ProtectPagePageOnGroupAccessDeniedType<P, Q>;
                                                                                                                                                                                                                                                  returnUrl?: string;
                                                                                                                                                                                                                                              }

                                                                                                                                                                                                                                              Type Parameters

                                                                                                                                                                                                                                              • P extends Record<string, any> = Record<string, any>

                                                                                                                                                                                                                                                Props returned from getServerSideProps.

                                                                                                                                                                                                                                              • Q extends ParsedUrlQuery = ParsedUrlQuery

                                                                                                                                                                                                                                                Query parameters parsed from the URL.

                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                              Hierarchy

                                                                                                                                                                                                                                              Index

                                                                                                                                                                                                                                              Properties

                                                                                                                                                                                                                                              Hierarchy

                                                                                                                                                                                                                                              Index

                                                                                                                                                                                                                                              Properties

                                                                                                                                                                                                                                              authParams? getServerSideProps? groups? groupsClaim? diff --git a/docs/html/interfaces/_monocloud_auth-nextjs.index.UserinfoResponse.html b/docs/html/interfaces/_monocloud_auth-nextjs.index.UserinfoResponse.html index c48189fd..1af76fd1 100644 --- a/docs/html/interfaces/_monocloud_auth-nextjs.index.UserinfoResponse.html +++ b/docs/html/interfaces/_monocloud_auth-nextjs.index.UserinfoResponse.html @@ -1,7 +1,7 @@ UserinfoResponse | MonoCloud Authentication SDK
                                                                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                Interface UserinfoResponse<TAddress>

                                                                                                                                                                                                                                                Represents the OpenID Connect UserInfo response.

                                                                                                                                                                                                                                                interface UserinfoResponse<TAddress extends Address = Address> {
                                                                                                                                                                                                                                                    address?: TAddress;
                                                                                                                                                                                                                                                    birthdate?: string;
                                                                                                                                                                                                                                                    email?: string;
                                                                                                                                                                                                                                                    email_verified?: boolean;
                                                                                                                                                                                                                                                    family_name?: string;
                                                                                                                                                                                                                                                    gender?: string;
                                                                                                                                                                                                                                                    given_name?: string;
                                                                                                                                                                                                                                                    groups?: Group[];
                                                                                                                                                                                                                                                    locale?: string;
                                                                                                                                                                                                                                                    middle_name?: string;
                                                                                                                                                                                                                                                    name?: string;
                                                                                                                                                                                                                                                    nickname?: string;
                                                                                                                                                                                                                                                    phone_number?: string;
                                                                                                                                                                                                                                                    phone_number_verified?: boolean;
                                                                                                                                                                                                                                                    picture?: string;
                                                                                                                                                                                                                                                    preferred_username?: string;
                                                                                                                                                                                                                                                    profile?: string;
                                                                                                                                                                                                                                                    sub: string;
                                                                                                                                                                                                                                                    updated_at?: number;
                                                                                                                                                                                                                                                    website?: string;
                                                                                                                                                                                                                                                    zoneinfo?: string;
                                                                                                                                                                                                                                                    [key: string]: unknown;
                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                Type Parameters

                                                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                                                Indexable

                                                                                                                                                                                                                                                • [key: string]: unknown

                                                                                                                                                                                                                                                  Additional provider-specific claims.

                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                Index

                                                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                                                Indexable

                                                                                                                                                                                                                                                • [key: string]: unknown

                                                                                                                                                                                                                                                  Additional provider-specific claims.

                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                Index

                                                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                                                address?: TAddress

                                                                                                                                                                                                                                                Postal address.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                birthdate?: string

                                                                                                                                                                                                                                                Birthday.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                email?: string

                                                                                                                                                                                                                                                Email address.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                email_verified?: boolean

                                                                                                                                                                                                                                                Whether the email address has been verified by the provider.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                family_name?: string

                                                                                                                                                                                                                                                Surname(s) / last name.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                gender?: string

                                                                                                                                                                                                                                                Gender.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                given_name?: string

                                                                                                                                                                                                                                                Given name(s) / first name.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                groups?: Group[]

                                                                                                                                                                                                                                                Group memberships for the user.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                locale?: string

                                                                                                                                                                                                                                                Locale.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                middle_name?: string

                                                                                                                                                                                                                                                Middle name(s).

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                name?: string

                                                                                                                                                                                                                                                Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                nickname?: string

                                                                                                                                                                                                                                                Casual name used by the user.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                phone_number?: string

                                                                                                                                                                                                                                                Phone number (formatted in E.164 standard).

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                phone_number_verified?: boolean

                                                                                                                                                                                                                                                Whether the phone number has been verified by the provider.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                picture?: string

                                                                                                                                                                                                                                                URL of the user's profile picture.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                preferred_username?: string

                                                                                                                                                                                                                                                Preferred username.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                profile?: string

                                                                                                                                                                                                                                                URL of the user's profile page.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                sub: string

                                                                                                                                                                                                                                                Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                updated_at?: number

                                                                                                                                                                                                                                                Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                website?: string

                                                                                                                                                                                                                                                URL of the user's website.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                zoneinfo?: string

                                                                                                                                                                                                                                                Time zone name.

                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                birthdate?: string

                                                                                                                                                                                                                                                Birthday.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                email?: string

                                                                                                                                                                                                                                                Email address.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                email_verified?: boolean

                                                                                                                                                                                                                                                Whether the email address has been verified by the provider.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                family_name?: string

                                                                                                                                                                                                                                                Surname(s) / last name.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                gender?: string

                                                                                                                                                                                                                                                Gender.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                given_name?: string

                                                                                                                                                                                                                                                Given name(s) / first name.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                groups?: Group[]

                                                                                                                                                                                                                                                Group memberships for the user.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                locale?: string

                                                                                                                                                                                                                                                Locale.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                middle_name?: string

                                                                                                                                                                                                                                                Middle name(s).

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                name?: string

                                                                                                                                                                                                                                                Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                nickname?: string

                                                                                                                                                                                                                                                Casual name used by the user.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                phone_number?: string

                                                                                                                                                                                                                                                Phone number (formatted in E.164 standard).

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                phone_number_verified?: boolean

                                                                                                                                                                                                                                                Whether the phone number has been verified by the provider.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                picture?: string

                                                                                                                                                                                                                                                URL of the user's profile picture.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                preferred_username?: string

                                                                                                                                                                                                                                                Preferred username.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                profile?: string

                                                                                                                                                                                                                                                URL of the user's profile page.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                sub: string

                                                                                                                                                                                                                                                Subject identifier - a unique, stable identifier for the user within the issuer.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                updated_at?: number

                                                                                                                                                                                                                                                Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                website?: string

                                                                                                                                                                                                                                                URL of the user's website.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                zoneinfo?: string

                                                                                                                                                                                                                                                Time zone name.

                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.AccessToken.html b/docs/html/interfaces/_monocloud_auth-node-core.index.AccessToken.html index 67e6ff2a..2f60e596 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.AccessToken.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.AccessToken.html @@ -1,13 +1,13 @@ AccessToken | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                  Represents an OAuth 2.0 access token and its associated metadata.

                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  interface AccessToken {
                                                                                                                                                                                                                                                      accessToken: string;
                                                                                                                                                                                                                                                      accessTokenExpiration: number;
                                                                                                                                                                                                                                                      requestedScopes?: string;
                                                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                                                      scopes: string;
                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                                                  interface AccessToken {
                                                                                                                                                                                                                                                      accessToken: string;
                                                                                                                                                                                                                                                      accessTokenExpiration: number;
                                                                                                                                                                                                                                                      requestedScopes?: string;
                                                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                                                      scopes: string;
                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                                                  accessToken: string

                                                                                                                                                                                                                                                  The issued access token.

                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  accessTokenExpiration: number

                                                                                                                                                                                                                                                  The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  requestedScopes?: string

                                                                                                                                                                                                                                                  Optional space-separated list of scopes originally requested during token acquisition.

                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  resource?: string

                                                                                                                                                                                                                                                  Optional resource (audience) that the access token is scoped for.

                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  scopes: string

                                                                                                                                                                                                                                                  Space-separated list of scopes granted to the access token.

                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                  accessTokenExpiration: number

                                                                                                                                                                                                                                                  The expiration time of the access token (Unix epoch, in seconds).

                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                  requestedScopes?: string

                                                                                                                                                                                                                                                  Optional space-separated list of scopes originally requested during token acquisition.

                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                  resource?: string

                                                                                                                                                                                                                                                  Optional resource (audience) that the access token is scoped for.

                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                  scopes: string

                                                                                                                                                                                                                                                  Space-separated list of scopes granted to the access token.

                                                                                                                                                                                                                                                  These represent the effective permissions approved by the authorization server.

                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.Address.html b/docs/html/interfaces/_monocloud_auth-node-core.index.Address.html index bf28ec3e..00243beb 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.Address.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.Address.html @@ -1,15 +1,15 @@ Address | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                    Represents a postal address as defined by the OpenID Connect standard address claim.

                                                                                                                                                                                                                                                    interface Address {
                                                                                                                                                                                                                                                        country?: string;
                                                                                                                                                                                                                                                        formatted?: string;
                                                                                                                                                                                                                                                        locality?: string;
                                                                                                                                                                                                                                                        postal_code?: string;
                                                                                                                                                                                                                                                        region?: string;
                                                                                                                                                                                                                                                        street_address?: string;
                                                                                                                                                                                                                                                        [key: string]: unknown;
                                                                                                                                                                                                                                                    }

                                                                                                                                                                                                                                                    Indexable

                                                                                                                                                                                                                                                    • [key: string]: unknown

                                                                                                                                                                                                                                                      Additional provider-specific address fields.

                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                                                    Properties

                                                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                                                    Properties

                                                                                                                                                                                                                                                    country?: string

                                                                                                                                                                                                                                                    Country name or ISO country code.

                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    formatted?: string

                                                                                                                                                                                                                                                    Full mailing address formatted for display or mailing labels.

                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    locality?: string

                                                                                                                                                                                                                                                    City or locality component.

                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    postal_code?: string

                                                                                                                                                                                                                                                    Postal or ZIP code.

                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    region?: string

                                                                                                                                                                                                                                                    State, province, or region component.

                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    street_address?: string

                                                                                                                                                                                                                                                    Full street address component, which may include house number, street name, apartment, suite, or unit information.

                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                    formatted?: string

                                                                                                                                                                                                                                                    Full mailing address formatted for display or mailing labels.

                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                    locality?: string

                                                                                                                                                                                                                                                    City or locality component.

                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                    postal_code?: string

                                                                                                                                                                                                                                                    Postal or ZIP code.

                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                    region?: string

                                                                                                                                                                                                                                                    State, province, or region component.

                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                    street_address?: string

                                                                                                                                                                                                                                                    Full street address component, which may include house number, street name, apartment, suite, or unit information.

                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.ApplicationState.html b/docs/html/interfaces/_monocloud_auth-node-core.index.ApplicationState.html index a75bb696..5612f343 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.ApplicationState.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.ApplicationState.html @@ -1,3 +1,3 @@ ApplicationState | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                      Represents custom application state associated with an authentication request.

                                                                                                                                                                                                                                                      This object is populated via onSetApplicationState and is persisted through the authentication flow. The resolved value is later available during session creation and can be used to carry application-specific context (for example: return targets, workflow state, or tenant hints).

                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                                                                      • Record<string, any>
                                                                                                                                                                                                                                                        • ApplicationState

                                                                                                                                                                                                                                                      Indexable

                                                                                                                                                                                                                                                      • [key: string]: any
                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                      Hierarchy

                                                                                                                                                                                                                                                      • Record<string, any>
                                                                                                                                                                                                                                                        • ApplicationState

                                                                                                                                                                                                                                                      Indexable

                                                                                                                                                                                                                                                      • [key: string]: any
                                                                                                                                                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.AuthState.html b/docs/html/interfaces/_monocloud_auth-node-core.index.AuthState.html index 3e2b37d5..8aca1fee 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.AuthState.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.AuthState.html @@ -1,14 +1,14 @@ AuthState | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                        Represents the authentication transaction state stored between the authorization request and the callback.

                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        interface AuthState {
                                                                                                                                                                                                                                                            codeVerifier?: string;
                                                                                                                                                                                                                                                            maxAge?: number;
                                                                                                                                                                                                                                                            nonce: string;
                                                                                                                                                                                                                                                            resource?: string;
                                                                                                                                                                                                                                                            scopes: string;
                                                                                                                                                                                                                                                            state: string;
                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                                                        interface AuthState {
                                                                                                                                                                                                                                                            codeVerifier?: string;
                                                                                                                                                                                                                                                            maxAge?: number;
                                                                                                                                                                                                                                                            nonce: string;
                                                                                                                                                                                                                                                            resource?: string;
                                                                                                                                                                                                                                                            scopes: string;
                                                                                                                                                                                                                                                            state: string;
                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                                                        codeVerifier?: string

                                                                                                                                                                                                                                                        Optional. PKCE code verifier used to validate the authorization code exchange.

                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        maxAge?: number

                                                                                                                                                                                                                                                        Optional. Maximum allowed time (in seconds) since the user's last authentication.

                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        nonce: string

                                                                                                                                                                                                                                                        A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks.

                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        resource?: string

                                                                                                                                                                                                                                                        Optional. Space-separated list of resource indicators requested for the access token.

                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        scopes: string

                                                                                                                                                                                                                                                        Space-separated list of scopes requested during authorization.

                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        state: string

                                                                                                                                                                                                                                                        A unique value used to correlate the authorization request with the callback and protect against CSRF attacks.

                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                        maxAge?: number

                                                                                                                                                                                                                                                        Optional. Maximum allowed time (in seconds) since the user's last authentication.

                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                        nonce: string

                                                                                                                                                                                                                                                        A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks.

                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                        resource?: string

                                                                                                                                                                                                                                                        Optional. Space-separated list of resource indicators requested for the access token.

                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                        scopes: string

                                                                                                                                                                                                                                                        Space-separated list of scopes requested during authorization.

                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                        state: string

                                                                                                                                                                                                                                                        A unique value used to correlate the authorization request with the callback and protect against CSRF attacks.

                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.AuthenticateOptions.html b/docs/html/interfaces/_monocloud_auth-node-core.index.AuthenticateOptions.html index 9848bbf8..530194db 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.AuthenticateOptions.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.AuthenticateOptions.html @@ -1,5 +1,5 @@ AuthenticateOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                          Options used when authenticating a user via the Authorization Code flow.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          interface AuthenticateOptions {
                                                                                                                                                                                                                                                              codeVerifier?: string;
                                                                                                                                                                                                                                                              fetchUserInfo?: boolean;
                                                                                                                                                                                                                                                              filteredIdTokenClaims?: string[];
                                                                                                                                                                                                                                                              idTokenClockSkew?: number;
                                                                                                                                                                                                                                                              idTokenClockTolerance?: number;
                                                                                                                                                                                                                                                              idTokenMaxAge?: number;
                                                                                                                                                                                                                                                              idTokenNonce?: string;
                                                                                                                                                                                                                                                              jwks?: Jwks;
                                                                                                                                                                                                                                                              onSessionCreating?: OnCoreSessionCreating;
                                                                                                                                                                                                                                                              validateIdToken?: boolean;
                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                                                          interface AuthenticateOptions {
                                                                                                                                                                                                                                                              codeVerifier?: string;
                                                                                                                                                                                                                                                              fetchUserInfo?: boolean;
                                                                                                                                                                                                                                                              filteredIdTokenClaims?: string[];
                                                                                                                                                                                                                                                              idTokenClockSkew?: number;
                                                                                                                                                                                                                                                              idTokenClockTolerance?: number;
                                                                                                                                                                                                                                                              idTokenMaxAge?: number;
                                                                                                                                                                                                                                                              idTokenNonce?: string;
                                                                                                                                                                                                                                                              jwks?: Jwks;
                                                                                                                                                                                                                                                              onSessionCreating?: OnCoreSessionCreating;
                                                                                                                                                                                                                                                              validateIdToken?: boolean;
                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                                                          codeVerifier?: string

                                                                                                                                                                                                                                                          PKCE code verifier associated with the authorization request.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          fetchUserInfo?: boolean

                                                                                                                                                                                                                                                          When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          fetchUserInfo?: boolean

                                                                                                                                                                                                                                                          When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object.

                                                                                                                                                                                                                                                          false
                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          filteredIdTokenClaims?: string[]

                                                                                                                                                                                                                                                          List of ID token claims to remove before storing the session.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          idTokenClockSkew?: number

                                                                                                                                                                                                                                                          Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          idTokenClockTolerance?: number

                                                                                                                                                                                                                                                          Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          idTokenMaxAge?: number

                                                                                                                                                                                                                                                          Maximum allowed authentication age (in seconds) for the ID token.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          idTokenNonce?: string

                                                                                                                                                                                                                                                          Nonce value expected in the ID token. Used to prevent replay attacks.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          jwks?: Jwks

                                                                                                                                                                                                                                                          JSON Web Key Set used to validate the ID token signature.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          filteredIdTokenClaims?: string[]

                                                                                                                                                                                                                                                          List of ID token claims to remove before storing the session.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          idTokenClockSkew?: number

                                                                                                                                                                                                                                                          Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          idTokenClockTolerance?: number

                                                                                                                                                                                                                                                          Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as exp, iat, and nbf.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          idTokenMaxAge?: number

                                                                                                                                                                                                                                                          Maximum allowed authentication age (in seconds) for the ID token.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          idTokenNonce?: string

                                                                                                                                                                                                                                                          Nonce value expected in the ID token. Used to prevent replay attacks.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          jwks?: Jwks

                                                                                                                                                                                                                                                          JSON Web Key Set used to validate the ID token signature.

                                                                                                                                                                                                                                                          If not provided, the JWKS is automatically fetched from the authorization server metadata.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          onSessionCreating?: OnCoreSessionCreating

                                                                                                                                                                                                                                                          Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          validateIdToken?: boolean

                                                                                                                                                                                                                                                          Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          onSessionCreating?: OnCoreSessionCreating

                                                                                                                                                                                                                                                          Callback invoked before a session is created or updated. Allows customization or enrichment of the session.

                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          validateIdToken?: boolean

                                                                                                                                                                                                                                                          Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments.

                                                                                                                                                                                                                                                          true
                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.CallbackParams.html b/docs/html/interfaces/_monocloud_auth-node-core.index.CallbackParams.html index 9112ce07..0affea88 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.CallbackParams.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.CallbackParams.html @@ -1,20 +1,22 @@ CallbackParams | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                            Parameters returned to the application after the authorization server redirects the user back to the callback URL.

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            interface CallbackParams {
                                                                                                                                                                                                                                                                accessToken?: string;
                                                                                                                                                                                                                                                                code?: string;
                                                                                                                                                                                                                                                                error?: string;
                                                                                                                                                                                                                                                                errorDescription?: string;
                                                                                                                                                                                                                                                                expiresIn?: number;
                                                                                                                                                                                                                                                                idToken?: string;
                                                                                                                                                                                                                                                                refreshToken?: string;
                                                                                                                                                                                                                                                                sessionState?: string;
                                                                                                                                                                                                                                                                state?: string;
                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                                                            Properties

                                                                                                                                                                                                                                                            interface CallbackParams {
                                                                                                                                                                                                                                                                accessToken?: string;
                                                                                                                                                                                                                                                                code?: string;
                                                                                                                                                                                                                                                                error?: string;
                                                                                                                                                                                                                                                                errorDescription?: string;
                                                                                                                                                                                                                                                                expiresIn?: number;
                                                                                                                                                                                                                                                                idToken?: string;
                                                                                                                                                                                                                                                                refreshToken?: string;
                                                                                                                                                                                                                                                                scope?: string;
                                                                                                                                                                                                                                                                sessionState?: string;
                                                                                                                                                                                                                                                                state?: string;
                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                                                            Properties

                                                                                                                                                                                                                                                            accessToken?: string

                                                                                                                                                                                                                                                            Access token returned directly by implicit or hybrid flows.

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            code?: string

                                                                                                                                                                                                                                                            Authorization code returned when using the Authorization Code Flow.

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            error?: string

                                                                                                                                                                                                                                                            Error code returned when authorization fails.

                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            code?: string

                                                                                                                                                                                                                                                            Authorization code returned when using the Authorization Code Flow.

                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            error?: string

                                                                                                                                                                                                                                                            Error code returned when authorization fails.

                                                                                                                                                                                                                                                            errorDescription?: string

                                                                                                                                                                                                                                                            Human-readable description providing additional information about the authorization error.

                                                                                                                                                                                                                                                            expiresIn?: number

                                                                                                                                                                                                                                                            Lifetime of the access token in seconds.

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            idToken?: string

                                                                                                                                                                                                                                                            ID token issued by the authorization server.

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            refreshToken?: string

                                                                                                                                                                                                                                                            Refresh token issued during authorization (if enabled).

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            sessionState?: string

                                                                                                                                                                                                                                                            OIDC session state value used for session monitoring and front-channel session management.

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            state?: string

                                                                                                                                                                                                                                                            The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks.

                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            idToken?: string

                                                                                                                                                                                                                                                            ID token issued by the authorization server.

                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            refreshToken?: string

                                                                                                                                                                                                                                                            Refresh token issued during authorization (if enabled).

                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            scope?: string

                                                                                                                                                                                                                                                            Access token scopes (Implicit Flow)

                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            sessionState?: string

                                                                                                                                                                                                                                                            OIDC session state value used for session monitoring and front-channel session management.

                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            state?: string

                                                                                                                                                                                                                                                            The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks.

                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.CookieOptions.html b/docs/html/interfaces/_monocloud_auth-node-core.index.CookieOptions.html index c2a1cbba..ad6c2575 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.CookieOptions.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.CookieOptions.html @@ -1,2 +1,2 @@ CookieOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                              Options for serializing cookies.

                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                              Hierarchy

                                                                                                                                                                                                                                                              • SerializeOptions
                                                                                                                                                                                                                                                                • CookieOptions
                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                              Hierarchy

                                                                                                                                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.EndSessionParameters.html b/docs/html/interfaces/_monocloud_auth-node-core.index.EndSessionParameters.html index 9ade80a7..df3e2a09 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.EndSessionParameters.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.EndSessionParameters.html @@ -1,9 +1,9 @@ EndSessionParameters | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                Preparing search index...

                                                                                                                                                                                                                                                                Parameters used to construct an OpenID Connect end-session (sign-out) request.

                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                interface EndSessionParameters {
                                                                                                                                                                                                                                                                    idToken?: string;
                                                                                                                                                                                                                                                                    postLogoutRedirectUri?: string;
                                                                                                                                                                                                                                                                    state?: string;
                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                                                                Index

                                                                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                                                                interface EndSessionParameters {
                                                                                                                                                                                                                                                                    idToken?: string;
                                                                                                                                                                                                                                                                    postLogoutRedirectUri?: string;
                                                                                                                                                                                                                                                                    state?: string;
                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                Hierarchy

                                                                                                                                                                                                                                                                Index

                                                                                                                                                                                                                                                                Properties

                                                                                                                                                                                                                                                                idToken?: string

                                                                                                                                                                                                                                                                ID token hint identifying the session to terminate.

                                                                                                                                                                                                                                                                When provided, the authorization server can use this value to determine which user session should be signed out.

                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                postLogoutRedirectUri?: string

                                                                                                                                                                                                                                                                The URL the authorization server should redirect the user to after a successful sign-out.

                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                state?: string

                                                                                                                                                                                                                                                                Optional state value returned to the application after sign-out.

                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                postLogoutRedirectUri?: string

                                                                                                                                                                                                                                                                The URL the authorization server should redirect the user to after a successful sign-out.

                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                state?: string

                                                                                                                                                                                                                                                                Optional state value returned to the application after sign-out.

                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.GetTokensOptions.html b/docs/html/interfaces/_monocloud_auth-node-core.index.GetTokensOptions.html index 0ad9c7a2..1a1a7d1b 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.GetTokensOptions.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.GetTokensOptions.html @@ -1,5 +1,5 @@ GetTokensOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                  Preparing search index...

                                                                                                                                                                                                                                                                  Options used to control token retrieval and refresh behavior when calling getTokens().

                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                  interface GetTokensOptions {
                                                                                                                                                                                                                                                                      forceRefresh?: boolean;
                                                                                                                                                                                                                                                                      refetchUserInfo?: boolean;
                                                                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                                                                      scopes?: string;
                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                                                                  interface GetTokensOptions {
                                                                                                                                                                                                                                                                      forceRefresh?: boolean;
                                                                                                                                                                                                                                                                      refetchUserInfo?: boolean;
                                                                                                                                                                                                                                                                      resource?: string;
                                                                                                                                                                                                                                                                      scopes?: string;
                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                  Hierarchy

                                                                                                                                                                                                                                                                  Index

                                                                                                                                                                                                                                                                  Properties

                                                                                                                                                                                                                                                                  refetchUserInfo?: boolean

                                                                                                                                                                                                                                                                  When enabled, refetches user information from the UserInfo endpoint after tokens are refreshed.

                                                                                                                                                                                                                                                                  resource?: string

                                                                                                                                                                                                                                                                  Space-separated list of resource indicators that the new access token should be issued for.

                                                                                                                                                                                                                                                                  The requested resources must have been previously granted during the original authorization flow.

                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                  scopes?: string

                                                                                                                                                                                                                                                                  Space-separated list of scopes to request for the refreshed access token.

                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                  scopes?: string

                                                                                                                                                                                                                                                                  Space-separated list of scopes to request for the refreshed access token.

                                                                                                                                                                                                                                                                  The requested scopes must have been granted during the original authorization flow.

                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                  diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.IMonoCloudCookieRequest.html b/docs/html/interfaces/_monocloud_auth-node-core.index.IMonoCloudCookieRequest.html index 815ce900..460dfe60 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.IMonoCloudCookieRequest.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.IMonoCloudCookieRequest.html @@ -1,5 +1,5 @@ IMonoCloudCookieRequest | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                    Preparing search index...

                                                                                                                                                                                                                                                                    Interface for reading cookies from an incoming request.

                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                    interface IMonoCloudCookieRequest {
                                                                                                                                                                                                                                                                        getAllCookies(): Promise<Map<string, string>>;
                                                                                                                                                                                                                                                                        getCookie(name: string): Promise<string | undefined>;
                                                                                                                                                                                                                                                                    }

                                                                                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                                                                    Methods

                                                                                                                                                                                                                                                                    interface IMonoCloudCookieRequest {
                                                                                                                                                                                                                                                                        getAllCookies(): Promise<Map<string, string>>;
                                                                                                                                                                                                                                                                        getCookie(name: string): Promise<string | undefined>;
                                                                                                                                                                                                                                                                    }

                                                                                                                                                                                                                                                                    Hierarchy

                                                                                                                                                                                                                                                                    Index

                                                                                                                                                                                                                                                                    Methods

                                                                                                                                                                                                                                                                    address?: Address

                                                                                                                                                                                                                                                                    Postal address.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    amr?: string[]

                                                                                                                                                                                                                                                                    Authentication Methods References. Lists the authentication methods used (for example: pwd, mfa, otp).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    at_hash?: string

                                                                                                                                                                                                                                                                    Access token hash. Used to validate access tokens returned alongside the ID token.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    aud: string | string[]

                                                                                                                                                                                                                                                                    Intended audience(s) of the ID token.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    auth_time?: number

                                                                                                                                                                                                                                                                    Time when the end-user authentication occurred (Unix epoch seconds).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    azp?: string

                                                                                                                                                                                                                                                                    Authorized party - identifies the client to which the ID token was issued.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    birthdate?: string

                                                                                                                                                                                                                                                                    Birthday.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    c_hash?: string

                                                                                                                                                                                                                                                                    Authorization code hash. Used to validate authorization codes returned with hybrid flows.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    email?: string

                                                                                                                                                                                                                                                                    Email address.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    email_verified?: boolean

                                                                                                                                                                                                                                                                    Whether the email address has been verified by the provider.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    exp: number

                                                                                                                                                                                                                                                                    Expiration time of the ID token (Unix epoch seconds).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    family_name?: string

                                                                                                                                                                                                                                                                    Surname(s) / last name.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    gender?: string

                                                                                                                                                                                                                                                                    Gender.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    given_name?: string

                                                                                                                                                                                                                                                                    Given name(s) / first name.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    groups?: Group[]

                                                                                                                                                                                                                                                                    Group memberships for the user.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    iat: number

                                                                                                                                                                                                                                                                    Time at which the ID token was issued (Unix epoch seconds).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    iss: string

                                                                                                                                                                                                                                                                    Issuer identifier - the authorization server that issued the token.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    locale?: string

                                                                                                                                                                                                                                                                    Locale.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    middle_name?: string

                                                                                                                                                                                                                                                                    Middle name(s).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    name?: string

                                                                                                                                                                                                                                                                    Full name of the user (e.g. "Jane Doe").

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    nickname?: string

                                                                                                                                                                                                                                                                    Casual name used by the user.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    nonce?: string

                                                                                                                                                                                                                                                                    Nonce value used to associate the authentication request with the issued ID token and prevent replay attacks.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    phone_number?: string

                                                                                                                                                                                                                                                                    Phone number (formatted in E.164 standard).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    phone_number_verified?: boolean

                                                                                                                                                                                                                                                                    Whether the phone number has been verified by the provider.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    picture?: string

                                                                                                                                                                                                                                                                    URL of the user's profile picture.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    preferred_username?: string

                                                                                                                                                                                                                                                                    Preferred username.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    profile?: string

                                                                                                                                                                                                                                                                    URL of the user's profile page.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    s_hash?: string

                                                                                                                                                                                                                                                                    State hash (used in some hybrid flow validations).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    sub: string

                                                                                                                                                                                                                                                                    Subject identifier — uniquely identifies the authenticated user.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    updated_at?: number

                                                                                                                                                                                                                                                                    Time the user's information was last updated (seconds since epoch).

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    website?: string

                                                                                                                                                                                                                                                                    URL of the user's website.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    zoneinfo?: string

                                                                                                                                                                                                                                                                    Time zone name.

                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                    diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.IssuerMetadata.html b/docs/html/interfaces/_monocloud_auth-node-core.index.IssuerMetadata.html index 371a014d..3213e242 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.IssuerMetadata.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.IssuerMetadata.html @@ -1,5 +1,5 @@ IssuerMetadata | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                      Preparing search index...

                                                                                                                                                                                                                                                                      OpenID Connect Discovery metadata published by the authorization server.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      interface IssuerMetadata {
                                                                                                                                                                                                                                                                          authorization_endpoint: string;
                                                                                                                                                                                                                                                                          backchannel_logout_session_supported: boolean;
                                                                                                                                                                                                                                                                          backchannel_logout_supported: boolean;
                                                                                                                                                                                                                                                                          check_session_iframe: string;
                                                                                                                                                                                                                                                                          claims_supported: string[];
                                                                                                                                                                                                                                                                          code_challenge_methods_supported: string[];
                                                                                                                                                                                                                                                                          device_authorization_endpoint: string;
                                                                                                                                                                                                                                                                          end_session_endpoint: string;
                                                                                                                                                                                                                                                                          frontchannel_logout_session_supported: boolean;
                                                                                                                                                                                                                                                                          frontchannel_logout_supported: boolean;
                                                                                                                                                                                                                                                                          grant_types_supported: string[];
                                                                                                                                                                                                                                                                          id_token_signing_alg_values_supported: string[];
                                                                                                                                                                                                                                                                          introspection_endpoint: string;
                                                                                                                                                                                                                                                                          issuer: string;
                                                                                                                                                                                                                                                                          jwks_uri: string;
                                                                                                                                                                                                                                                                          pushed_authorization_request_endpoint?: string;
                                                                                                                                                                                                                                                                          request_object_signing_alg_values_supported: string[];
                                                                                                                                                                                                                                                                          request_parameter_supported: boolean;
                                                                                                                                                                                                                                                                          request_uri_parameter_supported: boolean;
                                                                                                                                                                                                                                                                          require_pushed_authorization_requests: boolean;
                                                                                                                                                                                                                                                                          response_modes_supported: string[];
                                                                                                                                                                                                                                                                          response_types_supported: string[];
                                                                                                                                                                                                                                                                          revocation_endpoint: string;
                                                                                                                                                                                                                                                                          scopes_supported: string[];
                                                                                                                                                                                                                                                                          subject_types_supported: string[];
                                                                                                                                                                                                                                                                          token_endpoint: string;
                                                                                                                                                                                                                                                                          token_endpoint_auth_methods_supported: string[];
                                                                                                                                                                                                                                                                          userinfo_endpoint: string;
                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                      Index

                                                                                                                                                                                                                                                                      Properties

                                                                                                                                                                                                                                                                      interface IssuerMetadata {
                                                                                                                                                                                                                                                                          authorization_endpoint: string;
                                                                                                                                                                                                                                                                          backchannel_logout_session_supported: boolean;
                                                                                                                                                                                                                                                                          backchannel_logout_supported: boolean;
                                                                                                                                                                                                                                                                          check_session_iframe: string;
                                                                                                                                                                                                                                                                          claims_supported: string[];
                                                                                                                                                                                                                                                                          code_challenge_methods_supported: string[];
                                                                                                                                                                                                                                                                          device_authorization_endpoint: string;
                                                                                                                                                                                                                                                                          end_session_endpoint: string;
                                                                                                                                                                                                                                                                          frontchannel_logout_session_supported: boolean;
                                                                                                                                                                                                                                                                          frontchannel_logout_supported: boolean;
                                                                                                                                                                                                                                                                          grant_types_supported: string[];
                                                                                                                                                                                                                                                                          id_token_signing_alg_values_supported: string[];
                                                                                                                                                                                                                                                                          introspection_endpoint: string;
                                                                                                                                                                                                                                                                          issuer: string;
                                                                                                                                                                                                                                                                          jwks_uri: string;
                                                                                                                                                                                                                                                                          pushed_authorization_request_endpoint?: string;
                                                                                                                                                                                                                                                                          request_object_signing_alg_values_supported: string[];
                                                                                                                                                                                                                                                                          request_parameter_supported: boolean;
                                                                                                                                                                                                                                                                          request_uri_parameter_supported: boolean;
                                                                                                                                                                                                                                                                          require_pushed_authorization_requests: boolean;
                                                                                                                                                                                                                                                                          response_modes_supported: string[];
                                                                                                                                                                                                                                                                          response_types_supported: string[];
                                                                                                                                                                                                                                                                          revocation_endpoint: string;
                                                                                                                                                                                                                                                                          scopes_supported: string[];
                                                                                                                                                                                                                                                                          subject_types_supported: string[];
                                                                                                                                                                                                                                                                          token_endpoint: string;
                                                                                                                                                                                                                                                                          token_endpoint_auth_methods_supported: string[];
                                                                                                                                                                                                                                                                          userinfo_endpoint: string;
                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                      Index

                                                                                                                                                                                                                                                                      Properties

                                                                                                                                                                                                                                                                      authorization_endpoint: string

                                                                                                                                                                                                                                                                      Authorization endpoint used to initiate authentication requests.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      backchannel_logout_session_supported: boolean

                                                                                                                                                                                                                                                                      Indicates back-channel logout session support.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      backchannel_logout_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for back-channel logout.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      check_session_iframe: string

                                                                                                                                                                                                                                                                      Session management iframe endpoint.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      claims_supported: string[]

                                                                                                                                                                                                                                                                      Claims that may be returned in tokens or UserInfo responses.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      code_challenge_methods_supported: string[]

                                                                                                                                                                                                                                                                      Supported PKCE code challenge methods.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      device_authorization_endpoint: string

                                                                                                                                                                                                                                                                      Device Authorization Grant endpoint.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      end_session_endpoint: string

                                                                                                                                                                                                                                                                      End-session endpoint used to initiate logout.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      frontchannel_logout_session_supported: boolean

                                                                                                                                                                                                                                                                      Indicates front-channel logout session support.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      frontchannel_logout_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for front-channel logout.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      grant_types_supported: string[]

                                                                                                                                                                                                                                                                      Supported OAuth grant types.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      id_token_signing_alg_values_supported: string[]

                                                                                                                                                                                                                                                                      Supported signing algorithms for ID tokens.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      introspection_endpoint: string

                                                                                                                                                                                                                                                                      Token introspection endpoint.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      issuer: string

                                                                                                                                                                                                                                                                      The issuer identifier for the authorization server.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      jwks_uri: string

                                                                                                                                                                                                                                                                      JSON Web Key Set (JWKS) endpoint used to obtain signing keys.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      pushed_authorization_request_endpoint?: string

                                                                                                                                                                                                                                                                      Pushed Authorization Request (PAR) endpoint.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      request_object_signing_alg_values_supported: string[]

                                                                                                                                                                                                                                                                      Supported signing algorithms for request objects.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      request_parameter_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for request objects passed by value.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      request_uri_parameter_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for request objects passed by reference (request_uri).

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      require_pushed_authorization_requests: boolean

                                                                                                                                                                                                                                                                      Indicates whether PAR is required for authorization requests.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      response_modes_supported: string[]

                                                                                                                                                                                                                                                                      Supported response modes.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      response_types_supported: string[]

                                                                                                                                                                                                                                                                      Supported OAuth/OIDC response types.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      revocation_endpoint: string

                                                                                                                                                                                                                                                                      Token revocation endpoint.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      scopes_supported: string[]

                                                                                                                                                                                                                                                                      OAuth scopes supported by the authorization server.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      subject_types_supported: string[]

                                                                                                                                                                                                                                                                      Supported subject identifier types.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      token_endpoint: string

                                                                                                                                                                                                                                                                      Token endpoint used to exchange authorization codes for tokens.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      token_endpoint_auth_methods_supported: string[]

                                                                                                                                                                                                                                                                      Supported authentication methods for the token endpoint.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      userinfo_endpoint: string

                                                                                                                                                                                                                                                                      UserInfo endpoint used to retrieve user profile claims.

                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      backchannel_logout_session_supported: boolean

                                                                                                                                                                                                                                                                      Indicates back-channel logout session support.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      backchannel_logout_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for back-channel logout.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      check_session_iframe: string

                                                                                                                                                                                                                                                                      Session management iframe endpoint.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      claims_supported: string[]

                                                                                                                                                                                                                                                                      Claims that may be returned in tokens or UserInfo responses.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      code_challenge_methods_supported: string[]

                                                                                                                                                                                                                                                                      Supported PKCE code challenge methods.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      device_authorization_endpoint: string

                                                                                                                                                                                                                                                                      Device Authorization Grant endpoint.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      end_session_endpoint: string

                                                                                                                                                                                                                                                                      End-session endpoint used to initiate logout.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      frontchannel_logout_session_supported: boolean

                                                                                                                                                                                                                                                                      Indicates front-channel logout session support.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      frontchannel_logout_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for front-channel logout.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      grant_types_supported: string[]

                                                                                                                                                                                                                                                                      Supported OAuth grant types.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      id_token_signing_alg_values_supported: string[]

                                                                                                                                                                                                                                                                      Supported signing algorithms for ID tokens.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      introspection_endpoint: string

                                                                                                                                                                                                                                                                      Token introspection endpoint.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      issuer: string

                                                                                                                                                                                                                                                                      The issuer identifier for the authorization server.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      jwks_uri: string

                                                                                                                                                                                                                                                                      JSON Web Key Set (JWKS) endpoint used to obtain signing keys.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      pushed_authorization_request_endpoint?: string

                                                                                                                                                                                                                                                                      Pushed Authorization Request (PAR) endpoint.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      request_object_signing_alg_values_supported: string[]

                                                                                                                                                                                                                                                                      Supported signing algorithms for request objects.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      request_parameter_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for request objects passed by value.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      request_uri_parameter_supported: boolean

                                                                                                                                                                                                                                                                      Indicates support for request objects passed by reference (request_uri).

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      require_pushed_authorization_requests: boolean

                                                                                                                                                                                                                                                                      Indicates whether PAR is required for authorization requests.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      response_modes_supported: string[]

                                                                                                                                                                                                                                                                      Supported response modes.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      response_types_supported: string[]

                                                                                                                                                                                                                                                                      Supported OAuth/OIDC response types.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      revocation_endpoint: string

                                                                                                                                                                                                                                                                      Token revocation endpoint.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      scopes_supported: string[]

                                                                                                                                                                                                                                                                      OAuth scopes supported by the authorization server.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      subject_types_supported: string[]

                                                                                                                                                                                                                                                                      Supported subject identifier types.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      token_endpoint: string

                                                                                                                                                                                                                                                                      Token endpoint used to exchange authorization codes for tokens.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      token_endpoint_auth_methods_supported: string[]

                                                                                                                                                                                                                                                                      Supported authentication methods for the token endpoint.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      userinfo_endpoint: string

                                                                                                                                                                                                                                                                      UserInfo endpoint used to retrieve user profile claims.

                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                      diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.Jwk.html b/docs/html/interfaces/_monocloud_auth-node-core.index.Jwk.html index 4038094c..83e8d2c2 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.Jwk.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.Jwk.html @@ -1,7 +1,7 @@ Jwk | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                        Preparing search index...

                                                                                                                                                                                                                                                                        Represents a JSON Web Key (JWK) as defined by RFC 7517.

                                                                                                                                                                                                                                                                        A JWK describes a cryptographic key used to verify or encrypt JSON Web Tokens (JWTs) as obtained from the JWKS (JSON Web Key Set) endpoint exposed by the authorization server.

                                                                                                                                                                                                                                                                        The available properties depend on the key type (kty).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        interface Jwk {
                                                                                                                                                                                                                                                                            alg?: string;
                                                                                                                                                                                                                                                                            crv?: string;
                                                                                                                                                                                                                                                                            d?: string;
                                                                                                                                                                                                                                                                            dp?: string;
                                                                                                                                                                                                                                                                            dq?: string;
                                                                                                                                                                                                                                                                            e?: string;
                                                                                                                                                                                                                                                                            ext?: boolean;
                                                                                                                                                                                                                                                                            k?: string;
                                                                                                                                                                                                                                                                            key_ops?: string[];
                                                                                                                                                                                                                                                                            kid?: string;
                                                                                                                                                                                                                                                                            kty: string;
                                                                                                                                                                                                                                                                            n?: string;
                                                                                                                                                                                                                                                                            oth?: { d?: string; r?: string; t?: string }[];
                                                                                                                                                                                                                                                                            p?: string;
                                                                                                                                                                                                                                                                            q?: string;
                                                                                                                                                                                                                                                                            qi?: string;
                                                                                                                                                                                                                                                                            use?: string;
                                                                                                                                                                                                                                                                            x?: string;
                                                                                                                                                                                                                                                                            x5c?: string[];
                                                                                                                                                                                                                                                                            x5t?: string;
                                                                                                                                                                                                                                                                            "x5t#S256"?: string;
                                                                                                                                                                                                                                                                            x5u?: string;
                                                                                                                                                                                                                                                                            y?: string;
                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                                                                        interface Jwk {
                                                                                                                                                                                                                                                                            alg?: string;
                                                                                                                                                                                                                                                                            crv?: string;
                                                                                                                                                                                                                                                                            d?: string;
                                                                                                                                                                                                                                                                            dp?: string;
                                                                                                                                                                                                                                                                            dq?: string;
                                                                                                                                                                                                                                                                            e?: string;
                                                                                                                                                                                                                                                                            ext?: boolean;
                                                                                                                                                                                                                                                                            k?: string;
                                                                                                                                                                                                                                                                            key_ops?: string[];
                                                                                                                                                                                                                                                                            kid?: string;
                                                                                                                                                                                                                                                                            kty: string;
                                                                                                                                                                                                                                                                            n?: string;
                                                                                                                                                                                                                                                                            oth?: { d?: string; r?: string; t?: string }[];
                                                                                                                                                                                                                                                                            p?: string;
                                                                                                                                                                                                                                                                            q?: string;
                                                                                                                                                                                                                                                                            qi?: string;
                                                                                                                                                                                                                                                                            use?: string;
                                                                                                                                                                                                                                                                            x?: string;
                                                                                                                                                                                                                                                                            x5c?: string[];
                                                                                                                                                                                                                                                                            x5t?: string;
                                                                                                                                                                                                                                                                            "x5t#S256"?: string;
                                                                                                                                                                                                                                                                            x5u?: string;
                                                                                                                                                                                                                                                                            y?: string;
                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                        Index

                                                                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                                                                        alg? crv? d? dp? @@ -25,26 +25,26 @@ x5u? y?

                                                                                                                                                                                                                                                                        Properties

                                                                                                                                                                                                                                                                        alg?: string

                                                                                                                                                                                                                                                                        Intended algorithm for the key (for example: RS256).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        crv?: string

                                                                                                                                                                                                                                                                        Elliptic curve name (for example: P-256).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        d?: string

                                                                                                                                                                                                                                                                        RSA private exponent.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        dp?: string

                                                                                                                                                                                                                                                                        RSA first factor CRT exponent.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        dq?: string

                                                                                                                                                                                                                                                                        RSA second factor CRT exponent.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        e?: string

                                                                                                                                                                                                                                                                        RSA public exponent.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        ext?: boolean

                                                                                                                                                                                                                                                                        Indicates whether the key is extractable.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        k?: string

                                                                                                                                                                                                                                                                        Symmetric key value (base64url encoded).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        key_ops?: string[]

                                                                                                                                                                                                                                                                        Allowed operations for the key (e.g. sign, verify, encrypt).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        kid?: string

                                                                                                                                                                                                                                                                        Key identifier used to match keys during verification.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        kty: string

                                                                                                                                                                                                                                                                        Key type (for example: RSA, or EC).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        n?: string

                                                                                                                                                                                                                                                                        RSA modulus.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        oth?: { d?: string; r?: string; t?: string }[]

                                                                                                                                                                                                                                                                        Additional prime information (multi-prime RSA).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        p?: string

                                                                                                                                                                                                                                                                        RSA first prime factor.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        q?: string

                                                                                                                                                                                                                                                                        RSA second prime factor.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        qi?: string

                                                                                                                                                                                                                                                                        RSA CRT coefficient.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        use?: string

                                                                                                                                                                                                                                                                        Public key use (sig for signature or enc for encryption).

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        x?: string

                                                                                                                                                                                                                                                                        X coordinate for EC public keys.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        x5c?: string[]

                                                                                                                                                                                                                                                                        X.509 certificate chain.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        x5t?: string

                                                                                                                                                                                                                                                                        X.509 certificate SHA-1 thumbprint.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        "x5t#S256"?: string

                                                                                                                                                                                                                                                                        X.509 certificate SHA-256 thumbprint.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        x5u?: string

                                                                                                                                                                                                                                                                        URL referencing the X.509 certificate.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        y?: string

                                                                                                                                                                                                                                                                        Y coordinate for EC public keys.

                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        crv?: string

                                                                                                                                                                                                                                                                        Elliptic curve name (for example: P-256).

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        d?: string

                                                                                                                                                                                                                                                                        RSA private exponent.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        dp?: string

                                                                                                                                                                                                                                                                        RSA first factor CRT exponent.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        dq?: string

                                                                                                                                                                                                                                                                        RSA second factor CRT exponent.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        e?: string

                                                                                                                                                                                                                                                                        RSA public exponent.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        ext?: boolean

                                                                                                                                                                                                                                                                        Indicates whether the key is extractable.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        k?: string

                                                                                                                                                                                                                                                                        Symmetric key value (base64url encoded).

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        key_ops?: string[]

                                                                                                                                                                                                                                                                        Allowed operations for the key (e.g. sign, verify, encrypt).

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        kid?: string

                                                                                                                                                                                                                                                                        Key identifier used to match keys during verification.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        kty: string

                                                                                                                                                                                                                                                                        Key type (for example: RSA, or EC).

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        n?: string

                                                                                                                                                                                                                                                                        RSA modulus.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        oth?: { d?: string; r?: string; t?: string }[]

                                                                                                                                                                                                                                                                        Additional prime information (multi-prime RSA).

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        p?: string

                                                                                                                                                                                                                                                                        RSA first prime factor.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        q?: string

                                                                                                                                                                                                                                                                        RSA second prime factor.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        qi?: string

                                                                                                                                                                                                                                                                        RSA CRT coefficient.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        use?: string

                                                                                                                                                                                                                                                                        Public key use (sig for signature or enc for encryption).

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        x?: string

                                                                                                                                                                                                                                                                        X coordinate for EC public keys.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        x5c?: string[]

                                                                                                                                                                                                                                                                        X.509 certificate chain.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        x5t?: string

                                                                                                                                                                                                                                                                        X.509 certificate SHA-1 thumbprint.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        "x5t#S256"?: string

                                                                                                                                                                                                                                                                        X.509 certificate SHA-256 thumbprint.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        x5u?: string

                                                                                                                                                                                                                                                                        URL referencing the X.509 certificate.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        y?: string

                                                                                                                                                                                                                                                                        Y coordinate for EC public keys.

                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                        diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.Jwks.html b/docs/html/interfaces/_monocloud_auth-node-core.index.Jwks.html index 2a7c3fad..edbefb51 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.Jwks.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.Jwks.html @@ -1,5 +1,5 @@ Jwks | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                          Preparing search index...

                                                                                                                                                                                                                                                                          Represents a JSON Web Key Set (JWKS).

                                                                                                                                                                                                                                                                          A JWKS is a collection of public JSON Web Keys used to verify signatures of JSON Web Tokens (JWTs).

                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                          interface Jwks {
                                                                                                                                                                                                                                                                              keys: Jwk[];
                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                                                                          interface Jwks {
                                                                                                                                                                                                                                                                              keys: Jwk[];
                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                          Index

                                                                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                                                                          Properties

                                                                                                                                                                                                                                                                          keys: Jwk[]

                                                                                                                                                                                                                                                                          The list of public keys contained in this key set.

                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                          diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.JwsHeaderParameters.html b/docs/html/interfaces/_monocloud_auth-node-core.index.JwsHeaderParameters.html index 198f7f6f..d96e9b3f 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.JwsHeaderParameters.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.JwsHeaderParameters.html @@ -1,12 +1,12 @@ JwsHeaderParameters | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                            Preparing search index...

                                                                                                                                                                                                                                                                            Parameters contained in a JSON Web Signature (JWS) header.

                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            interface JwsHeaderParameters {
                                                                                                                                                                                                                                                                                alg: SecurityAlgorithms;
                                                                                                                                                                                                                                                                                crit?: string[];
                                                                                                                                                                                                                                                                                jwk?: Jwk;
                                                                                                                                                                                                                                                                                kid?: string;
                                                                                                                                                                                                                                                                                typ?: string;
                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                                                                            Properties

                                                                                                                                                                                                                                                                            alg +
                                                                                                                                                                                                                                                                            interface JwsHeaderParameters {
                                                                                                                                                                                                                                                                                alg: SecurityAlgorithms;
                                                                                                                                                                                                                                                                                crit?: string[];
                                                                                                                                                                                                                                                                                jwk?: Jwk;
                                                                                                                                                                                                                                                                                kid?: string;
                                                                                                                                                                                                                                                                                typ?: string;
                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                            Index

                                                                                                                                                                                                                                                                            Properties

                                                                                                                                                                                                                                                                            Properties

                                                                                                                                                                                                                                                                            The cryptographic algorithm used to sign the token.

                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            crit?: string[]

                                                                                                                                                                                                                                                                            List of header parameters that are marked as critical and must be understood by the token processor.

                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            jwk?: Jwk

                                                                                                                                                                                                                                                                            An embedded JSON Web Key (JWK) containing the signing key.

                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            kid?: string

                                                                                                                                                                                                                                                                            Identifier of the key used to sign the token.

                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            typ?: string

                                                                                                                                                                                                                                                                            The token type.

                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                            crit?: string[]

                                                                                                                                                                                                                                                                            List of header parameters that are marked as critical and must be understood by the token processor.

                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                            jwk?: Jwk

                                                                                                                                                                                                                                                                            An embedded JSON Web Key (JWK) containing the signing key.

                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                            kid?: string

                                                                                                                                                                                                                                                                            Identifier of the key used to sign the token.

                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                            typ?: string

                                                                                                                                                                                                                                                                            The token type.

                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                            diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudClientOptions.html b/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudClientOptions.html index 439131d3..a3b17175 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudClientOptions.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudClientOptions.html @@ -1,23 +1,23 @@ MonoCloudClientOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                              Preparing search index...

                                                                                                                                                                                                                                                                              Configuration options used to initialize the MonoCloudClient.

                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              interface MonoCloudClientOptions {
                                                                                                                                                                                                                                                                                  clientAuthMethod?: ClientAuthMethod;
                                                                                                                                                                                                                                                                                  clientSecret?: string | Jwk;
                                                                                                                                                                                                                                                                                  idTokenSigningAlgorithm?: SecurityAlgorithms;
                                                                                                                                                                                                                                                                                  jwksCacheDuration?: number;
                                                                                                                                                                                                                                                                                  metadataCacheDuration?: number;
                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                              Index

                                                                                                                                                                                                                                                                              Properties

                                                                                                                                                                                                                                                                              interface MonoCloudClientOptions {
                                                                                                                                                                                                                                                                                  clientAuthMethod?: ClientAuthMethod;
                                                                                                                                                                                                                                                                                  clientSecret?: string | Jwk;
                                                                                                                                                                                                                                                                                  idTokenSigningAlgorithm?: SecurityAlgorithms;
                                                                                                                                                                                                                                                                                  jwksCacheDuration?: number;
                                                                                                                                                                                                                                                                                  metadataCacheDuration?: number;
                                                                                                                                                                                                                                                                              }
                                                                                                                                                                                                                                                                              Index

                                                                                                                                                                                                                                                                              Properties

                                                                                                                                                                                                                                                                              clientAuthMethod?: ClientAuthMethod

                                                                                                                                                                                                                                                                              Client authentication method used when communicating with the token endpoint.

                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              clientSecret?: string | Jwk

                                                                                                                                                                                                                                                                              Client secret used for client authentication.

                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                              clientSecret?: string | Jwk

                                                                                                                                                                                                                                                                              Client secret used for client authentication.

                                                                                                                                                                                                                                                                              When clientAuthMethod is client_secret_jwt and a plain-text secret is provided, the default signing algorithm is HS256.

                                                                                                                                                                                                                                                                              To use a different algorithm, provide a symmetric JSON Web Key (JWK) (kty: "oct") with the desired algorithm specified in its alg property.

                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              idTokenSigningAlgorithm?: SecurityAlgorithms

                                                                                                                                                                                                                                                                              Expected signing algorithm for validating ID tokens.

                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                              idTokenSigningAlgorithm?: SecurityAlgorithms

                                                                                                                                                                                                                                                                              Expected signing algorithm for validating ID tokens.

                                                                                                                                                                                                                                                                              'RS256'
                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              jwksCacheDuration?: number

                                                                                                                                                                                                                                                                              Duration (in seconds) to cache the JSON Web Key Set (JWKS) retrieved from the authorization server.

                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                              jwksCacheDuration?: number

                                                                                                                                                                                                                                                                              Duration (in seconds) to cache the JSON Web Key Set (JWKS) retrieved from the authorization server.

                                                                                                                                                                                                                                                                              300
                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              metadataCacheDuration?: number

                                                                                                                                                                                                                                                                              Duration (in seconds) to cache OpenID Connect discovery metadata.

                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                              metadataCacheDuration?: number

                                                                                                                                                                                                                                                                              Duration (in seconds) to cache OpenID Connect discovery metadata.

                                                                                                                                                                                                                                                                              300
                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                              diff --git a/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudOptions.html b/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudOptions.html index b375c246..5f2b0e46 100644 --- a/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudOptions.html +++ b/docs/html/interfaces/_monocloud_auth-node-core.index.MonoCloudOptions.html @@ -229,7 +229,7 @@

                                                                                                                                                                                                                                                                              Returns Promise<void> | void

                                                                                                                                                                                                                                                                              Returns a promise or void. Execution continues once the callback completes.

                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                              diff --git a/docs/html/types/_monocloud_auth-core.index.SecurityAlgorithms.html b/docs/html/types/_monocloud_auth-core.index.SecurityAlgorithms.html index 6a7eb6a0..5c20841f 100644 --- a/docs/html/types/_monocloud_auth-core.index.SecurityAlgorithms.html +++ b/docs/html/types/_monocloud_auth-core.index.SecurityAlgorithms.html @@ -12,4 +12,4 @@

                                                                                                                                                                                                                                                                              Produces smaller tokens and faster verification.

                                                                                                                                                                                                                                                                            • "ES384"

                                                                                                                                                                                                                                                                              ECDSA using P-384 curve and SHA-384.

                                                                                                                                                                                                                                                                            • "ES512"

                                                                                                                                                                                                                                                                              ECDSA using P-521 curve and SHA-512.

                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                              diff --git a/docs/html/types/_monocloud_auth-js-core.index.ApplicationState.html b/docs/html/types/_monocloud_auth-js-core.index.ApplicationState.html new file mode 100644 index 00000000..102c3768 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.ApplicationState.html @@ -0,0 +1,2 @@ +ApplicationState | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                Preparing search index...
                                                                                                                                                                                                                                                                                ApplicationState: Record<string, any>

                                                                                                                                                                                                                                                                                Custom application state passed through authentication flows.

                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                diff --git a/docs/html/types/_monocloud_auth-js-core.index.Authenticators.html b/docs/html/types/_monocloud_auth-js-core.index.Authenticators.html new file mode 100644 index 00000000..caaf364b --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.Authenticators.html @@ -0,0 +1,16 @@ +Authenticators | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                  Preparing search index...
                                                                                                                                                                                                                                                                                  Authenticators:
                                                                                                                                                                                                                                                                                      | "password"
                                                                                                                                                                                                                                                                                      | "passkey"
                                                                                                                                                                                                                                                                                      | "email"
                                                                                                                                                                                                                                                                                      | "phone"
                                                                                                                                                                                                                                                                                      | "google"
                                                                                                                                                                                                                                                                                      | "apple"
                                                                                                                                                                                                                                                                                      | "facebook"
                                                                                                                                                                                                                                                                                      | "microsoft"
                                                                                                                                                                                                                                                                                      | "github"
                                                                                                                                                                                                                                                                                      | "gitlab"
                                                                                                                                                                                                                                                                                      | "discord"
                                                                                                                                                                                                                                                                                      | "twitter"
                                                                                                                                                                                                                                                                                      | "linkedin"
                                                                                                                                                                                                                                                                                      | "xero"

                                                                                                                                                                                                                                                                                  Supported authentication methods and identity providers.

                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                  Type Declaration

                                                                                                                                                                                                                                                                                  • "password"

                                                                                                                                                                                                                                                                                    Username/password authentication.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "passkey"

                                                                                                                                                                                                                                                                                    Passkey (WebAuthn / FIDO2) authentication.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "email"

                                                                                                                                                                                                                                                                                    Email-based authentication (magic link or OTP).

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "phone"

                                                                                                                                                                                                                                                                                    Phone-based authentication (SMS OTP).

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "google"

                                                                                                                                                                                                                                                                                    Google identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "apple"

                                                                                                                                                                                                                                                                                    Apple identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "facebook"

                                                                                                                                                                                                                                                                                    Facebook identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "microsoft"

                                                                                                                                                                                                                                                                                    Microsoft identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "github"

                                                                                                                                                                                                                                                                                    GitHub identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "gitlab"

                                                                                                                                                                                                                                                                                    GitLab identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "discord"

                                                                                                                                                                                                                                                                                    Discord identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "twitter"

                                                                                                                                                                                                                                                                                    Twitter (X) identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "linkedin"

                                                                                                                                                                                                                                                                                    LinkedIn identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  • "xero"

                                                                                                                                                                                                                                                                                    Xero identity provider.

                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                  diff --git a/docs/html/types/_monocloud_auth-js-core.index.ClientAuthMethod.html b/docs/html/types/_monocloud_auth-js-core.index.ClientAuthMethod.html new file mode 100644 index 00000000..4308227f --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.ClientAuthMethod.html @@ -0,0 +1,7 @@ +ClientAuthMethod | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                    Preparing search index...
                                                                                                                                                                                                                                                                                    ClientAuthMethod:
                                                                                                                                                                                                                                                                                        | "client_secret_basic"
                                                                                                                                                                                                                                                                                        | "client_secret_post"
                                                                                                                                                                                                                                                                                        | "client_secret_jwt"
                                                                                                                                                                                                                                                                                        | "private_key_jwt"

                                                                                                                                                                                                                                                                                    Supported OAuth 2.0 client authentication methods.

                                                                                                                                                                                                                                                                                    +

                                                                                                                                                                                                                                                                                    These methods define how a client authenticates itself when calling the authorization server token endpoint.

                                                                                                                                                                                                                                                                                    +

                                                                                                                                                                                                                                                                                    Type Declaration

                                                                                                                                                                                                                                                                                    • "client_secret_basic"

                                                                                                                                                                                                                                                                                      Client credentials are sent using HTTP Basic authentication

                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                    • "client_secret_post"

                                                                                                                                                                                                                                                                                      Client credentials are included in the request body as form parameters.

                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                    • "client_secret_jwt"

                                                                                                                                                                                                                                                                                      Client authenticates using a signed JWT created with the client secret.

                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                    • "private_key_jwt"

                                                                                                                                                                                                                                                                                      Client authenticates using a signed JWT created with a private key.

                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                    diff --git a/docs/html/types/_monocloud_auth-js-core.index.CodeChallengeMethod.html b/docs/html/types/_monocloud_auth-js-core.index.CodeChallengeMethod.html new file mode 100644 index 00000000..cca80a93 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.CodeChallengeMethod.html @@ -0,0 +1,5 @@ +CodeChallengeMethod | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                      Preparing search index...
                                                                                                                                                                                                                                                                                      CodeChallengeMethod: "plain" | "S256"

                                                                                                                                                                                                                                                                                      Supported PKCE (Proof Key for Code Exchange) code challenge methods.

                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                      PKCE protects authorization code flows by binding the authorization request to the token exchange using a cryptographic verifier.

                                                                                                                                                                                                                                                                                      +

                                                                                                                                                                                                                                                                                      Type Declaration

                                                                                                                                                                                                                                                                                      • "plain"

                                                                                                                                                                                                                                                                                        Uses the code verifier directly as the challenge. Not recommended for production use.

                                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                                      • "S256"

                                                                                                                                                                                                                                                                                        Uses a SHA-256 hash of the code verifier.

                                                                                                                                                                                                                                                                                        +
                                                                                                                                                                                                                                                                                      diff --git a/docs/html/types/_monocloud_auth-js-core.index.DisplayOptions.html b/docs/html/types/_monocloud_auth-js-core.index.DisplayOptions.html new file mode 100644 index 00000000..30e5ef48 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.DisplayOptions.html @@ -0,0 +1,7 @@ +DisplayOptions | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                        Preparing search index...
                                                                                                                                                                                                                                                                                        DisplayOptions: "page" | "popup" | "touch" | "wap"

                                                                                                                                                                                                                                                                                        Supported OpenID Connect display parameter values.

                                                                                                                                                                                                                                                                                        +

                                                                                                                                                                                                                                                                                        The display parameter hints to the authorization server how the authentication or consent UI should be presented to the user.

                                                                                                                                                                                                                                                                                        +

                                                                                                                                                                                                                                                                                        Type Declaration

                                                                                                                                                                                                                                                                                        • "page"

                                                                                                                                                                                                                                                                                          Full-page authentication experience in the browser.

                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                        • "popup"

                                                                                                                                                                                                                                                                                          Authentication optimized for popup windows.

                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                        • "touch"

                                                                                                                                                                                                                                                                                          Authentication optimized for touch-based devices.

                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                        • "wap"

                                                                                                                                                                                                                                                                                          Authentication optimized for legacy mobile or constrained browsers.

                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                        diff --git a/docs/html/types/_monocloud_auth-js-core.index.Group.html b/docs/html/types/_monocloud_auth-js-core.index.Group.html new file mode 100644 index 00000000..815146a7 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.Group.html @@ -0,0 +1,4 @@ +Group | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                          Preparing search index...
                                                                                                                                                                                                                                                                                          Group: { id: string; name: string } | string

                                                                                                                                                                                                                                                                                          Represents a user group included in the authenticated session.

                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                          Type Declaration

                                                                                                                                                                                                                                                                                          • { id: string; name: string }

                                                                                                                                                                                                                                                                                            Structured group representation.

                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                          • string

                                                                                                                                                                                                                                                                                            Group identifier or group name.

                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                          diff --git a/docs/html/types/_monocloud_auth-js-core.index.InteractionMode.html b/docs/html/types/_monocloud_auth-js-core.index.InteractionMode.html new file mode 100644 index 00000000..a73950d0 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.InteractionMode.html @@ -0,0 +1,2 @@ +InteractionMode | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                            Preparing search index...
                                                                                                                                                                                                                                                                                            InteractionMode: "popup" | "redirect"

                                                                                                                                                                                                                                                                                            Interaction modes supported for sign-in and sign-out flows.

                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                            diff --git a/docs/html/types/_monocloud_auth-js-core.index.OnSessionCreating.html b/docs/html/types/_monocloud_auth-js-core.index.OnSessionCreating.html new file mode 100644 index 00000000..224b7b37 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.OnSessionCreating.html @@ -0,0 +1,7 @@ +OnSessionCreating | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                              Preparing search index...
                                                                                                                                                                                                                                                                                              OnSessionCreating: (
                                                                                                                                                                                                                                                                                                  session: MonoCloudSession,
                                                                                                                                                                                                                                                                                                  idToken?: Partial<IdTokenClaims>,
                                                                                                                                                                                                                                                                                                  userInfo?: UserinfoResponse,
                                                                                                                                                                                                                                                                                                  state?: ApplicationState,
                                                                                                                                                                                                                                                                                              ) => Promise<void> | void

                                                                                                                                                                                                                                                                                              Callback invoked when a session is being created or updated.

                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                              Type Declaration

                                                                                                                                                                                                                                                                                              diff --git a/docs/html/types/_monocloud_auth-js-core.index.PostCallback.html b/docs/html/types/_monocloud_auth-js-core.index.PostCallback.html new file mode 100644 index 00000000..21274c2d --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.PostCallback.html @@ -0,0 +1,4 @@ +PostCallback | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                Preparing search index...
                                                                                                                                                                                                                                                                                                PostCallback: (state: PostCallbackParams) => Promise<void> | void

                                                                                                                                                                                                                                                                                                Callback executed after sign-in or sign-out callback processing.

                                                                                                                                                                                                                                                                                                +

                                                                                                                                                                                                                                                                                                Type Declaration

                                                                                                                                                                                                                                                                                                  • (state: PostCallbackParams): Promise<void> | void
                                                                                                                                                                                                                                                                                                  • Parameters

                                                                                                                                                                                                                                                                                                    Returns Promise<void> | void

                                                                                                                                                                                                                                                                                                    Returns void or a Promise<void>.

                                                                                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                                                                                diff --git a/docs/html/types/_monocloud_auth-js-core.index.PostCallbackParams.html b/docs/html/types/_monocloud_auth-js-core.index.PostCallbackParams.html new file mode 100644 index 00000000..dddd0743 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.PostCallbackParams.html @@ -0,0 +1,2 @@ +PostCallbackParams | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                  Preparing search index...
                                                                                                                                                                                                                                                                                                  PostCallbackParams:
                                                                                                                                                                                                                                                                                                      | {
                                                                                                                                                                                                                                                                                                          mode: InteractionMode
                                                                                                                                                                                                                                                                                                          | "silent";
                                                                                                                                                                                                                                                                                                          returnUrl?: string;
                                                                                                                                                                                                                                                                                                          type: "signIn";
                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                      | { mode: InteractionMode; returnUrl?: string; type: "signOut" }

                                                                                                                                                                                                                                                                                                  Metadata passed to PostCallback after callback processing.

                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                  diff --git a/docs/html/types/_monocloud_auth-js-core.index.Prompt.html b/docs/html/types/_monocloud_auth-js-core.index.Prompt.html new file mode 100644 index 00000000..1513c5c2 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.Prompt.html @@ -0,0 +1,8 @@ +Prompt | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                  MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                    Preparing search index...
                                                                                                                                                                                                                                                                                                    Prompt: "none" | "login" | "consent" | "select_account" | "create"

                                                                                                                                                                                                                                                                                                    Supported OpenID Connect prompt parameter values.

                                                                                                                                                                                                                                                                                                    +

                                                                                                                                                                                                                                                                                                    The prompt parameter controls whether the authorization server should force specific user interactions during authentication.

                                                                                                                                                                                                                                                                                                    +

                                                                                                                                                                                                                                                                                                    Type Declaration

                                                                                                                                                                                                                                                                                                    • "none"

                                                                                                                                                                                                                                                                                                      Do not display any authentication or consent UI.

                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                    • "login"

                                                                                                                                                                                                                                                                                                      Forces the user to re-authenticate even if an active session exists.

                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                    • "consent"

                                                                                                                                                                                                                                                                                                      Forces the consent screen to be displayed to the user.

                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                    • "select_account"

                                                                                                                                                                                                                                                                                                      Prompts the user to choose an account when multiple sessions exist.

                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                    • "create"

                                                                                                                                                                                                                                                                                                      Prompts the user to create a new account (sign-up flow).

                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                    diff --git a/docs/html/types/_monocloud_auth-js-core.index.RefreshMode.html b/docs/html/types/_monocloud_auth-js-core.index.RefreshMode.html new file mode 100644 index 00000000..4df8b8b3 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.RefreshMode.html @@ -0,0 +1,2 @@ +RefreshMode | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                    MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                      Preparing search index...
                                                                                                                                                                                                                                                                                                      RefreshMode: "popup" | "refresh_token" | "silent"

                                                                                                                                                                                                                                                                                                      Interaction modes supported by refreshSession().

                                                                                                                                                                                                                                                                                                      +
                                                                                                                                                                                                                                                                                                      diff --git a/docs/html/types/_monocloud_auth-js-core.index.ResponseModes.html b/docs/html/types/_monocloud_auth-js-core.index.ResponseModes.html new file mode 100644 index 00000000..affff449 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.ResponseModes.html @@ -0,0 +1,6 @@ +ResponseModes | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                      MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                        Preparing search index...
                                                                                                                                                                                                                                                                                                        ResponseModes: "form_post" | "query" | "fragment"

                                                                                                                                                                                                                                                                                                        Supported OAuth 2.0 / OpenID Connect response_mode values.

                                                                                                                                                                                                                                                                                                        +

                                                                                                                                                                                                                                                                                                        The response mode determines how authorization results are returned from the authorization endpoint to the client application.

                                                                                                                                                                                                                                                                                                        +

                                                                                                                                                                                                                                                                                                        Type Declaration

                                                                                                                                                                                                                                                                                                        • "form_post"

                                                                                                                                                                                                                                                                                                          Returns authorization results using an HTTP POST request with parameters encoded in the request body.

                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                        • "query"

                                                                                                                                                                                                                                                                                                          Returns authorization results as URL query parameters.

                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                        • "fragment"

                                                                                                                                                                                                                                                                                                          Returns authorization results in the URL fragment.

                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                        diff --git a/docs/html/types/_monocloud_auth-js-core.index.ResponseTypes.html b/docs/html/types/_monocloud_auth-js-core.index.ResponseTypes.html new file mode 100644 index 00000000..db74db39 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.ResponseTypes.html @@ -0,0 +1,13 @@ +ResponseTypes | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                        MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                          Preparing search index...
                                                                                                                                                                                                                                                                                                          ResponseTypes:
                                                                                                                                                                                                                                                                                                              | "code"
                                                                                                                                                                                                                                                                                                              | "token"
                                                                                                                                                                                                                                                                                                              | "id_token"
                                                                                                                                                                                                                                                                                                              | "id_token token"
                                                                                                                                                                                                                                                                                                              | "code id_token"
                                                                                                                                                                                                                                                                                                              | "code token"
                                                                                                                                                                                                                                                                                                              | "code id_token token"

                                                                                                                                                                                                                                                                                                          Supported OAuth 2.0 / OpenID Connect response types.

                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                          Response types determine which artifacts are returned from the authorization endpoint during authentication.

                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                          Modern applications should prefer the Authorization Code Flow (code) with PKCE. Implicit flow variants are included for compatibility with legacy or specialized scenarios.

                                                                                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                                                                                          +

                                                                                                                                                                                                                                                                                                          Type Declaration

                                                                                                                                                                                                                                                                                                          • "code"

                                                                                                                                                                                                                                                                                                            Authorization Code Flow (recommended). Returns an authorization code that is exchanged for tokens server-side.

                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                          • "token"

                                                                                                                                                                                                                                                                                                            Implicit Flow returning an access token directly from the authorization endpoint.

                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                          • "id_token"

                                                                                                                                                                                                                                                                                                            Implicit Flow returning an ID token.

                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                          • "id_token token"

                                                                                                                                                                                                                                                                                                            Implicit Flow returning both an ID token and an access token.

                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                          • "code id_token"

                                                                                                                                                                                                                                                                                                            Hybrid Flow returning an authorization code and an ID token.

                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                          • "code token"

                                                                                                                                                                                                                                                                                                            Hybrid Flow returning an authorization code and an access token.

                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                          • "code id_token token"

                                                                                                                                                                                                                                                                                                            Hybrid Flow returning an authorization code, ID token, and access token.

                                                                                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                                                                                          diff --git a/docs/html/types/_monocloud_auth-js-core.index.SecurityAlgorithms.html b/docs/html/types/_monocloud_auth-js-core.index.SecurityAlgorithms.html new file mode 100644 index 00000000..0022a8c4 --- /dev/null +++ b/docs/html/types/_monocloud_auth-js-core.index.SecurityAlgorithms.html @@ -0,0 +1,15 @@ +SecurityAlgorithms | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                          MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                            Preparing search index...
                                                                                                                                                                                                                                                                                                            SecurityAlgorithms:
                                                                                                                                                                                                                                                                                                                | "RS256"
                                                                                                                                                                                                                                                                                                                | "RS384"
                                                                                                                                                                                                                                                                                                                | "RS512"
                                                                                                                                                                                                                                                                                                                | "PS256"
                                                                                                                                                                                                                                                                                                                | "PS384"
                                                                                                                                                                                                                                                                                                                | "PS512"
                                                                                                                                                                                                                                                                                                                | "ES256"
                                                                                                                                                                                                                                                                                                                | "ES384"
                                                                                                                                                                                                                                                                                                                | "ES512"

                                                                                                                                                                                                                                                                                                            Supported JSON Web Signature (JWS) algorithms used to sign tokens.

                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                            These algorithms define how tokens issued by MonoCloud are cryptographically signed and verified. The expected algorithm should match the configuration of your MonoCloud application.

                                                                                                                                                                                                                                                                                                            +

                                                                                                                                                                                                                                                                                                            Type Declaration

                                                                                                                                                                                                                                                                                                            • "RS256"

                                                                                                                                                                                                                                                                                                              RSA using SHA-256.

                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                              Default and most commonly used signing algorithm.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "RS384"

                                                                                                                                                                                                                                                                                                              RSA using SHA-384.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "RS512"

                                                                                                                                                                                                                                                                                                              RSA using SHA-512.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "PS256"

                                                                                                                                                                                                                                                                                                              RSA-PSS using SHA-256.

                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                              Provides stronger cryptographic padding than RS256.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "PS384"

                                                                                                                                                                                                                                                                                                              RSA-PSS using SHA-384.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "PS512"

                                                                                                                                                                                                                                                                                                              RSA-PSS using SHA-512.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "ES256"

                                                                                                                                                                                                                                                                                                              ECDSA using P-256 curve and SHA-256.

                                                                                                                                                                                                                                                                                                              +

                                                                                                                                                                                                                                                                                                              Produces smaller tokens and faster verification.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "ES384"

                                                                                                                                                                                                                                                                                                              ECDSA using P-384 curve and SHA-384.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            • "ES512"

                                                                                                                                                                                                                                                                                                              ECDSA using P-521 curve and SHA-512.

                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                            diff --git a/docs/html/types/_monocloud_auth-nextjs.index.Authenticators.html b/docs/html/types/_monocloud_auth-nextjs.index.Authenticators.html index 4e675cea..4da3b63b 100644 --- a/docs/html/types/_monocloud_auth-nextjs.index.Authenticators.html +++ b/docs/html/types/_monocloud_auth-nextjs.index.Authenticators.html @@ -13,4 +13,4 @@
                                                                                                                                                                                                                                                                                                          • "twitter"

                                                                                                                                                                                                                                                                                                            Twitter (X) identity provider.

                                                                                                                                                                                                                                                                                                          • "linkedin"

                                                                                                                                                                                                                                                                                                            LinkedIn identity provider.

                                                                                                                                                                                                                                                                                                          • "xero"

                                                                                                                                                                                                                                                                                                            Xero identity provider.

                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                          • +
                                                                                                                                                                                                                                                                                                            diff --git a/docs/html/types/_monocloud_auth-nextjs.index.Group.html b/docs/html/types/_monocloud_auth-nextjs.index.Group.html index e191efea..419f3ec7 100644 --- a/docs/html/types/_monocloud_auth-nextjs.index.Group.html +++ b/docs/html/types/_monocloud_auth-nextjs.index.Group.html @@ -1,4 +1,4 @@ Group | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                            MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                              Preparing search index...
                                                                                                                                                                                                                                                                                                              Group: { id: string; name: string } | string

                                                                                                                                                                                                                                                                                                              Represents a user group included in the authenticated session.

                                                                                                                                                                                                                                                                                                              Type Declaration

                                                                                                                                                                                                                                                                                                              • { id: string; name: string }

                                                                                                                                                                                                                                                                                                                Structured group representation.

                                                                                                                                                                                                                                                                                                              • string

                                                                                                                                                                                                                                                                                                                Group identifier or group name.

                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                                                                                              diff --git a/docs/html/types/_monocloud_auth-nextjs.index.SecurityAlgorithms.html b/docs/html/types/_monocloud_auth-nextjs.index.SecurityAlgorithms.html index 56d4e4d2..02902e71 100644 --- a/docs/html/types/_monocloud_auth-nextjs.index.SecurityAlgorithms.html +++ b/docs/html/types/_monocloud_auth-nextjs.index.SecurityAlgorithms.html @@ -12,4 +12,4 @@

                                                                                                                                                                                                                                                                                                              Produces smaller tokens and faster verification.

                                                                                                                                                                                                                                                                                                            • "ES384"

                                                                                                                                                                                                                                                                                                              ECDSA using P-384 curve and SHA-384.

                                                                                                                                                                                                                                                                                                            • "ES512"

                                                                                                                                                                                                                                                                                                              ECDSA using P-521 curve and SHA-512.

                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                              diff --git a/docs/html/types/_monocloud_auth-node-core.index.Authenticators.html b/docs/html/types/_monocloud_auth-node-core.index.Authenticators.html index 3a1c7ffa..4a22dc73 100644 --- a/docs/html/types/_monocloud_auth-node-core.index.Authenticators.html +++ b/docs/html/types/_monocloud_auth-node-core.index.Authenticators.html @@ -13,4 +13,4 @@
                                                                                                                                                                                                                                                                                                            • "twitter"

                                                                                                                                                                                                                                                                                                              Twitter (X) identity provider.

                                                                                                                                                                                                                                                                                                            • "linkedin"

                                                                                                                                                                                                                                                                                                              LinkedIn identity provider.

                                                                                                                                                                                                                                                                                                            • "xero"

                                                                                                                                                                                                                                                                                                              Xero identity provider.

                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                              diff --git a/docs/html/types/_monocloud_auth-node-core.index.ClientAuthMethod.html b/docs/html/types/_monocloud_auth-node-core.index.ClientAuthMethod.html index c9586e52..84a1e8ae 100644 --- a/docs/html/types/_monocloud_auth-node-core.index.ClientAuthMethod.html +++ b/docs/html/types/_monocloud_auth-node-core.index.ClientAuthMethod.html @@ -4,4 +4,4 @@
                                                                                                                                                                                                                                                                                                            • "client_secret_post"

                                                                                                                                                                                                                                                                                                              Client credentials are included in the request body as form parameters.

                                                                                                                                                                                                                                                                                                            • "client_secret_jwt"

                                                                                                                                                                                                                                                                                                              Client authenticates using a signed JWT created with the client secret.

                                                                                                                                                                                                                                                                                                            • "private_key_jwt"

                                                                                                                                                                                                                                                                                                              Client authenticates using a signed JWT created with a private key.

                                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                              diff --git a/docs/html/types/_monocloud_auth-node-core.index.Group.html b/docs/html/types/_monocloud_auth-node-core.index.Group.html index ac72309f..afb028d6 100644 --- a/docs/html/types/_monocloud_auth-node-core.index.Group.html +++ b/docs/html/types/_monocloud_auth-node-core.index.Group.html @@ -1,4 +1,4 @@ Group | MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                              MonoCloud Authentication SDK
                                                                                                                                                                                                                                                                                                                Preparing search index...
                                                                                                                                                                                                                                                                                                                Group: { id: string; name: string } | string

                                                                                                                                                                                                                                                                                                                Represents a user group included in the authenticated session.

                                                                                                                                                                                                                                                                                                                Type Declaration

                                                                                                                                                                                                                                                                                                                • { id: string; name: string }

                                                                                                                                                                                                                                                                                                                  Structured group representation.

                                                                                                                                                                                                                                                                                                                • string

                                                                                                                                                                                                                                                                                                                  Group identifier or group name.

                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                diff --git a/docs/html/types/_monocloud_auth-node-core.index.OnCoreSessionCreating.html b/docs/html/types/_monocloud_auth-node-core.index.OnCoreSessionCreating.html index 1d04d806..d3d82a12 100644 --- a/docs/html/types/_monocloud_auth-node-core.index.OnCoreSessionCreating.html +++ b/docs/html/types/_monocloud_auth-node-core.index.OnCoreSessionCreating.html @@ -4,4 +4,4 @@
                                                                                                                                                                                                                                                                                                              • OptionalidToken: Partial<IdTokenClaims>

                                                                                                                                                                                                                                                                                                                Optional. Claims extracted from the ID token.

                                                                                                                                                                                                                                                                                                              • OptionaluserInfo: UserinfoResponse

                                                                                                                                                                                                                                                                                                                Optional. Claims returned from the UserInfo endpoint.

                                                                                                                                                                                                                                                                                                              • Returns Promise<void> | void

                                                                                                                                                                                                                                                                                                                Returns a promise or void. Execution continues once the callback completes.

                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                diff --git a/docs/html/types/_monocloud_auth-node-core.index.SecurityAlgorithms.html b/docs/html/types/_monocloud_auth-node-core.index.SecurityAlgorithms.html index d151edcf..f1ea37d8 100644 --- a/docs/html/types/_monocloud_auth-node-core.index.SecurityAlgorithms.html +++ b/docs/html/types/_monocloud_auth-node-core.index.SecurityAlgorithms.html @@ -12,4 +12,4 @@

                                                                                                                                                                                                                                                                                                                Produces smaller tokens and faster verification.

                                                                                                                                                                                                                                                                                                              • "ES384"

                                                                                                                                                                                                                                                                                                                ECDSA using P-384 curve and SHA-384.

                                                                                                                                                                                                                                                                                                              • "ES512"

                                                                                                                                                                                                                                                                                                                ECDSA using P-521 curve and SHA-512.

                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                                                                diff --git a/docs/markdown/Classes/_monocloud_auth-js-core.index.LocalStorage.md b/docs/markdown/Classes/_monocloud_auth-js-core.index.LocalStorage.md new file mode 100644 index 00000000..77792f5f --- /dev/null +++ b/docs/markdown/Classes/_monocloud_auth-js-core.index.LocalStorage.md @@ -0,0 +1,94 @@ +--- +rootSdk: js-core +title: "LocalStorage" +category: Classes +--- + +# Class: LocalStorage + +`window.localStorage`-backed implementation of [IStorage](/sdks/js-core/api-reference/types/istorage). + +This is the default storage used by `MonoCloudJSCoreClient`. + +## Implements + +- [`IStorage`](/sdks/js-core/api-reference/types/istorage) + +## Constructors + +### Constructor + +> **new LocalStorage**(): `LocalStorage` + +#### Returns + +`LocalStorage` + +## Methods + +### getItem() + +> **getItem**(`key`: `string`): `Promise`\<`string` \| `null`\> + +Retrieves the value associated with the given key. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ------------------------------------------ | +| `key` | `string` | The unique identifier for the stored item. | + +#### Returns + +`Promise`\<`string` \| `null`\> + +The stored value as a string, or `null` if the key does not exist. + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`getItem`](/sdks/js-core/api-reference/types/istorage#getitem) + +--- + +### removeItem() + +> **removeItem**(`key`: `string`): `Promise`\<`void`\> + +Removes the item associated with the specified key from storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | -------------------------------------------- | +| `key` | `string` | The unique identifier of the item to remove. | + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`removeItem`](/sdks/js-core/api-reference/types/istorage#removeitem) + +--- + +### setItem() + +> **setItem**(`key`: `string`, `value`: `string`): `Promise`\<`void`\> + +Stores a key-value pair in the storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ----------------------------------- | +| `key` | `string` | The unique identifier for the item. | +| `value` | `string` | The string value to store. | + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`setItem`](/sdks/js-core/api-reference/types/istorage#setitem) diff --git a/docs/markdown/Classes/_monocloud_auth-js-core.index.MemoryStorage.md b/docs/markdown/Classes/_monocloud_auth-js-core.index.MemoryStorage.md new file mode 100644 index 00000000..a7b55b7f --- /dev/null +++ b/docs/markdown/Classes/_monocloud_auth-js-core.index.MemoryStorage.md @@ -0,0 +1,94 @@ +--- +rootSdk: js-core +title: "MemoryStorage" +category: Classes +--- + +# Class: MemoryStorage + +In-memory implementation of [IStorage](/sdks/js-core/api-reference/types/istorage). + +Useful for testing or for sessions that should not persist across page reloads. + +## Implements + +- [`IStorage`](/sdks/js-core/api-reference/types/istorage) + +## Constructors + +### Constructor + +> **new MemoryStorage**(): `MemoryStorage` + +#### Returns + +`MemoryStorage` + +## Methods + +### getItem() + +> **getItem**(`key`: `string`): `Promise`\<`string` \| `null`\> + +Retrieves the value associated with the given key. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ------------------------------------------ | +| `key` | `string` | The unique identifier for the stored item. | + +#### Returns + +`Promise`\<`string` \| `null`\> + +The stored value as a string, or `null` if the key does not exist. + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`getItem`](/sdks/js-core/api-reference/types/istorage#getitem) + +--- + +### removeItem() + +> **removeItem**(`key`: `string`): `Promise`\<`void`\> + +Removes the item associated with the specified key from storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | -------------------------------------------- | +| `key` | `string` | The unique identifier of the item to remove. | + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`removeItem`](/sdks/js-core/api-reference/types/istorage#removeitem) + +--- + +### setItem() + +> **setItem**(`key`: `string`, `value`: `string`): `Promise`\<`void`\> + +Stores a key-value pair in the storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ----------------------------------- | +| `key` | `string` | The unique identifier for the item. | +| `value` | `string` | The string value to store. | + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`setItem`](/sdks/js-core/api-reference/types/istorage#setitem) diff --git a/docs/markdown/Classes/_monocloud_auth-js-core.index.MonoCloudJSCoreClient.md b/docs/markdown/Classes/_monocloud_auth-js-core.index.MonoCloudJSCoreClient.md new file mode 100644 index 00000000..ba3e6d2d --- /dev/null +++ b/docs/markdown/Classes/_monocloud_auth-js-core.index.MonoCloudJSCoreClient.md @@ -0,0 +1,338 @@ +--- +rootSdk: js-core +title: "MonoCloudJSCoreClient" +category: Classes +--- + +# Class: MonoCloudJSCoreClient + +`MonoCloudJSCoreClient` is the core SDK entry point for integrating MonoCloud authentication into single-page applications (SPAs) and other browser-based JavaScript environments. + +It provides: + +- Redirection and popup-based sign-in and sign-out. +- Session and token management. +- Automatic PKCE and state validation. +- Silent and explicit token refreshing. + +## Initialization + +```typescript:src/auth.ts +import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core'; + +export const client = new MonoCloudJSCoreClient({ +tenantDomain: 'your-tenant.monocloud.com', +clientId: 'your-client-id', +appUrl: 'http://localhost:3000', +callbackPath: '/callback', +signOutCallbackPath: '/logout' +}); +``` + +## Constructors + +### Constructor + +> **new MonoCloudJSCoreClient**(`options`: [`MonoCloudJSCoreClientOptions`](/sdks/js-core/api-reference/types/monocloudjscoreclientoptions), `storage`: [`IStorage`](/sdks/js-core/api-reference/types/istorage), `postCallbackFn?`: [`PostCallback`](/sdks/js-core/api-reference/handler-types/postcallback), `onSessionCreating?`: [`OnSessionCreating`](/sdks/js-core/api-reference/handler-types/onsessioncreating)): `MonoCloudJSCoreClient` + +Initializes a new instance of the MonoCloudJSCoreClient. + +#### Parameters + +| Parameter | Type | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `options` | [`MonoCloudJSCoreClientOptions`](/sdks/js-core/api-reference/types/monocloudjscoreclientoptions) | Configuration options for the client. | +| `storage` | [`IStorage`](/sdks/js-core/api-reference/types/istorage) | Custom storage implementation for session persistence. Defaults to `new LocalStorage()`. | +| `postCallbackFn?` | [`PostCallback`](/sdks/js-core/api-reference/handler-types/postcallback) | A callback function executed after a successful sign-in or sign-out. Useful for client-side routing integration. | +| `onSessionCreating?` | [`OnSessionCreating`](/sdks/js-core/api-reference/handler-types/onsessioncreating) | A hook used to modify or validate the session during creation. | + +#### Returns + +`MonoCloudJSCoreClient` + +#### Examples + +```typescript:src/auth.ts tab="Default Integration" tab-group="constructor" +import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core'; + +const client = new MonoCloudJSCoreClient({ +tenantDomain: 'your-tenant.monocloud.com', +clientId: 'your-client-id', +appUrl: 'http://localhost:3000', +}); +``` + +```typescript:src/auth.ts tab="Custom Storage & Router" tab-group="constructor" +import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core'; +import { MemoryStorage } from './storage'; +import { router } from './router'; + +const client = new MonoCloudJSCoreClient( +options, +new MemoryStorage(), +(state) => { + // Use router to navigate instead of full page reload. + router.push(state.returnUrl || '/dashboard'); +} +); +``` + +## Properties + +| Property | Type | Description | +| ------------------------------------ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `oidcClient` | [`MonoCloudOidcClient`](/sdks/js-core/api-reference/classes/monocloudoidcclient) | Underlying OpenID Connect client used for advanced authorization and token operations. | + +## Methods + +### getSession() + +> **getSession**(): `Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession) \| `undefined`\> + +Retrieves the current session object from configured storage. + +#### Returns + +`Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession) \| `undefined`\> + +The active session or `undefined` if not authenticated. + +#### Example + +```typescript:src/app.ts +const session = await client.getSession(); +if (session) { + console.log('User is logged in:', session.user); +} +``` + +--- + +### getTokens() + +> **getTokens**(`options?`: [`GetTokensOptions`](/sdks/js-core/api-reference/types/gettokensoptions)): `Promise`\<[`MonoCloudTokens`](/sdks/js-core/api-reference/types/monocloudtokens)\> + +Retrieves the active tokens for the session. + +If the tokens are expired or about to expire, this method will attempt to refresh them automatically before returning. + +#### Parameters + +| Parameter | Type | Description | +| ---------- | -------------------------------------------------------------------------------- | --------------------------------------------------------- | +| `options?` | [`GetTokensOptions`](/sdks/js-core/api-reference/types/gettokensoptions) | Options to control token retrieval (e.g., force refresh). | + +#### Returns + +`Promise`\<[`MonoCloudTokens`](/sdks/js-core/api-reference/types/monocloudtokens)\> + +The active tokens. + +#### Examples + +```typescript:src/app.ts tab="Default Tokens" tab-group="getTokens" +const tokens = await client.getTokens(); +console.log(tokens.accessToken); +``` + +```typescript:src/app.ts tab="Force Refresh" tab-group="getTokens" +const tokens = await client.getTokens({ forceRefresh: true }); +``` + +```typescript:src/app.ts tab="Specific Resource" tab-group="getTokens" +const tokens = await client.getTokens({ + resource: 'https://api.example.com', + scopes: 'read:data' +}); +``` + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) If the session does not exist. + +--- + +### processCallback() + +> **processCallback**(): `Promise`\<`void`\> + +Processes the authentication callback. + +This method must be called on application startup (usually in the entry point or router) +to handle the response from the identity provider after a redirect flow. + +- **Main Window:** Validates the state and code, exchanges them for tokens, and establishes the session. +- **Popup/Iframe:** Posts the callback URL back to the parent/opener window to complete the flow. + +#### Returns + +`Promise`\<`void`\> + +A promise that resolves when the callback processing is complete. + +#### Example + +```typescript:src/main.ts +import { client } from './auth'; + +async function init() { + // Process any pending redirect callbacks before rendering. + await client.processCallback(); + + // Continue mounting the app. + renderApp(); +} + +init(); +``` + +--- + +### refetchUserInfo() + +> **refetchUserInfo**(): `Promise`\<`void`\> + +Refetches user information from the UserInfo endpoint and updates the local session. + +#### Returns + +`Promise`\<`void`\> + +#### Example + +```typescript:src/app.ts +await client.refetchUserInfo(); +const session = await client.getSession(); +console.log('Updated user data:', session.user); +``` + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) If the session is invalid or the default token is missing. + +--- + +### refreshSession() + +> **refreshSession**(`refreshOptions?`: [`RefreshOptions`](/sdks/js-core/api-reference/types/refreshoptions)): `Promise`\<`void`\> + +Refreshes the user's session. + +This method can be used to explicitly refresh tokens using various methods: + +- `silent`: Uses a hidden iframe (requires third-party cookies). +- `refresh_token`: Uses the Refresh Token Grant (requires `offline_access` scope). +- `popup`: Opens a transient popup to refresh the session interactively. + +#### Parameters + +| Parameter | Type | Description | +| ----------------- | ---------------------------------------------------------------------------- | -------------------------------------------- | +| `refreshOptions?` | [`RefreshOptions`](/sdks/js-core/api-reference/types/refreshoptions) | Optional configuration for the refresh flow. | + +#### Returns + +`Promise`\<`void`\> + +#### Examples + +```typescript:src/app.ts tab="Silent (Iframe)" tab-group="refreshSession" +await client.refreshSession({ mode: 'silent' }); +``` + +```typescript:src/app.ts tab="Refresh Token" tab-group="refreshSession" +await client.refreshSession({ mode: 'refresh_token' }); +``` + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) If the session is invalid or missing required tokens. + +#### Throws + +[MonoCloudJsError](/sdks/js-core/api-reference/error-classes/monocloudjserror) If called from within a popup or iframe. + +--- + +### signIn() + +> **signIn**(`signInOptions?`: [`SignInOptions`](/sdks/js-core/api-reference/types/signinoptions)): `Promise`\<`void`\> + +Initiates the sign-in flow. + +#### Parameters + +| Parameter | Type | Description | +| ---------------- | -------------------------------------------------------------------------- | ----------------------------------------------- | +| `signInOptions?` | [`SignInOptions`](/sdks/js-core/api-reference/types/signinoptions) | Optional configuration for the sign-in request. | + +#### Returns + +`Promise`\<`void`\> + +#### Examples + +```typescript:src/app.ts tab="Redirect Flow" tab-group="signIn" +document.getElementById('login-btn').addEventListener('click', async () => { + // Standard top-level redirect to the authorization server. + await client.signIn(); +}); +``` + +```typescript:src/app.ts tab="Popup Flow" tab-group="signIn" +document.getElementById('login-popup-btn').addEventListener('click', async () => { + // Opens a centered popup for authentication. + await client.signIn({ mode: 'popup' }); + console.log('User finished popup flow!'); +}); +``` + +```typescript:src/app.ts tab="Sign Up" tab-group="signIn" +document.getElementById('register-btn').addEventListener('click', async () => { + // Forces the identity provider to show the registration/sign-up screen. + await client.signIn({ signUp: true }); +}); +``` + +#### Throws + +[MonoCloudJsError](/sdks/js-core/api-reference/error-classes/monocloudjserror) If called from within a popup or iframe. + +--- + +### signOut() + +> **signOut**(`signOutOptions?`: [`SignOutOptions`](/sdks/js-core/api-reference/types/signoutoptions)): `Promise`\<`void`\> + +Initiates the sign-out flow. + +Clears the local session and optionally redirects the user to the identity provider to end the session there (Federated Sign-Out). + +#### Parameters + +| Parameter | Type | Description | +| ----------------- | ---------------------------------------------------------------------------- | ------------------------------------------------ | +| `signOutOptions?` | [`SignOutOptions`](/sdks/js-core/api-reference/types/signoutoptions) | Optional configuration for the sign-out request. | + +#### Returns + +`Promise`\<`void`\> + +#### Examples + +```typescript:src/app.ts tab="Redirect Flow" tab-group="signOut" +document.getElementById('logout-btn').addEventListener('click', async () => { + await client.signOut(); +}); +``` + +```typescript:src/app.ts tab="Popup Flow" tab-group="signOut" +document.getElementById('logout-popup-btn').addEventListener('click', async () => { + // Opens a popup to perform federated sign-out and keep the user on the current page. + await client.signOut({ mode: 'popup' }); +}); +``` + +#### Throws + +[MonoCloudJsError](/sdks/js-core/api-reference/error-classes/monocloudjserror) If called from within a popup or iframe. diff --git a/docs/markdown/Classes/_monocloud_auth-js-core.index.MonoCloudOidcClient.md b/docs/markdown/Classes/_monocloud_auth-js-core.index.MonoCloudOidcClient.md new file mode 100644 index 00000000..42d9a136 --- /dev/null +++ b/docs/markdown/Classes/_monocloud_auth-js-core.index.MonoCloudOidcClient.md @@ -0,0 +1,474 @@ +--- +rootSdk: js-core +title: "MonoCloudOidcClient" +category: Classes +--- + +# Class: MonoCloudOidcClient + +## Constructors + +### Constructor + +> **new MonoCloudOidcClient**(`tenantDomain`: `string`, `clientId`: `string`, `options?`: [`MonoCloudClientOptions`](/sdks/js-core/api-reference/types/monocloudclientoptions)): `MonoCloudOidcClient` + +#### Parameters + +| Parameter | Type | +| -------------- | -------------------------------------------------------------------------------------------- | +| `tenantDomain` | `string` | +| `clientId` | `string` | +| `options?` | [`MonoCloudClientOptions`](/sdks/js-core/api-reference/types/monocloudclientoptions) | + +#### Returns + +`MonoCloudOidcClient` + +## Methods + +### authenticate() + +> **authenticate**(`code`: `string`, `redirectUri`: `string`, `requestedScopes`: `string`, `resource?`: `string`, `options?`: [`AuthenticateOptions`](/sdks/js-core/api-reference/types/authenticateoptions)): `Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +Generates a session with user and tokens by exchanging authorization code from callback params. + +#### Parameters + +| Parameter | Type | Description | +| ----------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `code` | `string` | The authorization code received from the callback. | +| `redirectUri` | `string` | The redirect URI that was used in the authorization request. | +| `requestedScopes` | `string` | A space-separated list of scopes originally requested via the `/authorize` endpoint. This is stored in the session to ensure the correct access token can be identified and refreshed during `refreshSession()`. | +| `resource?` | `string` | A space-separated list of resource indicators originally requested via the `/authorize` endpoint. Used alongside scopes to uniquely identify and refresh the specific access token associated with these resources. | +| `options?` | [`AuthenticateOptions`](/sdks/js-core/api-reference/types/authenticateoptions) | Options for authenticating a user with authorization code. | + +#### Returns + +`Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +The user's session containing authentication tokens and user information. + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) - When the token scope does not contain the openid scope, +or if 'expires_in' or 'scope' is missing from the token response. + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the OpenID Provider returns a standardized. +OAuth 2.0 error response. + +#### Throws + +[MonoCloudTokenError](/sdks/js-core/api-reference/error-classes/monocloudtokenerror) - If ID Token validation fails. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### authorizationUrl() + +> **authorizationUrl**(`params`: [`AuthorizationParams`](/sdks/js-core/api-reference/types/authorizationparams)): `Promise`\<`string`\> + +Generates an authorization URL with specified parameters. + +If no values are provided for `responseType`, or `codeChallengeMethod`, they default to `code`, and `S256`, respectively. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------------------------------------------------------------------------------------- | ----------------------------- | +| `params` | [`AuthorizationParams`](/sdks/js-core/api-reference/types/authorizationparams) | Authorization URL parameters. | + +#### Returns + +`Promise`\<`string`\> + +Tenant's authorization URL. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### decodeJwt() + +> `static` **decodeJwt**(`jwt`: `string`): [`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims) + +Decodes the payload of a JSON Web Token (JWT) and returns it as an object. + +> Note: THIS METHOD DOES NOT VERIFY JWT TOKENS. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | -------------- | +| `jwt` | `string` | JWT to decode. | + +#### Returns + +[`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims) + +Decoded payload. + +#### Throws + +[MonoCloudTokenError](/sdks/js-core/api-reference/error-classes/monocloudtokenerror) - If decoding fails + +--- + +### endSessionUrl() + +> **endSessionUrl**(`params`: [`EndSessionParameters`](/sdks/js-core/api-reference/types/endsessionparameters)): `Promise`\<`string`\> + +Generates OpenID end session URL for signing out. + +Note - The `state` is added only when `postLogoutRedirectUri` is present. + +#### Parameters + +| Parameter | Type | Description | +| --------- | ---------------------------------------------------------------------------------------- | ------------------------------------ | +| `params` | [`EndSessionParameters`](/sdks/js-core/api-reference/types/endsessionparameters) | Parameters to build end session URL. | + +#### Returns + +`Promise`\<`string`\> + +Tenant's end session URL. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### exchangeAuthorizationCode() + +> **exchangeAuthorizationCode**(`code`: `string`, `redirectUri`: `string`, `codeVerifier?`: `string`, `resource?`: `string`): `Promise`\<[`Tokens`](/sdks/js-core/api-reference/types/tokens)\> + +Exchanges an authorization code for tokens. + +#### Parameters + +| Parameter | Type | Description | +| --------------- | -------- | ----------------------------------------------------------------------- | +| `code` | `string` | The authorization code received from the authorization server. | +| `redirectUri` | `string` | The redirect URI used in the initial authorization request. | +| `codeVerifier?` | `string` | Code verifier for PKCE. | +| `resource?` | `string` | Space-separated list of resources the access token should be scoped to. | + +#### Returns + +`Promise`\<[`Tokens`](/sdks/js-core/api-reference/types/tokens)\> + +Tokens obtained by exchanging an authorization code at the token endpoint. + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the OpenID Provider returns a standardized +OAuth 2.0 error response. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### getJwks() + +> **getJwks**(`forceRefresh`: `boolean`): `Promise`\<[`Jwks`](/sdks/js-core/api-reference/types/jwks)\> + +Fetches the JSON Web Keys used to sign the ID token. +The JWKS is cached for 1 minute. + +#### Parameters + +| Parameter | Type | Description | +| -------------- | --------- | ---------------------------------------------------------------------------- | +| `forceRefresh` | `boolean` | If `true`, bypasses the cache and fetches fresh set of JWKS from the server. | + +#### Returns + +`Promise`\<[`Jwks`](/sdks/js-core/api-reference/types/jwks)\> + +The JSON Web Key Set containing the public keys for token verification. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### getMetadata() + +> **getMetadata**(`forceRefresh`: `boolean`): `Promise`\<[`IssuerMetadata`](/sdks/js-core/api-reference/types/issuermetadata)\> + +Fetches the authorization server metadata from the .well-known endpoint. +The metadata is cached for 1 minute. + +#### Parameters + +| Parameter | Type | Description | +| -------------- | --------- | ------------------------------------------------------------------------- | +| `forceRefresh` | `boolean` | If `true`, bypasses the cache and fetches fresh metadata from the server. | + +#### Returns + +`Promise`\<[`IssuerMetadata`](/sdks/js-core/api-reference/types/issuermetadata)\> + +The issuer metadata for the tenant, retrieved from the OpenID Connect discovery endpoint. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### pushedAuthorizationRequest() + +> **pushedAuthorizationRequest**(`params`: [`PushedAuthorizationParams`](/sdks/js-core/api-reference/types/pushedauthorizationparams)): `Promise`\<[`ParResponse`](/sdks/js-core/api-reference/types/parresponse)\> + +Performs a pushed authorization request. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------------------------------------------------------------------------------------------------- | ------------------------- | +| `params` | [`PushedAuthorizationParams`](/sdks/js-core/api-reference/types/pushedauthorizationparams) | Authorization Parameters. | + +#### Returns + +`Promise`\<[`ParResponse`](/sdks/js-core/api-reference/types/parresponse)\> + +Response from Pushed Authorization Request (PAR) endpoint. + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the request is invalid. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### refetchUserInfo() + +> **refetchUserInfo**(`accessToken`: [`AccessToken`](/sdks/js-core/api-reference/types/accesstoken), `session`: [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession), `options?`: [`RefetchUserInfoOptions`](/sdks/js-core/api-reference/types/refetchuserinfooptions)): `Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +Refetches user information for an existing session using the userinfo endpoint. +Updates the session's user object with the latest user information while preserving existing properties. + +#### Parameters + +| Parameter | Type | Description | +| ------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------- | +| `accessToken` | [`AccessToken`](/sdks/js-core/api-reference/types/accesstoken) | Access token used to fetch the userinfo. | +| `session` | [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession) | The current MonoCloudSession. | +| `options?` | [`RefetchUserInfoOptions`](/sdks/js-core/api-reference/types/refetchuserinfooptions) | Userinfo refetch options. | + +#### Returns + +`Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +Updated session with the latest userinfo. + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) - When the token scope does not contain openid scope + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the OpenID Provider returns a standardized +OAuth 2.0 error response. + +#### Throws + +[MonoCloudTokenError](/sdks/js-core/api-reference/error-classes/monocloudtokenerror) - If ID Token validation fails + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### refreshGrant() + +> **refreshGrant**(`refreshToken`: `string`, `options?`: [`RefreshGrantOptions`](/sdks/js-core/api-reference/types/refreshgrantoptions)): `Promise`\<[`Tokens`](/sdks/js-core/api-reference/types/tokens)\> + +Exchanges a refresh token for new tokens. + +#### Parameters + +| Parameter | Type | Description | +| -------------- | -------------------------------------------------------------------------------------- | --------------------------------------------- | +| `refreshToken` | `string` | The refresh token used to request new tokens. | +| `options?` | [`RefreshGrantOptions`](/sdks/js-core/api-reference/types/refreshgrantoptions) | Refresh grant options. | + +#### Returns + +`Promise`\<[`Tokens`](/sdks/js-core/api-reference/types/tokens)\> + +Tokens obtained by exchanging a refresh token at the token endpoint. + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the OpenID Provider returns a standardized +OAuth 2.0 error response. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### refreshSession() + +> **refreshSession**(`session`: [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession), `options?`: [`RefreshSessionOptions`](/sdks/js-core/api-reference/types/refreshsessionoptions)): `Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +Refreshes an existing session using the refresh token. +This function requests new tokens using the refresh token and optionally updates user information. + +#### Parameters + +| Parameter | Type | Description | +| ---------- | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------- | +| `session` | [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession) | The current MonoCloudSession containing the refresh token. | +| `options?` | [`RefreshSessionOptions`](/sdks/js-core/api-reference/types/refreshsessionoptions) | Session refresh options. | + +#### Returns + +`Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +User's session containing refreshed authentication tokens and user information. + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) - If the refresh token is not present in the session, +or if 'expires_in' or 'scope' (including the openid scope) is missing from the token response. + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the OpenID Provider returns a standardized +OAuth 2.0 error response. + +#### Throws + +[MonoCloudTokenError](/sdks/js-core/api-reference/error-classes/monocloudtokenerror) - If ID Token validation fails + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### revokeToken() + +> **revokeToken**(`token`: `string`, `tokenType?`: `string`): `Promise`\<`void`\> + +Revokes an access token or refresh token, rendering it invalid for future use. + +#### Parameters + +| Parameter | Type | Description | +| ------------ | -------- | -------------------------------------------------------------- | +| `token` | `string` | The token string to be revoked. | +| `tokenType?` | `string` | Hint about the token type ('access_token' or 'refresh_token'). | + +#### Returns + +`Promise`\<`void`\> + +If token revocation succeeded. + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) - If token is invalid or unsupported token type + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the OpenID Provider returns a standardized +OAuth 2.0 error response. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +--- + +### userinfo() + +> **userinfo**(`accessToken`: `string`): `Promise`\<[`UserinfoResponse`](/sdks/js-core/api-reference/types/userinforesponse)\<[`Address`](/sdks/nodejs/api-reference/types/address)\>\> + +Fetches userinfo associated with the provided access token. + +#### Parameters + +| Parameter | Type | Description | +| ------------- | -------- | ----------------------------------------------- | +| `accessToken` | `string` | A valid access token used to retrieve userinfo. | + +#### Returns + +`Promise`\<[`UserinfoResponse`](/sdks/js-core/api-reference/types/userinforesponse)\<[`Address`](/sdks/nodejs/api-reference/types/address)\>\> + +The authenticated user's claims. + +#### Throws + +[MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) - When the OpenID Provider returns a standardized +OAuth 2.0 error (e.g., 'invalid_token') in the 'WWW-Authenticate' header +following a 401 Unauthorized response. + +#### Throws + +[MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) - Thrown if there is a network error during the request or +unexpected status code during the request or a serialization error while processing the response. + +#### Throws + +[MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) - When the access token is invalid. + +--- + +### validateIdToken() + +> **validateIdToken**(`idToken`: `string`, `jwks`: [`Jwk`](/sdks/js-core/api-reference/types/jwk)[], `clockSkew`: `number`, `clockTolerance`: `number`, `maxAge?`: `number`, `nonce?`: `string`): `Promise`\<[`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims)\> + +Validates an ID Token. + +#### Parameters + +| Parameter | Type | Description | +| ---------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------ | +| `idToken` | `string` | The ID Token JWT string to validate. | +| `jwks` | [`Jwk`](/sdks/js-core/api-reference/types/jwk)[] | Array of JSON Web Keys (JWK) used to verify the token's signature. | +| `clockSkew` | `number` | Number of seconds to adjust the current time to account for clock differences. | +| `clockTolerance` | `number` | Additional time tolerance in seconds for time-based claim validation. | +| `maxAge?` | `number` | Maximum authentication age in seconds. | +| `nonce?` | `string` | Nonce value to validate against the token's nonce claim. | + +#### Returns + +`Promise`\<[`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims)\> + +Validated ID Token claims. + +#### Throws + +[MonoCloudTokenError](/sdks/js-core/api-reference/error-classes/monocloudtokenerror) - If ID Token validation fails diff --git a/docs/markdown/Classes/_monocloud_auth-js-core.index.SessionStorage.md b/docs/markdown/Classes/_monocloud_auth-js-core.index.SessionStorage.md new file mode 100644 index 00000000..bb0de317 --- /dev/null +++ b/docs/markdown/Classes/_monocloud_auth-js-core.index.SessionStorage.md @@ -0,0 +1,94 @@ +--- +rootSdk: js-core +title: "SessionStorage" +category: Classes +--- + +# Class: SessionStorage + +`window.sessionStorage`-backed implementation of [IStorage](/sdks/js-core/api-reference/types/istorage). + +Data persists for the lifetime of the current browser tab. + +## Implements + +- [`IStorage`](/sdks/js-core/api-reference/types/istorage) + +## Constructors + +### Constructor + +> **new SessionStorage**(): `SessionStorage` + +#### Returns + +`SessionStorage` + +## Methods + +### getItem() + +> **getItem**(`key`: `string`): `Promise`\<`string` \| `null`\> + +Retrieves the value associated with the given key. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ------------------------------------------ | +| `key` | `string` | The unique identifier for the stored item. | + +#### Returns + +`Promise`\<`string` \| `null`\> + +The stored value as a string, or `null` if the key does not exist. + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`getItem`](/sdks/js-core/api-reference/types/istorage#getitem) + +--- + +### removeItem() + +> **removeItem**(`key`: `string`): `Promise`\<`void`\> + +Removes the item associated with the specified key from storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | -------------------------------------------- | +| `key` | `string` | The unique identifier of the item to remove. | + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`removeItem`](/sdks/js-core/api-reference/types/istorage#removeitem) + +--- + +### setItem() + +> **setItem**(`key`: `string`, `value`: `string`): `Promise`\<`void`\> + +Stores a key-value pair in the storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ----------------------------------- | +| `key` | `string` | The unique identifier for the item. | +| `value` | `string` | The string value to store. | + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IStorage`](/sdks/js-core/api-reference/types/istorage).[`setItem`](/sdks/js-core/api-reference/types/istorage#setitem) diff --git a/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudAuthBaseError.md b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudAuthBaseError.md new file mode 100644 index 00000000..ae245e3c --- /dev/null +++ b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudAuthBaseError.md @@ -0,0 +1,43 @@ +--- +rootSdk: js-core +title: "MonoCloudAuthBaseError" +category: Error Classes +--- + +# Error Class: MonoCloudAuthBaseError + +Base class for all MonoCloud authentication errors. + +All errors thrown by the MonoCloud SDK extend this class, allowing applications to safely detect and handle MonoCloud-specific failures using `instanceof`. + +## Extends + +- `Error` + +## Extended by + +- [`MonoCloudTokenError`](/sdks/js-core/api-reference/error-classes/monocloudtokenerror) +- [`MonoCloudHttpError`](/sdks/js-core/api-reference/error-classes/monocloudhttperror) +- [`MonoCloudOPError`](/sdks/js-core/api-reference/error-classes/monocloudoperror) +- [`MonoCloudValidationError`](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) +- [`MonoCloudJsError`](/sdks/js-core/api-reference/error-classes/monocloudjserror) + +## Constructors + +### Constructor + +> **new MonoCloudAuthBaseError**(`message?`: `string`): `MonoCloudAuthBaseError` + +#### Parameters + +| Parameter | Type | +| ---------- | -------- | +| `message?` | `string` | + +#### Returns + +`MonoCloudAuthBaseError` + +#### Inherited from + +`Error.constructor` diff --git a/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudHttpError.md b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudHttpError.md new file mode 100644 index 00000000..dc6340e0 --- /dev/null +++ b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudHttpError.md @@ -0,0 +1,35 @@ +--- +rootSdk: js-core +title: "MonoCloudHttpError" +category: Error Classes +--- + +# Error Class: MonoCloudHttpError + +Error thrown when a request to the MonoCloud authorization server fails. + +This error typically indicates a network failure, an unexpected HTTP response, or an unsuccessful response returned by the authorization server. + +## Extends + +- [`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror) + +## Constructors + +### Constructor + +> **new MonoCloudHttpError**(`message?`: `string`): `MonoCloudHttpError` + +#### Parameters + +| Parameter | Type | +| ---------- | -------- | +| `message?` | `string` | + +#### Returns + +`MonoCloudHttpError` + +#### Inherited from + +[`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror).[`constructor`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror#constructor) diff --git a/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudJsError.md b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudJsError.md new file mode 100644 index 00000000..d883c831 --- /dev/null +++ b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudJsError.md @@ -0,0 +1,35 @@ +--- +rootSdk: js-core +title: "MonoCloudJsError" +category: Error Classes +--- + +# Error Class: MonoCloudJsError + +Base class for all MonoCloud authentication errors. + +All errors thrown by the MonoCloud SDK extend this class, allowing applications to safely detect and handle MonoCloud-specific failures using `instanceof`. + +## Extends + +- [`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror) + +## Constructors + +### Constructor + +> **new MonoCloudJsError**(`message?`: `string`): `MonoCloudJsError` + +#### Parameters + +| Parameter | Type | +| ---------- | -------- | +| `message?` | `string` | + +#### Returns + +`MonoCloudJsError` + +#### Inherited from + +[`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror).[`constructor`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror#constructor) diff --git a/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudOPError.md b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudOPError.md new file mode 100644 index 00000000..fbd7dd04 --- /dev/null +++ b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudOPError.md @@ -0,0 +1,43 @@ +--- +rootSdk: js-core +title: "MonoCloudOPError" +category: Error Classes +--- + +# Error Class: MonoCloudOPError + +OAuth error returned by the authorization server during an authentication or token request. + +These errors correspond to standard OAuth / OpenID Connect error responses such as `invalid_request`, `access_denied`, or `invalid_grant`. + +## Extends + +- [`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror) + +## Constructors + +### Constructor + +> **new MonoCloudOPError**(`error`: `string`, `errorDescription?`: `string`): `MonoCloudOPError` + +#### Parameters + +| Parameter | Type | +| ------------------- | -------- | +| `error` | `string` | +| `errorDescription?` | `string` | + +#### Returns + +`MonoCloudOPError` + +#### Overrides + +[`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror).[`constructor`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror#constructor) + +## Properties + +| Property | Type | Description | +| ------------------------------------------------- | -------- | ------------------------------------------------------ | +| `error` | `string` | OAuth error code returned by the authorization server. | +| `errorDescription?` | `string` | Human-readable description of the error. | diff --git a/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudTokenError.md b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudTokenError.md new file mode 100644 index 00000000..3a8ec469 --- /dev/null +++ b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudTokenError.md @@ -0,0 +1,33 @@ +--- +rootSdk: js-core +title: "MonoCloudTokenError" +category: Error Classes +--- + +# Error Class: MonoCloudTokenError + +Error thrown when a token operation fails. + +## Extends + +- [`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror) + +## Constructors + +### Constructor + +> **new MonoCloudTokenError**(`message?`: `string`): `MonoCloudTokenError` + +#### Parameters + +| Parameter | Type | +| ---------- | -------- | +| `message?` | `string` | + +#### Returns + +`MonoCloudTokenError` + +#### Inherited from + +[`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror).[`constructor`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror#constructor) diff --git a/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudValidationError.md b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudValidationError.md new file mode 100644 index 00000000..46db843e --- /dev/null +++ b/docs/markdown/Error_Classes/_monocloud_auth-js-core.index.MonoCloudValidationError.md @@ -0,0 +1,33 @@ +--- +rootSdk: js-core +title: "MonoCloudValidationError" +category: Error Classes +--- + +# Error Class: MonoCloudValidationError + +Error thrown when validation fails. + +## Extends + +- [`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror) + +## Constructors + +### Constructor + +> **new MonoCloudValidationError**(`message?`: `string`): `MonoCloudValidationError` + +#### Parameters + +| Parameter | Type | +| ---------- | -------- | +| `message?` | `string` | + +#### Returns + +`MonoCloudValidationError` + +#### Inherited from + +[`MonoCloudAuthBaseError`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror).[`constructor`](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror#constructor) diff --git a/docs/markdown/Other/_monocloud_auth-js-core.index.md b/docs/markdown/Other/_monocloud_auth-js-core.index.md new file mode 100644 index 00000000..8bdc378e --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.index.md @@ -0,0 +1,78 @@ +--- +rootSdk: js-core +title: "index" +category: Other +--- + +# index + +## Classes + +- [LocalStorage](/sdks/js-core/api-reference/classes/localstorage) +- [MemoryStorage](/sdks/js-core/api-reference/classes/memorystorage) +- [MonoCloudJSCoreClient](/sdks/js-core/api-reference/classes/monocloudjscoreclient) +- [MonoCloudOidcClient](/sdks/js-core/api-reference/classes/monocloudoidcclient) +- [SessionStorage](/sdks/js-core/api-reference/classes/sessionstorage) + +## Error Classes + +- [MonoCloudAuthBaseError](/sdks/js-core/api-reference/error-classes/monocloudauthbaseerror) +- [MonoCloudHttpError](/sdks/js-core/api-reference/error-classes/monocloudhttperror) +- [MonoCloudJsError](/sdks/js-core/api-reference/error-classes/monocloudjserror) +- [MonoCloudOPError](/sdks/js-core/api-reference/error-classes/monocloudoperror) +- [MonoCloudTokenError](/sdks/js-core/api-reference/error-classes/monocloudtokenerror) +- [MonoCloudValidationError](/sdks/js-core/api-reference/error-classes/monocloudvalidationerror) + +## Types + +- [AccessToken](/sdks/js-core/api-reference/types/accesstoken) +- [ApplicationState](/sdks/js-core/api-reference/types/applicationstate) +- [AuthenticateOptions](/sdks/js-core/api-reference/types/authenticateoptions) +- [AuthorizationParams](/sdks/js-core/api-reference/types/authorizationparams) +- [AuthState](/sdks/js-core/api-reference/types/authstate) +- [CallbackParams](/sdks/js-core/api-reference/types/callbackparams) +- [CallbackState](/sdks/js-core/api-reference/types/callbackstate) +- [EndSessionParameters](/sdks/js-core/api-reference/types/endsessionparameters) +- [GetTokensOptions](/sdks/js-core/api-reference/types/gettokensoptions) +- [Group](/sdks/js-core/api-reference/types/group) +- [IdTokenClaims](/sdks/js-core/api-reference/types/idtokenclaims) +- [Indicator](/sdks/js-core/api-reference/types/indicator) +- [IssuerMetadata](/sdks/js-core/api-reference/types/issuermetadata) +- [IStorage](/sdks/js-core/api-reference/types/istorage) +- [Jwk](/sdks/js-core/api-reference/types/jwk) +- [Jwks](/sdks/js-core/api-reference/types/jwks) +- [JwsHeaderParameters](/sdks/js-core/api-reference/types/jwsheaderparameters) +- [MonoCloudClientOptions](/sdks/js-core/api-reference/types/monocloudclientoptions) +- [MonoCloudJSCoreClientOptions](/sdks/js-core/api-reference/types/monocloudjscoreclientoptions) +- [MonoCloudSession](/sdks/js-core/api-reference/types/monocloudsession) +- [MonoCloudTokens](/sdks/js-core/api-reference/types/monocloudtokens) +- [MonoCloudUser](/sdks/js-core/api-reference/types/monoclouduser) +- [ParResponse](/sdks/js-core/api-reference/types/parresponse) +- [PostCallbackParams](/sdks/js-core/api-reference/types/postcallbackparams) +- [PushedAuthorizationParams](/sdks/js-core/api-reference/types/pushedauthorizationparams) +- [RefetchUserInfoOptions](/sdks/js-core/api-reference/types/refetchuserinfooptions) +- [RefreshGrantOptions](/sdks/js-core/api-reference/types/refreshgrantoptions) +- [RefreshOptions](/sdks/js-core/api-reference/types/refreshoptions) +- [RefreshSessionOptions](/sdks/js-core/api-reference/types/refreshsessionoptions) +- [SignInOptions](/sdks/js-core/api-reference/types/signinoptions) +- [SignOutOptions](/sdks/js-core/api-reference/types/signoutoptions) +- [Tokens](/sdks/js-core/api-reference/types/tokens) +- [UserinfoResponse](/sdks/js-core/api-reference/types/userinforesponse) + +## Types (Enums) + +- [Authenticators](/sdks/js-core/api-reference/enums/authenticators) +- [ClientAuthMethod](/sdks/js-core/api-reference/enums/clientauthmethod) +- [CodeChallengeMethod](/sdks/js-core/api-reference/enums/codechallengemethod) +- [DisplayOptions](/sdks/js-core/api-reference/enums/displayoptions) +- [InteractionMode](/sdks/js-core/api-reference/enums/interactionmode) +- [Prompt](/sdks/js-core/api-reference/enums/prompt) +- [RefreshMode](/sdks/js-core/api-reference/enums/refreshmode) +- [ResponseModes](/sdks/js-core/api-reference/enums/responsemodes) +- [ResponseTypes](/sdks/js-core/api-reference/enums/responsetypes) +- [SecurityAlgorithms](/sdks/js-core/api-reference/enums/securityalgorithms) + +## Types (Handler) + +- [OnSessionCreating](/sdks/js-core/api-reference/handler-types/onsessioncreating) +- [PostCallback](/sdks/js-core/api-reference/handler-types/postcallback) diff --git a/docs/markdown/Other/_monocloud_auth-js-core.md b/docs/markdown/Other/_monocloud_auth-js-core.md new file mode 100644 index 00000000..01f71d4d --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.md @@ -0,0 +1,13 @@ +--- +rootSdk: js-core +title: "@monocloud/auth-js-core" +category: Other +--- + +# auth-js-core + +## Modules + +- [index](/sdks/js-core/api-reference/undefined/index) +- [utils](/sdks/js-core/api-reference/undefined/utils) +- [utils/internal](/sdks/js-core/api-reference/undefined/utils_internal) diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.decrypt.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.decrypt.md new file mode 100644 index 00000000..2dbfee1c --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.decrypt.md @@ -0,0 +1,24 @@ +--- +rootSdk: js-core +title: "decrypt" +category: Other +--- + +# decrypt + +> **decrypt**(`encrypted`: `string`, `secret`: `string`): `Promise`\<`string` \| `undefined`\> + +Decrypts an encrypted string using a secret with AES-GCM. + +## Parameters + +| Parameter | Type | Description | +| ----------- | -------- | --------------------------------------------- | +| `encrypted` | `string` | The ciphertext to decrypt. | +| `secret` | `string` | The secret used to derive the decryption key. | + +## Returns + +`Promise`\<`string` \| `undefined`\> + +Decrypted plaintext string or undefined if decryption fails. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.decryptAuthState.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.decryptAuthState.md new file mode 100644 index 00000000..f84c097c --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.decryptAuthState.md @@ -0,0 +1,34 @@ +--- +rootSdk: js-core +title: "decryptAuthState" +category: Other +--- + +# decryptAuthState + +> **decryptAuthState**\<`T`\>(`encryptedAuthState`: `string`, `secret`: `string`): `Promise`\<`T`\> + +Decrypts an encrypted AuthState. + +## Type Parameters + +| Type Parameter | +| -------------------------------------------------------------------------------- | +| `T` _extends_ [`AuthState`](/sdks/js-core/api-reference/types/authstate) | + +## Parameters + +| Parameter | Type | Description | +| -------------------- | -------- | ------------------------------------------- | +| `encryptedAuthState` | `string` | The encrypted auth state string to decrypt. | +| `secret` | `string` | The secret used for decryption. | + +## Returns + +`Promise`\<`T`\> + +State object on success. + +## Throws + +If decryption fails or the auth state has expired. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.decryptSession.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.decryptSession.md new file mode 100644 index 00000000..88dd0bf5 --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.decryptSession.md @@ -0,0 +1,28 @@ +--- +rootSdk: js-core +title: "decryptSession" +category: Other +--- + +# decryptSession + +> **decryptSession**(`encryptedSession`: `string`, `secret`: `string`): `Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +Decrypts an encrypted MonoCloud session. + +## Parameters + +| Parameter | Type | Description | +| ------------------ | -------- | ---------------------------------------- | +| `encryptedSession` | `string` | The encrypted session string to decrypt. | +| `secret` | `string` | The secret used for decryption. | + +## Returns + +`Promise`\<[`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession)\> + +Session object on success. + +## Throws + +If decryption fails or the session has expired. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.encrypt.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.encrypt.md new file mode 100644 index 00000000..1f12475e --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.encrypt.md @@ -0,0 +1,24 @@ +--- +rootSdk: js-core +title: "encrypt" +category: Other +--- + +# encrypt + +> **encrypt**(`data`: `string`, `secret`: `string`): `Promise`\<`string`\> + +Encrypts a given string using a secret with AES-GCM. + +## Parameters + +| Parameter | Type | Description | +| --------- | -------- | --------------------------------------------- | +| `data` | `string` | The plaintext data to encrypt. | +| `secret` | `string` | The secret used to derive the encryption key. | + +## Returns + +`Promise`\<`string`\> + +Base64-encoded ciphertext. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.encryptAuthState.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.encryptAuthState.md new file mode 100644 index 00000000..dfc9b8cd --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.encryptAuthState.md @@ -0,0 +1,31 @@ +--- +rootSdk: js-core +title: "encryptAuthState" +category: Other +--- + +# encryptAuthState + +> **encryptAuthState**\<`T`\>(`authState`: `T`, `secret`: `string`, `ttl?`: `number`): `Promise`\<`string`\> + +Encrypts an AuthState object with a secret and optional time-to-live (TTL). + +## Type Parameters + +| Type Parameter | +| -------------------------------------------------------------------------------- | +| `T` _extends_ [`AuthState`](/sdks/js-core/api-reference/types/authstate) | + +## Parameters + +| Parameter | Type | Description | +| ----------- | -------- | --------------------------------------------------------------------- | +| `authState` | `T` | A type that extends the AuthState interface. | +| `secret` | `string` | The secret used for encryption. | +| `ttl?` | `number` | Optional time-to-live in seconds, after which the auth state expires. | + +## Returns + +`Promise`\<`string`\> + +Encrypted auth state string. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.encryptSession.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.encryptSession.md new file mode 100644 index 00000000..d4aa30b6 --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.encryptSession.md @@ -0,0 +1,25 @@ +--- +rootSdk: js-core +title: "encryptSession" +category: Other +--- + +# encryptSession + +> **encryptSession**(`session`: [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession), `secret`: `string`, `ttl?`: `number`): `Promise`\<`string`\> + +Encrypts a MonoCloud session object with a secret and optional time-to-live (TTL). + +## Parameters + +| Parameter | Type | Description | +| --------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------ | +| `session` | [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession) | The session object to encrypt. | +| `secret` | `string` | The secret used for encryption. | +| `ttl?` | `number` | Optional time-to-live in seconds, after which the session expires. | + +## Returns + +`Promise`\<`string`\> + +Encrypted session string. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.generateNonce.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.generateNonce.md new file mode 100644 index 00000000..fa4f6e32 --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.generateNonce.md @@ -0,0 +1,15 @@ +--- +rootSdk: js-core +title: "generateNonce" +category: Other +--- + +# generateNonce + +> **generateNonce**(): `string` + +Generates a random nonce string. + +## Returns + +`string` diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.generatePKCE.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.generatePKCE.md new file mode 100644 index 00000000..bf680041 --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.generatePKCE.md @@ -0,0 +1,15 @@ +--- +rootSdk: js-core +title: "generatePKCE" +category: Other +--- + +# generatePKCE + +> **generatePKCE**(): `Promise`\<\{ `codeChallenge`: `string`; `codeVerifier`: `string`; \}\> + +Generates a PKCE (Proof Key for Code Exchange) code verifier and code challenge. + +## Returns + +`Promise`\<\{ `codeChallenge`: `string`; `codeVerifier`: `string`; \}\> diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.generateState.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.generateState.md new file mode 100644 index 00000000..07e97418 --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.generateState.md @@ -0,0 +1,15 @@ +--- +rootSdk: js-core +title: "generateState" +category: Other +--- + +# generateState + +> **generateState**(): `string` + +Generates a random state string. + +## Returns + +`string` diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.isUserInGroup.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.isUserInGroup.md new file mode 100644 index 00000000..d6f74b8e --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.isUserInGroup.md @@ -0,0 +1,26 @@ +--- +rootSdk: js-core +title: "isUserInGroup" +category: Other +--- + +# isUserInGroup + +> **isUserInGroup**(`user`: [`MonoCloudUser`](/sdks/js-core/api-reference/types/monoclouduser) \| [`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims), `groups`: `string`[], `groupsClaim`: `string`, `matchAll`: `boolean`): `boolean` + +Checks if a user is a member of a specified group or groups. + +## Parameters + +| Parameter | Type | Description | +| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `user` | [`MonoCloudUser`](/sdks/js-core/api-reference/types/monoclouduser) \| [`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims) | The user. | +| `groups` | `string`[] | An array of group names or IDs to check membership against. | +| `groupsClaim` | `string` | The claim in the user object that contains groups. | +| `matchAll` | `boolean` | If `true`, requires the user to be in all specified groups; if `false`, checks if the user is in at least one of the groups. | + +## Returns + +`boolean` + +`true` if the user is in the specified groups, `false` otherwise. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.md new file mode 100644 index 00000000..9534d9d0 --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.md @@ -0,0 +1,21 @@ +--- +rootSdk: js-core +title: "utils" +category: Other +--- + +# utils + +## Functions + +- [decrypt](/sdks/js-core/api-reference/undefined/decrypt) +- [decryptAuthState](/sdks/js-core/api-reference/undefined/decryptauthstate) +- [decryptSession](/sdks/js-core/api-reference/undefined/decryptsession) +- [encrypt](/sdks/js-core/api-reference/undefined/encrypt) +- [encryptAuthState](/sdks/js-core/api-reference/undefined/encryptauthstate) +- [encryptSession](/sdks/js-core/api-reference/undefined/encryptsession) +- [generateNonce](/sdks/js-core/api-reference/undefined/generatenonce) +- [generatePKCE](/sdks/js-core/api-reference/undefined/generatepkce) +- [generateState](/sdks/js-core/api-reference/undefined/generatestate) +- [isUserInGroup](/sdks/js-core/api-reference/undefined/isuseringroup) +- [parseCallbackParams](/sdks/js-core/api-reference/undefined/parsecallbackparams) diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils.parseCallbackParams.md b/docs/markdown/Other/_monocloud_auth-js-core.utils.parseCallbackParams.md new file mode 100644 index 00000000..4e23c7df --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils.parseCallbackParams.md @@ -0,0 +1,21 @@ +--- +rootSdk: js-core +title: "parseCallbackParams" +category: Other +--- + +# parseCallbackParams + +> **parseCallbackParams**(`queryOrUrl`: `string` \| `URL` \| `URLSearchParams`): [`CallbackParams`](/sdks/js-core/api-reference/types/callbackparams) + +Parses callback parameters from a URL, a URLSearchParams object, or a query string. + +## Parameters + +| Parameter | Type | +| ------------ | -------------------------------------- | +| `queryOrUrl` | `string` \| `URL` \| `URLSearchParams` | + +## Returns + +[`CallbackParams`](/sdks/js-core/api-reference/types/callbackparams) diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.findToken.md b/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.findToken.md new file mode 100644 index 00000000..2ba969ab --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.findToken.md @@ -0,0 +1,25 @@ +--- +rootSdk: js-core +title: "findToken" +category: Other +--- + +# findToken + +> **findToken**(`tokens?`: [`AccessToken`](/sdks/js-core/api-reference/types/accesstoken)[], `resource?`: `string`, `scopes?`: `string`): [`AccessToken`](/sdks/js-core/api-reference/types/accesstoken) \| `undefined` + +Finds a specific access token in an array based on resource and scopes. + +## Parameters + +| Parameter | Type | Description | +| ----------- | ------------------------------------------------------------------------ | ------------------------------------ | +| `tokens?` | [`AccessToken`](/sdks/js-core/api-reference/types/accesstoken)[] | The array of access tokens. | +| `resource?` | `string` | Space-separated resource indicators. | +| `scopes?` | `string` | Space-separated scopes. | + +## Returns + +[`AccessToken`](/sdks/js-core/api-reference/types/accesstoken) \| `undefined` + +The matching AccessToken, or `undefined` if not found. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.getPublicSigKeyFromIssuerJwks.md b/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.getPublicSigKeyFromIssuerJwks.md new file mode 100644 index 00000000..4688552f --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.getPublicSigKeyFromIssuerJwks.md @@ -0,0 +1,28 @@ +--- +rootSdk: js-core +title: "getPublicSigKeyFromIssuerJwks" +category: Other +--- + +# getPublicSigKeyFromIssuerJwks + +> **getPublicSigKeyFromIssuerJwks**(`jwks`: [`Jwk`](/sdks/js-core/api-reference/types/jwk)[], `header`: [`JwsHeaderParameters`](/sdks/js-core/api-reference/types/jwsheaderparameters)): `Promise`\<`CryptoKey`\> + +Retrieves a public CryptoKey from a JWK set based on the JWS header. + +## Parameters + +| Parameter | Type | Description | +| --------- | -------------------------------------------------------------------------------------- | --------------------------------------------------- | +| `jwks` | [`Jwk`](/sdks/js-core/api-reference/types/jwk)[] | The set of JSON Web Keys. | +| `header` | [`JwsHeaderParameters`](/sdks/js-core/api-reference/types/jwsheaderparameters) | The JWS header containing the algorithm and key ID. | + +## Returns + +`Promise`\<`CryptoKey`\> + +A promise that resolves to the CryptoKey. + +## Throws + +If no applicable key or multiple keys are found or the algorithm is unsupported. diff --git a/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.md b/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.md new file mode 100644 index 00000000..40e0bec9 --- /dev/null +++ b/docs/markdown/Other/_monocloud_auth-js-core.utils_internal.md @@ -0,0 +1,12 @@ +--- +rootSdk: js-core +title: "utils/internal" +category: Other +--- + +# internal + +## Functions + +- [findToken](/sdks/js-core/api-reference/undefined/findtoken) +- [getPublicSigKeyFromIssuerJwks](/sdks/js-core/api-reference/undefined/getpublicsigkeyfromissuerjwks) diff --git a/docs/markdown/Types/_monocloud_auth-core.index.CallbackParams.md b/docs/markdown/Types/_monocloud_auth-core.index.CallbackParams.md index 2150223e..b7bec971 100644 --- a/docs/markdown/Types/_monocloud_auth-core.index.CallbackParams.md +++ b/docs/markdown/Types/_monocloud_auth-core.index.CallbackParams.md @@ -19,5 +19,6 @@ Parameters returned to the application after the authorization server redirects | `expiresIn?` | `number` | Lifetime of the access token in seconds. | | `idToken?` | `string` | ID token issued by the authorization server. | | `refreshToken?` | `string` | Refresh token issued during authorization (if enabled). | +| `scope?` | `string` | Access token scopes (Implicit Flow) | | `sessionState?` | `string` | OIDC session state value used for session monitoring and front-channel session management. | | `state?` | `string` | The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.AccessToken.md b/docs/markdown/Types/_monocloud_auth-js-core.index.AccessToken.md new file mode 100644 index 00000000..650c336a --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.AccessToken.md @@ -0,0 +1,23 @@ +--- +rootSdk: js-core +title: "AccessToken" +category: Types +--- + +# Type: AccessToken + +Represents an OAuth 2.0 access token and its associated metadata. + +## Extended by + +- [`MonoCloudTokens`](/sdks/js-core/api-reference/types/monocloudtokens) + +## Properties + +| Property | Type | Description | +| ---------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `accessToken` | `string` | The issued access token. | +| `accessTokenExpiration` | `number` | The expiration time of the access token (Unix epoch, in seconds). | +| `requestedScopes?` | `string` | Optional space-separated list of scopes originally requested during token acquisition. | +| `resource?` | `string` | Optional resource (audience) that the access token is scoped for. | +| `scopes` | `string` | Space-separated list of scopes granted to the access token. These represent the effective permissions approved by the authorization server. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.ApplicationState.md b/docs/markdown/Types/_monocloud_auth-js-core.index.ApplicationState.md new file mode 100644 index 00000000..70aa6873 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.ApplicationState.md @@ -0,0 +1,11 @@ +--- +rootSdk: js-core +title: "ApplicationState" +category: Types +--- + +# Type: ApplicationState + +> **ApplicationState** = `Record`\<`string`, `any`\> + +Custom application state passed through authentication flows. diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.AuthState.md b/docs/markdown/Types/_monocloud_auth-js-core.index.AuthState.md new file mode 100644 index 00000000..fe7121ef --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.AuthState.md @@ -0,0 +1,20 @@ +--- +rootSdk: js-core +title: "AuthState" +category: Types +--- + +# Type: AuthState + +Represents the authentication transaction state stored between the authorization request and the callback. + +## Properties + +| Property | Type | Description | +| ----------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | +| `codeVerifier?` | `string` | Optional. PKCE code verifier used to validate the authorization code exchange. | +| `maxAge?` | `number` | Optional. Maximum allowed time (in seconds) since the user's last authentication. | +| `nonce` | `string` | A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks. | +| `resource?` | `string` | Optional. Space-separated list of resource indicators requested for the access token. | +| `scopes` | `string` | Space-separated list of scopes requested during authorization. | +| `state` | `string` | A unique value used to correlate the authorization request with the callback and protect against CSRF attacks. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.AuthenticateOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.AuthenticateOptions.md new file mode 100644 index 00000000..18b88477 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.AuthenticateOptions.md @@ -0,0 +1,24 @@ +--- +rootSdk: js-core +title: "AuthenticateOptions" +category: Types +--- + +# Type: AuthenticateOptions + +Options used when authenticating a user via the Authorization Code flow. + +## Properties + +| Property | Type | Description | +| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `codeVerifier?` | `string` | PKCE code verifier associated with the authorization request. | +| `fetchUserInfo?` | `boolean` | When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object. | +| `filteredIdTokenClaims?` | `string`[] | List of ID token claims to remove before storing the session. | +| `idTokenClockSkew?` | `number` | Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server. | +| `idTokenClockTolerance?` | `number` | Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as `exp`, `iat`, and `nbf`. | +| `idTokenMaxAge?` | `number` | Maximum allowed authentication age (in seconds) for the ID token. | +| `idTokenNonce?` | `string` | Nonce value expected in the ID token. Used to prevent replay attacks. | +| `jwks?` | [`Jwks`](/sdks/js-core/api-reference/types/jwks) | JSON Web Key Set used to validate the ID token signature. If not provided, the JWKS is automatically fetched from the authorization server metadata. | +| `onSessionCreating?` | [`OnSessionCreating`](/sdks/nodejs/api-reference/handler-types/onsessioncreating) | Callback invoked before a session is created or updated. Allows customization or enrichment of the session. | +| `validateIdToken?` | `boolean` | Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.AuthorizationParams.md b/docs/markdown/Types/_monocloud_auth-js-core.index.AuthorizationParams.md new file mode 100644 index 00000000..7763cf41 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.AuthorizationParams.md @@ -0,0 +1,32 @@ +--- +rootSdk: js-core +title: "AuthorizationParams" +category: Types +--- + +# Type: AuthorizationParams + +Parameters used to construct an OAuth 2.0 / OpenID Connect authorization request. + +## Properties + +| Property | Type | Description | +| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `acrValues?` | `string`[] | Authentication Context Class Reference (ACR) values requesting specific authentication assurance levels or methods. | +| `authenticatorHint?` | [`Authenticators`](/sdks/js-core/api-reference/enums/authenticators) | Hint to the authorization server indicating which authenticator or connection should be used. | +| `codeChallenge?` | `string` | PKCE code challenge derived from the code verifier. Used to secure authorization code exchanges. | +| `codeChallengeMethod?` | [`CodeChallengeMethod`](/sdks/js-core/api-reference/enums/codechallengemethod) | Method used to generate the PKCE code challenge. | +| `display?` | [`DisplayOptions`](/sdks/js-core/api-reference/enums/displayoptions) | Preferred display mode for the authentication UI. | +| `loginHint?` | `string` | Hint identifying the user (for example, email or username). Used to prefill or optimize the sign-in experience. | +| `maxAge?` | `number` | Maximum acceptable time (in seconds) since the user last authenticated. If exceeded, the user may be required to sign in again. | +| `nonce?` | `string` | A cryptographically random value included in the ID token to prevent replay attacks. | +| `prompt?` | [`Prompt`](/sdks/js-core/api-reference/enums/prompt) | Controls authentication interaction behavior. For example, forcing login or consent. | +| `redirectUri?` | `string` | The redirect URI where the authorization server sends the user after authentication completes. | +| `request?` | `string` | A signed JWT containing authorization request parameters. | +| `requestUri?` | `string` | URI referencing a previously created authorization request (typically via Pushed Authorization Requests — PAR). When set, other authorization parameters may be ignored. | +| `resource?` | `string` | Space-separated list of resource indicators that scope the issued access token. | +| `responseMode?` | [`ResponseModes`](/sdks/js-core/api-reference/enums/responsemodes) | Specifies how the authorization response is returned to the client. | +| `responseType?` | [`ResponseTypes`](/sdks/js-core/api-reference/enums/responsetypes) | Determines which artifacts are returned from the authorization endpoint. | +| `scopes?` | `string` | Space-separated list of scopes requested during authentication. | +| `state?` | `string` | A cryptographically random value used to maintain request state and protect against CSRF attacks. | +| `uiLocales?` | `string` | Preferred UI language. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.CallbackParams.md b/docs/markdown/Types/_monocloud_auth-js-core.index.CallbackParams.md new file mode 100644 index 00000000..fcef5261 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.CallbackParams.md @@ -0,0 +1,24 @@ +--- +rootSdk: js-core +title: "CallbackParams" +category: Types +--- + +# Type: CallbackParams + +Parameters returned to the application after the authorization server redirects the user back to the callback URL. + +## Properties + +| Property | Type | Description | +| ------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | +| `accessToken?` | `string` | Access token returned directly by implicit or hybrid flows. | +| `code?` | `string` | Authorization code returned when using the Authorization Code Flow. | +| `error?` | `string` | Error code returned when authorization fails. | +| `errorDescription?` | `string` | Human-readable description providing additional information about the authorization error. | +| `expiresIn?` | `number` | Lifetime of the access token in seconds. | +| `idToken?` | `string` | ID token issued by the authorization server. | +| `refreshToken?` | `string` | Refresh token issued during authorization (if enabled). | +| `scope?` | `string` | Access token scopes (Implicit Flow) | +| `sessionState?` | `string` | OIDC session state value used for session monitoring and front-channel session management. | +| `state?` | `string` | The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.CallbackState.md b/docs/markdown/Types/_monocloud_auth-js-core.index.CallbackState.md new file mode 100644 index 00000000..764765b7 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.CallbackState.md @@ -0,0 +1,29 @@ +--- +rootSdk: js-core +title: "CallbackState" +category: Types +--- + +# Type: CallbackState + +Internal state persisted between authorization start and callback processing. + +## Extends + +- `Partial`\<[`AuthState`](/sdks/js-core/api-reference/types/authstate)\> + +## Properties + +| Property | Type | Description | +| ----------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | +| `appState?` | [`ApplicationState`](/sdks/js-core/api-reference/types/applicationstate) | - | +| `codeVerifier?` | `string` | Optional. PKCE code verifier used to validate the authorization code exchange. | +| `maxAge?` | `number` | Optional. Maximum allowed time (in seconds) since the user's last authentication. | +| `mode` | `"popup"` \| `"redirect"` \| `"silent"` | - | +| `nonce?` | `string` | A cryptographic value used to associate the ID token with the original authentication request and prevent replay attacks. | +| `resource?` | `string` | Optional. Space-separated list of resource indicators requested for the access token. | +| `responseType?` | [`ResponseTypes`](/sdks/js-core/api-reference/enums/responsetypes) | - | +| `returnUrl?` | `string` | - | +| `scopes?` | `string` | Space-separated list of scopes requested during authorization. | +| `signOut?` | `boolean` | - | +| `state?` | `string` | A unique value used to correlate the authorization request with the callback and protect against CSRF attacks. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.EndSessionParameters.md b/docs/markdown/Types/_monocloud_auth-js-core.index.EndSessionParameters.md new file mode 100644 index 00000000..4cec3da0 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.EndSessionParameters.md @@ -0,0 +1,17 @@ +--- +rootSdk: js-core +title: "EndSessionParameters" +category: Types +--- + +# Type: EndSessionParameters + +Parameters used to construct an OpenID Connect end-session (sign-out) request. + +## Properties + +| Property | Type | Description | +| ----------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `idToken?` | `string` | ID token hint identifying the session to terminate. When provided, the authorization server can use this value to determine which user session should be signed out. | +| `postLogoutRedirectUri?` | `string` | The URL the authorization server should redirect the user to after a successful sign-out. | +| `state?` | `string` | Optional state value returned to the application after sign-out. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.GetTokensOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.GetTokensOptions.md new file mode 100644 index 00000000..43e6d9e1 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.GetTokensOptions.md @@ -0,0 +1,22 @@ +--- +rootSdk: js-core +title: "GetTokensOptions" +category: Types +--- + +# Type: GetTokensOptions + +Options for `getTokens()`. + +## Extends + +- [`RefreshGrantOptions`](/sdks/js-core/api-reference/types/refreshgrantoptions) + +## Properties + +| Property | Type | Description | +| ----------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `forceRefresh?` | `boolean` | Specifies whether to force the refresh of the access token. | +| `refetchUserInfo?` | `boolean` | Determines whether to refetch the user information. | +| `resource?` | `string` | Space-separated list of resource indicators that the new access token should be issued for. The requested resources must have been previously granted during the original authorization flow. | +| `scopes?` | `string` | Space-separated list of scopes to request for the refreshed access token. The requested scopes must have been granted during the original authorization flow. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.Group.md b/docs/markdown/Types/_monocloud_auth-js-core.index.Group.md new file mode 100644 index 00000000..a86ea4d8 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.Group.md @@ -0,0 +1,26 @@ +--- +rootSdk: js-core +title: "Group" +category: Types +--- + +# Type: Group + +> **Group** = \{ `id`: `string`; `name`: `string`; \} \| `string` + +Represents a user group included in the authenticated session. + +## Type Declaration + +\{ `id`: `string`; `name`: `string`; \} + +| Name | Type | +| ------ | -------- | +| `id` | `string` | +| `name` | `string` | + +Structured group representation. + +`string` + +Group identifier or group name. diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.IStorage.md b/docs/markdown/Types/_monocloud_auth-js-core.index.IStorage.md new file mode 100644 index 00000000..20d120e4 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.IStorage.md @@ -0,0 +1,66 @@ +--- +rootSdk: js-core +title: "IStorage" +category: Types +--- + +# Type: IStorage + +Defines a storage adapter used to persist session data. + +## Methods + +### getItem() + +> **getItem**(`key`: `string`): `Promise`\<`string` \| `null`\> + +Retrieves the value associated with the given key. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ------------------------------------------ | +| `key` | `string` | The unique identifier for the stored item. | + +#### Returns + +`Promise`\<`string` \| `null`\> + +The stored value as a string, or `null` if the key does not exist. + +--- + +### removeItem() + +> **removeItem**(`key`: `string`): `Promise`\<`void`\> + +Removes the item associated with the specified key from storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | -------------------------------------------- | +| `key` | `string` | The unique identifier of the item to remove. | + +#### Returns + +`Promise`\<`void`\> + +--- + +### setItem() + +> **setItem**(`key`: `string`, `value`: `string`): `Promise`\<`void`\> + +Stores a key-value pair in the storage. + +#### Parameters + +| Parameter | Type | Description | +| --------- | -------- | ----------------------------------- | +| `key` | `string` | The unique identifier for the item. | +| `value` | `string` | The string value to store. | + +#### Returns + +`Promise`\<`void`\> diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.IdTokenClaims.md b/docs/markdown/Types/_monocloud_auth-js-core.index.IdTokenClaims.md new file mode 100644 index 00000000..f5ed5e17 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.IdTokenClaims.md @@ -0,0 +1,57 @@ +--- +rootSdk: js-core +title: "IdTokenClaims" +category: Types +--- + +# Type: IdTokenClaims + +Standard OpenID Connect ID Token claims. + +## Extends + +- [`UserinfoResponse`](/sdks/js-core/api-reference/types/userinforesponse) + +## Indexable + +\[`key`: `string`\]: `unknown` + +Additional custom or provider-specific claims. + +## Properties + +| Property | Type | Description | +| ----------------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `acr?` | `string` | Authentication Context Class Reference. Indicates the assurance level of the authentication performed. | +| `address?` | [`Address`](/sdks/nodejs/api-reference/types/address) | Postal address. | +| `amr?` | `string`[] | Authentication Methods References. Lists the authentication methods used (for example: `pwd`, `mfa`, `otp`). | +| `at_hash?` | `string` | Access token hash. Used to validate access tokens returned alongside the ID token. | +| `aud` | `string` \| `string`[] | Intended audience(s) of the ID token. | +| `auth_time?` | `number` | Time when the end-user authentication occurred (Unix epoch seconds). | +| `azp?` | `string` | Authorized party - identifies the client to which the ID token was issued. | +| `birthdate?` | `string` | Birthday. | +| `c_hash?` | `string` | Authorization code hash. Used to validate authorization codes returned with hybrid flows. | +| `email?` | `string` | Email address. | +| `email_verified?` | `boolean` | Whether the email address has been verified by the provider. | +| `exp` | `number` | Expiration time of the ID token (Unix epoch seconds). | +| `family_name?` | `string` | Surname(s) / last name. | +| `gender?` | `string` | Gender. | +| `given_name?` | `string` | Given name(s) / first name. | +| `groups?` | [`Group`](/sdks/js-core/api-reference/types/group)[] | Group memberships for the user. | +| `iat` | `number` | Time at which the ID token was issued (Unix epoch seconds). | +| `iss` | `string` | Issuer identifier - the authorization server that issued the token. | +| `locale?` | `string` | Locale. | +| `middle_name?` | `string` | Middle name(s). | +| `name?` | `string` | Full name of the user (e.g. "Jane Doe"). | +| `nickname?` | `string` | Casual name used by the user. | +| `nonce?` | `string` | Nonce value used to associate the authentication request with the issued ID token and prevent replay attacks. | +| `phone_number?` | `string` | Phone number (formatted in E.164 standard). | +| `phone_number_verified?` | `boolean` | Whether the phone number has been verified by the provider. | +| `picture?` | `string` | URL of the user's profile picture. | +| `preferred_username?` | `string` | Preferred username. | +| `profile?` | `string` | URL of the user's profile page. | +| `s_hash?` | `string` | State hash (used in some hybrid flow validations). | +| `sub` | `string` | Subject identifier — uniquely identifies the authenticated user. | +| `updated_at?` | `number` | Time the user's information was last updated (seconds since epoch). | +| `website?` | `string` | URL of the user's website. | +| `zoneinfo?` | `string` | Time zone name. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.Indicator.md b/docs/markdown/Types/_monocloud_auth-js-core.index.Indicator.md new file mode 100644 index 00000000..5a095300 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.Indicator.md @@ -0,0 +1,16 @@ +--- +rootSdk: js-core +title: "Indicator" +category: Types +--- + +# Type: Indicator + +Represents an additional resource indicator that can be requested when acquiring tokens. + +## Properties + +| Property | Type | Description | +| -------------------------------- | -------- | --------------------------------------------------------------- | +| `resource` | `string` | Space-separated list of resources to scope the access token to. | +| `scopes?` | `string` | Optional space-separated list of scopes to request. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.IssuerMetadata.md b/docs/markdown/Types/_monocloud_auth-js-core.index.IssuerMetadata.md new file mode 100644 index 00000000..278615c1 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.IssuerMetadata.md @@ -0,0 +1,42 @@ +--- +rootSdk: js-core +title: "IssuerMetadata" +category: Types +--- + +# Type: IssuerMetadata + +OpenID Connect Discovery metadata published by the authorization server. + +## Properties + +| Property | Type | Description | +| ------------------------------------------------------------------------------------------------------ | ---------- | ------------------------------------------------------------------------ | +| `authorization_endpoint` | `string` | Authorization endpoint used to initiate authentication requests. | +| `backchannel_logout_session_supported` | `boolean` | Indicates back-channel logout session support. | +| `backchannel_logout_supported` | `boolean` | Indicates support for back-channel logout. | +| `check_session_iframe` | `string` | Session management iframe endpoint. | +| `claims_supported` | `string`[] | Claims that may be returned in tokens or UserInfo responses. | +| `code_challenge_methods_supported` | `string`[] | Supported PKCE code challenge methods. | +| `device_authorization_endpoint` | `string` | Device Authorization Grant endpoint. | +| `end_session_endpoint` | `string` | End-session endpoint used to initiate logout. | +| `frontchannel_logout_session_supported` | `boolean` | Indicates front-channel logout session support. | +| `frontchannel_logout_supported` | `boolean` | Indicates support for front-channel logout. | +| `grant_types_supported` | `string`[] | Supported OAuth grant types. | +| `id_token_signing_alg_values_supported` | `string`[] | Supported signing algorithms for ID tokens. | +| `introspection_endpoint` | `string` | Token introspection endpoint. | +| `issuer` | `string` | The issuer identifier for the authorization server. | +| `jwks_uri` | `string` | JSON Web Key Set (JWKS) endpoint used to obtain signing keys. | +| `pushed_authorization_request_endpoint?` | `string` | Pushed Authorization Request (PAR) endpoint. | +| `request_object_signing_alg_values_supported` | `string`[] | Supported signing algorithms for request objects. | +| `request_parameter_supported` | `boolean` | Indicates support for request objects passed by value. | +| `request_uri_parameter_supported` | `boolean` | Indicates support for request objects passed by reference (request_uri). | +| `require_pushed_authorization_requests` | `boolean` | Indicates whether PAR is required for authorization requests. | +| `response_modes_supported` | `string`[] | Supported response modes. | +| `response_types_supported` | `string`[] | Supported OAuth/OIDC response types. | +| `revocation_endpoint` | `string` | Token revocation endpoint. | +| `scopes_supported` | `string`[] | OAuth scopes supported by the authorization server. | +| `subject_types_supported` | `string`[] | Supported subject identifier types. | +| `token_endpoint` | `string` | Token endpoint used to exchange authorization codes for tokens. | +| `token_endpoint_auth_methods_supported` | `string`[] | Supported authentication methods for the token endpoint. | +| `userinfo_endpoint` | `string` | UserInfo endpoint used to retrieve user profile claims. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.Jwk.md b/docs/markdown/Types/_monocloud_auth-js-core.index.Jwk.md new file mode 100644 index 00000000..dd99fd8c --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.Jwk.md @@ -0,0 +1,41 @@ +--- +rootSdk: js-core +title: "Jwk" +category: Types +--- + +# Type: Jwk + +Represents a JSON Web Key (JWK) as defined by RFC 7517. + +A JWK describes a cryptographic key used to verify or encrypt JSON Web Tokens (JWTs) as obtained from the JWKS (JSON Web Key Set) endpoint exposed by the authorization server. + +The available properties depend on the key type (`kty`). + +## Properties + +| Property | Type | Description | +| -------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------ | +| `alg?` | `string` | Intended algorithm for the key (for example: `RS256`). | +| `crv?` | `string` | Elliptic curve name (for example: `P-256`). | +| `d?` | `string` | RSA private exponent. | +| `dp?` | `string` | RSA first factor CRT exponent. | +| `dq?` | `string` | RSA second factor CRT exponent. | +| `e?` | `string` | RSA public exponent. | +| `ext?` | `boolean` | Indicates whether the key is extractable. | +| `k?` | `string` | Symmetric key value (base64url encoded). | +| `key_ops?` | `string`[] | Allowed operations for the key (e.g. `sign`, `verify`, `encrypt`). | +| `kid?` | `string` | Key identifier used to match keys during verification. | +| `kty` | `string` | Key type (for example: `RSA`, or `EC`). | +| `n?` | `string` | RSA modulus. | +| `oth?` | \{ `d?`: `string`; `r?`: `string`; `t?`: `string`; \}[] | Additional prime information (multi-prime RSA). | +| `p?` | `string` | RSA first prime factor. | +| `q?` | `string` | RSA second prime factor. | +| `qi?` | `string` | RSA CRT coefficient. | +| `use?` | `string` | Public key use (`sig` for signature or `enc` for encryption). | +| `x?` | `string` | X coordinate for EC public keys. | +| `x5c?` | `string`[] | X.509 certificate chain. | +| `x5t?` | `string` | X.509 certificate SHA-1 thumbprint. | +| `x5t#S256?` | `string` | X.509 certificate SHA-256 thumbprint. | +| `x5u?` | `string` | URL referencing the X.509 certificate. | +| `y?` | `string` | Y coordinate for EC public keys. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.Jwks.md b/docs/markdown/Types/_monocloud_auth-js-core.index.Jwks.md new file mode 100644 index 00000000..ebfecb84 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.Jwks.md @@ -0,0 +1,17 @@ +--- +rootSdk: js-core +title: "Jwks" +category: Types +--- + +# Type: Jwks + +Represents a JSON Web Key Set (JWKS). + +A JWKS is a collection of public JSON Web Keys used to verify signatures of JSON Web Tokens (JWTs). + +## Properties + +| Property | Type | Description | +| ------------------------ | ----------------------------------------------- | -------------------------------------------------- | +| `keys` | [`Jwk`](/sdks/js-core/api-reference/types/jwk)[] | The list of public keys contained in this key set. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.JwsHeaderParameters.md b/docs/markdown/Types/_monocloud_auth-js-core.index.JwsHeaderParameters.md new file mode 100644 index 00000000..e2da962f --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.JwsHeaderParameters.md @@ -0,0 +1,19 @@ +--- +rootSdk: js-core +title: "JwsHeaderParameters" +category: Types +--- + +# Type: JwsHeaderParameters + +Parameters contained in a JSON Web Signature (JWS) header. + +## Properties + +| Property | Type | Description | +| ------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `alg` | [`SecurityAlgorithms`](/sdks/js-core/api-reference/enums/securityalgorithms) | The cryptographic algorithm used to sign the token. | +| `crit?` | `string`[] | List of header parameters that are marked as critical and must be understood by the token processor. | +| `jwk?` | [`Jwk`](/sdks/js-core/api-reference/types/jwk) | An embedded JSON Web Key (JWK) containing the signing key. | +| `kid?` | `string` | Identifier of the key used to sign the token. | +| `typ?` | `string` | The token type. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudClientOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudClientOptions.md new file mode 100644 index 00000000..3d415b1b --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudClientOptions.md @@ -0,0 +1,19 @@ +--- +rootSdk: js-core +title: "MonoCloudClientOptions" +category: Types +--- + +# Type: MonoCloudClientOptions + +Configuration options used to initialize the MonoCloudClient. + +## Properties + +| Property | Type | Description | +| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `clientAuthMethod?` | [`ClientAuthMethod`](/sdks/js-core/api-reference/enums/clientauthmethod) | Client authentication method used when communicating with the token endpoint. | +| `clientSecret?` | `string` \| [`Jwk`](/sdks/js-core/api-reference/types/jwk) | Client secret used for client authentication. When `clientAuthMethod` is `client_secret_jwt` and a plain-text secret is provided, the default signing algorithm is `HS256`. To use a different algorithm, provide a symmetric JSON Web Key (JWK) (`kty: "oct"`) with the desired algorithm specified in its `alg` property. | +| `idTokenSigningAlgorithm?` | [`SecurityAlgorithms`](/sdks/js-core/api-reference/enums/securityalgorithms) | Expected signing algorithm for validating ID tokens. | +| `jwksCacheDuration?` | `number` | Duration (in seconds) to cache the JSON Web Key Set (JWKS) retrieved from the authorization server. | +| `metadataCacheDuration?` | `number` | Duration (in seconds) to cache OpenID Connect discovery metadata. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudJSCoreClientOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudJSCoreClientOptions.md new file mode 100644 index 00000000..a29ac117 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudJSCoreClientOptions.md @@ -0,0 +1,37 @@ +--- +rootSdk: js-core +title: "MonoCloudJSCoreClientOptions" +category: Types +--- + +# Type: MonoCloudJSCoreClientOptions + +Configuration options for initializing `MonoCloudJSCoreClient`. + +## Properties + +| Property | Type | Description | +| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `appUrl` | `string` | The base URL of the application implementing authentication. **Example** `"https://example.com"` | +| `authWindowTimeout?` | `number` | Timeout duration (in seconds) for popups and iframes. | +| `callbackPath?` | `string` | Relative callback path where MonoCloud redirects the user after sign-in. This URL must be registered in the application's callback URL settings. If omitted, the callback URL defaults to `appUrl` with path `/`. **Example** `/callback` | +| `clientAuthMethod?` | [`ClientAuthMethod`](/sdks/js-core/api-reference/enums/clientauthmethod) | Method used for client authentication. | +| `clientId` | `string` | Client identifier of the application registered in MonoCloud. | +| `clientSecret?` | `string` \| [`Jwk`](/sdks/js-core/api-reference/types/jwk) | Client secret or JSON Web Key for client authentication. | +| `clockSkew?` | `number` | The maximum allowed clock skew (in seconds) for token validation. | +| `clockTolerance?` | `number` | The maximum allowed clock tolerance for date-time-based claims. | +| `defaultAuthParams?` | [`AuthorizationParams`](/sdks/js-core/api-reference/types/authorizationparams) | Default authorization parameters to include in authentication requests. | +| `federatedSignOut?` | `boolean` | When `true`, signs the user out from both the app and MonoCloud. | +| `fetchUserinfo?` | `boolean` | Determines whether to fetch UserInfo after authentication. | +| `filteredIdTokenClaims?` | `string`[] | List of ID token claims to exclude when constructing the final user object. | +| `idTokenSigningAlgorithm?` | [`SecurityAlgorithms`](/sdks/js-core/api-reference/enums/securityalgorithms) | Algorithm used for verifying ID token signature. | +| `jwksCacheDuration?` | `number` | The duration in seconds to cache the JWKS document after it is fetched. | +| `metadataCacheDuration?` | `number` | Time in seconds to cache the metadata document after it is fetched. | +| `popupWindowHeight?` | `number` | The height of the popup window in pixels. This value is used to size and center the window when `signIn` or `signOut` is called with `mode: 'popup'`. | +| `popupWindowWidth?` | `number` | The width of the popup window in pixels. This value is used to size and center the window when `signIn` or `signOut` is called with `mode: 'popup'`. | +| `resources?` | [`Indicator`](/sdks/js-core/api-reference/types/indicator)[] | Additional resources that can be requested in `getTokens()`. | +| `responseType?` | [`ResponseTypes`](/sdks/js-core/api-reference/enums/responsetypes) | Specifies the OpenID Connect response type for the authentication flow. | +| `sessionKey?` | `string` | A unique identifier that differentiates sessions when multiple clients are used within the same application. This key is appended to the internal session key to prevent conflicts. | +| `signOutCallbackPath?` | `string` \| `null` | Relative path where MonoCloud redirects the user after sign-out. **Example** `/signout` | +| `tenantDomain` | `string` | MonoCloud tenant domain. **Example** `"https://your-domain.as.monocloud.com"` | +| `validateIdToken?` | `boolean` | Whether the ID token should be validated. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudSession.md b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudSession.md new file mode 100644 index 00000000..e148824a --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudSession.md @@ -0,0 +1,27 @@ +--- +rootSdk: js-core +title: "MonoCloudSession" +category: Types +--- + +# Type: MonoCloudSession + +Represents an authenticated session, containing the authenticated user profile along with the tokens and metadata issued during authentication. + +## Indexable + +\[`key`: `string`\]: `unknown` + +Additional custom properties attached to the session. + +These may be added via hooks such as `onSessionCreating`. + +## Properties + +| Property | Type | Description | +| ------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `accessTokens?` | [`AccessToken`](/sdks/js-core/api-reference/types/accesstoken)[] | Access tokens associated with the session. Multiple tokens may exist when access tokens are issued for different resources or scope sets. | +| `authorizedScopes?` | `string` | Space-separated list of scopes authorized for the session. | +| `idToken?` | `string` | Optional ID token issued during authentication. | +| `refreshToken?` | `string` | Optional refresh token used to obtain new access tokens without requiring the user to re-authenticate. | +| `user` | [`MonoCloudUser`](/sdks/js-core/api-reference/types/monoclouduser) | The authenticated user profile, typically derived from ID token claims and/or the `UserInfo` endpoint. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudTokens.md b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudTokens.md new file mode 100644 index 00000000..145dd268 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudTokens.md @@ -0,0 +1,26 @@ +--- +rootSdk: js-core +title: "MonoCloudTokens" +category: Types +--- + +# Type: MonoCloudTokens + +Tokens available in the current session. + +## Extends + +- [`AccessToken`](/sdks/js-core/api-reference/types/accesstoken) + +## Properties + +| Property | Type | Description | +| ---------------------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `accessToken` | `string` | The issued access token. | +| `accessTokenExpiration` | `number` | The expiration time of the access token (Unix epoch, in seconds). | +| `idToken?` | `string` | The ID token obtained during authentication. | +| `isExpired` | `boolean` | Specifies if the access token has expired. | +| `refreshToken?` | `string` | The refresh token obtained during authentication. | +| `requestedScopes?` | `string` | Optional space-separated list of scopes originally requested during token acquisition. | +| `resource?` | `string` | Optional resource (audience) that the access token is scoped for. | +| `scopes` | `string` | Space-separated list of scopes granted to the access token. These represent the effective permissions approved by the authorization server. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudUser.md b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudUser.md new file mode 100644 index 00000000..e76fbb20 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.MonoCloudUser.md @@ -0,0 +1,47 @@ +--- +rootSdk: js-core +title: "MonoCloudUser" +category: Types +--- + +# Type: MonoCloudUser + +Represents the authenticated user stored in a MonoCloud session. + +## Extends + +- [`UserinfoResponse`](/sdks/js-core/api-reference/types/userinforesponse) + +## Indexable + +\[`key`: `string`\]: `unknown` + +Additional provider-specific claims. + +## Properties + +| Property | Type | Description | +| ----------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `address?` | [`Address`](/sdks/nodejs/api-reference/types/address) | Postal address. | +| `amr?` | `string`[] | Authentication Methods References (AMR). Indicates how the user authenticated. | +| `birthdate?` | `string` | Birthday. | +| `email?` | `string` | Email address. | +| `email_verified?` | `boolean` | Whether the email address has been verified by the provider. | +| `family_name?` | `string` | Surname(s) / last name. | +| `gender?` | `string` | Gender. | +| `given_name?` | `string` | Given name(s) / first name. | +| `groups?` | [`Group`](/sdks/js-core/api-reference/types/group)[] | Group memberships for the user. | +| `idp?` | `string` | Identity Provider (IdP) identifier. Specifies the upstream provider used to authenticate the user. | +| `locale?` | `string` | Locale. | +| `middle_name?` | `string` | Middle name(s). | +| `name?` | `string` | Full name of the user (e.g. "Jane Doe"). | +| `nickname?` | `string` | Casual name used by the user. | +| `phone_number?` | `string` | Phone number (formatted in E.164 standard). | +| `phone_number_verified?` | `boolean` | Whether the phone number has been verified by the provider. | +| `picture?` | `string` | URL of the user's profile picture. | +| `preferred_username?` | `string` | Preferred username. | +| `profile?` | `string` | URL of the user's profile page. | +| `sub` | `string` | Subject identifier - a unique, stable identifier for the user within the issuer. | +| `updated_at?` | `number` | Time the user's information was last updated (seconds since epoch). | +| `website?` | `string` | URL of the user's website. | +| `zoneinfo?` | `string` | Time zone name. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.ParResponse.md b/docs/markdown/Types/_monocloud_auth-js-core.index.ParResponse.md new file mode 100644 index 00000000..8699d18c --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.ParResponse.md @@ -0,0 +1,16 @@ +--- +rootSdk: js-core +title: "ParResponse" +category: Types +--- + +# Type: ParResponse + +Response returned from the Pushed Authorization Request (PAR) endpoint. + +## Properties + +| Property | Type | Description | +| -------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `expires_in` | `number` | Lifetime of the `request_uri`, in seconds. After this duration expires, the authorization request becomes invalid. | +| `request_uri` | `string` | The URI reference identifying the pushed authorization request. This value must be supplied as the `request_uri` parameter when redirecting the user to the authorization endpoint. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.PostCallbackParams.md b/docs/markdown/Types/_monocloud_auth-js-core.index.PostCallbackParams.md new file mode 100644 index 00000000..80d9f0f5 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.PostCallbackParams.md @@ -0,0 +1,11 @@ +--- +rootSdk: js-core +title: "PostCallbackParams" +category: Types +--- + +# Type: PostCallbackParams + +> **PostCallbackParams** = \{ `mode`: [`InteractionMode`](/sdks/js-core/api-reference/enums/interactionmode) \| `"silent"`; `returnUrl?`: `string`; `type`: `"signIn"`; \} \| \{ `mode`: [`InteractionMode`](/sdks/js-core/api-reference/enums/interactionmode); `returnUrl?`: `string`; `type`: `"signOut"`; \} + +Metadata passed to `PostCallback` after callback processing. diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.PushedAuthorizationParams.md b/docs/markdown/Types/_monocloud_auth-js-core.index.PushedAuthorizationParams.md new file mode 100644 index 00000000..d5170020 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.PushedAuthorizationParams.md @@ -0,0 +1,39 @@ +--- +rootSdk: js-core +title: "PushedAuthorizationParams" +category: Types +--- + +# Type: PushedAuthorizationParams + +Parameters used when creating a Pushed Authorization Request (PAR). + +This type mirrors [AuthorizationParams](/sdks/js-core/api-reference/types/authorizationparams) but excludes `requestUri`, +since the `request_uri` value is generated by the authorization server +after a successful PAR request and must not be supplied by the client. + +## Extends + +- `Omit`\<[`AuthorizationParams`](/sdks/js-core/api-reference/types/authorizationparams), `"requestUri"`\> + +## Properties + +| Property | Type | Description | +| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | +| `acrValues?` | `string`[] | Authentication Context Class Reference (ACR) values requesting specific authentication assurance levels or methods. | +| `authenticatorHint?` | [`Authenticators`](/sdks/js-core/api-reference/enums/authenticators) | Hint to the authorization server indicating which authenticator or connection should be used. | +| `codeChallenge?` | `string` | PKCE code challenge derived from the code verifier. Used to secure authorization code exchanges. | +| `codeChallengeMethod?` | [`CodeChallengeMethod`](/sdks/js-core/api-reference/enums/codechallengemethod) | Method used to generate the PKCE code challenge. | +| `display?` | [`DisplayOptions`](/sdks/js-core/api-reference/enums/displayoptions) | Preferred display mode for the authentication UI. | +| `loginHint?` | `string` | Hint identifying the user (for example, email or username). Used to prefill or optimize the sign-in experience. | +| `maxAge?` | `number` | Maximum acceptable time (in seconds) since the user last authenticated. If exceeded, the user may be required to sign in again. | +| `nonce?` | `string` | A cryptographically random value included in the ID token to prevent replay attacks. | +| `prompt?` | [`Prompt`](/sdks/js-core/api-reference/enums/prompt) | Controls authentication interaction behavior. For example, forcing login or consent. | +| `redirectUri?` | `string` | The redirect URI where the authorization server sends the user after authentication completes. | +| `request?` | `string` | A signed JWT containing authorization request parameters. | +| `resource?` | `string` | Space-separated list of resource indicators that scope the issued access token. | +| `responseMode?` | [`ResponseModes`](/sdks/js-core/api-reference/enums/responsemodes) | Specifies how the authorization response is returned to the client. | +| `responseType?` | [`ResponseTypes`](/sdks/js-core/api-reference/enums/responsetypes) | Determines which artifacts are returned from the authorization endpoint. | +| `scopes?` | `string` | Space-separated list of scopes requested during authentication. | +| `state?` | `string` | A cryptographically random value used to maintain request state and protect against CSRF attacks. | +| `uiLocales?` | `string` | Preferred UI language. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.RefetchUserInfoOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.RefetchUserInfoOptions.md new file mode 100644 index 00000000..47bc4aad --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.RefetchUserInfoOptions.md @@ -0,0 +1,15 @@ +--- +rootSdk: js-core +title: "RefetchUserInfoOptions" +category: Types +--- + +# Type: RefetchUserInfoOptions + +Options used when refetching user profile data from the UserInfo endpoint. + +## Properties + +| Property | Type | Description | +| --------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `onSessionCreating?` | [`OnSessionCreating`](/sdks/nodejs/api-reference/handler-types/onsessioncreating) | Callback invoked before a session is created or updated. Allows customization or enrichment of the session. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshGrantOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshGrantOptions.md new file mode 100644 index 00000000..85b6465c --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshGrantOptions.md @@ -0,0 +1,22 @@ +--- +rootSdk: js-core +title: "RefreshGrantOptions" +category: Types +--- + +# Type: RefreshGrantOptions + +Options used when exchanging a refresh token for a new access token. + +These parameters allow requesting an access token scoped to specific resources or scopes that were previously authorized by the user. + +## Extended by + +- [`GetTokensOptions`](/sdks/js-core/api-reference/types/gettokensoptions) + +## Properties + +| Property | Type | Description | +| --------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resource?` | `string` | Space-separated list of resource indicators that the new access token should be issued for. The requested resources must have been previously granted during the original authorization flow. | +| `scopes?` | `string` | Space-separated list of scopes to request for the refreshed access token. The requested scopes must have been granted during the original authorization flow. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshOptions.md new file mode 100644 index 00000000..a147eb63 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshOptions.md @@ -0,0 +1,17 @@ +--- +rootSdk: js-core +title: "RefreshOptions" +category: Types +--- + +# Type: RefreshOptions + +Options for `refreshSession()`. + +## Properties + +| Property | Type | Description | +| ------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `appState?` | [`ApplicationState`](/sdks/js-core/api-reference/types/applicationstate) | Additional custom application-specific state information. | +| `mode?` | [`RefreshMode`](/sdks/js-core/api-reference/enums/refreshmode) | Determines the interaction mode for the session refresh process. Using `popup` or `silent` starts a new authorization request and replaces the current session. | +| `refreshGrantOptions?` | [`RefreshGrantOptions`](/sdks/js-core/api-reference/types/refreshgrantoptions) | Configuration specific to the Refresh Token Grant flow. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshSessionOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshSessionOptions.md new file mode 100644 index 00000000..a884596b --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.RefreshSessionOptions.md @@ -0,0 +1,22 @@ +--- +rootSdk: js-core +title: "RefreshSessionOptions" +category: Types +--- + +# Type: RefreshSessionOptions + +Options used when refreshing an existing MonoCloud session. + +## Properties + +| Property | Type | Description | +| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `fetchUserInfo?` | `boolean` | When enabled, user profile data is fetched from the UserInfo endpoint and merged into the session user object. | +| `filteredIdTokenClaims?` | `string`[] | List of ID token claims to remove before storing the session. | +| `idTokenClockSkew?` | `number` | Clock skew adjustment (in seconds) applied when validating ID token timestamps against the authorization server. | +| `idTokenClockTolerance?` | `number` | Additional allowed clock tolerance (in seconds) when validating time-based ID token claims such as `exp`, `iat`, and `nbf`. | +| `jwks?` | [`Jwks`](/sdks/js-core/api-reference/types/jwks) | JSON Web Key Set used to validate the ID token signature. If not provided, the JWKS is automatically fetched from the authorization server metadata. | +| `onSessionCreating?` | [`OnSessionCreating`](/sdks/nodejs/api-reference/handler-types/onsessioncreating) | Callback invoked before a session is created or updated. Allows customization or enrichment of the session. | +| `refreshGrantOptions?` | [`RefreshGrantOptions`](/sdks/js-core/api-reference/types/refreshgrantoptions) | Options applied to the refresh token grant request, such as requesting tokens for specific resources or scopes. | +| `validateIdToken?` | `boolean` | Determines whether the ID token signature and claims should be validated. Disabling validation is not recommended except for advanced or controlled environments. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.SignInOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.SignInOptions.md new file mode 100644 index 00000000..974db79a --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.SignInOptions.md @@ -0,0 +1,27 @@ +--- +rootSdk: js-core +title: "SignInOptions" +category: Types +--- + +# Type: SignInOptions + +Options for `signIn()`. + +## Properties + +| Property | Type | Description | +| --------------------------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `acrValues?` | `string`[] | An array of authentication context class references (ACRs). | +| `appState?` | [`ApplicationState`](/sdks/js-core/api-reference/types/applicationstate) | Additional custom application-specific state information. | +| `authenticatorHint?` | [`Authenticators`](/sdks/js-core/api-reference/enums/authenticators) | Specifies the preferred authenticator for sign-in. | +| `display?` | [`DisplayOptions`](/sdks/js-core/api-reference/enums/displayoptions) | The desired user interface mode. | +| `loginHint?` | `string` | Provides a hint about the user's login identifier. Used to pre-fill or suggest a username. **Example** `"user@example.com"` | +| `maxAge?` | `number` | Maximum allowed time (in seconds) since the user's last authentication. Used to force re-authentication if the last login exceeds this time. | +| `mode?` | [`InteractionMode`](/sdks/js-core/api-reference/enums/interactionmode) | Determines the interaction mode for sign-in. | +| `prompt?` | [`Prompt`](/sdks/js-core/api-reference/enums/prompt) | The desired authentication behavior. | +| `resource?` | `string` | Space-separated resources the access token should be scoped to. | +| `returnUrl?` | `string` | Relative path to return to after sign-in. | +| `scopes?` | `string` | Space-separated scopes requested from the authorization server. | +| `signUp?` | `boolean` | When `true`, starts the sign-up flow. | +| `uiLocales?` | `string` | Specifies preferred locales for the sign-in page. **Example** `"en-US"` | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.SignOutOptions.md b/docs/markdown/Types/_monocloud_auth-js-core.index.SignOutOptions.md new file mode 100644 index 00000000..cf188686 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.SignOutOptions.md @@ -0,0 +1,17 @@ +--- +rootSdk: js-core +title: "SignOutOptions" +category: Types +--- + +# Type: SignOutOptions + +Options for `signOut()`. + +## Properties + +| Property | Type | Description | +| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | +| `mode?` | [`InteractionMode`](/sdks/js-core/api-reference/enums/interactionmode) | Determines the interaction mode for the sign-out process. | +| `postLogoutRedirectUri?` | `string` | URI to redirect to after successful sign-out. This URI must be configured in the application's allowed sign-out callback URLs. | +| `returnUrl?` | `string` | Relative path to return to after sign-out. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.Tokens.md b/docs/markdown/Types/_monocloud_auth-js-core.index.Tokens.md new file mode 100644 index 00000000..1c62949c --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.Tokens.md @@ -0,0 +1,20 @@ +--- +rootSdk: js-core +title: "Tokens" +category: Types +--- + +# Type: Tokens + +OAuth 2.0 / OpenID Connect token endpoint response. + +## Properties + +| Property | Type | Description | +| ------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------- | +| `access_token` | `string` | Access token issued by the authorization server. | +| `expires_in?` | `number` | Lifetime of the access token (in seconds) from the time the response was issued. | +| `id_token?` | `string` | Optional ID token containing authentication claims about the user. | +| `refresh_token?` | `string` | Optional refresh token used to obtain new access tokens without requiring user re-authentication. | +| `scope?` | `string` | Space-separated list of scopes granted for the access token. | +| `token_type?` | `string` | Token type issued. | diff --git a/docs/markdown/Types/_monocloud_auth-js-core.index.UserinfoResponse.md b/docs/markdown/Types/_monocloud_auth-js-core.index.UserinfoResponse.md new file mode 100644 index 00000000..d41c0e33 --- /dev/null +++ b/docs/markdown/Types/_monocloud_auth-js-core.index.UserinfoResponse.md @@ -0,0 +1,52 @@ +--- +rootSdk: js-core +title: "UserinfoResponse" +category: Types +--- + +# Type: UserinfoResponse + +Represents the OpenID Connect **UserInfo** response. + +## Extended by + +- [`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims) +- [`MonoCloudUser`](/sdks/js-core/api-reference/types/monoclouduser) + +## Type Parameters + +| Type Parameter | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `TAddress` _extends_ [`Address`](/sdks/nodejs/api-reference/types/address) | The shape of the `address` claim. Defaults to [Address](/sdks/nodejs/api-reference/types/address). | + +## Indexable + +\[`key`: `string`\]: `unknown` + +Additional provider-specific claims. + +## Properties + +| Property | Type | Description | +| ----------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------- | +| `address?` | `TAddress` | Postal address. | +| `birthdate?` | `string` | Birthday. | +| `email?` | `string` | Email address. | +| `email_verified?` | `boolean` | Whether the email address has been verified by the provider. | +| `family_name?` | `string` | Surname(s) / last name. | +| `gender?` | `string` | Gender. | +| `given_name?` | `string` | Given name(s) / first name. | +| `groups?` | [`Group`](/sdks/js-core/api-reference/types/group)[] | Group memberships for the user. | +| `locale?` | `string` | Locale. | +| `middle_name?` | `string` | Middle name(s). | +| `name?` | `string` | Full name of the user (e.g. "Jane Doe"). | +| `nickname?` | `string` | Casual name used by the user. | +| `phone_number?` | `string` | Phone number (formatted in E.164 standard). | +| `phone_number_verified?` | `boolean` | Whether the phone number has been verified by the provider. | +| `picture?` | `string` | URL of the user's profile picture. | +| `preferred_username?` | `string` | Preferred username. | +| `profile?` | `string` | URL of the user's profile page. | +| `sub` | `string` | Subject identifier - a unique, stable identifier for the user within the issuer. | +| `updated_at?` | `number` | Time the user's information was last updated (seconds since epoch). | +| `website?` | `string` | URL of the user's website. | +| `zoneinfo?` | `string` | Time zone name. | diff --git a/docs/markdown/Types/_monocloud_auth-node-core.index.CallbackParams.md b/docs/markdown/Types/_monocloud_auth-node-core.index.CallbackParams.md index 28d99fc5..e3e69a06 100644 --- a/docs/markdown/Types/_monocloud_auth-node-core.index.CallbackParams.md +++ b/docs/markdown/Types/_monocloud_auth-node-core.index.CallbackParams.md @@ -19,5 +19,6 @@ Parameters returned to the application after the authorization server redirects | `expiresIn?` | `number` | Lifetime of the access token in seconds. | | `idToken?` | `string` | ID token issued by the authorization server. | | `refreshToken?` | `string` | Refresh token issued during authorization (if enabled). | +| `scope?` | `string` | Access token scopes (Implicit Flow) | | `sessionState?` | `string` | OIDC session state value used for session monitoring and front-channel session management. | | `state?` | `string` | The state value originally sent in the authorization request. Used to validate request integrity and prevent CSRF attacks. | diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.Authenticators.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.Authenticators.md new file mode 100644 index 00000000..4d2d0d9b --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.Authenticators.md @@ -0,0 +1,28 @@ +--- +rootSdk: js-core +title: "Authenticators" +category: Enums +--- + +# Enum: Authenticators + +> **Authenticators** = `"password"` \| `"passkey"` \| `"email"` \| `"phone"` \| `"google"` \| `"apple"` \| `"facebook"` \| `"microsoft"` \| `"github"` \| `"gitlab"` \| `"discord"` \| `"twitter"` \| `"linkedin"` \| `"xero"` + +Supported authentication methods and identity providers. + +## Type Declaration + +- `password` - Username/password authentication. +- `passkey` - Passkey (WebAuthn / FIDO2) authentication. +- `email` - Email-based authentication (magic link or OTP). +- `phone` - Phone-based authentication (SMS OTP). +- `google` - Google identity provider. +- `apple` - Apple identity provider. +- `facebook` - Facebook identity provider. +- `microsoft` - Microsoft identity provider. +- `github` - GitHub identity provider. +- `gitlab` - GitLab identity provider. +- `discord` - Discord identity provider. +- `twitter` - Twitter (X) identity provider. +- `linkedin` - LinkedIn identity provider. +- `xero` - Xero identity provider. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ClientAuthMethod.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ClientAuthMethod.md new file mode 100644 index 00000000..6935f2ca --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ClientAuthMethod.md @@ -0,0 +1,20 @@ +--- +rootSdk: js-core +title: "ClientAuthMethod" +category: Enums +--- + +# Enum: ClientAuthMethod + +> **ClientAuthMethod** = `"client_secret_basic"` \| `"client_secret_post"` \| `"client_secret_jwt"` \| `"private_key_jwt"` + +Supported OAuth 2.0 client authentication methods. + +These methods define how a client authenticates itself when calling the authorization server token endpoint. + +## Type Declaration + +- `client_secret_basic` - Client credentials are sent using HTTP Basic authentication +- `client_secret_post` - Client credentials are included in the request body as form parameters. +- `client_secret_jwt` - Client authenticates using a signed JWT created with the client secret. +- `private_key_jwt` - Client authenticates using a signed JWT created with a private key. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.CodeChallengeMethod.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.CodeChallengeMethod.md new file mode 100644 index 00000000..62d70c22 --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.CodeChallengeMethod.md @@ -0,0 +1,18 @@ +--- +rootSdk: js-core +title: "CodeChallengeMethod" +category: Enums +--- + +# Enum: CodeChallengeMethod + +> **CodeChallengeMethod** = `"plain"` \| `"S256"` + +Supported PKCE (Proof Key for Code Exchange) code challenge methods. + +PKCE protects authorization code flows by binding the authorization request to the token exchange using a cryptographic verifier. + +## Type Declaration + +- `plain` - Uses the code verifier directly as the challenge. Not recommended for production use. +- `S256` - Uses a SHA-256 hash of the code verifier. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.DisplayOptions.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.DisplayOptions.md new file mode 100644 index 00000000..62775429 --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.DisplayOptions.md @@ -0,0 +1,20 @@ +--- +rootSdk: js-core +title: "DisplayOptions" +category: Enums +--- + +# Enum: DisplayOptions + +> **DisplayOptions** = `"page"` \| `"popup"` \| `"touch"` \| `"wap"` + +Supported OpenID Connect `display` parameter values. + +The display parameter hints to the authorization server how the authentication or consent UI should be presented to the user. + +## Type Declaration + +- `page` - Full-page authentication experience in the browser. +- `popup` - Authentication optimized for popup windows. +- `touch` - Authentication optimized for touch-based devices. +- `wap` - Authentication optimized for legacy mobile or constrained browsers. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.InteractionMode.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.InteractionMode.md new file mode 100644 index 00000000..6c738528 --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.InteractionMode.md @@ -0,0 +1,13 @@ +--- +rootSdk: js-core +title: "InteractionMode" +category: Enums +--- + +# Enum: InteractionMode + +> **InteractionMode** = `"popup"` \| `"redirect"` + +Interaction modes supported for sign-in and sign-out flows. + +## Type Declaration diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.Prompt.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.Prompt.md new file mode 100644 index 00000000..6c856351 --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.Prompt.md @@ -0,0 +1,21 @@ +--- +rootSdk: js-core +title: "Prompt" +category: Enums +--- + +# Enum: Prompt + +> **Prompt** = `"none"` \| `"login"` \| `"consent"` \| `"select_account"` \| `"create"` + +Supported OpenID Connect `prompt` parameter values. + +The `prompt` parameter controls whether the authorization server should force specific user interactions during authentication. + +## Type Declaration + +- `none` - Do not display any authentication or consent UI. +- `login` - Forces the user to re-authenticate even if an active session exists. +- `consent` - Forces the consent screen to be displayed to the user. +- `select_account` - Prompts the user to choose an account when multiple sessions exist. +- `create` - Prompts the user to create a new account (sign-up flow). diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.RefreshMode.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.RefreshMode.md new file mode 100644 index 00000000..c4188c05 --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.RefreshMode.md @@ -0,0 +1,13 @@ +--- +rootSdk: js-core +title: "RefreshMode" +category: Enums +--- + +# Enum: RefreshMode + +> **RefreshMode** = `"popup"` \| `"refresh_token"` \| `"silent"` + +Interaction modes supported by `refreshSession()`. + +## Type Declaration diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ResponseModes.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ResponseModes.md new file mode 100644 index 00000000..7cc6840e --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ResponseModes.md @@ -0,0 +1,19 @@ +--- +rootSdk: js-core +title: "ResponseModes" +category: Enums +--- + +# Enum: ResponseModes + +> **ResponseModes** = `"form_post"` \| `"query"` \| `"fragment"` + +Supported OAuth 2.0 / OpenID Connect `response_mode` values. + +The response mode determines how authorization results are returned from the authorization endpoint to the client application. + +## Type Declaration + +- `form_post` - Returns authorization results using an HTTP POST request with parameters encoded in the request body. +- `query` - Returns authorization results as URL query parameters. +- `fragment` - Returns authorization results in the URL fragment. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ResponseTypes.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ResponseTypes.md new file mode 100644 index 00000000..a3d063fb --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.ResponseTypes.md @@ -0,0 +1,25 @@ +--- +rootSdk: js-core +title: "ResponseTypes" +category: Enums +--- + +# Enum: ResponseTypes + +> **ResponseTypes** = `"code"` \| `"token"` \| `"id_token"` \| `"id_token token"` \| `"code id_token"` \| `"code token"` \| `"code id_token token"` + +Supported OAuth 2.0 / OpenID Connect response types. + +Response types determine which artifacts are returned from the authorization endpoint during authentication. + +> Modern applications should prefer the Authorization Code Flow (`code`) with PKCE. Implicit flow variants are included for compatibility with legacy or specialized scenarios. + +## Type Declaration + +- `code` - Authorization Code Flow (recommended). Returns an authorization code that is exchanged for tokens server-side. +- `token` - Implicit Flow returning an access token directly from the authorization endpoint. +- `id_token` - Implicit Flow returning an ID token. +- `id_token token` - Implicit Flow returning both an ID token and an access token. +- `code id_token` - Hybrid Flow returning an authorization code and an ID token. +- `code token` - Hybrid Flow returning an authorization code and an access token. +- `code id_token token` - Hybrid Flow returning an authorization code, ID token, and access token. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.SecurityAlgorithms.md b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.SecurityAlgorithms.md new file mode 100644 index 00000000..9409e7f9 --- /dev/null +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-js-core.index.SecurityAlgorithms.md @@ -0,0 +1,25 @@ +--- +rootSdk: js-core +title: "SecurityAlgorithms" +category: Enums +--- + +# Enum: SecurityAlgorithms + +> **SecurityAlgorithms** = `"RS256"` \| `"RS384"` \| `"RS512"` \| `"PS256"` \| `"PS384"` \| `"PS512"` \| `"ES256"` \| `"ES384"` \| `"ES512"` + +Supported JSON Web Signature (JWS) algorithms used to sign tokens. + +These algorithms define how tokens issued by MonoCloud are cryptographically signed and verified. The expected algorithm should match the configuration of your MonoCloud application. + +## Type Declaration + +- `RS256` - RSA using SHA-256. Default and most commonly used signing algorithm. +- `RS384` - RSA using SHA-384. +- `RS512` - RSA using SHA-512. +- `PS256` - RSA-PSS using SHA-256. Provides stronger cryptographic padding than RS256. +- `PS384` - RSA-PSS using SHA-384. +- `PS512` - RSA-PSS using SHA-512. +- `ES256` - ECDSA using P-256 curve and SHA-256. Produces smaller tokens and faster verification. +- `ES384` - ECDSA using P-384 curve and SHA-384. +- `ES512` - ECDSA using P-521 curve and SHA-512. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-nextjs.index.SameSiteValues.md b/docs/markdown/Types_(Enums)/_monocloud_auth-nextjs.index.SameSiteValues.md index 5eb2747f..8115cc47 100644 --- a/docs/markdown/Types_(Enums)/_monocloud_auth-nextjs.index.SameSiteValues.md +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-nextjs.index.SameSiteValues.md @@ -16,4 +16,4 @@ The `SameSite` setting controls when cookies are included in cross-site requests - `strict` - Cookies are only sent for same-site requests. Cookies will NOT be included in cross-site navigations, redirects, or embedded requests. Provides the strongest CSRF protection but may break authentication flows that rely on cross-site redirects. - `lax` - Cookies are sent for same-site requests and top-level cross-site navigations (for example, following a link). This is the recommended default for most authentication flows. -- `none` - Cookies are sent with all requests, including cross-site requests. Must be used together with +- `none` - Cookies are sent with all requests, including cross-site requests. Must be used together with `Secure=true` (HTTPS only). Required for some third-party or cross-origin authentication scenarios. diff --git a/docs/markdown/Types_(Enums)/_monocloud_auth-node-core.index.SameSiteValues.md b/docs/markdown/Types_(Enums)/_monocloud_auth-node-core.index.SameSiteValues.md index 81d7677e..2c393e72 100644 --- a/docs/markdown/Types_(Enums)/_monocloud_auth-node-core.index.SameSiteValues.md +++ b/docs/markdown/Types_(Enums)/_monocloud_auth-node-core.index.SameSiteValues.md @@ -16,4 +16,4 @@ The `SameSite` setting controls when cookies are included in cross-site requests - `strict` - Cookies are only sent for same-site requests. Cookies will NOT be included in cross-site navigations, redirects, or embedded requests. Provides the strongest CSRF protection but may break authentication flows that rely on cross-site redirects. - `lax` - Cookies are sent for same-site requests and top-level cross-site navigations (for example, following a link). This is the recommended default for most authentication flows. -- `none` - Cookies are sent with all requests, including cross-site requests. Must be used together with +- `none` - Cookies are sent with all requests, including cross-site requests. Must be used together with `Secure=true` (HTTPS only). Required for some third-party or cross-origin authentication scenarios. diff --git a/docs/markdown/Types_(Handler)/_monocloud_auth-js-core.index.OnSessionCreating.md b/docs/markdown/Types_(Handler)/_monocloud_auth-js-core.index.OnSessionCreating.md new file mode 100644 index 00000000..23128ce3 --- /dev/null +++ b/docs/markdown/Types_(Handler)/_monocloud_auth-js-core.index.OnSessionCreating.md @@ -0,0 +1,26 @@ +--- +rootSdk: js-core +title: "OnSessionCreating" +category: Handler Types +--- + +# Handler Type: OnSessionCreating + +> **OnSessionCreating** = (`session`: [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession), `idToken?`: `Partial`\<[`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims)\>, `userInfo?`: [`UserinfoResponse`](/sdks/js-core/api-reference/types/userinforesponse), `state?`: [`ApplicationState`](/sdks/js-core/api-reference/types/applicationstate)) => `Promise`\<`void`\> \| `void` + +Callback invoked when a session is being created or updated. + +## Parameters + +| Parameter | Type | Description | +| ----------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | +| `session` | [`MonoCloudSession`](/sdks/js-core/api-reference/types/monocloudsession) | The session object being created. | +| `idToken?` | `Partial`\<[`IdTokenClaims`](/sdks/js-core/api-reference/types/idtokenclaims)\> | Optional claims from the ID token received during authentication. | +| `userInfo?` | [`UserinfoResponse`](/sdks/js-core/api-reference/types/userinforesponse) | Optional claims from the UserInfo response. | +| `state?` | [`ApplicationState`](/sdks/js-core/api-reference/types/applicationstate) | Optional application state associated with the session. | + +## Returns + +`Promise`\<`void`\> \| `void` + +Returns `void` or a `Promise`. diff --git a/docs/markdown/Types_(Handler)/_monocloud_auth-js-core.index.PostCallback.md b/docs/markdown/Types_(Handler)/_monocloud_auth-js-core.index.PostCallback.md new file mode 100644 index 00000000..2311b4ce --- /dev/null +++ b/docs/markdown/Types_(Handler)/_monocloud_auth-js-core.index.PostCallback.md @@ -0,0 +1,23 @@ +--- +rootSdk: js-core +title: "PostCallback" +category: Handler Types +--- + +# Handler Type: PostCallback + +> **PostCallback** = (`state`: [`PostCallbackParams`](/sdks/js-core/api-reference/types/postcallbackparams)) => `Promise`\<`void`\> \| `void` + +Callback executed after sign-in or sign-out callback processing. + +## Parameters + +| Parameter | Type | Description | +| --------- | ------------------------------------------------------------------------------------ | --------------------------------------- | +| `state` | [`PostCallbackParams`](/sdks/js-core/api-reference/types/postcallbackparams) | Metadata describing the completed flow. | + +## Returns + +`Promise`\<`void`\> \| `void` + +Returns `void` or a `Promise`. diff --git a/docs/markdown/modules.md b/docs/markdown/modules.md index 217de03e..b699563b 100644 --- a/docs/markdown/modules.md +++ b/docs/markdown/modules.md @@ -11,3 +11,4 @@ category: Other - [@monocloud/auth-core](/sdks/nodejs/api-reference/undefined/_monocloud_auth-core) - [@monocloud/auth-node-core](/sdks/nodejs-core/api-reference/undefined/_monocloud_auth-node-core) - [@monocloud/auth-nextjs](/sdks/nextjs/api-reference/undefined/_monocloud_auth-nextjs) +- [@monocloud/auth-js-core](/sdks/js-core/api-reference/undefined/_monocloud_auth-js-core) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 99887ace..1fc00850 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -266,6 +266,11 @@ export interface CallbackParams { */ errorDescription?: string; + /** + * Access token scopes (Implicit Flow) + */ + scope?: string; + /** * Authorization code returned when using the Authorization Code Flow. */ diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index 0f544d36..2d702c3d 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -80,6 +80,7 @@ export const parseCallbackParams = ( sessionState: params.get('session_state') ?? undefined, expiresIn: expiresIn ? parseInt(expiresIn, 10) : undefined, code: params.get('code') ?? undefined, + scope: params.get('scope') ?? undefined, error: params.get('error') ?? undefined, errorDescription: params.get('error_description') ?? undefined, }; diff --git a/packages/core/src/utils/internal.ts b/packages/core/src/utils/internal.ts index 2a44c915..989c4328 100644 --- a/packages/core/src/utils/internal.ts +++ b/packages/core/src/utils/internal.ts @@ -104,7 +104,7 @@ export const removeTrailingSlash = (val?: string): string => { * * @returns `true` if the value is present, `false` otherwise. */ -export const isPresent = (value?: string | number | boolean): boolean => { +export const isPresent = (value?: string | number | boolean): value is string | number | boolean => { if (typeof value === 'boolean' || typeof value === 'number') { return true; } diff --git a/packages/core/tests/utils.test.ts b/packages/core/tests/utils.test.ts index 91fb2147..1a275a21 100644 --- a/packages/core/tests/utils.test.ts +++ b/packages/core/tests/utils.test.ts @@ -578,7 +578,7 @@ describe('encryptAuthstate and decryptAuthState', () => { describe('parseCallbackParams', () => { it('should give back callback params from a url', () => { const result = parseCallbackParams( - 'https://www.example.com/callback?state=abc123&access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&expires_in=40&id_token=eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ&refresh_token=def456&session_state=ghi789&code=xyz789&error=invalid_url&error_description=theurlparametersareinvalid' + 'https://www.example.com/callback?state=abc123&access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&expires_in=40&id_token=eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ&refresh_token=def456&session_state=ghi789&code=xyz789&error=invalid_url&error_description=theurlparametersareinvalid&scope=openid' ); expect(result).toStrictEqual({ state: 'abc123', @@ -586,6 +586,7 @@ describe('parseCallbackParams', () => { idToken: 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ', refreshToken: 'def456', + scope: 'openid', sessionState: 'ghi789', expiresIn: 40, code: 'xyz789', @@ -605,6 +606,7 @@ describe('parseCallbackParams', () => { accessToken: undefined, idToken: undefined, refreshToken: undefined, + scope: undefined, sessionState: undefined, expiresIn: undefined, code: 'code', @@ -622,6 +624,7 @@ describe('parseCallbackParams', () => { accessToken: 'at', idToken: undefined, refreshToken: undefined, + scope: undefined, sessionState: undefined, expiresIn: undefined, code: 'code', @@ -637,6 +640,7 @@ describe('parseCallbackParams', () => { accessToken: 'token', idToken: undefined, refreshToken: undefined, + scope: undefined, expiresIn: undefined, sessionState: undefined, code: undefined, @@ -652,6 +656,7 @@ describe('parseCallbackParams', () => { accessToken: undefined, idToken: undefined, refreshToken: undefined, + scope: undefined, sessionState: undefined, expiresIn: undefined, code: undefined, @@ -668,6 +673,7 @@ describe('parseCallbackParams', () => { accessToken: undefined, idToken: undefined, refreshToken: undefined, + scope: undefined, expiresIn: undefined, sessionState: undefined, code: undefined, diff --git a/packages/js-core/example/.gitignore b/packages/js-core/example/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/packages/js-core/example/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/js-core/example/index.html b/packages/js-core/example/index.html new file mode 100644 index 00000000..480a9ffb --- /dev/null +++ b/packages/js-core/example/index.html @@ -0,0 +1,157 @@ + + + + + + + + MonoCloud Vanilla JavaScript SDK + + + +

                                                                                                                                                                                                                                                                                                                + MonoCloud Vanilla JavaScript SDK +

                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + +

                                                                                                                                                                                                                                                                                                                Loading...

                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                Refetch Userinfo
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +

                                                                                                                                                                                                                                                                                                                Get Tokens

                                                                                                                                                                                                                                                                                                                +

                                                                                                                                                                                                                                                                                                                + IMPORTANT: Ensure all scopes and resources requested here were included in the initial /authorize request. + Update defaultAuthParams or resources in the client configuration accordingly. Example: For 'https://my-api' + with + scope 'read:data', include these in defaultAuthParams or resources. +

                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + +
                                                                                                                                                                                                                                                                                                                + +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                + + + + + \ No newline at end of file diff --git a/packages/js-core/example/package-lock.json b/packages/js-core/example/package-lock.json new file mode 100644 index 00000000..771edb85 --- /dev/null +++ b/packages/js-core/example/package-lock.json @@ -0,0 +1,1694 @@ +{ + "name": "example", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example", + "version": "0.0.0", + "dependencies": { + "@monocloud/auth-js-core": "file:../", + "@tailwindcss/vite": "^4.0.9", + "tailwindcss": "^4.0.9" + }, + "devDependencies": { + "typescript": "~5.9.3", + "vite": "^7.2.7" + } + }, + "..": { + "name": "@monocloud/auth-js-core", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@monocloud/auth-core": "workspace:*", + "browser-tabs-lock": "^1.3.0" + }, + "devDependencies": { + "@monocloud/auth-test-utils": "workspace:*", + "eslint": "9.39.2" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@monocloud/auth-js-core": { + "resolved": "..", + "link": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz", + "integrity": "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.1.tgz", + "integrity": "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.1.tgz", + "integrity": "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.1.tgz", + "integrity": "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.1.tgz", + "integrity": "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.1.tgz", + "integrity": "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.1.tgz", + "integrity": "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.1.tgz", + "integrity": "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.1.tgz", + "integrity": "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.1.tgz", + "integrity": "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.1.tgz", + "integrity": "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.1.tgz", + "integrity": "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.1.tgz", + "integrity": "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.1.tgz", + "integrity": "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.1.tgz", + "integrity": "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.1.tgz", + "integrity": "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.1.tgz", + "integrity": "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.1.tgz", + "integrity": "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.1.tgz", + "integrity": "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.1.tgz", + "integrity": "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.1.tgz", + "integrity": "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.1.tgz", + "integrity": "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.1.tgz", + "integrity": "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.1.tgz", + "integrity": "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.1.tgz", + "integrity": "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", + "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "tailwindcss": "4.1.18" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", + "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.55.1", + "@rollup/rollup-android-arm64": "4.55.1", + "@rollup/rollup-darwin-arm64": "4.55.1", + "@rollup/rollup-darwin-x64": "4.55.1", + "@rollup/rollup-freebsd-arm64": "4.55.1", + "@rollup/rollup-freebsd-x64": "4.55.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.55.1", + "@rollup/rollup-linux-arm-musleabihf": "4.55.1", + "@rollup/rollup-linux-arm64-gnu": "4.55.1", + "@rollup/rollup-linux-arm64-musl": "4.55.1", + "@rollup/rollup-linux-loong64-gnu": "4.55.1", + "@rollup/rollup-linux-loong64-musl": "4.55.1", + "@rollup/rollup-linux-ppc64-gnu": "4.55.1", + "@rollup/rollup-linux-ppc64-musl": "4.55.1", + "@rollup/rollup-linux-riscv64-gnu": "4.55.1", + "@rollup/rollup-linux-riscv64-musl": "4.55.1", + "@rollup/rollup-linux-s390x-gnu": "4.55.1", + "@rollup/rollup-linux-x64-gnu": "4.55.1", + "@rollup/rollup-linux-x64-musl": "4.55.1", + "@rollup/rollup-openbsd-x64": "4.55.1", + "@rollup/rollup-openharmony-arm64": "4.55.1", + "@rollup/rollup-win32-arm64-msvc": "4.55.1", + "@rollup/rollup-win32-ia32-msvc": "4.55.1", + "@rollup/rollup-win32-x64-gnu": "4.55.1", + "@rollup/rollup-win32-x64-msvc": "4.55.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", + "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/packages/js-core/example/package.json b/packages/js-core/example/package.json new file mode 100644 index 00000000..4075f511 --- /dev/null +++ b/packages/js-core/example/package.json @@ -0,0 +1,20 @@ +{ + "name": "example", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@monocloud/auth-js-core": "file:../", + "@tailwindcss/vite": "^4.0.9", + "tailwindcss": "^4.0.9" + }, + "devDependencies": { + "typescript": "~5.9.3", + "vite": "^7.2.7" + } +} diff --git a/packages/js-core/example/public/favicon.ico b/packages/js-core/example/public/favicon.ico new file mode 100644 index 00000000..6bfa8396 Binary files /dev/null and b/packages/js-core/example/public/favicon.ico differ diff --git a/packages/js-core/example/src/main.ts b/packages/js-core/example/src/main.ts new file mode 100644 index 00000000..1030aa67 --- /dev/null +++ b/packages/js-core/example/src/main.ts @@ -0,0 +1,168 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +import './style.css'; +import { + InteractionMode, + MonoCloudJSCoreClient, + MonoCloudJSCoreClientOptions, + RefreshMode, + GetTokensOptions, +} from '@monocloud/auth-js-core'; + +/** + * This is a simple example of how to use the MonoCloudJSCoreClient in a vanilla JS application. + * The example demonstrates how to sign in, sign out, refresh the session, refetch the userinfo and get tokens. + * + * You have to enable the following settings in your client with Single Page Application preset: + * - Allowed Callback URLs: http://localhost:5173/ + * - Allowed Signout URLs: http://localhost:5173/ + * - Allowed Origins (CORS): http://localhost:5173 + * - Scopes (at least): openid, profile, email + * - Allow Offline Access: On + */ + +const options: MonoCloudJSCoreClientOptions = { + tenantDomain: 'https://', + clientId: '', + appUrl: 'http://localhost:5173', + callbackPath: '/', + signOutCallbackPath: '/', + federatedSignOut: true, + defaultAuthParams: { + scopes: 'openid profile email offline_access', + // resource: + }, + resources: [ + // { + // resource: '' + // scopes: '', + // }, + ], +}; + +const client = new MonoCloudJSCoreClient(options); + +let processingCallback = true; + +const updateJson = (elementId: string, value: unknown): void => { + const element = document.getElementById(elementId)!; + const newValue = JSON.stringify(value, null, 2); + element.textContent = newValue; +}; + +const updateValue = (elementId: string, value: string): void => { + const element = document.getElementById(elementId)!; + element.textContent = value; +}; + +const noUserMessage = document.getElementById('no-user-message')!; + +const updateUI = async (): Promise => { + const userData = document.getElementById('user-data')!; + const session = await client.getSession(); + + if (session && !processingCallback) { + noUserMessage.classList.add('hidden'); + userData.classList.remove('hidden'); + updateValue('id-token-value', session.idToken ?? 'null'); + updateJson('access-tokens-value', session.accessTokens); + updateValue('refresh-token-value', session.refreshToken ?? 'null'); + updateJson('user-value', session.user); + updateJson('session-value', session); + } else { + if (!processingCallback) { + noUserMessage.classList.remove('hidden'); + } + userData.classList.add('hidden'); + } +}; + +client + .processCallback() + .then(() => { + processingCallback = false; + const processCallbackMessage = document.getElementById('loading')!; + processCallbackMessage.classList.add('hidden'); + noUserMessage.classList.remove('hidden'); + return updateUI(); + }) + .then(); + +document.getElementById('sign-in-btn')!.addEventListener('click', async () => { + const mode = (document.getElementById('sign-in-mode') as HTMLSelectElement) + .value as InteractionMode; + await client.signIn({ mode }); + await updateUI(); +}); + +document.getElementById('sign-out-btn')!.addEventListener('click', async () => { + (document.getElementById('token-resource') as HTMLInputElement).value = ''; + (document.getElementById('token-scopes') as HTMLInputElement).value = ''; + (document.getElementById('force-refresh') as HTMLInputElement).checked = + false; + + const mode = (document.getElementById('sign-out-mode') as HTMLSelectElement) + .value as InteractionMode; + const federated = ( + document.getElementById('federated-signout') as HTMLInputElement + ).checked; + options.federatedSignOut = federated; + await client.signOut({ mode }); + await updateUI(); +}); + +document + .getElementById('refresh-session-btn')! + .addEventListener('click', async () => { + const mode = (document.getElementById('refresh-mode') as HTMLSelectElement) + .value as RefreshMode; + await client.refreshSession({ mode }); + await updateUI(); + }); + +document + .getElementById('refetch-user-btn')! + .addEventListener('click', async () => { + await client.refetchUserInfo(); + await updateUI(); + }); + +document + .getElementById('get-tokens-btn')! + .addEventListener('click', async () => { + const resource = ( + document.getElementById('token-resource') as HTMLInputElement + ).value.trim(); + const scopes = ( + document.getElementById('token-scopes') as HTMLInputElement + ).value.trim(); + const forceRefresh = ( + document.getElementById('force-refresh') as HTMLInputElement + ).checked; + + const getTokensOptions: GetTokensOptions = { + forceRefresh, + }; + + if (resource) { + getTokensOptions.resource = resource; + } + + if (scopes) { + getTokensOptions.scopes = scopes; + } + + try { + const tokens = await client.getTokens(getTokensOptions); + // eslint-disable-next-line no-console + console.log('Tokens received:', tokens); + + await updateUI(); + + alert('Tokens retrieved successfully!'); + } catch (error) { + // eslint-disable-next-line no-console + console.error('Error getting tokens:', error); + } + }); + +await updateUI(); diff --git a/packages/js-core/example/src/style.css b/packages/js-core/example/src/style.css new file mode 100644 index 00000000..d4b50785 --- /dev/null +++ b/packages/js-core/example/src/style.css @@ -0,0 +1 @@ +@import 'tailwindcss'; diff --git a/packages/js-core/example/src/vite-env.d.ts b/packages/js-core/example/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/packages/js-core/example/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/js-core/example/tsconfig.json b/packages/js-core/example/tsconfig.json new file mode 100644 index 00000000..a4883f28 --- /dev/null +++ b/packages/js-core/example/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/packages/js-core/example/vite.config.ts b/packages/js-core/example/vite.config.ts new file mode 100644 index 00000000..ad83474a --- /dev/null +++ b/packages/js-core/example/vite.config.ts @@ -0,0 +1,4 @@ +import { defineConfig } from 'vite'; +import tailwindcss from '@tailwindcss/vite'; + +export default defineConfig({ plugins: [tailwindcss()] }); diff --git a/packages/js-core/internal/package.json b/packages/js-core/internal/package.json new file mode 100644 index 00000000..7cad7ff3 --- /dev/null +++ b/packages/js-core/internal/package.json @@ -0,0 +1,5 @@ +{ + "main": "../dist/utils/internal.cjs", + "module": "../dist/utils/internal.mjs", + "types": "../dist/utils/internal.d.mts" +} diff --git a/packages/js-core/package.json b/packages/js-core/package.json new file mode 100644 index 00000000..d62e0a8c --- /dev/null +++ b/packages/js-core/package.json @@ -0,0 +1,69 @@ +{ + "name": "@monocloud/auth-js-core", + "version": "0.0.0", + "description": "MonoCloud JavaScript Authentication Core SDK", + "keywords": [ + "monocloud", + "authentication", + "auth", + "sdk", + "base", + "core", + "javascript" + ], + "homepage": "https://www.monocloud.com", + "bugs": { + "url": "https://github.com/monocloud/auth-js/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/monocloud/auth-js.git", + "directory": "packages/js-core" + }, + "license": "MIT", + "author": { + "name": "MonoCloud", + "email": "support@monocloud.com" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "exports": { + ".": { + "types": "./dist/index.d.mts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs", + "default": "./dist/index.mjs" + }, + "./utils": { + "types": "./dist/utils/index.d.mts", + "import": "./dist/utils/index.mjs", + "require": "./dist/utils/index.cjs", + "default": "./dist/utils/index.mjs" + }, + "./internal": { + "types": "./dist/utils/internal.d.mts", + "import": "./dist/utils/internal.mjs", + "require": "./dist/utils/internal.cjs", + "default": "./dist/utils/internal.mjs" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsdown", + "lint:es": "eslint src tests", + "lint:ts": "tsc", + "lint": "pnpm run lint:es && pnpm run lint:ts", + "test": "eslint tests && rimraf coverage && vitest" + }, + "dependencies": { + "@monocloud/auth-core": "workspace:*", + "browser-tabs-lock": "1.3.0" + }, + "devDependencies": { + "@monocloud/auth-test-utils": "workspace:*", + "eslint": "10.0.0" + } +} diff --git a/packages/js-core/src/constants.ts b/packages/js-core/src/constants.ts new file mode 100644 index 00000000..3b222491 --- /dev/null +++ b/packages/js-core/src/constants.ts @@ -0,0 +1,27 @@ +export const AUTH_CONSTANTS = { + CALLBACK_KEY: 'mc.state', + SESSION_KEY: 'mc.session', + LOCK_KEY: 'mc.lock', + DEFAULT_TIMEOUT_SECONDS: 600, + DEFAULT_RESPONSE_TYPE: 'code', + DEFAULT_CLOCK_SKEW_SECONDS: 60, + DEFAULT_CLOCK_TOLERANCE_SECONDS: 60, + DEFAULT_VALIDATE_ID_TOKEN: true, + DEFAULT_FEDERATED_SIGNOUT: true, + DEFAULT_FETCH_USERINFO: true, + DEFAULT_SCOPES: 'openid', + POPUP_WINDOW_WIDTH: 375, + POPUP_WINDOW_HEIGHT: 600, + FILTERED_ID_TOKEN_CLAIMS: [ + 'iss', + 'exp', + 'nbf', + 'aud', + 'nonce', + 'iat', + 'auth_time', + 'c_hash', + 'at_hash', + 's_hash', + ], +} as const; diff --git a/packages/js-core/src/index.ts b/packages/js-core/src/index.ts new file mode 100644 index 00000000..258a61ab --- /dev/null +++ b/packages/js-core/src/index.ts @@ -0,0 +1,64 @@ +export { + MonoCloudTokenError, + MonoCloudHttpError, + MonoCloudAuthBaseError, + MonoCloudOPError, + MonoCloudValidationError, +} from '@monocloud/auth-core'; + +export type { + AccessToken, + AuthenticateOptions, + ClientAuthMethod, + MonoCloudClientOptions, + PushedAuthorizationParams, + RefreshSessionOptions, + AuthState, + Authenticators, + AuthorizationParams, + CallbackParams, + JwsHeaderParameters, + EndSessionParameters, + Group, + IdTokenClaims, + IssuerMetadata, + SecurityAlgorithms, + Jwk, + Jwks, + MonoCloudSession, + MonoCloudUser, + Tokens, + UserinfoResponse, + CodeChallengeMethod, + DisplayOptions, + Prompt, + ResponseModes, + ResponseTypes, + RefreshGrantOptions, + RefetchUserInfoOptions, + ParResponse, +} from '@monocloud/auth-core'; + +export { MonoCloudOidcClient } from '@monocloud/auth-core'; + +export { MonoCloudJSCoreClient } from './monocloud-js-core-client'; +export { MonoCloudJsError } from './monocloud-js-error'; +export { LocalStorage, MemoryStorage, SessionStorage } from './storage'; + +export type { + MonoCloudJSCoreClientOptions, + IStorage, + InteractionMode, + ApplicationState, + Indicator, + MonoCloudTokens, + OnSessionCreating, + RefreshMode, + RefreshOptions, + SignInOptions, + SignOutOptions, + CallbackState, + PostCallback, + PostCallbackParams, + GetTokensOptions, +} from './types'; diff --git a/packages/js-core/src/lock.ts b/packages/js-core/src/lock.ts new file mode 100644 index 00000000..f339ddd7 --- /dev/null +++ b/packages/js-core/src/lock.ts @@ -0,0 +1,48 @@ +import TabLock from 'browser-tabs-lock'; +import { MonoCloudJsError } from './monocloud-js-error'; +import { MonoCloudAuthBaseError } from '@monocloud/auth-core'; + +const tabLock = new TabLock(); + +export async function withLock( + key: string, + cb: () => Promise +): Promise { + if (navigator.locks instanceof LockManager && window.isSecureContext) { + const abortController = new AbortController(); + const timeout = setTimeout(() => abortController.abort(), 5000); + try { + return await navigator.locks.request( + key, + { signal: abortController.signal }, + async () => { + clearTimeout(timeout); + return await cb(); + } + ); + } catch (error: any) { + if (error instanceof MonoCloudAuthBaseError) { + throw error; + } + + throw new MonoCloudJsError(`Failed to acquire lock : ${error.message}`); + } + } else { + const acquired = await tabLock.acquireLock(key, 5000); + if (!acquired) { + throw new MonoCloudJsError('Failed to acquire lock.'); + } + + const onPageHide = async (): Promise => { + await tabLock.releaseLock(key); + window.removeEventListener('pagehide', onPageHide); + }; + + try { + window.addEventListener('pagehide', onPageHide); + return await cb(); + } finally { + await tabLock.releaseLock(key); + } + } +} diff --git a/packages/js-core/src/monocloud-js-core-client.ts b/packages/js-core/src/monocloud-js-core-client.ts new file mode 100644 index 00000000..713d531d --- /dev/null +++ b/packages/js-core/src/monocloud-js-core-client.ts @@ -0,0 +1,1387 @@ +import { + generateNonce, + generatePKCE, + generateState, + mergeArrays, + parseCallbackParams, +} from '@monocloud/auth-core/utils'; +import type { + AccessToken, + AuthorizationParams, + IdTokenClaims, + MonoCloudSession, + ResponseTypes, + UserinfoResponse, +} from '@monocloud/auth-core'; +import { + ensureLeadingSlash, + findToken, + isPresent, + now, + parseSpaceSeparated, + parseSpaceSeparatedSet, + removeTrailingSlash, + setsEqual, +} from '@monocloud/auth-core/internal'; +import type { + CallbackState, + IStorage, + MonoCloudJSCoreClientOptions, + PostCallback, + PostMessageResult, + RefreshOptions, + SignInOptions, + SignOutOptions, + OnSessionCreating, + GetTokensOptions, + MonoCloudTokens, + InteractionMode, +} from './types'; +import { AUTH_CONSTANTS } from './constants'; +import { Ref } from './ref'; +import { LocalStorage } from './storage'; +import { + MonoCloudOidcClient, + MonoCloudOPError, + MonoCloudValidationError, +} from '@monocloud/auth-core'; +import { MonoCloudJsError } from './monocloud-js-error'; +import { withLock } from './lock'; + +/** + * `MonoCloudJSCoreClient` is the core SDK entry point for integrating MonoCloud authentication into single-page applications (SPAs) and other browser-based JavaScript environments. + * + * It provides: + * - Redirection and popup-based sign-in and sign-out. + * - Session and token management. + * - Automatic PKCE and state validation. + * - Silent and explicit token refreshing. + * + * ## Initialization + * + * ```typescript:src/auth.ts + * import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core'; + * + * export const client = new MonoCloudJSCoreClient({ + * tenantDomain: 'your-tenant.monocloud.com', + * clientId: 'your-client-id', + * appUrl: 'http://localhost:3000', + * callbackPath: '/callback', + * signOutCallbackPath: '/logout' + * }); + * ``` + * + * @category Classes + */ +export class MonoCloudJSCoreClient { + private storage: IStorage; + + /** + * Underlying OpenID Connect client used for advanced authorization and token operations. + */ + oidcClient: MonoCloudOidcClient; + + private options: MonoCloudJSCoreClientOptions; + + /** + * Default post-callback behavior: + * - If `returnUrl` is not set, remove query parameters from the current URL (no navigation). + * - If `returnUrl` is set, navigate to `returnUrl` with a full page reload. + * + * If you use a client-side router, provide a custom `postCallbackFn` to avoid full reloads. + */ + private postCallbackFn: PostCallback = state => { + if (!state.returnUrl) { + const url = new URL(window.location.href); + url.search = ''; + history.replaceState({}, document.title, url.href); + } else { + // eslint-disable-next-line no-console + console.warn( + 'Warning: The default behavior for return URL is to perform a full page reload, which resets all data when using MemoryStorage. To integrate with a client-side router, pass a custom postCallback() function during client initialization.' + ); + window.location.href = state.returnUrl; + } + + return; + }; + + /** + * Optional hook invoked while constructing a new session (e.g., after authenticate/refresh). + * This is useful for mapping app-specific state into your session or running side effects. + */ + private onSessionCreating?: OnSessionCreating; + + private get filteredIdTokenClaims(): string[] { + return ( + this.options.filteredIdTokenClaims ?? [ + ...AUTH_CONSTANTS.FILTERED_ID_TOKEN_CLAIMS, + ] + ); + } + + private get authWindowTimeout(): number { + return ( + this.options.authWindowTimeout ?? AUTH_CONSTANTS.DEFAULT_TIMEOUT_SECONDS + ); + } + + private get clockSkew(): number { + return this.options.clockSkew ?? AUTH_CONSTANTS.DEFAULT_CLOCK_SKEW_SECONDS; + } + + private get clockTolerance(): number { + return ( + this.options.clockTolerance ?? + AUTH_CONSTANTS.DEFAULT_CLOCK_TOLERANCE_SECONDS + ); + } + + private get fetchUserinfo(): boolean { + return this.options.fetchUserinfo ?? AUTH_CONSTANTS.DEFAULT_FETCH_USERINFO; + } + + private get validateIdToken(): boolean { + return ( + this.options.validateIdToken ?? AUTH_CONSTANTS.DEFAULT_VALIDATE_ID_TOKEN + ); + } + + private get responseType(): ResponseTypes { + return this.options.responseType ?? AUTH_CONSTANTS.DEFAULT_RESPONSE_TYPE; + } + + private get federatedSignOut(): boolean { + return ( + this.options.federatedSignOut ?? AUTH_CONSTANTS.DEFAULT_FEDERATED_SIGNOUT + ); + } + + private get redirectUri(): string { + return `${this.options.appUrl}${this.options.callbackPath ? ensureLeadingSlash(this.options.callbackPath) : '/'}`; + } + + private get signOutRedirectUri(): string { + return `${this.options.appUrl}${ensureLeadingSlash( + this.options.signOutCallbackPath ?? '/' + )}`; + } + + private get callbackStateKey(): string { + return `${AUTH_CONSTANTS.CALLBACK_KEY}.${this.options.clientId}`; + } + + private get lockKey(): string { + return `${AUTH_CONSTANTS.LOCK_KEY}.${this.options.clientId}`; + } + + /** + * Persists callback state in `sessionStorage` for redirect-based flows. + * + * This state is consumed by `processCallback()` and then cleared. + */ + private set redirectCallbackState(state: CallbackState | undefined) { + if (!state) { + window.sessionStorage.removeItem(this.callbackStateKey); + return; + } + + window.sessionStorage.setItem(this.callbackStateKey, JSON.stringify(state)); + } + + private get redirectCallbackState(): CallbackState | undefined { + try { + const stored = window.sessionStorage.getItem(this.callbackStateKey); + + if (!stored) { + return undefined; + } + + return JSON.parse(stored); + } catch (error) { + window.sessionStorage.removeItem(this.callbackStateKey); + + // eslint-disable-next-line no-console + console.error('Unexpected error reading callback state:'); + + throw error; + } + } + + private get popupWindowWidth(): number { + return this.options.popupWindowWidth ?? AUTH_CONSTANTS.POPUP_WINDOW_WIDTH; + } + + private get popupWindowHeight(): number { + return this.options.popupWindowHeight ?? AUTH_CONSTANTS.POPUP_WINDOW_HEIGHT; + } + + /** + * Storage key used for persisting the current session. + * + * Includes `clientId` and optional `sessionKey` suffix to avoid collisions. + */ + private get sessionKey(): string { + return `${AUTH_CONSTANTS.SESSION_KEY}.${this.options.clientId}${this.options.sessionKey ? `.${this.options.sessionKey}` : ''}`; + } + + private get appOrigin(): string { + return new URL(this.options.appUrl).origin; + } + + private get isTopLevel(): boolean { + return window.top === window; + } + + private get isSameParent(): boolean { + return window.parent === window; + } + + private get hasOpener(): boolean { + return window.opener !== null; + } + + private get isIframe(): boolean { + return !this.isTopLevel && !this.isSameParent && !this.hasOpener; + } + + private get isPopup(): boolean { + return this.isTopLevel && this.isSameParent && this.hasOpener; + } + + private get mainWindow(): boolean { + return !this.isIframe && !this.isPopup; + } + + /** + * Initializes a new instance of the MonoCloudJSCoreClient. + * + * @example Default Integration + * ```typescript:src/auth.ts tab="Default Integration" tab-group="constructor" + * import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core'; + * + * const client = new MonoCloudJSCoreClient({ + * tenantDomain: 'your-tenant.monocloud.com', + * clientId: 'your-client-id', + * appUrl: 'http://localhost:3000', + * }); + * ``` + * + * @example Custom Storage & Router + * ```typescript:src/auth.ts tab="Custom Storage & Router" tab-group="constructor" + * import { MonoCloudJSCoreClient } from '@monocloud/auth-js-core'; + * import { MemoryStorage } from './storage'; + * import { router } from './router'; + * + * const client = new MonoCloudJSCoreClient( + * options, + * new MemoryStorage(), + * (state) => { + * // Use router to navigate instead of full page reload. + * router.push(state.returnUrl || '/dashboard'); + * } + * ); + * ``` + * + * @param options Configuration options for the client. + * @param storage Custom storage implementation for session persistence. Defaults to `new LocalStorage()`. + * @param postCallbackFn A callback function executed after a successful sign-in or sign-out. Useful for client-side routing integration. + * @param onSessionCreating A hook used to modify or validate the session during creation. + */ + constructor( + options: MonoCloudJSCoreClientOptions, + storage: IStorage = new LocalStorage(), + postCallbackFn?: PostCallback, + onSessionCreating?: OnSessionCreating + ) { + // eslint-disable-next-line no-param-reassign + options.appUrl = removeTrailingSlash(options.appUrl); + + this.options = options; + this.storage = storage; + if (postCallbackFn) { + this.postCallbackFn = postCallbackFn; + } + + this.onSessionCreating = onSessionCreating; + + this.oidcClient = new MonoCloudOidcClient( + this.options.tenantDomain, + this.options.clientId, + { + clientAuthMethod: this.options.clientAuthMethod, + clientSecret: this.options.clientSecret, + idTokenSigningAlgorithm: this.options.idTokenSigningAlgorithm, + jwksCacheDuration: this.options.jwksCacheDuration, + metadataCacheDuration: this.options.metadataCacheDuration, + } + ); + } + + /** + * Processes the authentication callback. + * + * This method must be called on application startup (usually in the entry point or router) + * to handle the response from the identity provider after a redirect flow. + * + * - **Main Window:** Validates the state and code, exchanges them for tokens, and establishes the session. + * - **Popup/Iframe:** Posts the callback URL back to the parent/opener window to complete the flow. + * + * @example Application Entry + * ```typescript:src/main.ts + * import { client } from './auth'; + * + * async function init() { + * // Process any pending redirect callbacks before rendering. + * await client.processCallback(); + * + * // Continue mounting the app. + * renderApp(); + * } + * + * init(); + * ``` + * + * @returns A promise that resolves when the callback processing is complete. + */ + async processCallback(): Promise { + const currentUrl = new URL(window.location.href); + + const isSignInPath = + `${currentUrl.origin}${currentUrl.pathname}` === this.redirectUri; + const isSignOutPath = + `${currentUrl.origin}${currentUrl.pathname}` === this.signOutRedirectUri; + + if (this.mainWindow) { + const callbackState = this.redirectCallbackState; + this.redirectCallbackState = undefined; + + if (callbackState) { + /* v8 ignore else -- @preserve */ + if (isSignInPath && !callbackState.signOut) { + await this.processSignInCallback(window.location.href, callbackState); + } else if (isSignOutPath && callbackState.signOut) { + await this.processSignOutCallback( + window.location.href, + callbackState + ); + } + } + } + + if (!this.mainWindow && (isSignInPath || isSignOutPath)) { + const parentWindow = (window.opener ?? window.parent) as Window; + + parentWindow.postMessage( + { + source: 'monocloud-auth-js-core', + url: window.location.href, + }, + this.appOrigin + ); + } + } + + /** + * Initiates the sign-in flow. + * + * @example Redirect Flow + * ```typescript:src/app.ts tab="Redirect Flow" tab-group="signIn" + * document.getElementById('login-btn').addEventListener('click', async () => { + * // Standard top-level redirect to the authorization server. + * await client.signIn(); + * }); + * ``` + * + * @example Popup Flow + * ```typescript:src/app.ts tab="Popup Flow" tab-group="signIn" + * document.getElementById('login-popup-btn').addEventListener('click', async () => { + * // Opens a centered popup for authentication. + * await client.signIn({ mode: 'popup' }); + * console.log('User finished popup flow!'); + * }); + * ``` + * + * @example Sign Up + * ```typescript:src/app.ts tab="Sign Up" tab-group="signIn" + * document.getElementById('register-btn').addEventListener('click', async () => { + * // Forces the identity provider to show the registration/sign-up screen. + * await client.signIn({ signUp: true }); + * }); + * ``` + * + * @param signInOptions Optional configuration for the sign-in request. + * @throws {@link MonoCloudJsError} If called from within a popup or iframe. + */ + async signIn(signInOptions?: SignInOptions): Promise { + if (!this.mainWindow) { + throw new MonoCloudJsError( + 'Initiating an authentication flow in a popup or iframe is not supported' + ); + } + + const mode = signInOptions?.mode ?? 'redirect'; + const ref = this.createRef(mode); + + try { + const { codeChallenge, codeVerifier } = await generatePKCE(); + const state = generateState(); + const nonce = generateNonce(); + + const indicatorResource = this.options.resources + ?.map(x => x.resource) + .filter(x => !!x) + .reduce((acc, x) => `${acc} ${x}`, ''); + const indicatorScopes = this.options.resources + ?.map(x => x.scopes) + .filter(x => !!x) + .reduce((acc, x) => `${acc} ${x}`, ''); + + const mergedScopes = + mergeArrays( + parseSpaceSeparated(signInOptions?.scopes), + parseSpaceSeparated(this.options.defaultAuthParams?.scopes), + parseSpaceSeparated(indicatorScopes) + )?.join(' ') ?? AUTH_CONSTANTS.DEFAULT_SCOPES; + + const mergedResources = mergeArrays( + parseSpaceSeparated(signInOptions?.resource), + parseSpaceSeparated(this.options.defaultAuthParams?.resource), + parseSpaceSeparated(indicatorResource) + )?.join(' '); + + const params: AuthorizationParams = { + uiLocales: signInOptions?.uiLocales, + authenticatorHint: signInOptions?.authenticatorHint, + loginHint: signInOptions?.loginHint, + maxAge: signInOptions?.maxAge, + responseType: this.responseType, + scopes: mergedScopes, + codeChallenge, + codeChallengeMethod: 'S256', + redirectUri: this.redirectUri, + state, + nonce, + resource: mergedResources, + prompt: signInOptions?.prompt, + display: signInOptions?.display, + acrValues: signInOptions?.acrValues, + }; + + if (signInOptions?.signUp) { + params.prompt = 'create'; + } + + const url = await this.oidcClient.authorizationUrl(params); + + let resource = this.options.defaultAuthParams?.resource; + + if ( + params.responseType === 'token' || + params.responseType === 'id_token token' + ) { + resource = mergedResources; + } + + const callbackState: CallbackState = { + state, + codeVerifier, + nonce, + maxAge: signInOptions?.maxAge, + mode, + returnUrl: signInOptions?.returnUrl, + appState: signInOptions?.appState, + scopes: params.scopes, + responseType: this.responseType, + resource, + }; + + if (mode === 'redirect') { + this.redirectCallbackState = callbackState; + window.location.assign(url); + return; + } + + /* v8 ignore if -- @preserve */ + if (!ref) { + throw new MonoCloudJsError('Popup or Iframe creation failed'); + } + + const callbackUrl = await this.authWindow(url, ref); + + await this.processSignInCallback(callbackUrl, callbackState); + } finally { + ref?.close(); + } + } + + /** + * Initiates the sign-out flow. + * + * Clears the local session and optionally redirects the user to the identity provider to end the session there (Federated Sign-Out). + * + * @example Standard Sign Out + * ```typescript:src/app.ts tab="Redirect Flow" tab-group="signOut" + * document.getElementById('logout-btn').addEventListener('click', async () => { + * await client.signOut(); + * }); + * ``` + * + * @example Popup Sign Out + * ```typescript:src/app.ts tab="Popup Flow" tab-group="signOut" + * document.getElementById('logout-popup-btn').addEventListener('click', async () => { + * // Opens a popup to perform federated sign-out and keep the user on the current page. + * await client.signOut({ mode: 'popup' }); + * }); + * ``` + * + * @param signOutOptions Optional configuration for the sign-out request. + * @throws {@link MonoCloudJsError} If called from within a popup or iframe. + */ + async signOut(signOutOptions?: SignOutOptions): Promise { + if (!this.mainWindow) { + throw new MonoCloudJsError( + 'Initiating an authentication flow in a popup or iframe is not supported' + ); + } + + const mode = signOutOptions?.mode ?? 'redirect'; + const ref = this.createRef(mode); + + try { + const session = await this.getSession(); + + this.redirectCallbackState = undefined; + + if (!this.federatedSignOut) { + await this.setSession(); + return; + } + + const state = generateState(); + + let postLogoutRedirectUri: string | undefined; + + if (this.options.signOutCallbackPath) { + postLogoutRedirectUri = new URL( + this.options.signOutCallbackPath, + this.options.appUrl + ).toString(); + } + + if (signOutOptions?.postLogoutRedirectUri) { + ({ postLogoutRedirectUri } = signOutOptions); + } + + const url = await this.oidcClient.endSessionUrl({ + idToken: session?.idToken, + postLogoutRedirectUri, + state, + }); + + const callbackState: CallbackState = { + mode, + state: new URL(url).searchParams.get('state') ?? undefined, + signOut: true, + returnUrl: signOutOptions?.returnUrl, + }; + + if (mode === 'redirect') { + await this.setSession(); + this.redirectCallbackState = callbackState; + window.location.assign(url); + return; + } + + /* v8 ignore if -- @preserve */ + if (!ref?.getRef()) { + throw new MonoCloudJsError('Popup or Iframe creation failed'); + } + + const callbackUrl = await this.authWindow(url, ref); + + await this.processSignOutCallback(callbackUrl, callbackState); + } finally { + ref?.close(); + } + } + + /** + * Refreshes the user's session. + * + * This method can be used to explicitly refresh tokens using various methods: + * - `silent`: Uses a hidden iframe (requires third-party cookies). + * - `refresh_token`: Uses the Refresh Token Grant (requires `offline_access` scope). + * - `popup`: Opens a transient popup to refresh the session interactively. + * + * @example Silent Refresh (Iframe) + * ```typescript:src/app.ts tab="Silent (Iframe)" tab-group="refreshSession" + * await client.refreshSession({ mode: 'silent' }); + * ``` + * + * @example Refresh Token Grant + * ```typescript:src/app.ts tab="Refresh Token" tab-group="refreshSession" + * await client.refreshSession({ mode: 'refresh_token' }); + * ``` + * + * @param refreshOptions Optional configuration for the refresh flow. + * @throws {@link MonoCloudValidationError} If the session is invalid or missing required tokens. + * @throws {@link MonoCloudJsError} If called from within a popup or iframe. + */ + // eslint-disable-next-line consistent-return + async refreshSession(refreshOptions?: RefreshOptions): Promise { + if (!this.mainWindow) { + throw new MonoCloudJsError( + 'Initiating an authentication flow in a popup or iframe is not supported' + ); + } + + const mode = refreshOptions?.mode ?? 'silent'; + + switch (mode) { + case 'refresh_token': { + return await withLock(this.lockKey, async () => { + const session = await this.getSession(); + if (!session) { + throw new MonoCloudValidationError( + 'Ensure the user is authenticated before refreshing the session' + ); + } + + if (!session.refreshToken) { + throw new MonoCloudValidationError( + 'Refresh token not found. Sign in with offline_access scope to get the refresh token.' + ); + } + + const updatedSession = await this.oidcClient.refreshSession(session, { + fetchUserInfo: this.fetchUserinfo, + idTokenClockSkew: this.clockSkew, + idTokenClockTolerance: this.clockTolerance, + validateIdToken: this.validateIdToken, + refreshGrantOptions: refreshOptions?.refreshGrantOptions, + filteredIdTokenClaims: this.filteredIdTokenClaims, + onSessionCreating: this.onSessionCreating, + }); + + return await this.setSession(updatedSession); + }); + } + + case 'popup': + case 'silent': { + const ref = this.createRef(mode); + try { + const { codeChallenge, codeVerifier } = await generatePKCE(); + const state = generateState(); + const nonce = generateNonce(); + + const indicatorResource = this.options.resources + ?.map(x => x.resource) + .filter(x => !!x) + .reduce((acc, x) => `${acc} ${x}`, ''); + const indicatorScopes = this.options.resources + ?.map(x => x.scopes) + .filter(x => !!x) + .reduce((acc, x) => `${acc} ${x}`, ''); + + const mergedScopes = + mergeArrays( + parseSpaceSeparated(this.options.defaultAuthParams?.scopes), + parseSpaceSeparated(indicatorScopes) + )?.join(' ') ?? AUTH_CONSTANTS.DEFAULT_SCOPES; + + const mergedResources = mergeArrays( + parseSpaceSeparated(this.options.defaultAuthParams?.resource), + parseSpaceSeparated(indicatorResource) + )?.join(' '); + + const params: AuthorizationParams = { + prompt: 'none', + responseType: this.responseType, + scopes: mergedScopes, + codeChallenge, + codeChallengeMethod: 'S256', + redirectUri: this.redirectUri, + resource: mergedResources, + state, + nonce, + }; + + const url = await this.oidcClient.authorizationUrl(params); + + /* v8 ignore if -- @preserve */ + if (!ref) { + throw new MonoCloudJsError('Popup or Iframe creation failed'); + } + + const callbackUrl = await this.authWindow(url, ref); + + let resource = this.options.defaultAuthParams?.resource; + + if ( + params.responseType === 'token' || + params.responseType === 'id_token token' + ) { + resource = mergedResources; + } + + const callbackState: CallbackState = { + state, + codeVerifier, + nonce, + mode, + appState: refreshOptions?.appState, + scopes: params.scopes, + resource, + responseType: this.responseType, + }; + + return await this.processSignInCallback(callbackUrl, callbackState); + } finally { + ref?.close(); + } + } + } + } + + /** + * Refetches user information from the UserInfo endpoint and updates the local session. + * + * @example Usage + * ```typescript:src/app.ts + * await client.refetchUserInfo(); + * const session = await client.getSession(); + * console.log('Updated user data:', session.user); + * ``` + * + * @throws {@link MonoCloudValidationError} If the session is invalid or the default token is missing. + */ + async refetchUserInfo(): Promise { + let session = await this.getSession(); + + if (!session) { + throw new MonoCloudValidationError( + 'Ensure the user is authenticated before refetching userinfo' + ); + } + + const defaultToken = findToken( + session.accessTokens, + this.options.defaultAuthParams?.resource, + session.authorizedScopes + ); + + if (!defaultToken) { + throw new MonoCloudValidationError('Default token not found'); + } + + session = await this.oidcClient.refetchUserInfo(defaultToken, session, { + onSessionCreating: this.onSessionCreating, + }); + + await this.setSession(session); + } + + /** + * Retrieves the active tokens for the session. + * + * If the tokens are expired or about to expire, this method will attempt to refresh them automatically before returning. + * + * @example Get Default Tokens + * ```typescript:src/app.ts tab="Default Tokens" tab-group="getTokens" + * const tokens = await client.getTokens(); + * console.log(tokens.accessToken); + * ``` + * + * @example Force Refresh + * ```typescript:src/app.ts tab="Force Refresh" tab-group="getTokens" + * const tokens = await client.getTokens({ forceRefresh: true }); + * ``` + * + * @example Specific Resource + * ```typescript:src/app.ts tab="Specific Resource" tab-group="getTokens" + * const tokens = await client.getTokens({ + * resource: 'https://api.example.com', + * scopes: 'read:data' + * }); + * ``` + * + * @param options Options to control token retrieval (e.g., force refresh). + * @returns The active tokens. + * @throws {@link MonoCloudValidationError} If the session does not exist. + */ + async getTokens(options?: GetTokensOptions): Promise { + return await withLock(this.lockKey, async () => { + const session = await this.getSession(); + + if (!session) { + throw new MonoCloudValidationError('Session does not exist'); + } + + let scopes = options?.scopes; + + const resource = + options?.resource ?? this.options.defaultAuthParams?.resource; + + if (isPresent(options?.resource)) { + if (!isPresent(scopes)) { + // Check if there is a resource with undefined scope + const noScopeResource = this.options.resources?.find( + x => + setsEqual( + parseSpaceSeparatedSet(x.resource), + parseSpaceSeparatedSet(resource) + ) && !x.scopes + ); + + // Search for the same resource with scopes defined + if (!noScopeResource) { + scopes = this.options.resources?.find(x => + setsEqual( + parseSpaceSeparatedSet(x.resource), + parseSpaceSeparatedSet(resource) + ) + )?.scopes; + } + } + } + + const findTokenScopes = + !isPresent(options?.resource) && !isPresent(scopes) + ? session.authorizedScopes + : scopes; + + let token = findToken(session.accessTokens, resource, findTokenScopes); + + const tokenExpired = !!token && token.accessTokenExpiration - 30 < now(); + + let { idToken } = session; + let { refreshToken } = session; + + if (options?.forceRefresh || !token || tokenExpired) { + const updatedSession = await this.oidcClient.refreshSession(session, { + fetchUserInfo: options?.refetchUserInfo, + validateIdToken: this.validateIdToken, + idTokenClockSkew: this.clockSkew, + idTokenClockTolerance: this.clockTolerance, + refreshGrantOptions: { + resource, + scopes, + }, + filteredIdTokenClaims: this.options.filteredIdTokenClaims, + onSessionCreating: this.onSessionCreating, + }); + + await this.setSession(updatedSession); + + token = findToken( + updatedSession?.accessTokens, + resource, + findTokenScopes + ); + + idToken = updatedSession.idToken; + refreshToken = updatedSession.refreshToken; + } + + /* v8 ignore next -- @preserve */ + if (!token) { + throw new MonoCloudValidationError('Access token not found'); + } + + return { + ...token, + idToken, + refreshToken, + isExpired: token.accessTokenExpiration - 30 < now(), + }; + }); + } + + /** + * Retrieves the current session object from configured storage. + * + * @example Usage + * ```typescript:src/app.ts + * const session = await client.getSession(); + * if (session) { + * console.log('User is logged in:', session.user); + * } + * ``` + * + * @returns The active session or `undefined` if not authenticated. + */ + async getSession(): Promise { + try { + return JSON.parse((await this.storage.getItem(this.sessionKey)) ?? ''); + } catch { + await this.storage.removeItem(this.sessionKey); + return undefined; + } + } + + /** + * Persists or clears the session in storage. + * + * @param session When provided, the session is serialized to storage. When omitted, the session is removed. + */ + private async setSession(session?: MonoCloudSession): Promise { + if (!session) { + await this.storage.removeItem(this.sessionKey); + return; + } + + await this.storage.setItem(this.sessionKey, JSON.stringify(session)); + } + + /** + * Completes a sign-in flow using a callback URL and the saved callback state. + * + * Validates: + * - Callback URL matches configured `redirectUri` + * - Callback state is present and matches the response (`state`) + * - Authorization response parameters (success or error) + * - ID token (optional, depending on configuration and flow) + * + * On success, creates or updates the session and invokes the configured post-callback handler. + * + * @param callbackUrl Full callback URL received from the OP. + * @param callbackState State captured when initiating the flow. + * + * @throws {@link MonoCloudValidationError} If validation fails. + * @throws {@link MonoCloudOPError} If the OP returned an error response. + */ + private async processSignInCallback( + callbackUrl: string, + callbackState: CallbackState + ): Promise { + const url = new URL(callbackUrl); + + if (this.redirectUri !== `${url.origin}${url.pathname}`) { + throw new MonoCloudValidationError('Incorrect callback url'); + } + + if (callbackState.signOut) { + throw new MonoCloudValidationError('Incorrect callback state'); + } + + if (!isPresent(callbackState.scopes)) { + throw new MonoCloudValidationError('Scopes missing from callback state'); + } + + if (!isPresent(callbackState.responseType)) { + throw new MonoCloudValidationError( + 'Response type missing from callback state' + ); + } + + const callbackParams = parseCallbackParams( + this.responseType === 'code' ? url.search : url.hash + ); + + if (callbackState.state && callbackParams.state !== callbackState.state) { + throw new MonoCloudValidationError('Sign in callback states mismatch'); + } + + if (callbackParams.error) { + throw new MonoCloudOPError( + callbackParams.error, + callbackParams.errorDescription + ); + } + + const { accessToken, idToken, code } = callbackParams; + + switch (callbackState.responseType) { + case 'code': + if (!isPresent(code)) + throw new MonoCloudValidationError("Response is missing 'code'"); + break; + + case 'token': + if (!isPresent(accessToken)) + throw new MonoCloudValidationError( + "Response is missing 'access_token'" + ); + break; + + case 'id_token': + if (!isPresent(idToken)) + throw new MonoCloudValidationError("Response is missing 'id_token'"); + break; + + case 'id_token token': + if (!isPresent(idToken) || !isPresent(accessToken)) { + throw new MonoCloudValidationError( + "Response is missing 'id_token' or 'access_token'" + ); + } + break; + + case 'code id_token': + if (!isPresent(code) || !isPresent(idToken)) { + throw new MonoCloudValidationError( + "Response is missing 'code' or 'id_token'" + ); + } + break; + + case 'code token': + if (!isPresent(code) || !isPresent(accessToken)) { + throw new MonoCloudValidationError( + "Response is missing 'code' or 'access_token'" + ); + } + break; + + case 'code id_token token': + if ( + !isPresent(code) || + !isPresent(idToken) || + !isPresent(accessToken) + ) { + throw new MonoCloudValidationError( + "Response is missing 'code', 'id_token', or 'access_token'" + ); + } + break; + + default: + throw new MonoCloudValidationError( + `Unsupported response_type: ${callbackState.responseType}` + ); + } + + const isImplicit = + callbackState.responseType === 'token' || + callbackState.responseType === 'id_token token' || + callbackState.responseType === 'id_token'; + + const isCodeOrHybrid = + callbackState.responseType === 'code' || + callbackState.responseType === 'code id_token' || + callbackState.responseType === 'code token' || + callbackState.responseType === 'code id_token token'; + + if (isImplicit) { + let idTokenClaims = {} as IdTokenClaims; + if ( + callbackState.responseType === 'id_token' || + callbackState.responseType === 'id_token token' + ) { + if (this.validateIdToken) { + const jwks = await this.oidcClient.getJwks(); + idTokenClaims = await this.oidcClient.validateIdToken( + idToken!, + jwks.keys, + this.clockSkew, + this.clockTolerance, + callbackState.maxAge, + callbackState.nonce + ); + } else { + idTokenClaims = MonoCloudOidcClient.decodeJwt(idToken!); + } + } + + let userinfo = {} as unknown as UserinfoResponse; + + const accessTokens: AccessToken[] = []; + + if ( + callbackState.responseType === 'token' || + callbackState.responseType === 'id_token token' + ) { + if (!isPresent(callbackParams.expiresIn)) { + throw new MonoCloudValidationError( + "The 'expires_in' parameter is missing from the callback" + ); + } + + const scopes = callbackParams.scope ?? callbackState.scopes; + + if (this.fetchUserinfo) { + if (!scopes.includes('openid')) { + throw new MonoCloudValidationError( + 'Fetching userinfo requires the openid scope' + ); + } + userinfo = await this.oidcClient.userinfo(accessToken!); + } + + accessTokens.push({ + accessToken: accessToken!, + scopes, + requestedScopes: callbackState.scopes, + resource: callbackState.resource, + accessTokenExpiration: now() + callbackParams.expiresIn, + }); + } + + const session: MonoCloudSession = { + user: { + ...idTokenClaims, + ...userinfo, + }, + idToken: callbackParams.idToken, + accessTokens, + refreshToken: callbackParams.refreshToken, + authorizedScopes: callbackState.scopes, + }; + + await this.onSessionCreating?.( + session, + idTokenClaims, + userinfo, + callbackState.appState + ); + + await this.setSession(session); + + await this.postCallbackFn({ + type: 'signIn', + returnUrl: callbackState.returnUrl, + mode: callbackState.mode, + }); + return; + } + + // Authorization Code/Hybrid + /* v8 ignore else -- @preserve */ + if (isCodeOrHybrid) { + const session = await this.oidcClient.authenticate( + code!, + this.redirectUri, + callbackState.scopes, + this.options.defaultAuthParams?.resource, + { + fetchUserInfo: this.fetchUserinfo, + validateIdToken: this.validateIdToken, + idTokenNonce: callbackState.nonce, + codeVerifier: callbackState.codeVerifier, + idTokenMaxAge: callbackState.maxAge, + idTokenClockSkew: this.clockSkew, + idTokenClockTolerance: this.clockTolerance, + filteredIdTokenClaims: this.filteredIdTokenClaims, + onSessionCreating: async (s, i, u) => { + await this.onSessionCreating?.(s, i, u, callbackState.appState); + }, + } + ); + + await this.setSession(session); + + await this.postCallbackFn({ + type: 'signIn', + returnUrl: callbackState.returnUrl, + mode: callbackState.mode, + }); + + return; + } + + /* v8 ignore next -- @preserve */ + throw new MonoCloudValidationError('Invalid sign in callback'); + } + + /** + * Completes a sign-out callback. + * + * Clears the local session and validates that the callback `state` matches the + * stored callback state for the initiated sign-out flow. + * + * @param callbackUrl Full callback URL received from the OP. + * @param callbackState State captured when initiating the sign-out flow. + * + * @throws {@link MonoCloudValidationError} If callback validation fails. + */ + private async processSignOutCallback( + callbackUrl: string, + callbackState: CallbackState + ): Promise { + await this.setSession(); + const url = new URL(callbackUrl); + + if ((this.options.signOutCallbackPath ?? '/') !== url.pathname) { + throw new MonoCloudValidationError('Incorrect callback url'); + } + + if (!callbackState.signOut) { + throw new MonoCloudValidationError('Incorrect callback state'); + } + + const callbackParams = parseCallbackParams(url.search); + + if (callbackParams.state !== callbackState.state) { + throw new MonoCloudValidationError('Sign out states mismatch'); + } + + await this.postCallbackFn({ + type: 'signOut', + returnUrl: callbackState.returnUrl, + mode: callbackState.mode as InteractionMode, + }); + } + + /** + * Runs an auth request inside a popup window or hidden iframe and waits for the callback URL. + * + * This method: + * - Navigates the popup/iframe to the provided authorization URL. + * - Waits for a `postMessage` from the popup/iframe containing the callback URL. + * - Rejects on timeout or if the user closes the popup. + * + * It does not parse or validate the callback parameters; the caller does that. + * + * @param url Authorization/end-session URL to load in the auth window. + * @param ref Wrapper around the popup/iframe reference. + * @returns The callback URL received via `postMessage`. + * + * @throws {@link MonoCloudJsError} On timeout or if the user closes the popup. + */ + private async authWindow(url: string, ref: Ref): Promise { + ref.setUrl(url); + return await new Promise((resolve, reject) => { + const controller = new AbortController(); + + // eslint-disable-next-line prefer-const + let timeoutTimer: number | undefined; + // eslint-disable-next-line prefer-const + let intervalTimer: number | undefined; + + const abort = (): void => { + controller.abort(); + clearInterval(intervalTimer); + clearTimeout(timeoutTimer); + ref.close(); + }; + + const listener = (e: MessageEvent): void => { + if (e.origin !== this.appOrigin) { + return; + } + + if (typeof e.data !== 'object' || !isPresent(e.data.url)) { + return; + } + + if (e.source !== ref.getWindow()) { + return; + } + + if (e.data.source !== 'monocloud-auth-js-core') { + return; + } + + /* v8 ignore else -- @preserve */ + if (e.data.url) { + abort(); + resolve(e.data.url); + } + }; + + timeoutTimer = setTimeout(() => { + abort(); + reject(new MonoCloudJsError('Window timed out')); + }, this.authWindowTimeout * 1000) as unknown as number; + + intervalTimer = setInterval(() => { + /* v8 ignore else -- @preserve */ + if (ref.getRef()?.closed) { + abort(); + reject(new MonoCloudJsError('Window closed by user')); + } + }, 100) as unknown as number; + + window.addEventListener('message', listener, { + signal: controller.signal, + }); + }); + } + + /** + * Creates a window reference appropriate for the interaction mode. + * + * - `popup`: Opens a popup window. + * - `silent`: Creates a hidden iframe. + * - Other modes do not require a window reference. + */ + private createRef( + mode: 'popup' | 'silent' | 'redirect' | 'refresh_token' + ): Ref | undefined { + switch (mode) { + case 'popup': + return this.createPopup(); + + case 'silent': + return this.createIframe(); + + default: + return undefined; + } + } + + /** + * Opens a centered popup window for interactive authentication. + * + * @returns A `Ref` bound to the popup window. + * @throws {@link MonoCloudJsError} If the browser blocks the popup. + */ + private createPopup(): Ref { + const { screenLeft, screenTop } = window; + + const screenWidth = window.innerWidth; + const screenHeight = window.innerHeight; + + const windowWidth = this.popupWindowWidth; + const windowHeight = this.popupWindowHeight; + + const defaultLeft = screenLeft + (screenWidth - windowWidth) / 2; + const defaultTop = screenTop + (screenHeight - windowHeight) / 2; + + const maxLeft = screenLeft + (screenWidth - windowWidth); + const maxTop = screenTop + (screenHeight - windowHeight); + + const width = Math.min(windowWidth, screenWidth); + const height = Math.min(windowHeight, screenHeight); + const left = Math.max(0, Math.min(defaultLeft, maxLeft)); + const top = Math.max(0, Math.min(defaultTop, maxTop)); + + const popupWindow = + window.open( + 'about:blank', + 'mc.popup', + `width=${width},height=${height},top=${top},left=${left}` + ) ?? undefined; + + const ref = new Ref('popup', popupWindow); + if (!ref.getRef()) { + throw new MonoCloudJsError('Could not open popup'); + } + + return ref; + } + + /** + * Creates a hidden iframe for silent authentication (`prompt=none`). + * + * @returns A `Ref` bound to the iframe element. + * @throws {@link MonoCloudJsError} If the environment is cross-origin isolated. + */ + private createIframe(): Ref { + if (window.crossOriginIsolated) { + throw new MonoCloudJsError('Isolated Cross-Origin. Cannot create iframe'); + } + + const iframe = window.document.createElement('iframe'); + + iframe.setAttribute('width', '0'); + iframe.setAttribute('height', '0'); + iframe.style.display = 'none'; + + const ref = new Ref('silent', iframe); + window.document.body.appendChild(ref.getRef()); + return ref; + } +} diff --git a/packages/js-core/src/monocloud-js-error.ts b/packages/js-core/src/monocloud-js-error.ts new file mode 100644 index 00000000..81732640 --- /dev/null +++ b/packages/js-core/src/monocloud-js-error.ts @@ -0,0 +1,3 @@ +import { MonoCloudAuthBaseError } from '@monocloud/auth-core'; + +export class MonoCloudJsError extends MonoCloudAuthBaseError {} diff --git a/packages/js-core/src/ref.ts b/packages/js-core/src/ref.ts new file mode 100644 index 00000000..1fef2e34 --- /dev/null +++ b/packages/js-core/src/ref.ts @@ -0,0 +1,57 @@ +export class Ref { + constructor( + private readonly mode: 'silent' | 'popup', + private readonly ref: Window | HTMLIFrameElement | undefined + ) {} + + getRef(): T { + return this.ref as T; + } + + setUrl(url: string): void { + switch (this.mode) { + case 'popup': { + this.getRef().location.href = url; + break; + } + + case 'silent': { + this.getRef().setAttribute('src', url); + break; + } + } + } + + // eslint-disable-next-line consistent-return + getWindow(): Window { + switch (this.mode) { + case 'silent': + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return this.getRef().contentWindow!; + + case 'popup': + return this.getRef(); + } + } + + close(): void { + switch (this.mode) { + case 'silent': { + const iframe = this.getRef(); + if (iframe.isConnected) { + iframe.remove(); + } + break; + } + + case 'popup': { + const popupRef = this.getRef(); + + if (!popupRef.closed) { + popupRef.close(); + } + break; + } + } + } +} diff --git a/packages/js-core/src/storage.ts b/packages/js-core/src/storage.ts new file mode 100644 index 00000000..b260de00 --- /dev/null +++ b/packages/js-core/src/storage.ts @@ -0,0 +1,73 @@ +import { IStorage } from './types'; + +/** + * In-memory implementation of {@link IStorage}. + * + * Useful for testing or for sessions that should not persist across page reloads. + * + * @category Classes + */ +export class MemoryStorage implements IStorage { + private store: Record = {}; + + getItem(key: string): Promise { + return Promise.resolve(this.store[key] ?? null); + } + + removeItem(key: string): Promise { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete this.store[key]; + return Promise.resolve(); + } + + setItem(key: string, value: string): Promise { + this.store[key] = value; + return Promise.resolve(); + } +} + +/** + * `window.localStorage`-backed implementation of {@link IStorage}. + * + * This is the default storage used by `MonoCloudJSCoreClient`. + * + * @category Classes + */ +export class LocalStorage implements IStorage { + getItem(key: string): Promise { + return Promise.resolve(window.localStorage.getItem(key)); + } + + removeItem(key: string): Promise { + window.localStorage.removeItem(key); + return Promise.resolve(); + } + + setItem(key: string, value: string): Promise { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } +} + +/** + * `window.sessionStorage`-backed implementation of {@link IStorage}. + * + * Data persists for the lifetime of the current browser tab. + * + * @category Classes + */ +export class SessionStorage implements IStorage { + getItem(key: string): Promise { + return Promise.resolve(window.sessionStorage.getItem(key)); + } + + removeItem(key: string): Promise { + window.sessionStorage.removeItem(key); + return Promise.resolve(); + } + + setItem(key: string, value: string): Promise { + window.sessionStorage.setItem(key, value); + return Promise.resolve(); + } +} diff --git a/packages/js-core/src/types.ts b/packages/js-core/src/types.ts new file mode 100644 index 00000000..07f5ebf9 --- /dev/null +++ b/packages/js-core/src/types.ts @@ -0,0 +1,468 @@ +import type { + Authenticators, + AuthState, + DisplayOptions, + Jwk, + SecurityAlgorithms, + MonoCloudSession, + Prompt, + RefreshGrantOptions, + ResponseTypes, + ClientAuthMethod, + AuthorizationParams, + IdTokenClaims, + UserinfoResponse, + AccessToken, +} from '@monocloud/auth-core'; + +/** + * Defines a storage adapter used to persist session data. + * + * @category Types + */ +export interface IStorage { + /** + * Retrieves the value associated with the given key. + * + * @param key The unique identifier for the stored item. + * @returns The stored value as a string, or `null` if the key does not exist. + */ + getItem(key: string): Promise; + + /** + * Removes the item associated with the specified key from storage. + * + * @param key The unique identifier of the item to remove. + */ + removeItem(key: string): Promise; + + /** + * Stores a key-value pair in the storage. + * + * @param key The unique identifier for the item. + * @param value The string value to store. + */ + setItem(key: string, value: string): Promise; +} + +/** + * Represents an additional resource indicator that can be requested when acquiring tokens. + * + * @category Types + */ +export interface Indicator { + /** + * Space-separated list of resources to scope the access token to. + */ + resource: string; + + /** + * Optional space-separated list of scopes to request. + */ + scopes?: string; +} + +/** + * Configuration options for initializing `MonoCloudJSCoreClient`. + * + * @category Types + */ +export interface MonoCloudJSCoreClientOptions { + /** + * MonoCloud tenant domain. + * + * @example "https://your-domain.as.monocloud.com" + */ + tenantDomain: string; + + /** + * Client identifier of the application registered in MonoCloud. + */ + clientId: string; + + /** + * The base URL of the application implementing authentication. + * + * @example "https://example.com" + */ + appUrl: string; + + /** + * Relative callback path where MonoCloud redirects the user after sign-in. + * + * This URL must be registered in the application's callback URL settings. + * If omitted, the callback URL defaults to `appUrl` with path `/`. + * + * @example /callback + */ + callbackPath?: string; + + /** + * Whether the ID token should be validated. + * + * @defaultValue true + */ + validateIdToken?: boolean; + + /** + * Determines whether to fetch UserInfo after authentication. + * + * @defaultValue true + */ + fetchUserinfo?: boolean; + + /** + * When `true`, signs the user out from both the app and MonoCloud. + * + * @defaultValue true + */ + federatedSignOut?: boolean; + + /** List of ID token claims to exclude when constructing the final user object. */ + filteredIdTokenClaims?: string[]; + + /** + * Timeout duration (in seconds) for popups and iframes. + * + * @defaultValue 600 (seconds) + */ + authWindowTimeout?: number; + + /** + * The width of the popup window in pixels. + * + * This value is used to size and center the window when `signIn` or `signOut` + * is called with `mode: 'popup'`. + * + * @defaultValue 375 + */ + popupWindowWidth?: number; + + /** + * The height of the popup window in pixels. + * + * This value is used to size and center the window when `signIn` or `signOut` + * is called with `mode: 'popup'`. + * + * @defaultValue 600 + */ + popupWindowHeight?: number; + + /** + * The maximum allowed clock skew (in seconds) for token validation. + * + * @defaultValue 60 (seconds) + */ + clockSkew?: number; + + /** + * The maximum allowed clock tolerance for date-time-based claims. + * + * @defaultValue 60 (seconds) + */ + clockTolerance?: number; + + /** + * Specifies the OpenID Connect response type for the authentication flow. + * + * @defaultValue 'code' + */ + responseType?: ResponseTypes; + + /** + * Relative path where MonoCloud redirects the user after sign-out. + * + * @example /signout + */ + signOutCallbackPath?: string | null; + + /** + * Client secret or JSON Web Key for client authentication. + */ + clientSecret?: string | Jwk; + + /** + * Method used for client authentication. + */ + clientAuthMethod?: ClientAuthMethod; + + /** + * Algorithm used for verifying ID token signature. + * + * @defaultValue 'RS256' + */ + idTokenSigningAlgorithm?: SecurityAlgorithms; + + /** + * A unique identifier that differentiates sessions when multiple clients are used within the same application. + * + * This key is appended to the internal session key to prevent conflicts. + */ + sessionKey?: string; + + /** + * Default authorization parameters to include in authentication requests. + */ + defaultAuthParams?: AuthorizationParams; + + /** + * Additional resources that can be requested in `getTokens()`. + */ + resources?: Indicator[]; + + /** + * The duration in seconds to cache the JWKS document after it is fetched. + * + * @defaultValue 300 (seconds) + */ + jwksCacheDuration?: number; + + /** + * Time in seconds to cache the metadata document after it is fetched. + * + * @defaultValue 300 (seconds) + */ + metadataCacheDuration?: number; +} + +/** + * Custom application state passed through authentication flows. + * + * @category Types + */ +export type ApplicationState = Record; + +/** + * Callback invoked when a session is being created or updated. + * + * @category Types (Handler) + * + * @param session The session object being created. + * @param idToken Optional claims from the ID token received during authentication. + * @param userInfo Optional claims from the UserInfo response. + * @param state Optional application state associated with the session. + * @returns Returns `void` or a `Promise`. + */ +export type OnSessionCreating = ( + session: MonoCloudSession, + idToken?: Partial, + userInfo?: UserinfoResponse, + state?: ApplicationState +) => Promise | void; + +/** + * Interaction modes supported for sign-in and sign-out flows. + * + * @category Types (Enums) + */ +export type InteractionMode = 'popup' | 'redirect'; + +/** + * Metadata passed to `PostCallback` after callback processing. + * + * @category Types + */ +export type PostCallbackParams = + | { + type: 'signIn'; + mode: InteractionMode | 'silent'; + returnUrl?: string; + } + | { type: 'signOut'; mode: InteractionMode; returnUrl?: string }; + +/** + * Callback executed after sign-in or sign-out callback processing. + * + * @category Types (Handler) + * + * @param state Metadata describing the completed flow. + * @returns Returns `void` or a `Promise`. + */ +export type PostCallback = (state: PostCallbackParams) => Promise | void; + +/** + * Options for `signIn()`. + * + * @category Types + */ +export interface SignInOptions { + /** + * Specifies the preferred authenticator for sign-in. + */ + authenticatorHint?: Authenticators; + + /** + * Maximum allowed time (in seconds) since the user's last authentication. + * + * Used to force re-authentication if the last login exceeds this time. + */ + maxAge?: number; + + /** + * Provides a hint about the user's login identifier. Used to pre-fill or suggest a username. + * + * @example "user@example.com" + */ + loginHint?: string; + + /** + * Specifies preferred locales for the sign-in page. + * + * @example "en-US" + */ + uiLocales?: string; + + /** + * When `true`, starts the sign-up flow. + */ + signUp?: boolean; + + /** + * The desired authentication behavior. + */ + prompt?: Prompt; + + /** An array of authentication context class references (ACRs). */ + acrValues?: string[]; + + /** The desired user interface mode. */ + display?: DisplayOptions; + + /** + * Determines the interaction mode for sign-in. + * + * @defaultValue 'redirect' + */ + mode?: InteractionMode; + + /** + * Relative path to return to after sign-in. + */ + returnUrl?: string; + + /** Space-separated scopes requested from the authorization server. */ + scopes?: string; + + /** Space-separated resources the access token should be scoped to. */ + resource?: string; + + /** Additional custom application-specific state information. */ + appState?: ApplicationState; +} + +/** + * Options for `signOut()`. + * + * @category Types + */ +export interface SignOutOptions { + /** + * URI to redirect to after successful sign-out. + * + * This URI must be configured in the application's allowed sign-out callback URLs. + */ + postLogoutRedirectUri?: string; + + /** + * Determines the interaction mode for the sign-out process. + * + * @defaultValue 'redirect' + */ + mode?: InteractionMode; + + /** + * Relative path to return to after sign-out. + */ + returnUrl?: string; +} + +/** + * Interaction modes supported by `refreshSession()`. + * + * @category Types (Enums) + */ +export type RefreshMode = 'popup' | 'refresh_token' | 'silent'; + +/** + * Options for `refreshSession()`. + * + * @category Types + */ +export interface RefreshOptions { + /** + * Determines the interaction mode for the session refresh process. + * + * Using `popup` or `silent` starts a new authorization request and replaces the current session. + * + * @defaultValue 'silent' + */ + mode?: RefreshMode; + + /** Configuration specific to the Refresh Token Grant flow. */ + refreshGrantOptions?: RefreshGrantOptions; + + /** Additional custom application-specific state information. */ + appState?: ApplicationState; +} + +/** + * Internal state persisted between authorization start and callback processing. + * + * @category Types + */ +export interface CallbackState extends Partial { + signOut?: boolean; + mode: 'popup' | 'redirect' | 'silent'; + returnUrl?: string; + appState?: ApplicationState; + responseType?: ResponseTypes; +} + +/** + * Message payload posted by popup or iframe callback windows. + * + * @category Types + */ +export interface PostMessageResult { + source: 'monocloud-auth-js-core'; + url: string; +} + +/** + * Options for `getTokens()`. + * + * @category Types + */ +export interface GetTokensOptions extends RefreshGrantOptions { + /** + * Specifies whether to force the refresh of the access token. + */ + forceRefresh?: boolean; + + /** + * Determines whether to refetch the user information. + */ + refetchUserInfo?: boolean; +} + +/** + * Tokens available in the current session. + * + * @category Types + */ +export interface MonoCloudTokens extends AccessToken { + /** + * The ID token obtained during authentication. + */ + idToken?: string; + + /** + * The refresh token obtained during authentication. + */ + refreshToken?: string; + + /** + * Specifies if the access token has expired. + */ + isExpired: boolean; +} diff --git a/packages/js-core/src/utils/index.ts b/packages/js-core/src/utils/index.ts new file mode 100644 index 00000000..940f13bf --- /dev/null +++ b/packages/js-core/src/utils/index.ts @@ -0,0 +1 @@ +export * from '@monocloud/auth-core/utils'; diff --git a/packages/js-core/src/utils/internal.ts b/packages/js-core/src/utils/internal.ts new file mode 100644 index 00000000..4c537cd8 --- /dev/null +++ b/packages/js-core/src/utils/internal.ts @@ -0,0 +1 @@ +export * from '@monocloud/auth-core/internal'; diff --git a/packages/js-core/tests/get-tokens.test.ts b/packages/js-core/tests/get-tokens.test.ts new file mode 100644 index 00000000..2e786529 --- /dev/null +++ b/packages/js-core/tests/get-tokens.test.ts @@ -0,0 +1,822 @@ +/* eslint-disable import/no-extraneous-dependencies */ +/* eslint-disable no-param-reassign */ + +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import { fetchBuilder, generateIdToken } from '@monocloud/auth-test-utils'; +import { now } from '@monocloud/auth-core/internal'; +import { + MonoCloudHttpError, + MonoCloudValidationError, + type MonoCloudSession, + type MonoCloudUser, +} from '@monocloud/auth-core'; +import { setSession, testInstance, VanillaJsMockStorage } from './utils'; +import { freeze, travel, reset } from 'timekeeper'; + +describe('getTokens() Tests', () => { + let mockStorage: VanillaJsMockStorage; + + beforeEach(() => { + mockStorage = new VanillaJsMockStorage(); + + if (!(globalThis as any).LockManager) { + (globalThis as any).LockManager = class LockManager {}; + } + + (globalThis as any).navigator = (globalThis as any).navigator ?? {}; + }); + + afterEach(() => { + reset(); + window.localStorage.clear(); + window.sessionStorage.clear(); + }); + + it('should return the tokens', async () => { + const session: MonoCloudSession = { + idToken: 'idToken', + refreshToken: 'rt', + authorizedScopes: 'openid offline_access', + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid offline_access', + }, + ], + }; + + setSession(mockStorage, session); + const instance = testInstance({ storage: mockStorage }); + + const tokens = await instance.getTokens(); + + expect(tokens).toEqual({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + scopes: 'openid offline_access', + requestedScopes: 'openid offline_access', + idToken: 'idToken', + refreshToken: 'rt', + isExpired: false, + }); + }); + + it('should find the token with the resource from session', async () => { + const session: MonoCloudSession = { + idToken: 'idToken', + refreshToken: 'rt', + authorizedScopes: 'openid offline_access', + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid offline_access', + resource: 'https://resource.com', + }, + ], + }; + + setSession(mockStorage, session); + const instance = testInstance({ storage: mockStorage }); + + const tokens = await instance.getTokens({ + resource: 'https://resource.com', + scopes: 'openid offline_access', + }); + + expect(tokens).toEqual({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + scopes: 'openid offline_access', + requestedScopes: 'openid offline_access', + resource: 'https://resource.com', + idToken: 'idToken', + refreshToken: 'rt', + isExpired: false, + }); + }); + + it('should find the token with the undefined scopes', async () => { + const session: MonoCloudSession = { + idToken: 'idToken', + refreshToken: 'rt', + authorizedScopes: 'openid offline_access', + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: undefined, + resource: 'https://resource.com', + }, + ], + }; + + setSession(mockStorage, session); + + const instance = testInstance({ + storage: mockStorage, + resources: [{ resource: 'https://resource.com' }], + }); + + const tokens = await instance.getTokens({ + resource: 'https://resource.com', + }); + + expect(tokens).toEqual({ + accessToken: 'at', + scopes: 'openid offline_access', + resource: 'https://resource.com', + accessTokenExpiration: expect.any(Number), + idToken: 'idToken', + refreshToken: 'rt', + isExpired: false, + }); + }); + + it('should find the token with scopes defined in indicator options', async () => { + const session: MonoCloudSession = { + user: {} as MonoCloudUser, + authorizedScopes: 'openid abc', + accessTokens: [ + { + scopes: 'openid abc', + requestedScopes: 'openid abc', + accessToken: 'at', + resource: 'https://resource.com', + accessTokenExpiration: now() + 100, + }, + ], + idToken: 'idtoken', + refreshToken: 'rt', + }; + + setSession(mockStorage, session); + + const instance = testInstance({ + storage: mockStorage, + resources: [{ resource: 'https://resource.com', scopes: 'openid abc' }], + }); + + const tokens = await instance.getTokens({ + resource: 'https://resource.com', + }); + + expect(tokens).toEqual({ + accessToken: 'at', + scopes: 'openid abc', + requestedScopes: 'openid abc', + resource: 'https://resource.com', + accessTokenExpiration: expect.any(Number), + idToken: 'idtoken', + refreshToken: 'rt', + isExpired: false, + }); + }); + + it('should refresh the tokens if forceRefresh is specified', async () => { + const frozenTimeMs = 1330688329321; + freeze(frozenTimeMs); + + const originalIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId', nonce: 'original-nonce' }, + }); + + const newIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + refreshToken: 'rt1', + idToken: newIdToken, + scope: 'something', + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'test-user' }, + idToken: originalIdToken, + refreshToken: 'rt', + authorizedScopes: 'something', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 100, + scopes: 'something', + requestedScopes: 'something', + }, + ], + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const newFrozenTime = frozenTimeMs + 2000; + travel(newFrozenTime); + + const tokens = await instance.getTokens({ forceRefresh: true }); + + expect(tokens).toEqual({ + accessToken: 'at1', + accessTokenExpiration: expect.any(Number), + idToken: newIdToken, + refreshToken: 'rt1', + scopes: 'something', + requestedScopes: 'something', + isExpired: false, + }); + + const updatedSession = await instance.getSession(); + + expect(updatedSession).toEqual( + expect.objectContaining({ + user: expect.objectContaining({ sub: 'test-user' }), + idToken: newIdToken, + refreshToken: 'rt1', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at1', + scopes: 'something', + }), + ], + }) + ); + + fetchSpy.assert(); + }); + + it('should refresh using authorizedScopes when forceRefresh is true and no resource/scopes are provided', async () => { + const frozenTimeMs = 1330688329321; + freeze(frozenTimeMs); + + const originalIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId', nonce: 'original-nonce' }, + }); + + const newIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + refreshToken: 'rt1', + idToken: newIdToken, + scope: 'something', + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'test-user' }, + idToken: originalIdToken, + refreshToken: 'rt', + authorizedScopes: 'something', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 100, + scopes: 'abc', + requestedScopes: 'something', + }, + ], + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const newFrozenTime = frozenTimeMs + 2000; + travel(newFrozenTime); + + const tokens = await instance.getTokens({ forceRefresh: true }); + + expect(tokens).toEqual({ + accessToken: 'at1', + accessTokenExpiration: expect.any(Number), + idToken: newIdToken, + refreshToken: 'rt1', + scopes: 'something', + requestedScopes: 'something', + isExpired: false, + }); + + const updatedSession = await instance.getSession(); + + expect(updatedSession).toEqual( + expect.objectContaining({ + user: expect.objectContaining({ sub: 'test-user' }), + idToken: newIdToken, + refreshToken: 'rt1', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at1', + scopes: 'something', + }), + ], + }) + ); + + fetchSpy.assert(); + }); + + it('should throw error if force refresh is true and no refresh token is found', async () => { + const session: MonoCloudSession = { + user: { sub: 'test-user' }, + idToken: 'idtoken', + refreshToken: undefined, + authorizedScopes: 'abc', + accessTokens: [ + { + scopes: 'abc', + accessToken: 'at', + accessTokenExpiration: now() + 100, + }, + ], + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const tokensPromise = instance.getTokens({ forceRefresh: true }); + + await expect(tokensPromise).rejects.toBeInstanceOf( + MonoCloudValidationError + ); + + await expect(tokensPromise).rejects.toThrow( + 'Session does not contain refresh token' + ); + }); + + it('should refresh the tokens and fetch from userinfo using the new access token if specified', async () => { + const frozenTimeMs = 1330688329321; + freeze(frozenTimeMs); + + const originalIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId', nonce: 'original-nonce' }, + }); + + const newIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + refreshToken: 'rt1', + idToken: newIdToken, + scope: 'openid abc', + }) + .configureUserinfo({ + accessToken: 'at1', + claims: { + sub: 'test-user', + username: 'oooooooooosername', + test: '123', + test2: '1234', + }, + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'test-user' }, + idToken: originalIdToken, + refreshToken: 'rt', + authorizedScopes: 'openid abc', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 100, + scopes: 'openid abc', + requestedScopes: 'openid abc', + }, + ], + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const newFrozenTime = frozenTimeMs + 2000; + travel(newFrozenTime); + + const tokens = await instance.getTokens({ + forceRefresh: true, + refetchUserInfo: true, + }); + + expect(tokens).toEqual({ + accessToken: 'at1', + accessTokenExpiration: expect.any(Number), + idToken: newIdToken, + refreshToken: 'rt1', + scopes: 'openid abc', + requestedScopes: 'openid abc', + isExpired: false, + }); + + const updatedSession = await instance.getSession(); + + expect(updatedSession).toMatchObject({ + user: { + sub: 'test-user', + username: 'oooooooooosername', + test: '123', + test2: '1234', + }, + idToken: newIdToken, + refreshToken: 'rt1', + accessTokens: [ + { + accessToken: 'at1', + scopes: 'openid abc', + }, + ], + }); + + fetchSpy.assert(); + }); + + it('should save with the old refresh token if the updated token response does not have one', async () => { + const frozenTimeMs = 1330688329321; + freeze(frozenTimeMs); + + const originalIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId', nonce: 'original-nonce' }, + }); + + const newIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + idToken: newIdToken, + scope: 'something', + refreshToken: undefined, + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'test-user' }, + idToken: originalIdToken, + refreshToken: 'rt', + authorizedScopes: 'abc', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 100, + scopes: 'abc', + requestedScopes: 'abc', + }, + ], + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const newFrozenTime = frozenTimeMs + 2000; + travel(newFrozenTime); + + const tokens = await instance.getTokens({ forceRefresh: true }); + + expect(tokens).toEqual({ + accessToken: 'at1', + accessTokenExpiration: expect.any(Number), + idToken: newIdToken, + refreshToken: 'rt', + scopes: 'something', + requestedScopes: 'abc', + resource: undefined, + isExpired: false, + }); + + const updatedSession = await instance.getSession(); + + expect(updatedSession).toEqual( + expect.objectContaining({ + user: expect.objectContaining({ sub: 'test-user' }), + idToken: newIdToken, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at1', + scopes: 'something', + }), + ], + }) + ); + + fetchSpy.assert(); + }); + + it('should be able to customize the session using onSessionCreating', async () => { + const frozenTimeMs = 1330688329321; + freeze(frozenTimeMs); + + const originalIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId', nonce: 'original-nonce' }, + }); + + const newIdToken = await generateIdToken({ + claims: { sub: 'test-user', aud: 'clientId' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + refreshToken: 'rt1', + idToken: newIdToken, + scope: 'openid something', + }) + .createSpy(); + + const initialSession: MonoCloudSession = { + user: { sub: 'test-user' }, + idToken: originalIdToken, + refreshToken: 'rt', + authorizedScopes: 'openid abc', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 100, + scopes: 'openid abc', + requestedScopes: 'openid abc', + }, + ], + }; + + await setSession(mockStorage, initialSession); + + const instance = testInstance({ + storage: mockStorage, + onSessionCreating: (session, idtoken, userinfo, appState) => { + expect(appState).toBeUndefined(); + expect(userinfo).toBeUndefined(); + expect(idtoken).toBeDefined(); + + (session as any).custom = 1; + }, + }); + + const newFrozenTime = frozenTimeMs + 2000; + travel(newFrozenTime); + + const tokens = await instance.getTokens({ forceRefresh: true }); + + expect(tokens).toEqual({ + accessToken: 'at1', + scopes: 'openid something', + accessTokenExpiration: expect.any(Number), + idToken: newIdToken, + refreshToken: 'rt1', + requestedScopes: 'openid abc', + isExpired: false, + }); + + const updatedSession = await instance.getSession(); + + expect(updatedSession).toEqual( + expect.objectContaining({ + user: expect.objectContaining({ sub: 'test-user' }), + idToken: newIdToken, + refreshToken: 'rt1', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at1', + scopes: 'openid something', + }), + ], + custom: 1, + }) + ); + + fetchSpy.assert(); + }); + + it('should throw if session is not found', async () => { + await mockStorage.clear(); + + const instance = testInstance({ storage: mockStorage }); + + const tokensPromise = instance.getTokens(); + + await expect(tokensPromise).rejects.toBeInstanceOf( + MonoCloudValidationError + ); + await expect(tokensPromise).rejects.toThrow('Session does not exist'); + }); + + it('should throw error if refresh grant fails', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureRefreshToken({ + responseCode: 400, + error: 'some_error_code', + error_description: 'errorDescription', + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'test-user' }, + idToken: 'idtoken', + refreshToken: 'rt', + authorizedScopes: 'abc', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 100, + scopes: 'abc', + requestedScopes: 'abc', + }, + ], + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const tokensPromise = instance.getTokens({ forceRefresh: true }); + + await expect(tokensPromise).rejects.toThrow('some_error_code'); + await expect(tokensPromise).rejects.toMatchObject({ + error: 'some_error_code', + errorDescription: 'errorDescription', + }); + + fetchSpy.assert(); + }); + + it('should throw error if userinfo fails', async () => { + const newIdToken = await generateIdToken(); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + refreshToken: 'rt1', + idToken: newIdToken, + scope: 'openid something', + }) + .configureUserinfo({ + accessToken: 'at1', + responseCode: 400, + claims: { + error: 'error', + error_description: 'errorDescription', + }, + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + scopes: 'openid abc', + accessToken: 'at', + accessTokenExpiration: now() + 100, + }, + ], + idToken: 'idtoken', + refreshToken: 'rt', + authorizedScopes: 'openid abc', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ + storage: mockStorage, + fetchUserinfo: true, + }); + + const tokensPromise = instance.getTokens({ + forceRefresh: true, + refetchUserInfo: true, + }); + + await expect(tokensPromise).rejects.toThrow(MonoCloudHttpError); + await expect(tokensPromise).rejects.toThrow( + 'Error while fetching userinfo. Unexpected status code: 400' + ); + + fetchSpy.assert(); + }); + + it('should throw error if jwks fetch fails', async () => { + const newIdToken = await generateIdToken(); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + refreshToken: 'rt1', + idToken: newIdToken, + scope: 'openid something', + }) + .configureJwks({ + responseCode: 400, + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + scopes: 'abc', + accessToken: 'at', + accessTokenExpiration: now() + 100, + }, + ], + idToken: 'idtoken', + refreshToken: 'rt', + authorizedScopes: 'abc', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ + storage: mockStorage, + fetchUserinfo: false, + }); + + const tokensPromise = instance.getTokens({ forceRefresh: true }); + + await expect(tokensPromise).rejects.toThrow(MonoCloudHttpError); + await expect(tokensPromise).rejects.toThrow( + 'Error while fetching JWKS. Unexpected status code: 400' + ); + + fetchSpy.assert(); + }); + + it('should throw error if id token validation fails', async () => { + const validIdToken = await generateIdToken(); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureRefreshToken({ + body: 'grant_type=refresh_token&refresh_token=rt', + accessToken: 'at1', + refreshToken: 'rt1', + idToken: 'malformed_token_string', + scope: 'openid something', + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'test-user' }, + accessTokens: [ + { + scopes: 'abc', + accessToken: 'at', + accessTokenExpiration: now() + 100, + }, + ], + idToken: validIdToken, + refreshToken: 'rt', + authorizedScopes: 'abc', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const tokensPromise = instance.getTokens({ forceRefresh: true }); + + await expect(tokensPromise).rejects.toThrow( + 'ID Token must have a header, payload and signature' + ); + + fetchSpy.assert(); + }); +}); diff --git a/packages/js-core/tests/lock.test.ts b/packages/js-core/tests/lock.test.ts new file mode 100644 index 00000000..74f3df85 --- /dev/null +++ b/packages/js-core/tests/lock.test.ts @@ -0,0 +1,239 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +// eslint-disable-next-line import/no-extraneous-dependencies +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { withLock } from '../src/lock'; +import { MonoCloudJsError } from '../src/monocloud-js-error'; +import { MonoCloudValidationError } from '@monocloud/auth-core'; + +const tabLockMocks = vi.hoisted(() => ({ + acquireLock: vi.fn(), + + releaseLock: vi.fn(), +})); + +vi.mock('browser-tabs-lock', () => { + return { + default: class { + acquireLock = tabLockMocks.acquireLock; + + releaseLock = tabLockMocks.releaseLock; + }, + }; +}); + +describe('withLock()', () => { + const originalLockManager = (globalThis as any).LockManager; + const originalLocks = (navigator as any).locks; + const originalSecureContext = (window as any).isSecureContext; + + const setSecureContext = (val: boolean): void => { + Object.defineProperty(window, 'isSecureContext', { + value: val, + configurable: true, + }); + }; + + const setWebLocksEnabled = (opts: { + enabled: boolean; + requestImpl?: (key: string, options: any, cb: () => any) => any; + }): void => { + class TestLockManager {} + (globalThis as any).LockManager = TestLockManager; + + if (!opts.enabled) { + Object.defineProperty(navigator, 'locks', { + value: {}, + configurable: true, + }); + return; + } + + const lm = new TestLockManager() as any; + lm.request = vi.fn( + opts.requestImpl ?? ((_k: any, _o: any, cb: any): Promise => cb()) + ); + + Object.defineProperty(navigator, 'locks', { + value: lm, + configurable: true, + }); + }; + + beforeEach(() => { + vi.useFakeTimers(); + vi.spyOn(window, 'addEventListener'); + vi.spyOn(window, 'removeEventListener'); + vi.spyOn(globalThis, 'clearTimeout'); + + tabLockMocks.acquireLock.mockReset(); + tabLockMocks.releaseLock.mockReset(); + }); + + afterEach(() => { + vi.useRealTimers(); + (window.addEventListener as any).mockRestore?.(); + (window.removeEventListener as any).mockRestore?.(); + (globalThis.clearTimeout as any).mockRestore?.(); + + if (originalLockManager) { + (globalThis as any).LockManager = originalLockManager; + } else { + delete (globalThis as any).LockManager; + } + + Object.defineProperty(navigator, 'locks', { + value: originalLocks, + configurable: true, + }); + Object.defineProperty(window, 'isSecureContext', { + value: originalSecureContext, + configurable: true, + }); + + vi.restoreAllMocks(); + }); + + it('web locks - does NOT wrap MonoCloudAuthBaseError (passes through)', async () => { + setSecureContext(true); + setWebLocksEnabled({ + enabled: true, + requestImpl: (_key, _options, innerCb) => innerCb(), + }); + + const validationMsg = 'Ensure the user is authenticated'; + const cb = vi.fn(() => { + throw new MonoCloudValidationError(validationMsg); + }); + + const p = withLock('k_validation', cb); + await expect(p).rejects.not.toBeInstanceOf(MonoCloudJsError); + await expect(p).rejects.toBeInstanceOf(MonoCloudValidationError); + await expect(p).rejects.toThrow(validationMsg); + }); + + it('web locks - successfully acquires lock and returns callback result', async () => { + setSecureContext(true); + setWebLocksEnabled({ enabled: true }); + + const cb = vi.fn(() => Promise.resolve('success_data')); + const result = await withLock('key1', cb); + + expect(result).toBe('success_data'); + expect(cb).toHaveBeenCalled(); + const lm = (navigator as any).locks; + expect(lm.request).toHaveBeenCalledWith( + 'key1', + expect.objectContaining({ signal: expect.any(AbortSignal) }), + expect.any(Function) + ); + }); + + it('web locks - wraps generic errors in MonoCloudJsError', async () => { + setSecureContext(true); + setWebLocksEnabled({ enabled: true }); + const genericError = new Error('Network request failed'); + const cb = vi.fn(() => { + throw genericError; + }); + const p = withLock('k_generic', cb); + await expect(p).rejects.toBeInstanceOf(MonoCloudJsError); + await expect(p).rejects.toThrow( + 'Failed to acquire lock : Network request failed' + ); + }); + + it('tabs lock - successfully acquires, runs, and releases lock', async () => { + setSecureContext(false); + setWebLocksEnabled({ enabled: true }); + + tabLockMocks.acquireLock.mockResolvedValue(true); + tabLockMocks.releaseLock.mockResolvedValue(undefined); + + const cb = vi.fn(() => Promise.resolve('fallback_data')); + const result = await withLock('key_fallback', cb); + + expect(result).toBe('fallback_data'); + expect(tabLockMocks.acquireLock).toHaveBeenCalledWith('key_fallback', 5000); + expect(cb).toHaveBeenCalled(); + expect(tabLockMocks.releaseLock).toHaveBeenCalledWith('key_fallback'); + }); + + it('tabs lock - throws MonoCloudJsError if lock cannot be acquired', async () => { + setSecureContext(false); + setWebLocksEnabled({ enabled: true }); + + tabLockMocks.acquireLock.mockResolvedValue(false); + + const cb = vi.fn(); + const p = withLock('key_busy', cb); + + await expect(p).rejects.toBeInstanceOf(MonoCloudJsError); + await expect(p).rejects.toThrow('Failed to acquire lock.'); + expect(cb).not.toHaveBeenCalled(); + }); + + it('tabs lock - releases lock even if callback crashes', async () => { + setSecureContext(false); + setWebLocksEnabled({ enabled: true }); + + tabLockMocks.acquireLock.mockResolvedValue(true); + const cb = vi.fn(() => { + throw new Error('Business Logic Crash'); + }); + + const p = withLock('key_crash', cb); + + await expect(p).rejects.toThrow('Business Logic Crash'); + expect(tabLockMocks.releaseLock).toHaveBeenCalledWith('key_crash'); + }); + + it('web locks - triggers the abort signal when the 5000ms timeout is reached', () => { + setSecureContext(true); + + let capturedSignal: AbortSignal; + + setWebLocksEnabled({ + enabled: true, + requestImpl: (_k, options, _cb) => { + capturedSignal = options.signal; + return new Promise(() => {}); + }, + }); + + const cb = vi.fn(); + + withLock('k_timer', cb).catch(() => {}); + vi.advanceTimersByTime(5000); + expect(capturedSignal!.aborted).toBe(true); + }); + + it('tabs lock - releases lock immediately when pagehide event fires', async () => { + setSecureContext(false); + setWebLocksEnabled({ enabled: true }); + + tabLockMocks.acquireLock.mockResolvedValue(true); + + let finishCallback: () => void; + const cb = vi.fn( + () => + new Promise(resolve => { + finishCallback = resolve; + }) + ); + + const promise = withLock('k_pagehide_test', cb); + await vi.waitFor(() => { + expect(window.addEventListener).toHaveBeenCalledWith( + 'pagehide', + expect.any(Function) + ); + }); + + window.dispatchEvent(new Event('pagehide')); + + expect(tabLockMocks.releaseLock).toHaveBeenCalledWith('k_pagehide_test'); + + finishCallback!(); + await promise; + }); +}); diff --git a/packages/js-core/tests/refetch-userinfo.test.ts b/packages/js-core/tests/refetch-userinfo.test.ts new file mode 100644 index 00000000..ec476589 --- /dev/null +++ b/packages/js-core/tests/refetch-userinfo.test.ts @@ -0,0 +1,160 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { beforeEach, describe, expect, it } from 'vitest'; +import type { MonoCloudSession } from '@monocloud/auth-core'; +import { now } from '@monocloud/auth-core/internal'; +import { fetchBuilder } from '@monocloud/auth-test-utils'; +import { setSession, testInstance, VanillaJsMockStorage } from './utils'; +import { MonoCloudValidationError } from '@monocloud/auth-core'; + +describe('refetchUserinfo() Tests', () => { + let mockStorage: VanillaJsMockStorage; + + beforeEach(() => { + mockStorage = new VanillaJsMockStorage(); + window.localStorage.clear(); + }); + + it('should throw an error if there is no session', async () => { + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.refetchUserInfo().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe( + 'Ensure the user is authenticated before refetching userinfo' + ); + }); + + it('should throw an error if the openid scope is not present', async () => { + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'token', + refreshToken: 'rt', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + expect(await instance.getSession()).toBeDefined(); + + const error = await instance.refetchUserInfo().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Fetching userinfo requires the openid scope'); + + expect(await instance.getSession()).toEqual({ + user: { sub: 'sub' }, + refreshToken: 'rt', + authorizedScopes: 'token', + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: expect.any(Number), + }, + ], + }); + }); + + it('should refetch userinfo successfully', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureUserinfo({ + claims: { new: 'claim', from: 'userinfo', username: 'username' }, + }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'openid', + requestedScopes: 'openid', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'openid', + refreshToken: 'rt', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + expect(await instance.getSession()).toEqual({ + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'openid', + requestedScopes: 'openid', + accessTokenExpiration: expect.any(Number), + }, + ], + authorizedScopes: 'openid', + refreshToken: 'rt', + }); + + await instance.refetchUserInfo(); + + const sessionNew: MonoCloudSession = { + user: { + sub: 'sub', + new: 'claim', + from: 'userinfo', + username: 'username', + }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'openid', + requestedScopes: 'openid', + accessTokenExpiration: expect.any(Number), + }, + ], + refreshToken: 'rt', + authorizedScopes: 'openid', + }; + + fetchSpy.assert(); + mockStorage.expectSession(sessionNew); + expect(await instance.getSession()).toEqual(sessionNew); + }); + + it('should throw an error if default token is not present', async () => { + const session: MonoCloudSession = { + user: { sub: 'sub' }, + authorizedScopes: 'openid', + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + scopes: 'profile', + requestedScopes: 'profile', + accessTokenExpiration: now() + 1000, + resource: 'some-api', + }, + ], + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.refetchUserInfo().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Default token not found'); + }); +}); diff --git a/packages/js-core/tests/refresh-session.test.ts b/packages/js-core/tests/refresh-session.test.ts new file mode 100644 index 00000000..975aee7f --- /dev/null +++ b/packages/js-core/tests/refresh-session.test.ts @@ -0,0 +1,1700 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { + fetchBuilder, + generateIdToken, + MockWindow, +} from '@monocloud/auth-test-utils'; +import { setSession, testInstance, VanillaJsMockStorage } from './utils'; +import { + MonoCloudHttpError, + MonoCloudOPError, + MonoCloudSession, + MonoCloudValidationError, + ResponseTypes, +} from '@monocloud/auth-core'; +import { now } from '@monocloud/auth-core/internal'; +import { MonoCloudJsError } from '../src'; + +const tabLockMocks = vi.hoisted(() => ({ + acquireLock: vi.fn(() => true), + releaseLock: vi.fn(() => void 0), +})); + +vi.mock('browser-tabs-lock', () => { + return { + default: class TabLockMock { + acquireLock = tabLockMocks.acquireLock; + + releaseLock = tabLockMocks.releaseLock; + }, + }; +}); + +describe('instance.refreshSession() Tests', () => { + let mockWindow: MockWindow; + let mockStorage: VanillaJsMockStorage; + + const urlRegex = + /^https:\/\/example\.com\/connect\/authorize\?client_id=clientId&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&scope=[a-zA-Z0-9+_% -]+&response_type=[a-zA-Z0-9_+]+&nonce=[a-zA-Z0-9_-]+&prompt=[a-zA-Z0-9_-]+&code_challenge=[a-zA-Z0-9_-]+&code_challenge_method=S256&state=[a-zA-Z0-9_-]+$/; + + beforeEach(() => { + mockWindow = new MockWindow(); + mockStorage = new VanillaJsMockStorage(); + + if (!(globalThis as any).LockManager) { + (globalThis as any).LockManager = class LockManager {}; + } + + (globalThis as any).navigator = (globalThis as any).navigator ?? {}; + }); + + afterEach(() => { + mockWindow.restore(); + window.localStorage.clear(); + }); + + it('should throw if no session exists', async () => { + const instance = testInstance({ storage: mockStorage }); + + const error = await instance + .refreshSession({ mode: 'refresh_token' }) + .catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe( + 'Ensure the user is authenticated before refreshing the session' + ); + }); + + it('Refresh Token Mode - should throw an error if there is no refresh token', async () => { + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'token', + }; + + setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + expect(await instance.getSession()).toBeDefined(); + + const error = await instance + .refreshSession({ + mode: 'refresh_token', + }) + .catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe( + 'Refresh token not found. Sign in with offline_access scope to get the refresh token.' + ); + }); + + it('should throw error if the code is not running in the main window', async () => { + vi.spyOn(window, 'opener', 'get').mockReturnValue(null); + vi.spyOn(window, 'parent', 'get').mockReturnValue({} as unknown as Window); + vi.spyOn(window, 'top', 'get').mockReturnValue({} as unknown as Window); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.refreshSession().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe( + 'Initiating an authentication flow in a popup or iframe is not supported' + ); + }); + + it('Refresh Token Mode - should refresh successfully', async () => { + const idToken = await generateIdToken(); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureRefreshToken({ + idToken, + accessToken: 'newAt', + refreshToken: 'newRt', + body: 'grant_type=refresh_token&refresh_token=rt', + }) + .configureUserinfo({ accessToken: 'newAt' }) + .createSpy(); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: now() + 1000, + }, + ], + refreshToken: 'rt', + authorizedScopes: 'token', + }; + + setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + await instance.refreshSession({ + mode: 'refresh_token', + }); + + const sessionNew = { + user: { + sub: 'sub', + sub_jwk: expect.any(Object), + username: 'username', + }, + accessTokens: [ + { + accessToken: 'newAt', + scopes: 'openid offline_access', + requestedScopes: 'token', + accessTokenExpiration: expect.any(Number), + }, + ], + refreshToken: 'newRt', + idToken, + authorizedScopes: 'token', + }; + + await vi.waitFor(async () => { + fetchSpy.assert(); + mockStorage.expectSession(sessionNew).expectCallbackStateRemoved(); + expect(await instance.getSession()).toEqual(sessionNew); + }); + }); + + it('Refresh Token Mode - should throw an error when refreshing session fails', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureRefreshToken({ + responseCode: 500, + body: 'grant_type=refresh_token&refresh_token=rt', + }) + .createSpy(); + + const storedSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, storedSession); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance + .refreshSession({ mode: 'refresh_token' }) + .catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudHttpError); + expect(error.message).toBe( + 'Error while performing refresh token grant. Unexpected status code: 500' + ); + + fetchSpy.assert(); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + }); + + it.each(['code', 'code id_token'])( + 'Popup Mode - should refresh session through popup and resolve when a session message is received - %s', + async responseType => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + responseType: responseType as ResponseTypes, + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + const generatedNonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: generatedNonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'newAt', + refreshToken: 'newRt', + idToken, + }) + .configureUserinfo({ + accessToken: 'newAt', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const callbackUrl = + responseType === 'code' + ? `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + generatedState ?? '' + )}` + : `http://localhost:3000/callback#state=${encodeURIComponent( + generatedState ?? '' + )}&code=auth-code&id_token=${encodeURIComponent('dummy-id-token')}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(refreshPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + refreshToken: 'newRt', + idToken: expect.any(String), + accessTokens: [ + expect.objectContaining({ + accessToken: 'newAt', + accessTokenExpiration: expect.any(Number), + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + + mockStorage.expectCallbackStateRemoved(); + }); + + fetchSpy.assert(); + } + ); + + it('Popup Mode - should refresh session through popup and resolve when a session message is received - implicit', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'api', + requestedScopes: 'api', + }, + ], + authorizedScopes: 'api', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'token', + fetchUserinfo: false, + defaultAuthParams: { scopes: 'api' }, + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + authorizedScopes: 'api', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + scopes: 'api', + requestedScopes: 'api', + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback#state=${encodeURIComponent( + generatedState ?? '' + )}&access_token=newAt&expires_in=600&scope=api`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(refreshPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const session = await instance.getSession(); + expect(session).toEqual( + expect.objectContaining({ + accessTokens: [ + { + accessToken: 'newAt', + scopes: 'api', + accessTokenExpiration: expect.any(Number), + requestedScopes: 'api', + }, + ], + authorizedScopes: 'api', + user: {}, + }) + ); + + mockStorage.expectCallbackStateRemoved(); + }); + + fetchSpy.assert(); + }); + + it('Popup Mode - should reject when redirect has error', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ storage: mockStorage }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + + const errorCallbackUrl = + `http://localhost:3000/callback` + + `?error=some_error` + + `&error_description=${encodeURIComponent('something went wrong')}` + + `&state=${encodeURIComponent(generatedState ?? '')}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: errorCallbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await refreshPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudOPError); + expect(error).toMatchObject({ + error: 'some_error', + errorDescription: 'something went wrong', + }); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + mockStorage.expectCallbackStateRemoved(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + fetchSpy.assert(); + }); + }); + + it('Popup Mode - can timeout', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + authWindowTimeout: 0.1, + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const error = await refreshPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Window timed out'); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + mockStorage.expectCallbackStateRemoved(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + fetchSpy.assert(); + }); + }); + + it('Popup Mode - should throw an error if popup fails to open', async () => { + mockWindow.assert(); + + vi.spyOn(window, 'open').mockReturnValue(null); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ storage: mockStorage }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const error = await instance + .refreshSession({ mode: 'popup' }) + .catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error).toMatchObject({ message: 'Could not open popup' }); + + mockStorage.expectCallbackStateRemoved(); + + expect(await instance.getSession()).toEqual(existingSession); + }); + + it('Silent Mode - should refresh session through iframe and resolve when a session message is received', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const iframe = window.document.createElement('iframe'); + + vi.spyOn(window.document, 'createElement').mockReturnValue(iframe); + + vi.spyOn(iframe, 'contentWindow', 'get').mockReturnValue( + window as unknown as Window + ); + + const appendChildSpy = vi.spyOn(window.document.body, 'appendChild'); + + let iframeSrc = ''; + + vi.spyOn(iframe, 'setAttribute').mockImplementation( + (name: string, value: string) => { + if (name === 'src') iframeSrc = value; + } + ); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ storage: mockStorage }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession(); + + await vi.waitFor(() => { + expect(appendChildSpy).toHaveBeenCalledWith(iframe); + expect(iframeSrc).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(iframeSrc); + const generatedState = authorizeUrl.searchParams.get('state'); + const generatedNonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: generatedNonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'newAt', + refreshToken: 'newRt', + idToken, + }) + .configureUserinfo({ + accessToken: 'newAt', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const callbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + generatedState ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: window, + origin: 'http://localhost:3000', + }) + ); + + await expect(refreshPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(document.body.contains(iframe)).toBe(false); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + refreshToken: 'newRt', + idToken: expect.any(String), + accessTokens: [ + expect.objectContaining({ + accessToken: 'newAt', + accessTokenExpiration: expect.any(Number), + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + + fetchSpy.assert(); + }); + }); + + it('Silent Mode - should refresh session through popup and resolve when a session message is received - implicit', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const iframe = window.document.createElement('iframe'); + + vi.spyOn(window.document, 'createElement').mockReturnValue(iframe); + + vi.spyOn(iframe, 'contentWindow', 'get').mockReturnValue( + window as unknown as Window + ); + + const appendChildSpy = vi.spyOn(window.document.body, 'appendChild'); + + let iframeSrc = ''; + + vi.spyOn(iframe, 'setAttribute').mockImplementation( + (name: string, value: string) => { + if (name === 'src') iframeSrc = value; + } + ); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'api', + requestedScopes: 'api', + }, + ], + authorizedScopes: 'api', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'token', + fetchUserinfo: false, + defaultAuthParams: { scopes: 'api' }, + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + authorizedScopes: 'api', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + scopes: 'api', + requestedScopes: 'api', + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession(); + + await vi.waitFor(() => { + expect(appendChildSpy).toHaveBeenCalledWith(iframe); + expect(iframeSrc).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(iframeSrc); + const generatedState = authorizeUrl.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback#access_token=newAt&scope=api&expires_in=600&state=${encodeURIComponent( + generatedState ?? '' + )}`, + }, + source: window, + origin: 'http://localhost:3000', + }) + ); + + await expect(refreshPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(document.body.contains(iframe)).toBe(false); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + authorizedScopes: 'api', + accessTokens: [ + { + accessToken: 'newAt', + accessTokenExpiration: expect.any(Number), + scopes: 'api', + requestedScopes: 'api', + }, + ], + user: {}, + }) + ); + + fetchSpy.assert(); + }); + }); + + it('Silent Mode - should reject when an error callback url is received', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const iframe = window.document.createElement('iframe'); + + vi.spyOn(window.document, 'createElement').mockReturnValue(iframe); + + vi.spyOn(iframe, 'contentWindow', 'get').mockReturnValue( + window as unknown as Window + ); + + const appendChildSpy = vi.spyOn(window.document.body, 'appendChild'); + + let iframeSrc = ''; + + vi.spyOn(iframe, 'setAttribute').mockImplementation( + (name: string, value: string) => { + if (name === 'src') iframeSrc = value; + } + ); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ storage: mockStorage }); + + const refreshPromise = instance.refreshSession({ mode: 'silent' }); + + await vi.waitFor(() => { + expect(appendChildSpy).toHaveBeenCalledWith(iframe); + expect(iframeSrc).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(iframeSrc); + const generatedState = authorizeUrl.searchParams.get('state'); + + const errorCallbackUrl = + `http://localhost:3000/callback` + + `?error=some_error` + + `&error_description=${encodeURIComponent('something went wrong')}` + + `&state=${encodeURIComponent(generatedState ?? '')}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: errorCallbackUrl, + }, + source: window, + origin: 'http://localhost:3000', + }) + ); + + const error = await refreshPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudOPError); + expect(error).toMatchObject({ + error: 'some_error', + errorDescription: 'something went wrong', + }); + + await vi.waitFor(async () => { + expect(document.body.contains(iframe)).toBe(false); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + fetchSpy.assert(); + }); + }); + + it('Silent Mode - can timeout', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const iframe = window.document.createElement('iframe'); + + vi.spyOn(window.document, 'createElement').mockReturnValue(iframe); + + const appendChildSpy = vi.spyOn(window.document.body, 'appendChild'); + + let iframeSrc = ''; + vi.spyOn(iframe, 'setAttribute').mockImplementation( + (name: string, value: string) => { + if (name === 'src') iframeSrc = value; + } + ); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + authWindowTimeout: 0.1, + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'silent' }); + + await vi.waitFor(() => { + expect(appendChildSpy).toHaveBeenCalledWith(iframe); + expect(iframeSrc).toMatch(urlRegex); + }); + + await expect(refreshPromise).rejects.toBeInstanceOf(MonoCloudJsError); + await expect(refreshPromise).rejects.toThrow('Window timed out'); + + await vi.waitFor(async () => { + expect(document.body.contains(iframe)).toBe(false); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + fetchSpy.assert(); + }); + }); + + it('Popup Mode - throws when user closes the window', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + }; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup as unknown as Window); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + setSession(mockStorage, existingSession); + + const instance = testInstance({ storage: mockStorage }); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + mockPopup.closed = true; + + await expect(refreshPromise).rejects.toBeInstanceOf(MonoCloudJsError); + await expect(refreshPromise).rejects.toThrow('Window closed by user'); + + await vi.waitFor(async () => { + mockStorage.expectCallbackStateRemoved(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + fetchSpy.assert(); + }); + }); + + it('should only resolve the promise if the origin is appUrl', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'code', + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + const generatedNonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: generatedNonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'newAt', + refreshToken: 'newRt', + idToken, + }) + .configureUserinfo({ + accessToken: 'newAt', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const callbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + generatedState ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'https://yyy.com', + }) + ); + + await vi.waitFor(() => { + expect(mockPopup.close).not.toHaveBeenCalled(); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(refreshPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + refreshToken: 'newRt', + idToken: expect.any(String), + accessTokens: [ + expect.objectContaining({ + accessToken: 'newAt', + accessTokenExpiration: expect.any(Number), + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + + fetchSpy.assert(); + }); + }); + + it('should only resolve the promise if the source is popup window', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'code', + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + const generatedNonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: generatedNonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'newAt', + refreshToken: 'newRt', + idToken, + }) + .configureUserinfo({ + accessToken: 'newAt', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const callbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + generatedState ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: {} as unknown as Window, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + expect(mockPopup.close).not.toHaveBeenCalled(); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(refreshPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + refreshToken: 'newRt', + idToken: expect.any(String), + accessTokens: [ + expect.objectContaining({ + accessToken: 'newAt', + accessTokenExpiration: expect.any(Number), + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + + fetchSpy.assert(); + }); + }); + + it('should only resolve the promise if data.source is monocloud-auth-js-core', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid offline_access', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'code', + }); + + expect(await instance.getSession()).toEqual( + expect.objectContaining({ + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + expect.objectContaining({ + accessToken: 'at', + accessTokenExpiration: expect.any(Number), + }), + ], + }) + ); + + const refreshPromise = instance.refreshSession({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + const generatedNonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: generatedNonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'newAt', + refreshToken: 'newRt', + idToken, + }) + .configureUserinfo({ + accessToken: 'newAt', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const callbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + generatedState ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'yyy', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + expect(mockPopup.close).not.toHaveBeenCalled(); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(refreshPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + refreshToken: 'newRt', + idToken: expect.any(String), + accessTokens: [ + expect.objectContaining({ + accessToken: 'newAt', + accessTokenExpiration: expect.any(Number), + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + + fetchSpy.assert(); + }); + }); + + it('Silent Mode - should combine multiple resources and scopes from options.resources', async () => { + fetchBuilder() + .configureMetadata() + .configureTokenEndpoint() + .configureUserinfo() + .createSpy(); + + mockWindow.assert(); + + const iframe = window.document.createElement('iframe'); + vi.spyOn(window.document, 'createElement').mockReturnValue(iframe); + vi.spyOn(iframe, 'contentWindow', 'get').mockReturnValue( + window as unknown as Window + ); + + let iframeSrc = ''; + vi.spyOn(iframe, 'setAttribute').mockImplementation((name, value) => { + if (name === 'src') iframeSrc = value; + }); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + resources: [ + { resource: 'api://inventory', scopes: 'inv:read' }, + { resource: 'api://orders', scopes: 'orders:write' }, + ], + }); + + instance.refreshSession({ mode: 'silent' }); + + await vi.waitFor(() => { + expect(iframeSrc).toContain('https://example.com/connect/authorize'); + }); + + const url = new URL(iframeSrc); + + const resources = url.searchParams.getAll('resource'); + expect(resources).toHaveLength(2); + expect(resources).toContain('api://inventory'); + expect(resources).toContain('api://orders'); + + const scopes = url.searchParams.get('scope')?.split(' ') ?? []; + expect(scopes).toContain('inv:read'); + expect(scopes).toContain('orders:write'); + }); + + it('Silent Mode - should filter out invalid resources and scopes from options.resources', async () => { + fetchBuilder().configureMetadata().createSpy(); + mockWindow.assert(); + + const iframe = window.document.createElement('iframe'); + vi.spyOn(window.document, 'createElement').mockReturnValue(iframe); + vi.spyOn(iframe, 'contentWindow', 'get').mockReturnValue( + window as unknown as Window + ); + + let iframeSrc = ''; + vi.spyOn(iframe, 'setAttribute').mockImplementation((name, value) => { + if (name === 'src') iframeSrc = value; + }); + + const existingSession: MonoCloudSession = { + user: { sub: 'sub' }, + refreshToken: 'rt', + accessTokens: [ + { + accessToken: 'at', + accessTokenExpiration: now() + 1000, + scopes: 'openid', + requestedScopes: 'openid', + }, + ], + authorizedScopes: 'openid', + }; + setSession(mockStorage, existingSession); + + const instance = testInstance({ + storage: mockStorage, + resources: [ + { resource: 'api://valid', scopes: 'scope:valid' }, + { resource: '', scopes: '' }, + { resource: undefined, scopes: undefined }, + {} as any, + ], + }); + + instance.refreshSession({ mode: 'silent' }); + + await vi.waitFor(() => { + expect(iframeSrc).toContain('https://example.com/connect/authorize'); + }); + + const url = new URL(iframeSrc); + + const resources = url.searchParams.getAll('resource'); + expect(resources).toHaveLength(1); + expect(resources).toContain('api://valid'); + expect(resources).not.toContain(''); + expect(resources).not.toContain('undefined'); + + const scopes = url.searchParams.get('scope')?.split(' ') ?? []; + expect(scopes).toContain('scope:valid'); + expect(scopes).not.toContain(''); + expect(scopes).not.toContain('undefined'); + }); + + it('Silent Mode - should throw error if window is crossOriginIsolated', async () => { + const instance = testInstance({ storage: mockStorage }); + + Object.defineProperty(window, 'crossOriginIsolated', { + value: true, + configurable: true, + }); + + const error = await instance + .refreshSession({ mode: 'silent' }) + .catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Isolated Cross-Origin. Cannot create iframe'); + + Object.defineProperty(window, 'crossOriginIsolated', { + value: false, + configurable: true, + }); + }); +}); diff --git a/packages/js-core/tests/session.test.ts b/packages/js-core/tests/session.test.ts new file mode 100644 index 00000000..c0ef4c7d --- /dev/null +++ b/packages/js-core/tests/session.test.ts @@ -0,0 +1,64 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { describe, it, expect, afterEach } from 'vitest'; +import type { MonoCloudSession } from '@monocloud/auth-core'; +import { now } from '@monocloud/auth-core/internal'; +import { setSession, testInstance } from './utils'; +import { LocalStorage } from '../src'; + +describe('Session Tests', () => { + afterEach(() => { + window.localStorage.clear(); + }); + + it('should restore valid existing session', async () => { + const validSession: MonoCloudSession = { + idToken: 'idToken', + accessTokens: [ + { + accessToken: 'at', + scopes: 'openid offline_access', + requestedScopes: 'openid offline_access', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'openid offline_access', + refreshToken: 'rt', + user: { sub: 'sub' }, + }; + + await setSession(new LocalStorage(), validSession); + + const instance = testInstance(); + + expect(await instance.getSession()).toEqual(validSession); + }); + + it('should restore valid existing session (custom key)', async () => { + const validSession: MonoCloudSession = { + idToken: 'idToken', + accessTokens: [ + { + accessToken: 'at', + scopes: 'openid offline_access', + requestedScopes: 'openid offline_access', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'openid offline_access', + refreshToken: 'rt', + user: { sub: 'sub' }, + }; + + // @ts-expect-error set custom key + window.sessionKey = 'custom'; + + await setSession(new LocalStorage(), validSession); + + const instance = testInstance({ sessionKey: 'custom' }); + + expect(await instance.getSession()).toEqual(validSession); + + // @ts-expect-error set to undefined + delete window.sessionKey; + }); +}); diff --git a/packages/js-core/tests/sign-in.test.ts b/packages/js-core/tests/sign-in.test.ts new file mode 100644 index 00000000..8f6c1445 --- /dev/null +++ b/packages/js-core/tests/sign-in.test.ts @@ -0,0 +1,2302 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { + fetchBuilder, + generateIdToken, + MockWindow, +} from '@monocloud/auth-test-utils'; +import { testInstance, VanillaJsMockStorage } from './utils'; +import { + CallbackState, + MonoCloudHttpError, + MonoCloudJsError, + MonoCloudOPError, + MonoCloudTokenError, + MonoCloudValidationError, +} from '../src'; +import { now } from '@monocloud/auth-core/internal'; + +describe('signIn() Tests', () => { + let mockWindow: MockWindow; + let mockStorage: VanillaJsMockStorage; + + const urlRegex = + /^https:\/\/example\.com\/connect\/authorize\?client_id=clientId&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&scope=[a-zA-Z0-9+_% -]+&response_type=[a-zA-Z0-9_ ]+&nonce=[a-zA-Z0-9_-]+&code_challenge=[a-zA-Z0-9_-]+&code_challenge_method=S256&state=[a-zA-Z0-9_-]+$/; + + beforeEach(() => { + mockStorage = new VanillaJsMockStorage(); + mockWindow = new MockWindow(); + }); + + afterEach(() => { + mockWindow.restore(); + window.localStorage.clear(); + }); + + it('should redirect to the sign in page', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow + .expectOrigin('https://example.com/connect/authorize') + .expectQueryKey('state') + .expectQueryKey('code_challenge') + .expectQueryKey('nonce') + .expectQuery('code_challenge_method', 'S256') + .expectQuery('client_id', 'clientId') + .expectQuery('response_type', 'code') + .expectQuery('scope', 'openid') + .expectQuery('redirect_uri', 'http://localhost:3000/callback') + .assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.signIn(); + + expect(window.location.assign).toHaveBeenCalledOnce(); + fetchSpy.assert(); + }); + + it('should throw error if the code is not running in the main window', async () => { + vi.spyOn(window, 'opener', 'get').mockReturnValue(null); + vi.spyOn(window, 'parent', 'get').mockReturnValue({} as unknown as Window); + vi.spyOn(window, 'top', 'get').mockReturnValue({} as unknown as Window); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.signIn().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe( + 'Initiating an authentication flow in a popup or iframe is not supported' + ); + }); + + it('should redirect to the appUrl if callback path is undefined', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow + .expectOrigin('https://example.com/connect/authorize') + .expectQuery('redirect_uri', 'http://localhost:3000/') + .assert(); + + const instance = testInstance({ + storage: mockStorage, + callbackPath: undefined, + }); + + await instance.signIn(); + + expect(window.location.assign).toHaveBeenCalledOnce(); + fetchSpy.assert(); + }); + + it('should redirect to sign in page with the preferred authenticator', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.expectQuery('authenticator_hint', 'apple').assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.signIn({ authenticatorHint: 'apple' }); + + expect(window.location.assign).toHaveBeenCalledOnce(); + + fetchSpy.assert(); + }); + + it('should redirect to sign in page with the login hint', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.expectQuery('login_hint', 'username').assert(); + + const instance = testInstance({ + storage: mockStorage, + }); + + await instance.signIn({ loginHint: 'username' }); + + expect(window.location.assign).toHaveBeenCalledOnce(); + fetchSpy.assert(); + }); + + it('should redirect to sign up page', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.expectQuery('prompt', 'create').assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.signIn({ signUp: true }); + + expect(window.location.assign).toHaveBeenCalledOnce(); + fetchSpy.assert(); + }); + + it('should set max age and ui locales', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow + .expectQuery('ui_locales', 'en-US') + .expectQuery('max_age', '5') + .assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.signIn({ uiLocales: 'en-US', maxAge: 5 }); + + expect(window.location.assign).toHaveBeenCalledOnce(); + fetchSpy.assert(); + }); + + it('Redirect Mode - should redirect to sign in page', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.signIn(); + + mockStorage + .expectCallbackState() + .expectCallbackStateMode('redirect') + .expectCallbackStateCodeVerifier() + .expectCallbackStateMaxAge(undefined) + .expectCallbackStateNonce() + .expectCallbackStateSignOut(undefined) + .expectCallbackStateState(); + + expect(window.location.assign).toHaveBeenCalledWith( + expect.stringContaining('https://example.com/connect/authorize') + ); + fetchSpy.assert(); + }); + + it('Redirect Mode - should process callback using the default callback state key', async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureTokenEndpoint({ + idToken, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code_verifier=codeVerifier', + }) + .configureUserinfo() + .createSpy(); + + mockWindow + .setSearch('?state=state&code=code') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid offline_access', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved().expectSession(); + expect(await instance.getSession()).toBeDefined(); + + fetchSpy.assert(); + }); + + it('Redirect Mode - should not process callback if there is no callback state found', async () => { + mockWindow + .setSearch('?state=state&code=code') + .setPathname('/callback') + .assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved().expectNoSession(); + expect(await instance.getSession()).toBeUndefined(); + }); + + it('Redirect Mode - should process a redirect callback (Authorization Code)', async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureTokenEndpoint({ + idToken, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code_verifier=codeVerifier', + }) + .configureUserinfo() + .createSpy(); + + mockWindow + .setSearch('?state=state&code=code') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid offline_access', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved().expectSession(); + + const session = await instance.getSession(); + + expect(session).toBeDefined(); + + expect(session?.user).toEqual( + expect.objectContaining({ + sub: 'sub', + username: 'username', + }) + ); + + expect(session?.refreshToken).toBe('rt'); + expect(session?.authorizedScopes).toBe('openid offline_access'); + expect(session?.idToken).toBe(idToken); + + expect(session?.accessTokens).toHaveLength(1); + expect(session?.accessTokens?.[0].accessToken).toBe('at'); + expect(session?.accessTokens?.[0].scopes).toBe('openid offline_access'); + + const expiration = session?.accessTokens?.[0].accessTokenExpiration; + expect(expiration).toBeDefined(); + expect(expiration).toBeLessThanOrEqual(now() + 1000); + expect(expiration).toBeGreaterThan(now() + 900); + + fetchSpy.assert(); + }); + + it('should execute postCallback function', async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureTokenEndpoint({ + idToken, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code_verifier=codeVerifier', + }) + .configureUserinfo() + .createSpy(); + + mockWindow + .setSearch('?state=state&code=code') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid offline_access', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const fn = vi.fn(); + + const instance = testInstance({ storage: mockStorage, postCallback: fn }); + + await instance.processCallback(); + + const session = await instance.getSession(); + + expect(session?.user).toBeDefined(); + expect(fn).toHaveBeenCalledTimes(1); + fetchSpy.assert(); + }); + + it('should set href to returnUrl if set', async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureTokenEndpoint({ + idToken, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code_verifier=codeVerifier', + }) + .configureUserinfo() + .createSpy(); + + mockWindow + .setSearch('?state=state&code=code') + .setPathname('/callback') + .expectHrefCalled('/test') + .assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid offline_access', + returnUrl: '/test', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + const session = await instance.getSession(); + + expect(session?.user).toBeDefined(); + fetchSpy.assert(); + }); + + it('should use default path for processing callback if the callback path is undefined', async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureTokenEndpoint({ + idToken, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2F&code_verifier=codeVerifier', + }) + .configureUserinfo() + .createSpy(); + + mockWindow.setSearch('?state=state&code=code').setPathname('/').assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid offline_access', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + callbackPath: undefined, + }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved(); + + const session = await instance.getSession(); + expect(session).toBeDefined(); + expect(session?.accessTokens?.[0].accessToken).toBe('at'); + + fetchSpy.assert(); + }); + + it("Redirect Mode - should process a redirect callback (Hybrid - 'code token id_token' response type)", async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureTokenEndpoint({ + idToken, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code_verifier=codeVerifier', + }) + .configureUserinfo() + .createSpy(); + + mockWindow + .setSearch( + '?state=state&code=code&access_token=at&expires_in=600&id_token=idtoken&refresh_token=rt' + ) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + state: 'state', + mode: 'redirect', + codeVerifier: 'codeVerifier', + nonce: 'nonce', + scopes: 'openid offline_access', + responseType: 'code id_token token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + mockStorage.expectCallbackStateRemoved(); + const session = await instance.getSession(); + + expect(session).toBeDefined(); + + expect(session?.user.sub).toBe('sub'); + + expect(session?.refreshToken).toBe('rt'); + expect(session?.authorizedScopes).toBe('openid offline_access'); + expect(session?.idToken).toBe(idToken); + + expect(session?.accessTokens).toHaveLength(1); + expect(session?.accessTokens?.[0].accessToken).toBe('at'); + + expect( + session?.accessTokens?.[0].accessTokenExpiration + ).toBeLessThanOrEqual(now() + 1000); + + fetchSpy.assert(); + }); + + it("Redirect Mode - should process a redirect callback (Hybrid - 'code token' response type)", async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureTokenEndpoint({ + idToken, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code_verifier=codeVerifier', + }) + .configureUserinfo() + .createSpy(); + + mockWindow + .setHash('#state=state&code=code&access_token=at&expires_in=600') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + state: 'state', + mode: 'redirect', + codeVerifier: 'codeVerifier', + nonce: 'nonce', + scopes: 'openid offline_access', + responseType: 'code token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'code token', + }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved(); + const session = await instance.getSession(); + + expect(session).toBeDefined(); + expect(session?.user.sub).toBe('sub'); + + expect(session?.accessTokens).toBeDefined(); + expect(session?.accessTokens?.[0].accessToken).toBeDefined(); + + fetchSpy.assert(); + }); + + it("Redirect Mode - should process a redirect callback (Implicit - 'token' response type)", async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureUserinfo() + .createSpy(); + + mockWindow + .setSearch('?state=state&access_token=at&expires_in=600&scope=openid') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + state: 'state', + mode: 'redirect', + scopes: 'openid offline_access', + responseType: 'token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved(); + + const session = await instance.getSession(); + + expect(session).toBeDefined(); + + expect(session?.user).toBeDefined(); + + expect(session?.refreshToken).toBeUndefined(); + expect(session?.idToken).toBeUndefined(); + + expect(session?.accessTokens).toHaveLength(1); + expect(session?.accessTokens?.[0].accessToken).toBe('at'); + expect( + session?.accessTokens?.[0].accessTokenExpiration + ).toBeLessThanOrEqual(now() + 600); + + fetchSpy.assert(); + }); + + it("Redirect Mode - should process a redirect callback (Implicit - 'id_token' response type)", async () => { + const idToken = await generateIdToken({ + nonce: 'nonce', + claims: { sub: 'some' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow + .setSearch(`?state=state&id_token=${idToken}`) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'id_token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved(); + + const session = await instance.getSession(); + + expect(session).toBeDefined(); + expect(session?.user).toBeDefined(); + expect(session?.user.sub).toBe('some'); + expect(session?.idToken).toBe(idToken); + + expect(session?.refreshToken).toBeUndefined(); + expect(session?.authorizedScopes).toBe('openid'); + + expect(session?.accessTokens?.[0]?.accessToken).toBeUndefined(); + expect(session?.accessTokens?.[0]?.accessTokenExpiration).toBeUndefined(); + + fetchSpy.assert(); + }); + + it("Redirect Mode - should process a redirect callback (Implicit - 'id_token token' response type)", async () => { + const idToken = await generateIdToken({ + nonce: 'nonce', + claims: { sub: 'some' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .configureUserinfo({ claims: { sub: 'some' } }) + .createSpy(); + + mockWindow + .setSearch( + `?state=state&id_token=${idToken}&access_token=at&expires_in=600&scope=openid` + ) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'id_token token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved(); + + const session = await instance.getSession(); + + expect(session).toBeDefined(); + expect(session?.user).toBeDefined(); + expect(session?.user.sub).toBe('some'); + + expect(session?.refreshToken).toBeUndefined(); + expect(session?.idToken).toBe(idToken); + + expect(session?.accessTokens).toHaveLength(1); + expect(session?.accessTokens?.[0].accessToken).toBe('at'); + expect( + session?.accessTokens?.[0].accessTokenExpiration + ).toBeLessThanOrEqual(now() + 600); + + fetchSpy.assert(); + }); + + it('Redirect Mode - should set the scope in access token as requested scope if scope is not present', async () => { + const idToken = await generateIdToken({ + nonce: 'nonce', + claims: { sub: 'some' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow + .setSearch( + `?state=state&id_token=${idToken}&access_token=at&expires_in=600` + ) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid other', + responseType: 'id_token token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + fetchUserinfo: false, + }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved(); + + const session = await instance.getSession(); + + expect(session?.accessTokens).toHaveLength(1); + expect(session?.accessTokens?.[0].scopes).toBe('openid other'); + expect(session?.accessTokens?.[0].requestedScopes).toBe('openid other'); + fetchSpy.assert(); + }); + + it('Redirect Mode - should throw an error if states mismatch', async () => { + mockWindow + .setSearch('?state=states&code=code') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Sign in callback states mismatch'); + + mockStorage.expectCallbackStateRemoved(); + }); + + it('Redirect Mode - should throw an op error if callback contains error', async () => { + mockWindow + .setSearch( + '?error=some_error&error_description=Bad%20Request&state=state' + ) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudOPError); + expect(error).toMatchObject({ + error: 'some_error', + errorDescription: 'Bad Request', + }); + + mockStorage.expectCallbackStateRemoved(); + }); + + it('Redirect Mode - should throw an error if jwks fetch fails for implicit id token validation', async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks({ responseCode: 400 }) + .createSpy(); + + mockWindow + .setSearch(`?state=state&id_token=${idToken}`) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'id_token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + await expect(instance.processCallback()).rejects.toThrow( + 'Error while fetching JWKS. Unexpected status code: 400' + ); + + mockStorage.expectCallbackStateRemoved(); + fetchSpy.assert(); + }); + + it('Redirect Mode - should throw an error if fetchUserinfo is true and scope does not have openid', async () => { + const idToken = await generateIdToken({ + nonce: 'nonce', + claims: { sub: 'some' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow + .setSearch( + `?state=state&id_token=${idToken}&access_token=at&scope=token&expires_in=600` + ) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'token', + responseType: 'id_token token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + const processCallbackPromise = instance.processCallback(); + + await expect(processCallbackPromise).rejects.toBeInstanceOf( + MonoCloudValidationError + ); + + await expect(processCallbackPromise).rejects.toThrow( + 'Fetching userinfo requires the openid scope' + ); + + mockStorage.expectCallbackStateRemoved(); + + fetchSpy.assert(); + }); + + it('Redirect Mode - should throw an error if expires_in is not present in implicit flow', async () => { + const idToken = await generateIdToken({ + nonce: 'nonce', + claims: { sub: 'some' }, + }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow + .setSearch( + `?state=state&id_token=${idToken}&access_token=at&scope=openid` + ) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'id_token token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + const processCallbackPromise = instance.processCallback(); + + await expect(processCallbackPromise).rejects.toBeInstanceOf( + MonoCloudValidationError + ); + + await expect(processCallbackPromise).rejects.toThrow( + "The 'expires_in' parameter is missing from the callback" + ); + + mockStorage.expectCallbackStateRemoved(); + + fetchSpy.assert(); + }); + + it('Redirect Mode - should throw an error if id token is invalid', async () => { + fetchBuilder().configureMetadata().configureJwks().createSpy(); + + mockWindow + .setSearch('?state=state&id_token=malformed_token_string') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'id_token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudTokenError); + expect(error.message).toBe( + 'ID Token must have a header, payload and signature' + ); + + mockStorage.expectCallbackStateRemoved(); + }); + + it('Redirect Mode - should extract user from id token even if validate id token is false', async () => { + const idToken = await generateIdToken({ + claims: { + only: 'found in', + decode: true, + }, + }); + + mockWindow + .setSearch(`?state=state&id_token=${idToken}`) + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'id_token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + validateIdToken: false, + }); + + await instance.processCallback(); + + mockStorage.expectCallbackStateRemoved(); + + const session = await instance.getSession(); + + expect(session?.user).toEqual({ + aud: 'clientId', + exp: expect.any(Number), + iat: expect.any(Number), + iss: 'https://example.com', + only: 'found in', + sub: 'sub', + decode: true, + sub_jwk: expect.any(Object), + }); + }); + + it('Redirect Mode - should throw an error if id token is invalid and validateIdToken is false', async () => { + mockWindow + .setSearch('?state=state&id_token=id_token') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'id_token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + validateIdToken: false, + }); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudTokenError); + expect(error.message).toBe('JWT does not contain payload'); + + mockStorage.expectCallbackStateRemoved(); + }); + + it('Redirect Mode - should throw an error if userinfo returned an error', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureUserinfo({ responseCode: 400 }) + .createSpy(); + + mockWindow + .setSearch('?state=state&access_token=at&scope=openid&expires_in=600') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'token', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + validateIdToken: false, + }); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudHttpError); + expect(error.message).toBe( + 'Error while fetching userinfo. Unexpected status code: 400' + ); + + mockStorage.expectCallbackStateRemoved(); + fetchSpy.assert(); + }); + + it('Redirect Mode - should throw an error if code exchange fails', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureTokenEndpoint({ + responseCode: 500, + body: 'grant_type=authorization_code&code=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code_verifier=codeVerifier', + }) + .createSpy(); + + mockWindow + .setSearch('?state=state&code=code') + .setPathname('/callback') + .assert(); + + const state: CallbackState = { + codeVerifier: 'codeVerifier', + nonce: 'nonce', + state: 'state', + mode: 'redirect', + scopes: 'openid', + responseType: 'code', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudHttpError); + expect(error.message).toBe( + 'Error while performing token grant. Unexpected status code: 500' + ); + + mockStorage.expectCallbackStateRemoved(); + fetchSpy.assert(); + }); + + it('Popup Mode - should send the redirect callback through window.postMessage', async () => { + fetchBuilder().createSpy(); + + mockWindow + .mockPostMessage() + .mockParentSide('popup') + .setSearch('?state=state&code=code') + .setPathname('/callback') + .assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + expect(window.fetch).not.toHaveBeenCalled(); + + await vi.waitFor(() => { + expect(mockWindow.parentPostMessage).toHaveBeenCalledWith( + expect.objectContaining({ + source: 'monocloud-auth-js-core', + url: 'http://localhost:3000/callback?state=state&code=code', + }), + 'http://localhost:3000' + ); + }); + }); + + it('Popup Mode - should throw an error if states mismatch', async () => { + fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + expect(window.open).toHaveBeenCalledWith( + 'about:blank', + 'mc.popup', + expect.any(String) + ); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: 'http://localhost:3000/callback?state=WRONG_STATE&code=code', + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Sign in callback states mismatch'); + + expect(mockPopup.close).toHaveBeenCalled(); + }); + + it('Popup Mode - should throw an error if callback contains error', async () => { + fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const url = new URL(mockPopup.location.href); + const generatedState = url.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback?error=access_denied&error_description=User+denied&state=${generatedState}`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudOPError); + expect(error).toMatchObject({ + error: 'access_denied', + errorDescription: 'User denied', + }); + + expect(mockPopup.close).toHaveBeenCalled(); + }); + + it('Popup Mode - should throw an error if jwks fetch fails for implicit id token validation', async () => { + const idToken = await generateIdToken({ nonce: 'nonce' }); + + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks({ responseCode: 400 }) + .createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'id_token', + }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const url = new URL(mockPopup.location.href); + const generatedState = url.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback#state=${generatedState}&id_token=${idToken}`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudHttpError); + expect(error.message).toBe( + 'Error while fetching JWKS. Unexpected status code: 400' + ); + + expect(mockPopup.close).toHaveBeenCalled(); + fetchSpy.assert(); + }); + + it('Popup Mode - should throw an error if id token is invalid', async () => { + fetchBuilder().configureMetadata().configureJwks().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'id_token', + }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const url = new URL(mockPopup.location.href); + const generatedState = url.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback#state=${generatedState}&id_token=malformed_token_string`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudTokenError); + expect(error.message).toBe( + 'ID Token must have a header, payload and signature' + ); + + expect(mockPopup.close).toHaveBeenCalled(); + }); + + it('Popup Mode - should extract user from id token even if validate id token is false', async () => { + const idToken = await generateIdToken({ + claims: { + only: 'found in', + decode: true, + }, + }); + + const windowFetchSpy = vi.spyOn(window, 'fetch'); + fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + validateIdToken: false, + responseType: 'id_token', + }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const url = new URL(mockPopup.location.href); + const generatedState = url.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback#state=${generatedState}&id_token=${idToken}`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await signInPromise; + + mockStorage.expectSession( + expect.objectContaining({ + idToken, + user: expect.objectContaining({ + iss: 'https://example.com', + sub: 'sub', + aud: 'clientId', + only: 'found in', + decode: true, + }), + }) + ); + + expect(mockPopup.close).toHaveBeenCalled(); + + expect(windowFetchSpy).toHaveBeenCalledTimes(1); + expect(windowFetchSpy.mock.calls[0][0]).toContain( + '.well-known/openid-configuration' + ); + }); + + it('Popup Mode - should throw an error if id token is invalid and validateIdToken is false', async () => { + fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + validateIdToken: false, + responseType: 'id_token', + }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const url = new URL(mockPopup.location.href); + const generatedState = url.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback#state=${generatedState}&id_token=malformed_token_string`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudTokenError); + expect(error.message).toBe('JWT does not contain payload'); + + expect(mockPopup.close).toHaveBeenCalled(); + mockStorage.expectNoSession(); + }); + + it('Popup Mode - should throw an error if userinfo returned an error', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureUserinfo({ responseCode: 400 }) + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + responseType: 'token', + }); + + const signInPromise = instance.signIn({ + mode: 'popup', + scopes: 'openid profile', + }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const url = new URL(mockPopup.location.href); + const generatedState = url.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback#state=${generatedState}&access_token=at&token_type=Bearer&expires_in=3600&scope=openid%20profile`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudHttpError); + expect(error.message).toBe( + 'Error while fetching userinfo. Unexpected status code: 400' + ); + + expect(mockPopup.close).toHaveBeenCalled(); + mockStorage.expectNoSession(); + fetchSpy.assert(); + }); + + it('Popup Mode - should throw an error if code exchange fails', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureTokenEndpoint({ + responseCode: 500, + }) + .createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ storage: mockStorage }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback?state=${encodeURIComponent( + generatedState ?? '' + )}&code=test-auth-code`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudHttpError); + expect(error.message).toBe( + 'Error while performing token grant. Unexpected status code: 500' + ); + + await vi.waitFor(() => { + expect(mockPopup.close).toHaveBeenCalled(); + }); + + mockStorage.expectNoSession(); + fetchSpy.assert(); + }); + + it('Popup Mode - should redirect popup to sign in page and resolve when a session message is received', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + validateIdToken: false, + }); + + const signinPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(async () => { + expect(mockPopup.location.href).toMatch(urlRegex); + expect(await instance.getSession()).toBeUndefined(); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + const generatedNonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: generatedNonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'mock-access-token', + idToken, + }) + .configureUserinfo({ + accessToken: 'mock-access-token', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000/callback?code=auth-code&state=${generatedState}`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(signinPromise).resolves.toBeUndefined(); + + const expectedSession = expect.objectContaining({ + accessTokens: [ + expect.objectContaining({ + accessToken: 'mock-access-token', + }), + ], + refreshToken: expect.any(String), + idToken: expect.any(String), + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + mockStorage.expectSession(expectedSession); + + const savedSession = await instance.getSession(); + expect(savedSession).toEqual(expectedSession); + }); + + fetchSpy.assert(); + }); + + it('Popup Mode - should redirect popup to sign in page and reject when an error message is received', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ storage: mockStorage }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + + const callbackUrl = + `http://localhost:3000/callback` + + `?error=some_error` + + `&error_description=${encodeURIComponent('something went wrong')}` + + `&state=${encodeURIComponent(generatedState ?? '')}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(signInPromise).rejects.toMatchObject({ + error: 'some_error', + errorDescription: 'something went wrong', + }); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + mockStorage.expectNoSession(); + expect(await instance.getSession()).toBeUndefined(); + + fetchSpy.assert(); + }); + }); + + it('Popup Mode - can timeout', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + authWindowTimeout: 0.1, + }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(async () => { + expect(mockPopup.location.href).toMatch(urlRegex); + expect(await instance.getSession()).toBeUndefined(); + }); + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Window timed out'); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + expect(await instance.getSession()).toBeUndefined(); + fetchSpy.assert(); + }); + }); + + it('Popup Mode - should throw error if popup fails to open', async () => { + vi.spyOn(window, 'open').mockReturnValue(null); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.signIn({ mode: 'popup' }).catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Could not open popup'); + + expect(await instance.getSession()).toBeUndefined(); + }); + + it('Popup Mode - throws when user closes the window', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + }; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup as unknown as Window); + + const instance = testInstance({ storage: mockStorage }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(window.open).toHaveBeenCalled(); + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + mockPopup.closed = true; + + const error = await signInPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Window closed by user'); + + await vi.waitFor(async () => { + expect(await instance.getSession()).toBeUndefined(); + }); + + fetchSpy.assert(); + }); + + it('Popup Mode - should only resolve the promise if the origin is appUrl', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ storage: mockStorage }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const state = authorizeUrl.searchParams.get('state'); + const nonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: nonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'mock-access-token', + idToken, + }) + .configureUserinfo({ + accessToken: 'mock-access-token', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const goodCallbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + state ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: goodCallbackUrl, + }, + source: mockPopup, + origin: 'https://hackersite.com', + }) + ); + + await vi.waitFor(() => { + expect(mockPopup.close).not.toHaveBeenCalled(); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: goodCallbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(signInPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + accessTokens: [ + expect.objectContaining({ + accessToken: 'mock-access-token', + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + }); + + fetchSpy.assert(); + }); + + it('Popup Mode - should only resolve the promise if the source is popup window', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ storage: mockStorage }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const state = authorizeUrl.searchParams.get('state'); + const nonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: nonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'mock-access-token', + idToken, + }) + .configureUserinfo({ + accessToken: 'mock-access-token', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const callbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + state ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: null as unknown as Window, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + expect(mockPopup.close).not.toHaveBeenCalled(); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(signInPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + accessTokens: [ + expect.objectContaining({ + accessToken: 'mock-access-token', + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + }); + + fetchSpy.assert(); + }); + + it('Popup Mode - should only resolve the promise if data.source is monocloud-auth-js-core', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ storage: mockStorage }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const state = authorizeUrl.searchParams.get('state'); + const nonce = authorizeUrl.searchParams.get('nonce'); + + const idToken = await generateIdToken({ + nonce: nonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ + accessToken: 'mock-access-token', + idToken, + }) + .configureUserinfo({ + accessToken: 'mock-access-token', + claims: { sub: 'sub', email: 'test@example.com' }, + }); + + const callbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + state ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'someoneelse', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + expect(mockPopup.close).not.toHaveBeenCalled(); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: callbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(signInPromise).resolves.toBeUndefined(); + + await vi.waitFor(async () => { + expect(mockPopup.close).toHaveBeenCalled(); + + const saved = await instance.getSession(); + expect(saved).toEqual( + expect.objectContaining({ + accessTokens: [ + expect.objectContaining({ + accessToken: 'mock-access-token', + }), + ], + user: expect.objectContaining({ + sub: 'sub', + email: 'test@example.com', + }), + }) + ); + }); + + fetchSpy.assert(); + }); + + it('should throw error when callbackUrl origin/path does not match redirectUri', async () => { + const instance = testInstance({ storage: mockStorage }); + + const callbackState: CallbackState = { + mode: 'popup', + state: 'state', + scopes: 'openid', + responseType: 'code', + }; + + const badCallbackUrl = + 'http://localhost:3000/wrong-callback?code=code&state=state'; + + const error = await (instance as any) + .processSignInCallback(badCallbackUrl, callbackState) + .catch((e: any) => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Incorrect callback url'); + }); + + it('should throw error when callbackState.signOut is true', async () => { + const instance = testInstance({ storage: mockStorage }); + + const callbackState: CallbackState = { + mode: 'popup', + state: 'state', + scopes: 'openid', + signOut: true, + responseType: 'code', + }; + + const callbackUrl = 'http://localhost:3000/callback?code=code&state=state'; + + const error = await (instance as any) + .processSignInCallback(callbackUrl, callbackState) + .catch((e: any) => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Incorrect callback state'); + }); + + it('should throw error when callbackState.scopes is missing', async () => { + const instance = testInstance({ storage: mockStorage }); + + const callbackState = { + mode: 'popup', + state: 'state', + } as unknown as CallbackState; + + const callbackUrl = 'http://localhost:3000/callback?code=code&state=state'; + + const error = await (instance as any) + .processSignInCallback(callbackUrl, callbackState) + .catch((e: any) => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Scopes missing from callback state'); + }); + + it('should throw error when callback is missing the required code/token based on response type', async () => { + const instance = testInstance({ storage: mockStorage }); + + const callbackState: CallbackState = { + mode: 'popup', + state: 'state', + scopes: 'openid', + responseType: 'code', + }; + + const callbackUrl = 'http://localhost:3000/callback?state=state'; + + const error = await (instance as any) + .processSignInCallback(callbackUrl, callbackState) + .catch((e: any) => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe("Response is missing 'code'"); + }); + + it('should combine multiple resources and scopes from options.resources', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + mockWindow.assert(); + + const instance = testInstance({ + storage: mockStorage, + resources: [ + { resource: 'api://inventory', scopes: 'inv:read' }, + { resource: 'api://orders', scopes: 'orders:write' }, + ], + }); + + await instance.signIn(); + + expect(window.location.assign).toHaveBeenCalledOnce(); + + const [calledUrl] = (window.location.assign as any).mock.calls[0]; + const url = new URL(calledUrl); + + const resources = url.searchParams.getAll('resource'); + + expect(resources).toHaveLength(2); + expect(resources).toContain('api://inventory'); + expect(resources).toContain('api://orders'); + + const scopes = url.searchParams.get('scope')?.split(' ') ?? []; + expect(scopes).toContain('inv:read'); + expect(scopes).toContain('orders:write'); + + fetchSpy.assert(); + }); + + it('should filter out invalid resources and scopes from options.resources', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + mockWindow.assert(); + + const instance = testInstance({ + storage: mockStorage, + resources: [ + { resource: 'valid-resource', scopes: 'valid-scope' }, + { resource: '', scopes: '' }, + { resource: undefined, scopes: undefined }, + {} as any, + { resource: null as any, scopes: null as any }, + ], + }); + + await instance.signIn(); + + expect(window.location.assign).toHaveBeenCalledOnce(); + + const [calledUrl] = (window.location.assign as any).mock.calls[0]; + const url = new URL(calledUrl); + + const resources = url.searchParams.get('resource')?.split(' ') ?? []; + expect(resources).toContain('valid-resource'); + expect(resources).not.toContain(''); + expect(resources).not.toContain('undefined'); + expect(resources).not.toContain('null'); + expect(resources.length).toBe(1); + + const scopes = url.searchParams.get('scope')?.split(' ') ?? []; + expect(scopes).toContain('valid-scope'); + expect(scopes).not.toContain(''); + expect(scopes).not.toContain('undefined'); + expect(scopes).not.toContain('null'); + + fetchSpy.assert(); + }); + + it('should handle corrupted/invalid JSON in session mockStorage for callback state', async () => { + const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); + + vi.spyOn(window.sessionStorage, 'getItem').mockReturnValue( + '{ malformed_json_string' + ); + + const removeItemSpy = vi.spyOn(window.sessionStorage, 'removeItem'); + + const instance = testInstance({ storage: mockStorage }); + + const processPromise = instance.processCallback(); + + await expect(processPromise).rejects.toThrow(SyntaxError); + + expect(removeItemSpy).toHaveBeenCalled(); + expect(consoleSpy).toHaveBeenCalledWith( + 'Unexpected error reading callback state:' + ); + }); + + it('Popup Mode - should ignore messages with invalid data types or missing URLs', async () => { + const fetchSpy = fetchBuilder() + .configureMetadata() + .configureJwks() + .createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ storage: mockStorage }); + + const signInPromise = instance.signIn({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toMatch(urlRegex); + }); + + const authorizeUrl = new URL(mockPopup.location.href); + const generatedState = authorizeUrl.searchParams.get('state'); + const generatedNonce = authorizeUrl.searchParams.get('nonce'); + const idToken = await generateIdToken({ + nonce: generatedNonce ?? undefined, + claims: { email: 'test@example.com' }, + }); + + fetchSpy + .configureTokenEndpoint({ accessToken: 'at', idToken }) + .configureUserinfo({ claims: { sub: 'sub' } }); + + window.dispatchEvent( + new MessageEvent('message', { + data: 'invalid-string-data', + origin: 'http://localhost:3000', + source: mockPopup, + }) + ); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + otherProp: 123, + }, + origin: 'http://localhost:3000', + source: mockPopup, + }) + ); + + const validCallbackUrl = `http://localhost:3000/callback?code=auth-code&state=${encodeURIComponent( + generatedState ?? '' + )}`; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: validCallbackUrl, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(signInPromise).resolves.not.toThrow(); + + await vi.waitFor(() => { + expect(mockPopup.close).toHaveBeenCalled(); + fetchSpy.assert(); + }); + }); + + it('should fall back to window.parent when window.opener is null', async () => { + const mockParent = { + postMessage: vi.fn(), + }; + + vi.spyOn(window, 'opener', 'get').mockReturnValue(null); + vi.spyOn(window, 'parent', 'get').mockReturnValue( + mockParent as unknown as Window + ); + vi.spyOn(window, 'top', 'get').mockReturnValue( + mockParent as unknown as Window + ); + + mockWindow.setPathname('/callback').assert(); + + const instance = testInstance({ storage: mockStorage }); + + await instance.processCallback(); + + expect(mockParent.postMessage).toHaveBeenCalledWith( + expect.objectContaining({ + source: 'monocloud-auth-js-core', + url: expect.stringContaining('/callback'), + }), + 'http://localhost:3000' + ); + }); +}); diff --git a/packages/js-core/tests/sign-out.test.ts b/packages/js-core/tests/sign-out.test.ts new file mode 100644 index 00000000..36274e40 --- /dev/null +++ b/packages/js-core/tests/sign-out.test.ts @@ -0,0 +1,784 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import type { MonoCloudSession } from '@monocloud/auth-core'; +import { fetchBuilder, MockWindow } from '@monocloud/auth-test-utils'; +import { now } from '@monocloud/auth-core/internal'; +import { testInstance, setSession, VanillaJsMockStorage } from './utils'; +import { + CallbackState, + MonoCloudJsError, + MonoCloudValidationError, +} from '../src'; + +describe('signOut() Tests', () => { + let mockWindow: MockWindow; + let mockStorage: VanillaJsMockStorage; + + beforeEach(() => { + mockWindow = new MockWindow(); + mockStorage = new VanillaJsMockStorage(); + }); + + afterEach(() => { + mockWindow.restore(); + window.localStorage.clear(); + }); + + it('Redirect Mode - should set custom redirect uri from options', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow + .expectQuery( + 'post_logout_redirect_uri', + 'http://localhost:3000/signout/custom' + ) + .assert(); + + const instance = testInstance({ storage: mockStorage }); + + instance.signOut({ + postLogoutRedirectUri: 'http://localhost:3000/signout/custom', + }); + + await vi.waitFor(() => { + expect(window.location.assign).toHaveBeenCalledOnce(); + fetchSpy.assert(); + }); + }); + + it('should throw error if the code is not running in the main window', async () => { + vi.spyOn(window, 'opener', 'get').mockReturnValue(null); + vi.spyOn(window, 'parent', 'get').mockReturnValue({} as unknown as Window); + vi.spyOn(window, 'top', 'get').mockReturnValue({} as unknown as Window); + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.signOut().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe( + 'Initiating an authentication flow in a popup or iframe is not supported' + ); + }); + + it('should redirect to signout without state, logout uri and idToken', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow + .expectQuery('client_id', 'clientId') + .doNotExpectQueryKey('state') + .doNotExpectQueryKey('post_logout_redirect_uri') + .doNotExpectQueryKey('id_token_hint') + .assert(); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: undefined, + }); + + instance.signOut(); + + await vi.waitFor(() => { + expect(window.location.assign).toHaveBeenCalledOnce(); + fetchSpy.assert(); + }); + }); + + it('should redirect to signout without state, logout uri and idToken (Session Present)', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow + .expectQuery('client_id', 'clientId') + .doNotExpectQueryKey('state') + .doNotExpectQueryKey('post_logout_redirect_uri') + .doNotExpectQueryKey('id_token_hint') + .assert(); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'token', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: undefined, + }); + + expect(await instance.getSession()).toBeDefined(); + + instance.signOut(); + + await vi.waitFor(async () => { + expect(window.location.assign).toHaveBeenCalledOnce(); + expect(await instance.getSession()).toBeUndefined(); + fetchSpy.assert(); + }); + }); + + it('Redirect Mode - should redirect to the sign out page', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow + .expectOrigin('https://example.com/connect/endsession') + .expectQueryKey('state') + .expectQuery('client_id', 'clientId') + .expectQuery('post_logout_redirect_uri', 'http://localhost:3000/signout') + .assert(); + + const instance = testInstance({ storage: mockStorage }); + + instance.signOut(); + + await vi.waitFor(() => { + expect(window.location.assign).toHaveBeenCalledWith( + expect.stringContaining('https://example.com/connect/endsession') + ); + mockStorage + .expectCallbackState() + .expectCallbackStateState() + .expectCallbackStateMode('redirect') + .expectCallbackStateSignOut(true); + fetchSpy.assert(); + }); + }); + + it('Redirect Mode - should process signout callback', async () => { + mockWindow.setSearch('?state=state').setPathname('/signout').assert(); + + const state: CallbackState = { + mode: 'redirect', + signOut: true, + state: 'state', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: '/signout', + }); + + instance.processCallback(); + + await vi.waitFor(() => { + mockStorage.expectCallbackStateRemoved(); + }); + }); + + it('Redirect Mode - should process signout callback even if the signOutCallbackPath is not set', async () => { + mockWindow.setSearch('?state=state').setPathname('/').assert(); + + const state: CallbackState = { + mode: 'redirect', + signOut: true, + state: 'state', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: undefined, + }); + + instance.processCallback(); + + await vi.waitFor(() => { + mockStorage.expectCallbackStateRemoved(); + }); + }); + + it('Redirect Mode - should set an error if states mismatch', async () => { + mockWindow.setSearch('?state=state').setPathname('/signout').assert(); + + const state: CallbackState = { + mode: 'redirect', + signOut: true, + state: 'states', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Sign out states mismatch'); + + await vi.waitFor(() => { + mockStorage.expectCallbackStateRemoved(); + }); + }); + + it('Popup Mode - should process signout callback', async () => { + mockWindow + .mockPostMessage() + .mockParentSide('popup') + .setSearch('?state=state') + .setPathname('/signout') + .assert(); + + const state: CallbackState = { + mode: 'popup', + signOut: true, + state: 'state', + }; + + mockStorage.setCallbackState(state); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: '/signout', + }); + + instance.processCallback(); + + await vi.waitFor(() => { + expect(mockWindow.parentPostMessage).toHaveBeenCalledWith( + expect.objectContaining({ + source: 'monocloud-auth-js-core', + url: 'http://localhost:3000/signout?state=state', + }), + 'http://localhost:3000' + ); + }); + }); + + it('Popup Mode - should throw error if states mismatch', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: '/signout', + }); + + const signOutPromise = instance.signOut({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toContain( + 'https://example.com/connect/endsession' + ); + }); + + expect(window.open).toHaveBeenCalledWith( + 'about:blank', + 'mc.popup', + expect.any(String) + ); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: 'http://localhost:3000/signout?state=wrong-state', + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + const error = await signOutPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Sign out states mismatch'); + fetchSpy.assert(); + expect(mockPopup.close).toHaveBeenCalled(); + }); + + it('Popup Mode - should redirect popup to sign out page and resolve when a success message is received', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: undefined, + }); + + instance.signOut({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toContain( + 'https://example.com/connect/endsession' + ); + }); + + expect(window.open).toHaveBeenCalledWith( + 'about:blank', + 'mc.popup', + expect.any(String) + ); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + fetchSpy.assert(); + expect(mockPopup.close).toHaveBeenCalled(); + mockStorage.expectCallbackStateRemoved(); + }); + }); + + it('Popup Mode - can timeout', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + authWindowTimeout: 0.1, + }); + + const error = await instance.signOut({ mode: 'popup' }).catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Window timed out'); + + expect(mockPopup.close).toHaveBeenCalled(); + + expect(window.open).toHaveBeenCalledWith( + 'about:blank', + 'mc.popup', + expect.any(String) + ); + + expect(mockPopup.location.href).toContain( + 'https://example.com/connect/endsession' + ); + + fetchSpy.assert(); + }); + + it('Popup Mode - should throw error if popup fails to open', async () => { + const fetchSpy = fetchBuilder().createSpy(); + + vi.spyOn(window, 'open').mockReturnValue(null); + + const instance = testInstance({ storage: mockStorage }); + + const error = await instance.signOut({ mode: 'popup' }).catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Could not open popup'); + + fetchSpy.assert(); + mockStorage.expectCallbackStateRemoved(); + }); + + it('Popup Mode - throws when user closes the window', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + }; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup as unknown as Window); + + const instance = testInstance({ storage: mockStorage }); + + const signOutPromise = instance.signOut({ mode: 'popup' }); + + setTimeout(() => { + mockPopup.closed = true; + }, 200); + + const error = await signOutPromise.catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudJsError); + expect(error.message).toBe('Window closed by user'); + + fetchSpy.assert(); + }); + + it('Popup Mode - should only resolve the promise if the origin is appUrl', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: undefined, + }); + + instance.signOut({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toContain( + 'https://example.com/connect/endsession' + ); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000`, + }, + source: mockPopup, + origin: 'http://yyy.com', + }) + ); + + expect(mockPopup.close).not.toHaveBeenCalled(); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000`, + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + fetchSpy.assert(); + expect(mockPopup.close).toHaveBeenCalled(); + }); + }); + + it('Popup Mode - should only resolve the promise if the source is the expected popup window', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + }; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup as unknown as Window); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: undefined, + }); + + expect(await instance.getSession()).toBeUndefined(); + + instance.signOut({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toContain( + 'https://example.com/connect/endsession' + ); + }); + + const randomWindow = {} as Window; + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000`, + }, + source: randomWindow, + origin: 'http://localhost:3000', + }) + ); + + expect(mockPopup.close).not.toHaveBeenCalled(); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000`, + }, + source: mockPopup as unknown as Window, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + fetchSpy.assert(); + expect(mockPopup.close).toHaveBeenCalled(); + }); + }); + + it('Popup Mode - should only resolve the promise if data.source is the expected SDK identifier', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + mockWindow.assert(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + }; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup as unknown as Window); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: undefined, + }); + + expect(await instance.getSession()).toBeUndefined(); + + instance.signOut({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toContain( + 'https://example.com/connect/endsession' + ); + }); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'yyy', + url: `http://localhost:3000`, + }, + source: mockPopup as unknown as Window, + origin: 'http://localhost:3000', + }) + ); + + expect(mockPopup.close).not.toHaveBeenCalled(); + + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: `http://localhost:3000`, + }, + source: mockPopup as unknown as Window, + origin: 'http://localhost:3000', + }) + ); + + await vi.waitFor(() => { + fetchSpy.assert(); + expect(mockPopup.close).toHaveBeenCalled(); + }); + }); + + it('should only clear local session and return if federatedSignOut is false', async () => { + fetchBuilder().createSpy(); + vi.spyOn(window.location, 'assign'); + vi.spyOn(window, 'open'); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'token', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ + storage: mockStorage, + federatedSignOut: false, + }); + + expect(await instance.getSession()).toBeDefined(); + + await instance.signOut(); + + expect(await instance.getSession()).toBeUndefined(); + mockStorage.expectNoSession(); + + expect(window.fetch).not.toHaveBeenCalled(); + }); + + it('Popup Mode - should clear session immediately even if state validation fails', async () => { + const fetchSpy = fetchBuilder().configureMetadata().createSpy(); + + const mockPopup = { + close: vi.fn(), + closed: false, + location: { href: '' }, + } as unknown as Window; + + vi.spyOn(window, 'open').mockReturnValue(mockPopup); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'token', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ storage: mockStorage }); + + const signOutPromise = instance.signOut({ mode: 'popup' }); + + await vi.waitFor(() => { + expect(mockPopup.location.href).toContain( + 'https://example.com/connect/endsession' + ); + }); + window.dispatchEvent( + new MessageEvent('message', { + data: { + source: 'monocloud-auth-js-core', + url: 'http://localhost:3000/signout?state=wrong-state', + }, + source: mockPopup, + origin: 'http://localhost:3000', + }) + ); + + await expect(signOutPromise).rejects.toThrow('Sign out states mismatch'); + expect(await instance.getSession()).toBeUndefined(); + mockStorage.expectNoSession(); + + fetchSpy.assert(); + expect(mockPopup.close).toHaveBeenCalled(); + }); + + it('Redirect Mode - should clear session immediately even if state validation fails', async () => { + mockWindow.setSearch('?state=wrong-state').setPathname('/signout').assert(); + + const state: CallbackState = { + mode: 'redirect', + signOut: true, + state: 'correct-state', + }; + + mockStorage.setCallbackState(state); + + const session: MonoCloudSession = { + user: { sub: 'sub' }, + accessTokens: [ + { + accessToken: 'at', + scopes: 'token', + requestedScopes: 'token', + accessTokenExpiration: now() + 1000, + }, + ], + authorizedScopes: 'token', + }; + + await setSession(mockStorage, session); + + const instance = testInstance({ + storage: mockStorage, + signOutCallbackPath: '/signout', + }); + + expect(await instance.getSession()).toBeDefined(); + + const error = await instance.processCallback().catch(e => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Sign out states mismatch'); + + await vi.waitFor(async () => { + expect(await instance.getSession()).toBeUndefined(); + mockStorage.expectNoSession(); + mockStorage.expectCallbackStateRemoved(); + }); + }); + + it('should throw error when callbackUrl origin/path does not match redirectUri', async () => { + const instance = testInstance({ storage: mockStorage }); + + const callbackState: CallbackState = { + mode: 'popup', + state: 'state', + scopes: 'openid', + }; + + const badCallbackUrl = + 'http://localhost:3000/wrong-callback?code=code&state=state'; + + const error = await (instance as any) + .processSignOutCallback(badCallbackUrl, callbackState) + .catch((e: any) => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Incorrect callback url'); + }); + + it('should throw error when callbackState.signOut is false', async () => { + const instance = testInstance({ storage: mockStorage }); + + const callbackState: CallbackState = { + mode: 'popup', + state: 'state', + scopes: 'openid', + signOut: false, + }; + + const callbackUrl = 'http://localhost:3000/signout?code=code&state=state'; + + const error = await (instance as any) + .processSignOutCallback(callbackUrl, callbackState) + .catch((e: any) => e); + + expect(error).toBeInstanceOf(MonoCloudValidationError); + expect(error.message).toBe('Incorrect callback state'); + }); +}); diff --git a/packages/js-core/tests/utils.ts b/packages/js-core/tests/utils.ts new file mode 100644 index 00000000..5aad9fa1 --- /dev/null +++ b/packages/js-core/tests/utils.ts @@ -0,0 +1,148 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { expect } from 'vitest'; +import { MockStorage } from '@monocloud/auth-test-utils'; +import type { + CallbackState, + IStorage, + InteractionMode, + PostCallback, + MonoCloudJSCoreClientOptions, + OnSessionCreating, +} from '../src'; +import { AUTH_CONSTANTS } from '../src/constants'; +import { MonoCloudJSCoreClient } from '../src'; + +export const testInstance = ( + options?: Partial & { + storage?: IStorage; + postCallback?: PostCallback; + onSessionCreating?: OnSessionCreating; + } +): MonoCloudJSCoreClient => { + const deafultOptions = { + appUrl: 'http://localhost:3000', + tenantDomain: 'https://example.com', + callbackPath: '/callback', + signOutCallbackPath: '/signout', + clientId: 'clientId', + }; + + // eslint-disable-next-line no-param-reassign + options = options + ? { + ...deafultOptions, + ...options, + } + : deafultOptions; + + const instance = new MonoCloudJSCoreClient( + options as MonoCloudJSCoreClientOptions, + options.storage, + options.postCallback, + options.onSessionCreating + ); + + return instance; +}; + +export const callbackStateKey = (): string => + // @ts-expect-error We are accessing the custom key from window + `${AUTH_CONSTANTS.CALLBACK_KEY}.clientId${window.callbackStateKey ? `.${window.callbackStateKey}` : ''}`; + +export const sessionKey = (): string => + // @ts-expect-error We are accessing the custom key from window + `${AUTH_CONSTANTS.SESSION_KEY}.clientId${window.sessionKey ? `.${window.sessionKey}` : ''}`; + +export class VanillaJsMockStorage extends MockStorage implements IStorage { + setCallbackState(state: unknown): void { + window.sessionStorage.setItem(callbackStateKey(), JSON.stringify(state)); + } + + expectSession(session?: unknown): VanillaJsMockStorage { + expect(this.store[sessionKey()]).toBeTypeOf('string'); + if (session) { + expect(JSON.parse(this.store[sessionKey()] ?? '')).toEqual(session); + } + return this; + } + + expectCallbackState(): VanillaJsMockStorage { + expect(window.sessionStorage.getItem(callbackStateKey())).toBeTypeOf( + 'string' + ); + return this; + } + + expectNoSession(): VanillaJsMockStorage { + expect(this.store[sessionKey()]).toBeUndefined(); + return this; + } + + expectCallbackStateRemoved(): VanillaJsMockStorage { + expect(window.sessionStorage.getItem(callbackStateKey())).toBe(null); + return this; + } + + expectCallbackStateCodeVerifier(): VanillaJsMockStorage { + const state: CallbackState = JSON.parse( + window.sessionStorage.getItem(callbackStateKey()) ?? '' + ); + + expect(state.codeVerifier).toBeTypeOf('string'); + return this; + } + + expectCallbackStateState(): VanillaJsMockStorage { + const state: CallbackState = JSON.parse( + window.sessionStorage.getItem(callbackStateKey()) ?? '' + ); + + expect(state.state).toBeTypeOf('string'); + return this; + } + + expectCallbackStateMode(mode: InteractionMode): VanillaJsMockStorage { + const state: CallbackState = JSON.parse( + window.sessionStorage.getItem(callbackStateKey()) ?? '' + ); + + expect(state.mode).toBe(mode); + return this; + } + + expectCallbackStateMaxAge(maxAge: number | undefined): VanillaJsMockStorage { + const state: CallbackState = JSON.parse( + window.sessionStorage.getItem(callbackStateKey()) ?? '' + ); + + expect(state.maxAge).toBe(maxAge); + return this; + } + + expectCallbackStateNonce(): VanillaJsMockStorage { + const state: CallbackState = JSON.parse( + window.sessionStorage.getItem(callbackStateKey()) ?? '' + ); + + expect(state.nonce).toBeTypeOf('string'); + return this; + } + + expectCallbackStateSignOut( + signOut: boolean | undefined + ): VanillaJsMockStorage { + const state: CallbackState = JSON.parse( + window.sessionStorage.getItem(callbackStateKey()) ?? '' + ); + + expect(state.signOut).toBe(signOut); + return this; + } +} + +export const setSession = async ( + storage: IStorage, + session: unknown +): Promise => { + await storage.setItem(sessionKey(), JSON.stringify(session)); +}; diff --git a/packages/js-core/tsconfig.build.json b/packages/js-core/tsconfig.build.json new file mode 100644 index 00000000..241ced88 --- /dev/null +++ b/packages/js-core/tsconfig.build.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "noEmit": false, + "types": [], + "rootDir": "src", + "declarationMap": false + }, + "include": ["src"] +} diff --git a/packages/js-core/tsconfig.json b/packages/js-core/tsconfig.json new file mode 100644 index 00000000..6bfadf81 --- /dev/null +++ b/packages/js-core/tsconfig.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "declarationMap": false, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "incremental": true, + "inlineSources": false, + "isolatedModules": true, + "moduleResolution": "bundler", + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "strictPropertyInitialization": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "preserveConstEnums": true, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2020", + "noEmit": true, + "module": "preserve", + "sourceMap": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"] + }, + "exclude": ["dist", ".turbo", "node_modules"], + "include": ["src", "tests"] +} diff --git a/packages/js-core/tsdown.config.mts b/packages/js-core/tsdown.config.mts new file mode 100644 index 00000000..19fafcfb --- /dev/null +++ b/packages/js-core/tsdown.config.mts @@ -0,0 +1,13 @@ +import { defineConfig } from 'tsdown'; + +const common = { + tsconfig: './tsconfig.build.json', + entry: ['src/index.ts', 'src/utils/index.ts', 'src/utils/internal.ts'], + sourcemap: true, + minify: true, +}; + +export default defineConfig([ + { ...common, format: 'cjs', dts: false }, + { ...common, format: 'es', dts: true }, +]); diff --git a/packages/js-core/typedoc.json b/packages/js-core/typedoc.json new file mode 100644 index 00000000..b4ca14ba --- /dev/null +++ b/packages/js-core/typedoc.json @@ -0,0 +1,7 @@ +{ + "entryPoints": [ + "src/index.ts", + "src/utils/index.ts", + "src/utils/internal.ts" + ] +} diff --git a/packages/js-core/utils/package.json b/packages/js-core/utils/package.json new file mode 100644 index 00000000..88eb5bb6 --- /dev/null +++ b/packages/js-core/utils/package.json @@ -0,0 +1,5 @@ +{ + "main": "../dist/utils/index.cjs", + "module": "../dist/utils/index.mjs", + "types": "../dist/utils/index.d.mts" +} diff --git a/packages/js-core/vitest.config.mts b/packages/js-core/vitest.config.mts new file mode 100644 index 00000000..7db6d219 --- /dev/null +++ b/packages/js-core/vitest.config.mts @@ -0,0 +1,34 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + name: 'auth-js-core', + include: ['tests/**.test.ts'], + reporters: [ + 'default', + ['junit', { outputFile: 'coverage/junit.xml' }], + ], + coverage: { + provider: 'v8', + include: ['src'], + exclude: [ + 'src/types.ts', + 'src/storage.ts', + 'src/index.ts', + 'src/monocloud-js-error.ts', + 'src/utils' + ], + enabled: true, + reportOnFailure: true, + thresholds: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, + environment: 'happy-dom', + setupFiles: ['@monocloud/auth-test-utils/setup'], + watch: false, + }, +}); diff --git a/packages/test-utils/src/auth-server-fetch.ts b/packages/test-utils/src/auth-server-fetch.ts index c97f8eda..663a446e 100644 --- a/packages/test-utils/src/auth-server-fetch.ts +++ b/packages/test-utils/src/auth-server-fetch.ts @@ -462,7 +462,10 @@ export class AuthorizationServerFetchBuilder { const sameMethod = x.method === (init?.method ?? 'GET').toUpperCase(); - const sameBody = x.body === init?.body?.toString(); + const sameBody = + typeof x.body === 'undefined' + ? true + : x.body === init?.body?.toString(); let headersPresent = true; diff --git a/packages/test-utils/src/mock-storage.ts b/packages/test-utils/src/mock-storage.ts index 5260e53f..a10e1d85 100644 --- a/packages/test-utils/src/mock-storage.ts +++ b/packages/test-utils/src/mock-storage.ts @@ -1,5 +1,5 @@ export class MockStorage { - private store: Record = {}; + protected store: Record = {}; constructor(init?: Record) { if (init) { @@ -7,17 +7,19 @@ export class MockStorage { } } - getItem(key: string): string | null { - return this.store[key] ?? null; + getItem(key: string): Promise { + return Promise.resolve(this.store[key] ?? null); } - removeItem(key: string): void { + removeItem(key: string): Promise { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete this.store[key]; + return Promise.resolve(); } - setItem(key: string, value: string): void { + setItem(key: string, value: string): Promise { this.store[key] = value; + return Promise.resolve(); } clear(): void { diff --git a/packages/test-utils/src/mock-window.ts b/packages/test-utils/src/mock-window.ts index e30de4e4..07f14503 100644 --- a/packages/test-utils/src/mock-window.ts +++ b/packages/test-utils/src/mock-window.ts @@ -11,6 +11,8 @@ export class MockWindow { private href = 'http://localhost:3000/'; + private hrefSetCalled = false; + private hrefSet = vi.fn(); private expectedHrefValue?: string; @@ -29,6 +31,8 @@ export class MockWindow { public mockedPostMessage: typeof window.postMessage = vi.fn(); + public parentPostMessage: typeof window.postMessage = vi.fn(); + constructor() { this.location = window.location; this.history = window.history; @@ -38,6 +42,23 @@ export class MockWindow { this.ogPostMessage = postMessage; window.postMessage = this.mockedPostMessage; + return this; + } + + mockParentSide(mode: string): MockWindow { + if (mode === 'popup') { + vi.spyOn(window, 'opener', 'get').mockReturnValue({ + postMessage: this.parentPostMessage, + }); + } + + if (mode === 'silent') { + vi.spyOn(window, 'parent', 'get').mockReturnValue({ + postMessage: this.parentPostMessage, + } as unknown as Window); + + vi.spyOn(window, 'top', 'get').mockReturnValue({} as unknown as Window); + } return this; } @@ -119,16 +140,46 @@ export class MockWindow { search: this.search, pathname: this.pathname, get href() { - return mockWindowInstance.href; + const href = + (mockWindowInstance.href.endsWith('/') + ? mockWindowInstance.href.substring( + 0, + mockWindowInstance.href.length - 1 + ) + : mockWindowInstance.href) ?? ''; + + const path = + (mockWindowInstance.pathname.startsWith('/') + ? mockWindowInstance.pathname + : `/${mockWindowInstance.pathname}`) ?? '/'; + + let query = ''; + if (mockWindowInstance.search !== '') { + query = mockWindowInstance.search.startsWith('?') + ? mockWindowInstance.search + : `?${mockWindowInstance.search}`; + } + + let fragment = ''; + if (mockWindowInstance.hash !== '') { + fragment = mockWindowInstance.hash.startsWith('#') + ? mockWindowInstance.hash + : `#${mockWindowInstance.hash}`; + } + + return mockWindowInstance.hrefSetCalled + ? mockWindowInstance.href + : `${href}${path}${query}${fragment}`; }, set href(href) { + mockWindowInstance.hrefSetCalled = true; mockWindowInstance.hrefSet(href); mockWindowInstance.href = href; }, }, }); - Object.defineProperty(window, 'histroy', { + Object.defineProperty(window, 'history', { writable: true, value: { replaceState: vi.fn(), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4336fc51..1634e993 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,6 +102,22 @@ importers: specifier: 10.0.0 version: 10.0.0 + packages/js-core: + dependencies: + '@monocloud/auth-core': + specifier: workspace:* + version: link:../core + browser-tabs-lock: + specifier: 1.3.0 + version: 1.3.0 + devDependencies: + '@monocloud/auth-test-utils': + specifier: workspace:* + version: link:../test-utils + eslint: + specifier: 10.0.0 + version: 10.0.0 + packages/nextjs: dependencies: '@monocloud/auth-core': @@ -539,12 +555,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1625,6 +1635,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browser-tabs-lock@1.3.0: + resolution: {integrity: sha512-g6nHaobTiT0eMZ7jh16YpD2kcjAp+PInbiVq3M1x6KKaEIVhT4v9oURNIpZLOZ3LQbQ3XYfNhMAb/9hzNLIWrw==} + browserslist@4.28.1: resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2039,10 +2052,6 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} @@ -2592,6 +2601,9 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -4108,21 +4120,16 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@10.0.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0)': dependencies: eslint: 10.0.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': dependencies: eslint: 9.39.2 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0)': - dependencies: - eslint: 10.0.0 - eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.2': {} '@eslint/config-array@0.21.1': @@ -5096,6 +5103,10 @@ snapshots: dependencies: fill-range: 7.1.1 + browser-tabs-lock@1.3.0: + dependencies: + lodash: 4.17.23 + browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.7 @@ -5563,7 +5574,7 @@ snapshots: eslint@10.0.0: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@10.0.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.1 '@eslint/config-helpers': 0.5.2 @@ -5598,7 +5609,7 @@ snapshots: eslint@9.39.2: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -5618,7 +5629,7 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -5649,10 +5660,6 @@ snapshots: esprima@4.0.1: {} - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -6230,6 +6237,8 @@ snapshots: lodash.startcase@4.4.0: {} + lodash@4.17.23: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 diff --git a/turbo.json b/turbo.json index 6bac49b2..63750019 100644 --- a/turbo.json +++ b/turbo.json @@ -1,60 +1,28 @@ { "$schema": "https://turborepo.com/schema.json", - "ui": "tui", + "ui": "stream", "tasks": { "build": { - "dependsOn": [ - "^build" - ], - "inputs": [ - "$TURBO_DEFAULT$", - ".env*" - ], - "outputs": [ - "dist/**" - ] + "dependsOn": ["^build"], + "inputs": ["$TURBO_DEFAULT$", ".env*"], + "outputs": ["dist/**"] }, "lint:ts": { - "inputs": [ - "**/*.ts", - "**/*.tsx", - "**/*.js", - "**/*.jsx", - "**/*.json" - ], + "inputs": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.json"], "outputs": [] }, "lint:es": { - "inputs": [ - "**/*.ts", - "**/*.tsx", - "**/*.js", - "**/*.jsx", - "**/*.json" - ], + "inputs": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.json"], "outputs": [] }, "lint": { - "dependsOn": [ - "^lint" - ], - "inputs": [ - "**/*.ts", - "**/*.js", - "**/*.jsx", - "**/*.json" - ], + "dependsOn": ["^lint"], + "inputs": ["**/*.ts", "**/*.js", "**/*.jsx", "**/*.json"], "outputs": [] }, "test": { - "inputs": [ - "**/*.ts", - "**/*.tsx", - "**/*.js", - "**/*.jsx", - "**/*.json" - ], + "inputs": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.json"], "cache": false } } -} \ No newline at end of file +}