@strivacity/sdk-core 3.0.3 → 4.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1873 -340
- package/dist/assets/oidc.cjs +2 -0
- package/dist/assets/oidc.cjs.map +1 -0
- package/dist/assets/oidc.mjs +2 -0
- package/dist/assets/oidc.mjs.map +1 -0
- package/dist/assets/server.cjs +2 -0
- package/dist/assets/server.cjs.map +1 -0
- package/dist/assets/server.mjs +2 -0
- package/dist/assets/server.mjs.map +1 -0
- package/dist/flows/base.cjs +2 -0
- package/dist/flows/base.cjs.map +1 -0
- package/dist/flows/base.d.ts +26 -0
- package/dist/flows/base.mjs +2 -0
- package/dist/flows/base.mjs.map +1 -0
- package/dist/flows/embedded.cjs +2 -0
- package/dist/flows/embedded.cjs.map +1 -0
- package/dist/flows/embedded.d.ts +9 -0
- package/dist/flows/embedded.mjs +2 -0
- package/dist/flows/embedded.mjs.map +1 -0
- package/dist/flows/index.cjs +1 -0
- package/dist/flows/index.d.ts +5 -0
- package/dist/flows/index.mjs +1 -0
- package/dist/flows/native.cjs +2 -0
- package/dist/flows/native.cjs.map +1 -0
- package/dist/flows/native.d.ts +9 -0
- package/dist/flows/native.mjs +2 -0
- package/dist/flows/native.mjs.map +1 -0
- package/dist/flows/popup.cjs +2 -0
- package/dist/flows/popup.cjs.map +1 -0
- package/dist/flows/popup.d.ts +9 -0
- package/dist/flows/popup.mjs +2 -0
- package/dist/flows/popup.mjs.map +1 -0
- package/dist/flows/redirect.cjs +2 -0
- package/dist/flows/redirect.cjs.map +1 -0
- package/dist/flows/redirect.d.ts +9 -0
- package/dist/flows/redirect.mjs +2 -0
- package/dist/flows/redirect.mjs.map +1 -0
- package/dist/handlers/embedded.cjs +2 -0
- package/dist/handlers/embedded.cjs.map +1 -0
- package/dist/handlers/embedded.d.ts +37 -0
- package/dist/handlers/embedded.mjs +2 -0
- package/dist/handlers/embedded.mjs.map +1 -0
- package/dist/handlers/index.cjs +1 -0
- package/dist/handlers/index.d.ts +2 -0
- package/dist/handlers/index.mjs +1 -0
- package/dist/handlers/native.cjs +2 -0
- package/dist/handlers/native.cjs.map +1 -0
- package/dist/handlers/native.d.ts +56 -0
- package/dist/handlers/native.mjs +2 -0
- package/dist/handlers/native.mjs.map +1 -0
- package/dist/handlers/popup.cjs +2 -0
- package/dist/handlers/popup.cjs.map +1 -0
- package/dist/handlers/popup.d.ts +21 -0
- package/dist/handlers/popup.mjs +2 -0
- package/dist/handlers/popup.mjs.map +1 -0
- package/dist/handlers/redirect.cjs +2 -0
- package/dist/handlers/redirect.cjs.map +1 -0
- package/dist/handlers/redirect.d.ts +18 -0
- package/dist/handlers/redirect.mjs +2 -0
- package/dist/handlers/redirect.mjs.map +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +16 -21
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/server/base.cjs +2 -0
- package/dist/server/base.cjs.map +1 -0
- package/dist/server/base.d.ts +15 -0
- package/dist/server/base.mjs +2 -0
- package/dist/server/base.mjs.map +1 -0
- package/dist/server/index.cjs +1 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.mjs +1 -0
- package/dist/storages/cache.cjs +2 -0
- package/dist/storages/cache.cjs.map +1 -0
- package/dist/storages/cache.d.ts +11 -0
- package/dist/storages/cache.mjs +2 -0
- package/dist/storages/cache.mjs.map +1 -0
- package/dist/storages/index.cjs +1 -0
- package/dist/storages/index.d.ts +7 -0
- package/dist/storages/index.mjs +1 -0
- package/dist/storages/indexeddb.cjs +2 -0
- package/dist/storages/indexeddb.cjs.map +1 -0
- package/dist/storages/indexeddb.d.ts +10 -0
- package/dist/storages/indexeddb.mjs +2 -0
- package/dist/storages/indexeddb.mjs.map +1 -0
- package/dist/storages/local.cjs +2 -0
- package/dist/storages/local.cjs.map +1 -0
- package/dist/storages/local.d.ts +7 -0
- package/dist/storages/local.mjs +2 -0
- package/dist/storages/local.mjs.map +1 -0
- package/dist/storages/memory.cjs +2 -0
- package/dist/storages/memory.cjs.map +1 -0
- package/dist/storages/memory.d.ts +8 -0
- package/dist/storages/memory.mjs +2 -0
- package/dist/storages/memory.mjs.map +1 -0
- package/dist/storages/server.cjs +1 -0
- package/dist/storages/server.d.ts +39 -0
- package/dist/storages/server.mjs +1 -0
- package/dist/storages/session.cjs +2 -0
- package/dist/storages/session.cjs.map +1 -0
- package/dist/storages/session.d.ts +7 -0
- package/dist/storages/session.mjs +2 -0
- package/dist/storages/session.mjs.map +1 -0
- package/dist/storages/worker.cjs +2 -0
- package/dist/storages/worker.cjs.map +1 -0
- package/dist/storages/worker.d.ts +46 -0
- package/dist/storages/worker.mjs +2 -0
- package/dist/storages/worker.mjs.map +1 -0
- package/dist/types/common.cjs +0 -0
- package/dist/types/common.d.ts +145 -0
- package/dist/types/common.mjs +0 -0
- package/dist/types/embedded.cjs +0 -0
- package/dist/types/embedded.d.ts +103 -0
- package/dist/types/embedded.mjs +0 -0
- package/dist/types/index.cjs +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.mjs +1 -0
- package/dist/types/native.cjs +0 -0
- package/dist/types/native.d.ts +385 -0
- package/dist/types/native.mjs +0 -0
- package/dist/types/oidc.cjs +2 -0
- package/dist/types/oidc.cjs.map +1 -0
- package/dist/types/oidc.d.ts +768 -0
- package/dist/types/oidc.mjs +2 -0
- package/dist/types/oidc.mjs.map +1 -0
- package/dist/types/popup.cjs +0 -0
- package/dist/types/popup.d.ts +69 -0
- package/dist/types/popup.mjs +0 -0
- package/dist/types/redirect.cjs +0 -0
- package/dist/types/redirect.d.ts +21 -0
- package/dist/types/redirect.mjs +0 -0
- package/dist/types/server.cjs +0 -0
- package/dist/types/server.d.ts +200 -0
- package/dist/types/server.mjs +0 -0
- package/dist/utils/base64url.cjs +2 -0
- package/dist/utils/base64url.cjs.map +1 -0
- package/dist/utils/base64url.d.ts +14 -0
- package/dist/utils/base64url.mjs +2 -0
- package/dist/utils/base64url.mjs.map +1 -0
- package/dist/utils/common.cjs +2 -0
- package/dist/utils/common.cjs.map +1 -0
- package/dist/utils/common.d.ts +23 -0
- package/dist/utils/common.mjs +2 -0
- package/dist/utils/common.mjs.map +1 -0
- package/dist/utils/credentials.cjs +2 -2
- package/dist/utils/credentials.cjs.map +1 -1
- package/dist/utils/credentials.d.ts +19 -3
- package/dist/utils/credentials.mjs +2 -2
- package/dist/utils/credentials.mjs.map +1 -1
- package/dist/utils/crypto.cjs +2 -2
- package/dist/utils/crypto.cjs.map +1 -1
- package/dist/utils/crypto.d.ts +16 -26
- package/dist/utils/crypto.mjs +2 -2
- package/dist/utils/crypto.mjs.map +1 -1
- package/dist/utils/dom.cjs +2 -0
- package/dist/utils/dom.cjs.map +1 -0
- package/dist/utils/dom.d.ts +7 -0
- package/dist/utils/dom.mjs +2 -0
- package/dist/utils/dom.mjs.map +1 -0
- package/dist/utils/errors.cjs +2 -2
- package/dist/utils/errors.cjs.map +1 -1
- package/dist/utils/errors.d.ts +62 -1
- package/dist/utils/errors.mjs +2 -2
- package/dist/utils/errors.mjs.map +1 -1
- package/dist/utils/httpClient.cjs +2 -0
- package/dist/utils/httpClient.cjs.map +1 -0
- package/dist/utils/httpClient.d.ts +2 -0
- package/dist/utils/httpClient.mjs +2 -0
- package/dist/utils/httpClient.mjs.map +1 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.mjs +1 -0
- package/dist/utils/logging.cjs +2 -0
- package/dist/utils/logging.cjs.map +1 -0
- package/dist/utils/logging.d.ts +2 -0
- package/dist/utils/logging.mjs +2 -0
- package/dist/utils/logging.mjs.map +1 -0
- package/dist/utils/oidc.cjs +1 -0
- package/dist/utils/oidc.d.ts +264 -0
- package/dist/utils/oidc.mjs +1 -0
- package/dist/utils/server.cjs +1 -0
- package/dist/utils/server.d.ts +72 -0
- package/dist/utils/server.mjs +1 -0
- package/dist/utils/session.cjs +2 -0
- package/dist/utils/session.cjs.map +1 -0
- package/dist/utils/session.d.ts +29 -0
- package/dist/utils/session.mjs +2 -0
- package/dist/utils/session.mjs.map +1 -0
- package/dist/utils/state.cjs +1 -0
- package/dist/utils/state.d.ts +23 -0
- package/dist/utils/state.mjs +1 -0
- package/package.json +53 -1
- package/testing/tests/flows/base.spec.ts +1030 -0
- package/testing/tests/flows/embedded.spec.ts +443 -0
- package/testing/tests/flows/index.spec.ts +8 -0
- package/testing/tests/flows/native.spec.ts +487 -0
- package/testing/tests/flows/popup.spec.ts +400 -0
- package/testing/tests/flows/redirect.spec.ts +369 -0
- package/testing/tests/handlers/embedded.spec.ts +199 -0
- package/testing/tests/handlers/index.spec.ts +8 -0
- package/testing/tests/handlers/native.spec.ts +283 -0
- package/testing/tests/handlers/popup.spec.ts +206 -0
- package/testing/tests/handlers/redirect.spec.ts +70 -0
- package/testing/tests/index.spec.ts +78 -0
- package/testing/tests/server/base.spec.ts +846 -0
- package/testing/tests/server/index.spec.ts +15 -0
- package/testing/tests/storages/cache.spec.ts +107 -0
- package/testing/tests/storages/index.spec.ts +22 -0
- package/testing/tests/storages/indexeddb.spec.ts +113 -0
- package/testing/tests/storages/local.spec.ts +46 -0
- package/testing/tests/storages/memory.spec.ts +51 -0
- package/testing/tests/storages/server.spec.ts +435 -0
- package/testing/tests/storages/session.spec.ts +46 -0
- package/testing/tests/storages/worker.spec.ts +106 -0
- package/testing/tests/utils/common.spec.ts +77 -0
- package/testing/tests/utils/credentials.spec.ts +195 -0
- package/testing/tests/utils/dom.spec.ts +37 -0
- package/testing/tests/utils/index.spec.ts +71 -0
- package/testing/tests/utils/logging.spec.ts +82 -0
- package/testing/tests/utils/oidc.spec.ts +744 -0
- package/testing/tests/utils/server.spec.ts +235 -0
- package/dist/flows/BaseFlow.cjs +0 -2
- package/dist/flows/BaseFlow.cjs.map +0 -1
- package/dist/flows/BaseFlow.d.ts +0 -191
- package/dist/flows/BaseFlow.mjs +0 -2
- package/dist/flows/BaseFlow.mjs.map +0 -1
- package/dist/flows/EmbeddedFlow.cjs +0 -2
- package/dist/flows/EmbeddedFlow.cjs.map +0 -1
- package/dist/flows/EmbeddedFlow.d.ts +0 -26
- package/dist/flows/EmbeddedFlow.mjs +0 -2
- package/dist/flows/EmbeddedFlow.mjs.map +0 -1
- package/dist/flows/NativeFlow.cjs +0 -2
- package/dist/flows/NativeFlow.cjs.map +0 -1
- package/dist/flows/NativeFlow.d.ts +0 -34
- package/dist/flows/NativeFlow.mjs +0 -2
- package/dist/flows/NativeFlow.mjs.map +0 -1
- package/dist/flows/PopupFlow.cjs +0 -2
- package/dist/flows/PopupFlow.cjs.map +0 -1
- package/dist/flows/PopupFlow.d.ts +0 -36
- package/dist/flows/PopupFlow.mjs +0 -2
- package/dist/flows/PopupFlow.mjs.map +0 -1
- package/dist/flows/RedirectFlow.cjs +0 -2
- package/dist/flows/RedirectFlow.cjs.map +0 -1
- package/dist/flows/RedirectFlow.d.ts +0 -38
- package/dist/flows/RedirectFlow.mjs +0 -2
- package/dist/flows/RedirectFlow.mjs.map +0 -1
- package/dist/handlers/BaseFlowHandler.cjs +0 -2
- package/dist/handlers/BaseFlowHandler.cjs.map +0 -1
- package/dist/handlers/BaseFlowHandler.d.ts +0 -61
- package/dist/handlers/BaseFlowHandler.mjs +0 -2
- package/dist/handlers/BaseFlowHandler.mjs.map +0 -1
- package/dist/handlers/EmbeddedFlowHandler.cjs +0 -2
- package/dist/handlers/EmbeddedFlowHandler.cjs.map +0 -1
- package/dist/handlers/EmbeddedFlowHandler.d.ts +0 -28
- package/dist/handlers/EmbeddedFlowHandler.mjs +0 -2
- package/dist/handlers/EmbeddedFlowHandler.mjs.map +0 -1
- package/dist/handlers/NativeFlowHandler.cjs +0 -2
- package/dist/handlers/NativeFlowHandler.cjs.map +0 -1
- package/dist/handlers/NativeFlowHandler.d.ts +0 -31
- package/dist/handlers/NativeFlowHandler.mjs +0 -2
- package/dist/handlers/NativeFlowHandler.mjs.map +0 -1
- package/dist/storages/LocalStorage.cjs +0 -2
- package/dist/storages/LocalStorage.cjs.map +0 -1
- package/dist/storages/LocalStorage.d.ts +0 -23
- package/dist/storages/LocalStorage.mjs +0 -2
- package/dist/storages/LocalStorage.mjs.map +0 -1
- package/dist/storages/SessionStorage.cjs +0 -2
- package/dist/storages/SessionStorage.cjs.map +0 -1
- package/dist/storages/SessionStorage.d.ts +0 -23
- package/dist/storages/SessionStorage.mjs +0 -2
- package/dist/storages/SessionStorage.mjs.map +0 -1
- package/dist/types.cjs +0 -2
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.ts +0 -1263
- package/dist/types.mjs +0 -2
- package/dist/types.mjs.map +0 -1
- package/dist/utils/HttpClient.cjs +0 -2
- package/dist/utils/HttpClient.cjs.map +0 -1
- package/dist/utils/HttpClient.d.ts +0 -4
- package/dist/utils/HttpClient.mjs +0 -2
- package/dist/utils/HttpClient.mjs.map +0 -1
- package/dist/utils/Logging.cjs +0 -2
- package/dist/utils/Logging.cjs.map +0 -1
- package/dist/utils/Logging.d.ts +0 -8
- package/dist/utils/Logging.mjs +0 -2
- package/dist/utils/Logging.mjs.map +0 -1
- package/dist/utils/Metadata.cjs +0 -2
- package/dist/utils/Metadata.cjs.map +0 -1
- package/dist/utils/Metadata.d.ts +0 -98
- package/dist/utils/Metadata.mjs +0 -2
- package/dist/utils/Metadata.mjs.map +0 -1
- package/dist/utils/Session.cjs +0 -2
- package/dist/utils/Session.cjs.map +0 -1
- package/dist/utils/Session.d.ts +0 -82
- package/dist/utils/Session.mjs +0 -2
- package/dist/utils/Session.mjs.map +0 -1
- package/dist/utils/State.cjs +0 -2
- package/dist/utils/State.cjs.map +0 -1
- package/dist/utils/State.d.ts +0 -43
- package/dist/utils/State.mjs +0 -2
- package/dist/utils/State.mjs.map +0 -1
- package/dist/utils/base64Url.cjs +0 -2
- package/dist/utils/base64Url.cjs.map +0 -1
- package/dist/utils/base64Url.d.ts +0 -27
- package/dist/utils/base64Url.mjs +0 -2
- package/dist/utils/base64Url.mjs.map +0 -1
- package/dist/utils/date.cjs +0 -2
- package/dist/utils/date.cjs.map +0 -1
- package/dist/utils/date.d.ts +0 -6
- package/dist/utils/date.mjs +0 -2
- package/dist/utils/date.mjs.map +0 -1
- package/dist/utils/handlers.cjs +0 -2
- package/dist/utils/handlers.cjs.map +0 -1
- package/dist/utils/handlers.d.ts +0 -35
- package/dist/utils/handlers.mjs +0 -2
- package/dist/utils/handlers.mjs.map +0 -1
- package/dist/utils/jwt.cjs +0 -2
- package/dist/utils/jwt.cjs.map +0 -1
- package/dist/utils/jwt.d.ts +0 -34
- package/dist/utils/jwt.mjs +0 -2
- package/dist/utils/jwt.mjs.map +0 -1
- package/dist/utils/object.cjs +0 -2
- package/dist/utils/object.cjs.map +0 -1
- package/dist/utils/object.d.ts +0 -1
- package/dist/utils/object.mjs +0 -2
- package/dist/utils/object.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedFlow.cjs","sources":["../../src/flows/EmbeddedFlow.ts"],"sourcesContent":["import type { SDKOptions, SDKStorage, SDKHttpClient, SDKLogging, ExtraRequestArgs } from '../types';\nimport { redirectUrlHandler, redirectCallbackHandler } from '../utils/handlers';\nimport { EmbeddedFlowHandler } from '../handlers/EmbeddedFlowHandler';\nimport { BaseFlow } from './BaseFlow';\n\nexport class EmbeddedFlow extends BaseFlow<SDKOptions, ExtraRequestArgs> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = redirectUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = redirectCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\n\t\tif (!globalThis.sty) {\n\t\t\tglobalThis.sty = {};\n\t\t}\n\n\t\t// NOTE: Register the OIDC service instance globally for use in the login component\n\t\tglobalThis.sty.oidcService = this;\n\t}\n\n\t/**\n\t * Initiates the login process via embedded UI.\n\t * @param {ExtraRequestArgs} [params={}] Optional parameters for the login request.\n\t * @returns {EmbeddedFlowHandler} Returns with an embedded login handler.\n\t */\n\toverride login(params: ExtraRequestArgs = {}): EmbeddedFlowHandler {\n\t\tthis.dispatchEvent('loginInitiated', []);\n\n\t\treturn new EmbeddedFlowHandler(this, params);\n\t}\n\n\toverride register(params: ExtraRequestArgs = {}) {\n\t\tparams.prompt = 'create';\n\n\t\treturn this.login(params);\n\t}\n\n\toverride async entry(url?: string) {\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\t\tentryUrl.searchParams.append('sdk', 'web-embedded');\n\t\tentryUrl.searchParams.append('client_id', this.options.clientId);\n\t\tentryUrl.searchParams.append('redirect_uri', this.options.redirectUri);\n\n\t\tconst response = await this.httpClient.request<string | Record<string, string>>(\n\t\t\t`${this.options.issuer}/provider/flow/entry?${entryUrl.searchParams.toString()}`,\n\t\t);\n\n\t\tif (!response.ok) {\n\t\t\tif (response.status === 400) {\n\t\t\t\tconst data = await response.json();\n\t\t\t\tlet message = 'Entry request failed with status 400';\n\n\t\t\t\tif (typeof data === 'object') {\n\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\tmessage = `${data.error}: ${data.error_description}`;\n\t\t\t\t\t} else if (data.errorKey) {\n\t\t\t\t\t\tmessage = data.errorKey;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst error = new Error(message);\n\t\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst error = new Error(`Entry request failed with status ${response.status}`);\n\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet uri: URL;\n\n\t\ttry {\n\t\t\turi = new URL(await response.text());\n\t\t} catch {\n\t\t\turi = new URL(response.url);\n\t\t}\n\n\t\tconst shortAppId = uri.searchParams.get('short_app_id');\n\t\tconst sessionId = uri.searchParams.get('session_id');\n\t\tconst language = uri.searchParams.get('language') || navigator.language;\n\n\t\tif (!shortAppId) {\n\t\t\tconst error = new Error('\"short_app_id\" is missing from the response');\n\t\t\tthis.logging?.error('Entry response error', error);\n\t\t\tthrow error;\n\t\t}\n\t\tif (!sessionId) {\n\t\t\tconst error = new Error('\"session_id\" is missing from the response');\n\t\t\tthis.logging?.error('Entry response error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn { session_id: sessionId, short_app_id: shortAppId, language: language };\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a redirect.\n\t * @param {string} [url] The URL to handle the callback from. Defaults to the current window location.\n\t * @returns {Promise<void>} A promise that resolves when the callback is handled.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(url?: string): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tawait this.tokenExchange((await this.options.callbackHandler(url, this.options.responseMode || 'fragment')) as Record<string, string>);\n\t}\n}\n"],"names":["EmbeddedFlow","BaseFlow","options","storage","httpClient","logging","redirectUrlHandler","redirectCallbackHandler","params","EmbeddedFlowHandler","url","entryUrl","response","data","message","error","uri","shortAppId","sessionId","language"],"mappings":"yeAKO,MAAMA,UAAqBC,EAAAA,QAAuC,CACxE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,EAAAA,oBAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,EAAAA,yBAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,EAEtC,WAAW,MACf,WAAW,IAAM,CAAA,GAIlB,WAAW,IAAI,YAAc,IAC9B,CAOS,MAAMG,EAA2B,GAAyB,CAClE,YAAK,cAAc,iBAAkB,EAAE,EAEhC,IAAIC,EAAAA,oBAAoB,KAAMD,CAAM,CAC5C,CAES,SAASA,EAA2B,GAAI,CAChD,OAAAA,EAAO,OAAS,SAET,KAAK,MAAMA,CAAM,CACzB,CAEA,MAAe,MAAME,EAAc,CAC7BA,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAMC,EAAW,IAAI,IAAID,CAAG,EAC5BC,EAAS,aAAa,OAAO,MAAO,cAAc,EAClDA,EAAS,aAAa,OAAO,YAAa,KAAK,QAAQ,QAAQ,EAC/DA,EAAS,aAAa,OAAO,eAAgB,KAAK,QAAQ,WAAW,EAErE,MAAMC,EAAW,MAAM,KAAK,WAAW,QACtC,GAAG,KAAK,QAAQ,MAAM,wBAAwBD,EAAS,aAAa,UAAU,EAAA,EAG/E,GAAI,CAACC,EAAS,GAAI,CACjB,GAAIA,EAAS,SAAW,IAAK,CAC5B,MAAMC,EAAO,MAAMD,EAAS,KAAA,EAC5B,IAAIE,EAAU,uCAEV,OAAOD,GAAS,WACfA,EAAK,MACRC,EAAU,GAAGD,EAAK,KAAK,KAAKA,EAAK,iBAAiB,GACxCA,EAAK,WACfC,EAAUD,EAAK,WAIjB,MAAME,EAAQ,IAAI,MAAMD,CAAO,EAC/B,WAAK,SAAS,MAAM,sBAAuBC,CAAK,EAC1CA,CACP,CAEA,MAAMA,EAAQ,IAAI,MAAM,oCAAoCH,EAAS,MAAM,EAAE,EAC7E,WAAK,SAAS,MAAM,sBAAuBG,CAAK,EAC1CA,CACP,CAEA,IAAIC,EAEJ,GAAI,CACHA,EAAM,IAAI,IAAI,MAAMJ,EAAS,MAAM,CACpC,MAAQ,CACPI,EAAM,IAAI,IAAIJ,EAAS,GAAG,CAC3B,CAEA,MAAMK,EAAaD,EAAI,aAAa,IAAI,cAAc,EAChDE,EAAYF,EAAI,aAAa,IAAI,YAAY,EAC7CG,EAAWH,EAAI,aAAa,IAAI,UAAU,GAAK,UAAU,SAE/D,GAAI,CAACC,EAAY,CAChB,MAAMF,EAAQ,IAAI,MAAM,6CAA6C,EACrE,WAAK,SAAS,MAAM,uBAAwBA,CAAK,EAC3CA,CACP,CACA,GAAI,CAACG,EAAW,CACf,MAAMH,EAAQ,IAAI,MAAM,2CAA2C,EACnE,WAAK,SAAS,MAAM,uBAAwBA,CAAK,EAC3CA,CACP,CAEA,MAAO,CAAE,WAAYG,EAAW,aAAcD,EAAY,SAAAE,CAAA,CAC3D,CASA,MAAM,eAAeT,EAA6B,CACjD,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAMK,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKL,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAM,KAAK,cAAe,MAAM,KAAK,QAAQ,gBAAgBA,EAAK,KAAK,QAAQ,cAAgB,UAAU,CAA4B,CACtI,CACD"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { SDKOptions, SDKStorage, SDKHttpClient, SDKLogging, ExtraRequestArgs } from '../types';
|
|
2
|
-
import { EmbeddedFlowHandler } from '../handlers/EmbeddedFlowHandler';
|
|
3
|
-
import { BaseFlow } from './BaseFlow';
|
|
4
|
-
export declare class EmbeddedFlow extends BaseFlow<SDKOptions, ExtraRequestArgs> {
|
|
5
|
-
constructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging);
|
|
6
|
-
/**
|
|
7
|
-
* Initiates the login process via embedded UI.
|
|
8
|
-
* @param {ExtraRequestArgs} [params={}] Optional parameters for the login request.
|
|
9
|
-
* @returns {EmbeddedFlowHandler} Returns with an embedded login handler.
|
|
10
|
-
*/
|
|
11
|
-
login(params?: ExtraRequestArgs): EmbeddedFlowHandler;
|
|
12
|
-
register(params?: ExtraRequestArgs): EmbeddedFlowHandler;
|
|
13
|
-
entry(url?: string): Promise<{
|
|
14
|
-
session_id: string;
|
|
15
|
-
short_app_id: string;
|
|
16
|
-
language: string;
|
|
17
|
-
}>;
|
|
18
|
-
/**
|
|
19
|
-
* Handles the callback after login or registration via a redirect.
|
|
20
|
-
* @param {string} [url] The URL to handle the callback from. Defaults to the current window location.
|
|
21
|
-
* @returns {Promise<void>} A promise that resolves when the callback is handled.
|
|
22
|
-
*
|
|
23
|
-
* @throws {Error} Throws an error if callback handler is not defined.
|
|
24
|
-
*/
|
|
25
|
-
handleCallback(url?: string): Promise<void>;
|
|
26
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{redirectUrlHandler as h,redirectCallbackHandler as p}from"../utils/handlers.mjs";import{EmbeddedFlowHandler as g}from"../handlers/EmbeddedFlowHandler.mjs";import{BaseFlow as m}from"./BaseFlow.mjs";import"../utils/errors.mjs";import"../handlers/BaseFlowHandler.mjs";import"../utils/State.mjs";import"../utils/crypto.mjs";import"../utils/base64Url.mjs";import"../utils/date.mjs";import"../utils/jwt.mjs";import"../utils/Metadata.mjs";import"../utils/Session.mjs";class $ extends m{constructor(r,e,t,o){r.urlHandler||(r.urlHandler=h),r.callbackHandler||(r.callbackHandler=p),super(r,e,t,o),globalThis.sty||(globalThis.sty={}),globalThis.sty.oidcService=this}login(r={}){return this.dispatchEvent("loginInitiated",[]),new g(this,r)}register(r={}){return r.prompt="create",this.login(r)}async entry(r){r||(r=globalThis.window?.location.href);const e=new URL(r);e.searchParams.append("sdk","web-embedded"),e.searchParams.append("client_id",this.options.clientId),e.searchParams.append("redirect_uri",this.options.redirectUri);const t=await this.httpClient.request(`${this.options.issuer}/provider/flow/entry?${e.searchParams.toString()}`);if(!t.ok){if(t.status===400){const i=await t.json();let n="Entry request failed with status 400";typeof i=="object"&&(i.error?n=`${i.error}: ${i.error_description}`:i.errorKey&&(n=i.errorKey));const c=new Error(n);throw this.logging?.error("Entry request error",c),c}const s=new Error(`Entry request failed with status ${t.status}`);throw this.logging?.error("Entry request error",s),s}let o;try{o=new URL(await t.text())}catch{o=new URL(t.url)}const a=o.searchParams.get("short_app_id"),l=o.searchParams.get("session_id"),d=o.searchParams.get("language")||navigator.language;if(!a){const s=new Error('"short_app_id" is missing from the response');throw this.logging?.error("Entry response error",s),s}if(!l){const s=new Error('"session_id" is missing from the response');throw this.logging?.error("Entry response error",s),s}return{session_id:l,short_app_id:a,language:d}}async handleCallback(r){if(typeof this.options.callbackHandler!="function"){const e=new Error("Missing option: callbackHandler");throw this.logging?.error("Required option missing",e),e}r||(r=globalThis.window?.location.href),await this.tokenExchange(await this.options.callbackHandler(r,this.options.responseMode||"fragment"))}}export{$ as EmbeddedFlow};
|
|
2
|
-
//# sourceMappingURL=EmbeddedFlow.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedFlow.mjs","sources":["../../src/flows/EmbeddedFlow.ts"],"sourcesContent":["import type { SDKOptions, SDKStorage, SDKHttpClient, SDKLogging, ExtraRequestArgs } from '../types';\nimport { redirectUrlHandler, redirectCallbackHandler } from '../utils/handlers';\nimport { EmbeddedFlowHandler } from '../handlers/EmbeddedFlowHandler';\nimport { BaseFlow } from './BaseFlow';\n\nexport class EmbeddedFlow extends BaseFlow<SDKOptions, ExtraRequestArgs> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = redirectUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = redirectCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\n\t\tif (!globalThis.sty) {\n\t\t\tglobalThis.sty = {};\n\t\t}\n\n\t\t// NOTE: Register the OIDC service instance globally for use in the login component\n\t\tglobalThis.sty.oidcService = this;\n\t}\n\n\t/**\n\t * Initiates the login process via embedded UI.\n\t * @param {ExtraRequestArgs} [params={}] Optional parameters for the login request.\n\t * @returns {EmbeddedFlowHandler} Returns with an embedded login handler.\n\t */\n\toverride login(params: ExtraRequestArgs = {}): EmbeddedFlowHandler {\n\t\tthis.dispatchEvent('loginInitiated', []);\n\n\t\treturn new EmbeddedFlowHandler(this, params);\n\t}\n\n\toverride register(params: ExtraRequestArgs = {}) {\n\t\tparams.prompt = 'create';\n\n\t\treturn this.login(params);\n\t}\n\n\toverride async entry(url?: string) {\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\t\tentryUrl.searchParams.append('sdk', 'web-embedded');\n\t\tentryUrl.searchParams.append('client_id', this.options.clientId);\n\t\tentryUrl.searchParams.append('redirect_uri', this.options.redirectUri);\n\n\t\tconst response = await this.httpClient.request<string | Record<string, string>>(\n\t\t\t`${this.options.issuer}/provider/flow/entry?${entryUrl.searchParams.toString()}`,\n\t\t);\n\n\t\tif (!response.ok) {\n\t\t\tif (response.status === 400) {\n\t\t\t\tconst data = await response.json();\n\t\t\t\tlet message = 'Entry request failed with status 400';\n\n\t\t\t\tif (typeof data === 'object') {\n\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\tmessage = `${data.error}: ${data.error_description}`;\n\t\t\t\t\t} else if (data.errorKey) {\n\t\t\t\t\t\tmessage = data.errorKey;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst error = new Error(message);\n\t\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst error = new Error(`Entry request failed with status ${response.status}`);\n\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet uri: URL;\n\n\t\ttry {\n\t\t\turi = new URL(await response.text());\n\t\t} catch {\n\t\t\turi = new URL(response.url);\n\t\t}\n\n\t\tconst shortAppId = uri.searchParams.get('short_app_id');\n\t\tconst sessionId = uri.searchParams.get('session_id');\n\t\tconst language = uri.searchParams.get('language') || navigator.language;\n\n\t\tif (!shortAppId) {\n\t\t\tconst error = new Error('\"short_app_id\" is missing from the response');\n\t\t\tthis.logging?.error('Entry response error', error);\n\t\t\tthrow error;\n\t\t}\n\t\tif (!sessionId) {\n\t\t\tconst error = new Error('\"session_id\" is missing from the response');\n\t\t\tthis.logging?.error('Entry response error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn { session_id: sessionId, short_app_id: shortAppId, language: language };\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a redirect.\n\t * @param {string} [url] The URL to handle the callback from. Defaults to the current window location.\n\t * @returns {Promise<void>} A promise that resolves when the callback is handled.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(url?: string): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tawait this.tokenExchange((await this.options.callbackHandler(url, this.options.responseMode || 'fragment')) as Record<string, string>);\n\t}\n}\n"],"names":["EmbeddedFlow","BaseFlow","options","storage","httpClient","logging","redirectUrlHandler","redirectCallbackHandler","params","EmbeddedFlowHandler","url","entryUrl","response","data","message","error","uri","shortAppId","sessionId","language"],"mappings":"odAKO,MAAMA,UAAqBC,CAAuC,CACxE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,GAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,GAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,EAEtC,WAAW,MACf,WAAW,IAAM,CAAA,GAIlB,WAAW,IAAI,YAAc,IAC9B,CAOS,MAAMG,EAA2B,GAAyB,CAClE,YAAK,cAAc,iBAAkB,EAAE,EAEhC,IAAIC,EAAoB,KAAMD,CAAM,CAC5C,CAES,SAASA,EAA2B,GAAI,CAChD,OAAAA,EAAO,OAAS,SAET,KAAK,MAAMA,CAAM,CACzB,CAEA,MAAe,MAAME,EAAc,CAC7BA,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAMC,EAAW,IAAI,IAAID,CAAG,EAC5BC,EAAS,aAAa,OAAO,MAAO,cAAc,EAClDA,EAAS,aAAa,OAAO,YAAa,KAAK,QAAQ,QAAQ,EAC/DA,EAAS,aAAa,OAAO,eAAgB,KAAK,QAAQ,WAAW,EAErE,MAAMC,EAAW,MAAM,KAAK,WAAW,QACtC,GAAG,KAAK,QAAQ,MAAM,wBAAwBD,EAAS,aAAa,UAAU,EAAA,EAG/E,GAAI,CAACC,EAAS,GAAI,CACjB,GAAIA,EAAS,SAAW,IAAK,CAC5B,MAAMC,EAAO,MAAMD,EAAS,KAAA,EAC5B,IAAIE,EAAU,uCAEV,OAAOD,GAAS,WACfA,EAAK,MACRC,EAAU,GAAGD,EAAK,KAAK,KAAKA,EAAK,iBAAiB,GACxCA,EAAK,WACfC,EAAUD,EAAK,WAIjB,MAAME,EAAQ,IAAI,MAAMD,CAAO,EAC/B,WAAK,SAAS,MAAM,sBAAuBC,CAAK,EAC1CA,CACP,CAEA,MAAMA,EAAQ,IAAI,MAAM,oCAAoCH,EAAS,MAAM,EAAE,EAC7E,WAAK,SAAS,MAAM,sBAAuBG,CAAK,EAC1CA,CACP,CAEA,IAAIC,EAEJ,GAAI,CACHA,EAAM,IAAI,IAAI,MAAMJ,EAAS,MAAM,CACpC,MAAQ,CACPI,EAAM,IAAI,IAAIJ,EAAS,GAAG,CAC3B,CAEA,MAAMK,EAAaD,EAAI,aAAa,IAAI,cAAc,EAChDE,EAAYF,EAAI,aAAa,IAAI,YAAY,EAC7CG,EAAWH,EAAI,aAAa,IAAI,UAAU,GAAK,UAAU,SAE/D,GAAI,CAACC,EAAY,CAChB,MAAMF,EAAQ,IAAI,MAAM,6CAA6C,EACrE,WAAK,SAAS,MAAM,uBAAwBA,CAAK,EAC3CA,CACP,CACA,GAAI,CAACG,EAAW,CACf,MAAMH,EAAQ,IAAI,MAAM,2CAA2C,EACnE,WAAK,SAAS,MAAM,uBAAwBA,CAAK,EAC3CA,CACP,CAEA,MAAO,CAAE,WAAYG,EAAW,aAAcD,EAAY,SAAAE,CAAA,CAC3D,CASA,MAAM,eAAeT,EAA6B,CACjD,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAMK,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKL,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAM,KAAK,cAAe,MAAM,KAAK,QAAQ,gBAAgBA,EAAK,KAAK,QAAQ,cAAgB,UAAU,CAA4B,CACtI,CACD"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../utils/handlers.cjs"),h=require("../handlers/NativeFlowHandler.cjs"),u=require("./BaseFlow.cjs");require("../utils/errors.cjs");require("../handlers/BaseFlowHandler.cjs");require("../utils/State.cjs");require("../utils/crypto.cjs");require("../utils/base64Url.cjs");require("../utils/date.cjs");require("../utils/jwt.cjs");require("../utils/Metadata.cjs");require("../utils/Session.cjs");class g extends u.BaseFlow{constructor(r,e,t,i){r.urlHandler||(r.urlHandler=c.redirectUrlHandler),r.callbackHandler||(r.callbackHandler=c.redirectCallbackHandler),super(r,e,t,i)}login(r={}){return this.dispatchEvent("loginInitiated",[]),new h.NativeFlowHandler(this,r)}register(r={}){return r.prompt="create",this.login(r)}async entry(r){r||(r=globalThis.window?.location.href);const e=new URL(r);e.searchParams.append("sdk","web"),e.searchParams.append("client_id",this.options.clientId),e.searchParams.append("redirect_uri",this.options.redirectUri);const t=await this.httpClient.request(`${this.options.issuer}/provider/flow/entry?${e.searchParams.toString()}`);if(!t.ok){if(t.status===400){const s=await t.json();let o="Entry request failed with status 400";typeof s=="object"&&(s.error?o=`${s.error}: ${s.error_description}`:s.errorKey&&(o=s.errorKey));const l=new Error(o);throw this.logging?.error("Entry request error",l),l}const n=new Error(`Entry request failed with status ${t.status}`);throw this.logging?.error("Entry request error",n),n}let i;try{i=new URL(await t.text())}catch{i=new URL(t.url)}const a=i.searchParams.get("session_id"),d=i.searchParams.get("language")||navigator.language;if(!a){const n=new Error("Session ID not found in entry response");throw this.logging?.error("Entry response error",n),n}return{session_id:a,language:d}}async handleCallback(r){if(typeof this.options.callbackHandler!="function"){const e=new Error("Missing option: callbackHandler");throw this.logging?.error("Required option missing",e),e}r||(r=globalThis.window?.location.href),await this.tokenExchange(await this.options.callbackHandler(r,this.options.responseMode||"fragment"))}}exports.NativeFlow=g;
|
|
2
|
-
//# sourceMappingURL=NativeFlow.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeFlow.cjs","sources":["../../src/flows/NativeFlow.ts"],"sourcesContent":["import type { SDKOptions, NativeParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';\nimport { redirectUrlHandler, redirectCallbackHandler } from '../utils/handlers';\nimport { NativeFlowHandler } from '../handlers/NativeFlowHandler';\nimport { BaseFlow } from './BaseFlow';\n\nexport class NativeFlow extends BaseFlow<SDKOptions, NativeParams> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = redirectUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = redirectCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\t}\n\n\t/**\n\t * Initiates the login process via native UI.\n\t * @param {NativeParams} [params={}] Optional parameters for native configuration.\n\t * @returns {NativeFlowHandler} Returns with a native login handler.\n\t */\n\tlogin(params: NativeParams = {}): NativeFlowHandler {\n\t\tthis.dispatchEvent('loginInitiated', []);\n\n\t\treturn new NativeFlowHandler(this, params);\n\t}\n\n\t/**\n\t * Initiates the registration process via native UI.\n\t * @param {NativeParams} [params={}] Optional parameters for native configuration.\n\t * @returns {NativeFlowHandler} Returns with a native login handler.\n\t */\n\tregister(params: NativeParams = {}): NativeFlowHandler {\n\t\tparams.prompt = 'create';\n\n\t\treturn this.login(params);\n\t}\n\n\t/**\n\t * Initiates the entry process via a redirect.\n\t * @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.\n\t * @returns {Promise<string>} A promise that resolves to the session ID.\n\t *\n\t * @throws {Error} Throws an error if the entry request fails or session ID is not found.\n\t */\n\tasync entry(url?: string): Promise<Record<string, string>> {\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\t\tentryUrl.searchParams.append('sdk', 'web');\n\t\tentryUrl.searchParams.append('client_id', this.options.clientId);\n\t\tentryUrl.searchParams.append('redirect_uri', this.options.redirectUri);\n\n\t\tconst response = await this.httpClient.request<string | Record<string, string>>(\n\t\t\t`${this.options.issuer}/provider/flow/entry?${entryUrl.searchParams.toString()}`,\n\t\t);\n\n\t\tif (!response.ok) {\n\t\t\tif (response.status === 400) {\n\t\t\t\tconst data = await response.json();\n\t\t\t\tlet message = 'Entry request failed with status 400';\n\n\t\t\t\tif (typeof data === 'object') {\n\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\tmessage = `${data.error}: ${data.error_description}`;\n\t\t\t\t\t} else if (data.errorKey) {\n\t\t\t\t\t\tmessage = data.errorKey;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst error = new Error(message);\n\t\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst error = new Error(`Entry request failed with status ${response.status}`);\n\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet uri: URL;\n\n\t\ttry {\n\t\t\turi = new URL(await response.text());\n\t\t} catch {\n\t\t\turi = new URL(response.url);\n\t\t}\n\n\t\tconst sessionId = uri.searchParams.get('session_id');\n\t\tconst language = uri.searchParams.get('language') || navigator.language;\n\n\t\tif (!sessionId) {\n\t\t\tconst error = new Error('Session ID not found in entry response');\n\t\t\tthis.logging?.error('Entry response error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn { session_id: sessionId, language: language };\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a redirect.\n\t * @param {string} [url] The URL to handle the callback from. Defaults to the current window location.\n\t * @returns {Promise<void>} A promise that resolves when the callback is handled.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(url?: string): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tawait this.tokenExchange((await this.options.callbackHandler(url, this.options.responseMode || 'fragment')) as Record<string, string>);\n\t}\n}\n"],"names":["NativeFlow","BaseFlow","options","storage","httpClient","logging","redirectUrlHandler","redirectCallbackHandler","params","NativeFlowHandler","url","entryUrl","response","data","message","error","uri","sessionId","language"],"mappings":"ueAKO,MAAMA,UAAmBC,EAAAA,QAAmC,CAClE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,EAAAA,oBAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,EAAAA,yBAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,CAC5C,CAOA,MAAMG,EAAuB,GAAuB,CACnD,YAAK,cAAc,iBAAkB,EAAE,EAEhC,IAAIC,EAAAA,kBAAkB,KAAMD,CAAM,CAC1C,CAOA,SAASA,EAAuB,GAAuB,CACtD,OAAAA,EAAO,OAAS,SAET,KAAK,MAAMA,CAAM,CACzB,CASA,MAAM,MAAME,EAA+C,CACrDA,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAMC,EAAW,IAAI,IAAID,CAAG,EAC5BC,EAAS,aAAa,OAAO,MAAO,KAAK,EACzCA,EAAS,aAAa,OAAO,YAAa,KAAK,QAAQ,QAAQ,EAC/DA,EAAS,aAAa,OAAO,eAAgB,KAAK,QAAQ,WAAW,EAErE,MAAMC,EAAW,MAAM,KAAK,WAAW,QACtC,GAAG,KAAK,QAAQ,MAAM,wBAAwBD,EAAS,aAAa,UAAU,EAAA,EAG/E,GAAI,CAACC,EAAS,GAAI,CACjB,GAAIA,EAAS,SAAW,IAAK,CAC5B,MAAMC,EAAO,MAAMD,EAAS,KAAA,EAC5B,IAAIE,EAAU,uCAEV,OAAOD,GAAS,WACfA,EAAK,MACRC,EAAU,GAAGD,EAAK,KAAK,KAAKA,EAAK,iBAAiB,GACxCA,EAAK,WACfC,EAAUD,EAAK,WAIjB,MAAME,EAAQ,IAAI,MAAMD,CAAO,EAC/B,WAAK,SAAS,MAAM,sBAAuBC,CAAK,EAC1CA,CACP,CAEA,MAAMA,EAAQ,IAAI,MAAM,oCAAoCH,EAAS,MAAM,EAAE,EAC7E,WAAK,SAAS,MAAM,sBAAuBG,CAAK,EAC1CA,CACP,CAEA,IAAIC,EAEJ,GAAI,CACHA,EAAM,IAAI,IAAI,MAAMJ,EAAS,MAAM,CACpC,MAAQ,CACPI,EAAM,IAAI,IAAIJ,EAAS,GAAG,CAC3B,CAEA,MAAMK,EAAYD,EAAI,aAAa,IAAI,YAAY,EAC7CE,EAAWF,EAAI,aAAa,IAAI,UAAU,GAAK,UAAU,SAE/D,GAAI,CAACC,EAAW,CACf,MAAMF,EAAQ,IAAI,MAAM,wCAAwC,EAChE,WAAK,SAAS,MAAM,uBAAwBA,CAAK,EAC3CA,CACP,CAEA,MAAO,CAAE,WAAYE,EAAW,SAAAC,CAAA,CACjC,CASA,MAAM,eAAeR,EAA6B,CACjD,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAMK,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKL,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAM,KAAK,cAAe,MAAM,KAAK,QAAQ,gBAAgBA,EAAK,KAAK,QAAQ,cAAgB,UAAU,CAA4B,CACtI,CACD"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { SDKOptions, NativeParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';
|
|
2
|
-
import { NativeFlowHandler } from '../handlers/NativeFlowHandler';
|
|
3
|
-
import { BaseFlow } from './BaseFlow';
|
|
4
|
-
export declare class NativeFlow extends BaseFlow<SDKOptions, NativeParams> {
|
|
5
|
-
constructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging);
|
|
6
|
-
/**
|
|
7
|
-
* Initiates the login process via native UI.
|
|
8
|
-
* @param {NativeParams} [params={}] Optional parameters for native configuration.
|
|
9
|
-
* @returns {NativeFlowHandler} Returns with a native login handler.
|
|
10
|
-
*/
|
|
11
|
-
login(params?: NativeParams): NativeFlowHandler;
|
|
12
|
-
/**
|
|
13
|
-
* Initiates the registration process via native UI.
|
|
14
|
-
* @param {NativeParams} [params={}] Optional parameters for native configuration.
|
|
15
|
-
* @returns {NativeFlowHandler} Returns with a native login handler.
|
|
16
|
-
*/
|
|
17
|
-
register(params?: NativeParams): NativeFlowHandler;
|
|
18
|
-
/**
|
|
19
|
-
* Initiates the entry process via a redirect.
|
|
20
|
-
* @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.
|
|
21
|
-
* @returns {Promise<string>} A promise that resolves to the session ID.
|
|
22
|
-
*
|
|
23
|
-
* @throws {Error} Throws an error if the entry request fails or session ID is not found.
|
|
24
|
-
*/
|
|
25
|
-
entry(url?: string): Promise<Record<string, string>>;
|
|
26
|
-
/**
|
|
27
|
-
* Handles the callback after login or registration via a redirect.
|
|
28
|
-
* @param {string} [url] The URL to handle the callback from. Defaults to the current window location.
|
|
29
|
-
* @returns {Promise<void>} A promise that resolves when the callback is handled.
|
|
30
|
-
*
|
|
31
|
-
* @throws {Error} Throws an error if callback handler is not defined.
|
|
32
|
-
*/
|
|
33
|
-
handleCallback(url?: string): Promise<void>;
|
|
34
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{redirectUrlHandler as d,redirectCallbackHandler as h}from"../utils/handlers.mjs";import{NativeFlowHandler as p}from"../handlers/NativeFlowHandler.mjs";import{BaseFlow as g}from"./BaseFlow.mjs";import"../utils/errors.mjs";import"../handlers/BaseFlowHandler.mjs";import"../utils/State.mjs";import"../utils/crypto.mjs";import"../utils/base64Url.mjs";import"../utils/date.mjs";import"../utils/jwt.mjs";import"../utils/Metadata.mjs";import"../utils/Session.mjs";class _ extends g{constructor(r,e,t,o){r.urlHandler||(r.urlHandler=d),r.callbackHandler||(r.callbackHandler=h),super(r,e,t,o)}login(r={}){return this.dispatchEvent("loginInitiated",[]),new p(this,r)}register(r={}){return r.prompt="create",this.login(r)}async entry(r){r||(r=globalThis.window?.location.href);const e=new URL(r);e.searchParams.append("sdk","web"),e.searchParams.append("client_id",this.options.clientId),e.searchParams.append("redirect_uri",this.options.redirectUri);const t=await this.httpClient.request(`${this.options.issuer}/provider/flow/entry?${e.searchParams.toString()}`);if(!t.ok){if(t.status===400){const i=await t.json();let n="Entry request failed with status 400";typeof i=="object"&&(i.error?n=`${i.error}: ${i.error_description}`:i.errorKey&&(n=i.errorKey));const l=new Error(n);throw this.logging?.error("Entry request error",l),l}const s=new Error(`Entry request failed with status ${t.status}`);throw this.logging?.error("Entry request error",s),s}let o;try{o=new URL(await t.text())}catch{o=new URL(t.url)}const a=o.searchParams.get("session_id"),c=o.searchParams.get("language")||navigator.language;if(!a){const s=new Error("Session ID not found in entry response");throw this.logging?.error("Entry response error",s),s}return{session_id:a,language:c}}async handleCallback(r){if(typeof this.options.callbackHandler!="function"){const e=new Error("Missing option: callbackHandler");throw this.logging?.error("Required option missing",e),e}r||(r=globalThis.window?.location.href),await this.tokenExchange(await this.options.callbackHandler(r,this.options.responseMode||"fragment"))}}export{_ as NativeFlow};
|
|
2
|
-
//# sourceMappingURL=NativeFlow.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeFlow.mjs","sources":["../../src/flows/NativeFlow.ts"],"sourcesContent":["import type { SDKOptions, NativeParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';\nimport { redirectUrlHandler, redirectCallbackHandler } from '../utils/handlers';\nimport { NativeFlowHandler } from '../handlers/NativeFlowHandler';\nimport { BaseFlow } from './BaseFlow';\n\nexport class NativeFlow extends BaseFlow<SDKOptions, NativeParams> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = redirectUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = redirectCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\t}\n\n\t/**\n\t * Initiates the login process via native UI.\n\t * @param {NativeParams} [params={}] Optional parameters for native configuration.\n\t * @returns {NativeFlowHandler} Returns with a native login handler.\n\t */\n\tlogin(params: NativeParams = {}): NativeFlowHandler {\n\t\tthis.dispatchEvent('loginInitiated', []);\n\n\t\treturn new NativeFlowHandler(this, params);\n\t}\n\n\t/**\n\t * Initiates the registration process via native UI.\n\t * @param {NativeParams} [params={}] Optional parameters for native configuration.\n\t * @returns {NativeFlowHandler} Returns with a native login handler.\n\t */\n\tregister(params: NativeParams = {}): NativeFlowHandler {\n\t\tparams.prompt = 'create';\n\n\t\treturn this.login(params);\n\t}\n\n\t/**\n\t * Initiates the entry process via a redirect.\n\t * @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.\n\t * @returns {Promise<string>} A promise that resolves to the session ID.\n\t *\n\t * @throws {Error} Throws an error if the entry request fails or session ID is not found.\n\t */\n\tasync entry(url?: string): Promise<Record<string, string>> {\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\t\tentryUrl.searchParams.append('sdk', 'web');\n\t\tentryUrl.searchParams.append('client_id', this.options.clientId);\n\t\tentryUrl.searchParams.append('redirect_uri', this.options.redirectUri);\n\n\t\tconst response = await this.httpClient.request<string | Record<string, string>>(\n\t\t\t`${this.options.issuer}/provider/flow/entry?${entryUrl.searchParams.toString()}`,\n\t\t);\n\n\t\tif (!response.ok) {\n\t\t\tif (response.status === 400) {\n\t\t\t\tconst data = await response.json();\n\t\t\t\tlet message = 'Entry request failed with status 400';\n\n\t\t\t\tif (typeof data === 'object') {\n\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\tmessage = `${data.error}: ${data.error_description}`;\n\t\t\t\t\t} else if (data.errorKey) {\n\t\t\t\t\t\tmessage = data.errorKey;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst error = new Error(message);\n\t\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst error = new Error(`Entry request failed with status ${response.status}`);\n\t\t\tthis.logging?.error('Entry request error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet uri: URL;\n\n\t\ttry {\n\t\t\turi = new URL(await response.text());\n\t\t} catch {\n\t\t\turi = new URL(response.url);\n\t\t}\n\n\t\tconst sessionId = uri.searchParams.get('session_id');\n\t\tconst language = uri.searchParams.get('language') || navigator.language;\n\n\t\tif (!sessionId) {\n\t\t\tconst error = new Error('Session ID not found in entry response');\n\t\t\tthis.logging?.error('Entry response error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn { session_id: sessionId, language: language };\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a redirect.\n\t * @param {string} [url] The URL to handle the callback from. Defaults to the current window location.\n\t * @returns {Promise<void>} A promise that resolves when the callback is handled.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(url?: string): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tawait this.tokenExchange((await this.options.callbackHandler(url, this.options.responseMode || 'fragment')) as Record<string, string>);\n\t}\n}\n"],"names":["NativeFlow","BaseFlow","options","storage","httpClient","logging","redirectUrlHandler","redirectCallbackHandler","params","NativeFlowHandler","url","entryUrl","response","data","message","error","uri","sessionId","language"],"mappings":"gdAKO,MAAMA,UAAmBC,CAAmC,CAClE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,GAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,GAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,CAC5C,CAOA,MAAMG,EAAuB,GAAuB,CACnD,YAAK,cAAc,iBAAkB,EAAE,EAEhC,IAAIC,EAAkB,KAAMD,CAAM,CAC1C,CAOA,SAASA,EAAuB,GAAuB,CACtD,OAAAA,EAAO,OAAS,SAET,KAAK,MAAMA,CAAM,CACzB,CASA,MAAM,MAAME,EAA+C,CACrDA,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAMC,EAAW,IAAI,IAAID,CAAG,EAC5BC,EAAS,aAAa,OAAO,MAAO,KAAK,EACzCA,EAAS,aAAa,OAAO,YAAa,KAAK,QAAQ,QAAQ,EAC/DA,EAAS,aAAa,OAAO,eAAgB,KAAK,QAAQ,WAAW,EAErE,MAAMC,EAAW,MAAM,KAAK,WAAW,QACtC,GAAG,KAAK,QAAQ,MAAM,wBAAwBD,EAAS,aAAa,UAAU,EAAA,EAG/E,GAAI,CAACC,EAAS,GAAI,CACjB,GAAIA,EAAS,SAAW,IAAK,CAC5B,MAAMC,EAAO,MAAMD,EAAS,KAAA,EAC5B,IAAIE,EAAU,uCAEV,OAAOD,GAAS,WACfA,EAAK,MACRC,EAAU,GAAGD,EAAK,KAAK,KAAKA,EAAK,iBAAiB,GACxCA,EAAK,WACfC,EAAUD,EAAK,WAIjB,MAAME,EAAQ,IAAI,MAAMD,CAAO,EAC/B,WAAK,SAAS,MAAM,sBAAuBC,CAAK,EAC1CA,CACP,CAEA,MAAMA,EAAQ,IAAI,MAAM,oCAAoCH,EAAS,MAAM,EAAE,EAC7E,WAAK,SAAS,MAAM,sBAAuBG,CAAK,EAC1CA,CACP,CAEA,IAAIC,EAEJ,GAAI,CACHA,EAAM,IAAI,IAAI,MAAMJ,EAAS,MAAM,CACpC,MAAQ,CACPI,EAAM,IAAI,IAAIJ,EAAS,GAAG,CAC3B,CAEA,MAAMK,EAAYD,EAAI,aAAa,IAAI,YAAY,EAC7CE,EAAWF,EAAI,aAAa,IAAI,UAAU,GAAK,UAAU,SAE/D,GAAI,CAACC,EAAW,CACf,MAAMF,EAAQ,IAAI,MAAM,wCAAwC,EAChE,WAAK,SAAS,MAAM,uBAAwBA,CAAK,EAC3CA,CACP,CAEA,MAAO,CAAE,WAAYE,EAAW,SAAAC,CAAA,CACjC,CASA,MAAM,eAAeR,EAA6B,CACjD,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAMK,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKL,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAM,KAAK,cAAe,MAAM,KAAK,QAAQ,gBAAgBA,EAAK,KAAK,QAAQ,cAAgB,UAAU,CAA4B,CACtI,CACD"}
|
package/dist/flows/PopupFlow.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../utils/handlers.cjs"),a=require("../utils/State.cjs"),s=require("./BaseFlow.cjs");require("../utils/errors.cjs");require("../utils/crypto.cjs");require("../utils/base64Url.cjs");require("../utils/date.cjs");require("../utils/jwt.cjs");require("../utils/Metadata.cjs");require("../utils/Session.cjs");class l extends s.BaseFlow{constructor(e,t,r,i){e.urlHandler||(e.urlHandler=o.popupUrlHandler),e.callbackHandler||(e.callbackHandler=o.popupCallbackHandler),super(e,t,r,i)}async login(e={}){if(typeof this.options.urlHandler!="function"){const n=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",n),n}const t=await a.State.create(),r=await this.getAuthorizationUrl(e);r.searchParams.append("state",t.id),r.searchParams.append("code_challenge",t.codeChallenge),this.options.scopes?.includes("openid")&&r.searchParams.append("nonce",t.nonce),r.searchParams.append("display","popup"),await this.storage.set(`sty.${t.id}`,JSON.stringify(t)),this.dispatchEvent("loginInitiated",[]),this.logging?.debug("Attempting to redirect for login");const i=await this.options.urlHandler(r.toString(),e);await this.tokenExchange(i)}async register(e={}){e.prompt="create",await this.login(e)}async entry(e){if(typeof this.options.urlHandler!="function"){const r=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",r),r}e||(e=globalThis.window?.location.href);const t=new URL(e);this.logging?.debug("Attempting to redirect for entry"),await this.options.urlHandler(`${this.options.issuer}/provider/entry?${t.searchParams.toString()}`)}async handleCallback(){if(typeof this.options.callbackHandler!="function"){const e=new Error("Missing option: callbackHandler");throw this.logging?.error("Required option missing",e),e}await this.options.callbackHandler(this.options.responseMode||"fragment")}}exports.PopupFlow=l;
|
|
2
|
-
//# sourceMappingURL=PopupFlow.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PopupFlow.cjs","sources":["../../src/flows/PopupFlow.ts"],"sourcesContent":["import type { SDKOptions, PopupParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';\nimport { popupCallbackHandler, popupUrlHandler } from '../utils/handlers';\nimport { State } from '../utils/State';\nimport { BaseFlow } from './BaseFlow';\n\n/**\n * Implements the Popup flow for authentication using a popup window.\n */\nexport class PopupFlow extends BaseFlow<SDKOptions, PopupParams> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = popupUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = popupCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\t}\n\n\t/**\n\t * Initiates the login process via a popup window.\n\t * @param {PopupParams} [params={}] Optional parameters for popup window configuration.\n\t * @returns {Promise<void>} A promise that resolves when the login process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync login(params: PopupParams = {}): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst state = await State.create();\n\t\tconst url = await this.getAuthorizationUrl(params);\n\n\t\turl.searchParams.append('state', state.id);\n\t\turl.searchParams.append('code_challenge', state.codeChallenge);\n\n\t\tif (this.options.scopes?.includes('openid')) {\n\t\t\turl.searchParams.append('nonce', state.nonce);\n\t\t}\n\n\t\turl.searchParams.append('display', 'popup');\n\n\t\tawait this.storage.set(`sty.${state.id}`, JSON.stringify(state));\n\n\t\tthis.dispatchEvent('loginInitiated', []);\n\t\tthis.logging?.debug('Attempting to redirect for login');\n\n\t\tconst data = (await this.options.urlHandler(url.toString(), params)) as Record<string, string>;\n\n\t\tawait this.tokenExchange(data);\n\t}\n\n\t/**\n\t * Initiates the registration process via a popup window.\n\t * @param {PopupParams} [params={}] Optional parameters for popup window configuration.\n\t * @returns {Promise<void>} A promise that resolves when the registration process completes.\n\t */\n\tasync register(params: PopupParams = {}): Promise<void> {\n\t\tparams.prompt = 'create';\n\n\t\tawait this.login(params);\n\t}\n\n\t/**\n\t * Initiates the entry process via a popup window.\n\t * @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.\n\t * @returns {Promise<void>} A promise that resolves when the entry process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync entry(url?: string): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\n\t\tthis.logging?.debug('Attempting to redirect for entry');\n\n\t\tawait this.options.urlHandler(`${this.options.issuer}/provider/entry?${entryUrl.searchParams.toString()}`);\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a popup window.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait this.options.callbackHandler(this.options.responseMode || 'fragment');\n\t}\n}\n"],"names":["PopupFlow","BaseFlow","options","storage","httpClient","logging","popupUrlHandler","popupCallbackHandler","params","error","state","State","url","data","entryUrl"],"mappings":"+YAQO,MAAMA,UAAkBC,EAAAA,QAAkC,CAChE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,EAAAA,iBAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,EAAAA,sBAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,CAC5C,CASA,MAAM,MAAMG,EAAsB,GAAmB,CACpD,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMC,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEA,MAAMC,EAAQ,MAAMC,EAAAA,MAAM,OAAA,EACpBC,EAAM,MAAM,KAAK,oBAAoBJ,CAAM,EAEjDI,EAAI,aAAa,OAAO,QAASF,EAAM,EAAE,EACzCE,EAAI,aAAa,OAAO,iBAAkBF,EAAM,aAAa,EAEzD,KAAK,QAAQ,QAAQ,SAAS,QAAQ,GACzCE,EAAI,aAAa,OAAO,QAASF,EAAM,KAAK,EAG7CE,EAAI,aAAa,OAAO,UAAW,OAAO,EAE1C,MAAM,KAAK,QAAQ,IAAI,OAAOF,EAAM,EAAE,GAAI,KAAK,UAAUA,CAAK,CAAC,EAE/D,KAAK,cAAc,iBAAkB,EAAE,EACvC,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAMG,EAAQ,MAAM,KAAK,QAAQ,WAAWD,EAAI,SAAA,EAAYJ,CAAM,EAElE,MAAM,KAAK,cAAcK,CAAI,CAC9B,CAOA,MAAM,SAASL,EAAsB,GAAmB,CACvDA,EAAO,OAAS,SAEhB,MAAM,KAAK,MAAMA,CAAM,CACxB,CASA,MAAM,MAAMI,EAA6B,CACxC,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMH,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKG,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAME,EAAW,IAAI,IAAIF,CAAG,EAE5B,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAM,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,MAAM,mBAAmBE,EAAS,aAAa,SAAA,CAAU,EAAE,CAC1G,CAOA,MAAM,gBAAgC,CACrC,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAML,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEA,MAAM,KAAK,QAAQ,gBAAgB,KAAK,QAAQ,cAAgB,UAAU,CAC3E,CACD"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { SDKOptions, PopupParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';
|
|
2
|
-
import { BaseFlow } from './BaseFlow';
|
|
3
|
-
/**
|
|
4
|
-
* Implements the Popup flow for authentication using a popup window.
|
|
5
|
-
*/
|
|
6
|
-
export declare class PopupFlow extends BaseFlow<SDKOptions, PopupParams> {
|
|
7
|
-
constructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging);
|
|
8
|
-
/**
|
|
9
|
-
* Initiates the login process via a popup window.
|
|
10
|
-
* @param {PopupParams} [params={}] Optional parameters for popup window configuration.
|
|
11
|
-
* @returns {Promise<void>} A promise that resolves when the login process completes.
|
|
12
|
-
*
|
|
13
|
-
* @throws {Error} Throws an error if URL handler is not defined.
|
|
14
|
-
*/
|
|
15
|
-
login(params?: PopupParams): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Initiates the registration process via a popup window.
|
|
18
|
-
* @param {PopupParams} [params={}] Optional parameters for popup window configuration.
|
|
19
|
-
* @returns {Promise<void>} A promise that resolves when the registration process completes.
|
|
20
|
-
*/
|
|
21
|
-
register(params?: PopupParams): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* Initiates the entry process via a popup window.
|
|
24
|
-
* @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.
|
|
25
|
-
* @returns {Promise<void>} A promise that resolves when the entry process completes.
|
|
26
|
-
*
|
|
27
|
-
* @throws {Error} Throws an error if URL handler is not defined.
|
|
28
|
-
*/
|
|
29
|
-
entry(url?: string): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Handles the callback after login or registration via a popup window.
|
|
32
|
-
*
|
|
33
|
-
* @throws {Error} Throws an error if callback handler is not defined.
|
|
34
|
-
*/
|
|
35
|
-
handleCallback(): Promise<void>;
|
|
36
|
-
}
|
package/dist/flows/PopupFlow.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{popupUrlHandler as n,popupCallbackHandler as a}from"../utils/handlers.mjs";import{State as s}from"../utils/State.mjs";import{BaseFlow as l}from"./BaseFlow.mjs";import"../utils/errors.mjs";import"../utils/crypto.mjs";import"../utils/base64Url.mjs";import"../utils/date.mjs";import"../utils/jwt.mjs";import"../utils/Metadata.mjs";import"../utils/Session.mjs";class b extends l{constructor(t,i,r,o){t.urlHandler||(t.urlHandler=n),t.callbackHandler||(t.callbackHandler=a),super(t,i,r,o)}async login(t={}){if(typeof this.options.urlHandler!="function"){const e=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",e),e}const i=await s.create(),r=await this.getAuthorizationUrl(t);r.searchParams.append("state",i.id),r.searchParams.append("code_challenge",i.codeChallenge),this.options.scopes?.includes("openid")&&r.searchParams.append("nonce",i.nonce),r.searchParams.append("display","popup"),await this.storage.set(`sty.${i.id}`,JSON.stringify(i)),this.dispatchEvent("loginInitiated",[]),this.logging?.debug("Attempting to redirect for login");const o=await this.options.urlHandler(r.toString(),t);await this.tokenExchange(o)}async register(t={}){t.prompt="create",await this.login(t)}async entry(t){if(typeof this.options.urlHandler!="function"){const r=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",r),r}t||(t=globalThis.window?.location.href);const i=new URL(t);this.logging?.debug("Attempting to redirect for entry"),await this.options.urlHandler(`${this.options.issuer}/provider/entry?${i.searchParams.toString()}`)}async handleCallback(){if(typeof this.options.callbackHandler!="function"){const t=new Error("Missing option: callbackHandler");throw this.logging?.error("Required option missing",t),t}await this.options.callbackHandler(this.options.responseMode||"fragment")}}export{b as PopupFlow};
|
|
2
|
-
//# sourceMappingURL=PopupFlow.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PopupFlow.mjs","sources":["../../src/flows/PopupFlow.ts"],"sourcesContent":["import type { SDKOptions, PopupParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';\nimport { popupCallbackHandler, popupUrlHandler } from '../utils/handlers';\nimport { State } from '../utils/State';\nimport { BaseFlow } from './BaseFlow';\n\n/**\n * Implements the Popup flow for authentication using a popup window.\n */\nexport class PopupFlow extends BaseFlow<SDKOptions, PopupParams> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = popupUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = popupCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\t}\n\n\t/**\n\t * Initiates the login process via a popup window.\n\t * @param {PopupParams} [params={}] Optional parameters for popup window configuration.\n\t * @returns {Promise<void>} A promise that resolves when the login process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync login(params: PopupParams = {}): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst state = await State.create();\n\t\tconst url = await this.getAuthorizationUrl(params);\n\n\t\turl.searchParams.append('state', state.id);\n\t\turl.searchParams.append('code_challenge', state.codeChallenge);\n\n\t\tif (this.options.scopes?.includes('openid')) {\n\t\t\turl.searchParams.append('nonce', state.nonce);\n\t\t}\n\n\t\turl.searchParams.append('display', 'popup');\n\n\t\tawait this.storage.set(`sty.${state.id}`, JSON.stringify(state));\n\n\t\tthis.dispatchEvent('loginInitiated', []);\n\t\tthis.logging?.debug('Attempting to redirect for login');\n\n\t\tconst data = (await this.options.urlHandler(url.toString(), params)) as Record<string, string>;\n\n\t\tawait this.tokenExchange(data);\n\t}\n\n\t/**\n\t * Initiates the registration process via a popup window.\n\t * @param {PopupParams} [params={}] Optional parameters for popup window configuration.\n\t * @returns {Promise<void>} A promise that resolves when the registration process completes.\n\t */\n\tasync register(params: PopupParams = {}): Promise<void> {\n\t\tparams.prompt = 'create';\n\n\t\tawait this.login(params);\n\t}\n\n\t/**\n\t * Initiates the entry process via a popup window.\n\t * @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.\n\t * @returns {Promise<void>} A promise that resolves when the entry process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync entry(url?: string): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\n\t\tthis.logging?.debug('Attempting to redirect for entry');\n\n\t\tawait this.options.urlHandler(`${this.options.issuer}/provider/entry?${entryUrl.searchParams.toString()}`);\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a popup window.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait this.options.callbackHandler(this.options.responseMode || 'fragment');\n\t}\n}\n"],"names":["PopupFlow","BaseFlow","options","storage","httpClient","logging","popupUrlHandler","popupCallbackHandler","params","error","state","State","url","data","entryUrl"],"mappings":"4WAQO,MAAMA,UAAkBC,CAAkC,CAChE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,GAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,GAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,CAC5C,CASA,MAAM,MAAMG,EAAsB,GAAmB,CACpD,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMC,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEA,MAAMC,EAAQ,MAAMC,EAAM,OAAA,EACpBC,EAAM,MAAM,KAAK,oBAAoBJ,CAAM,EAEjDI,EAAI,aAAa,OAAO,QAASF,EAAM,EAAE,EACzCE,EAAI,aAAa,OAAO,iBAAkBF,EAAM,aAAa,EAEzD,KAAK,QAAQ,QAAQ,SAAS,QAAQ,GACzCE,EAAI,aAAa,OAAO,QAASF,EAAM,KAAK,EAG7CE,EAAI,aAAa,OAAO,UAAW,OAAO,EAE1C,MAAM,KAAK,QAAQ,IAAI,OAAOF,EAAM,EAAE,GAAI,KAAK,UAAUA,CAAK,CAAC,EAE/D,KAAK,cAAc,iBAAkB,EAAE,EACvC,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAMG,EAAQ,MAAM,KAAK,QAAQ,WAAWD,EAAI,SAAA,EAAYJ,CAAM,EAElE,MAAM,KAAK,cAAcK,CAAI,CAC9B,CAOA,MAAM,SAASL,EAAsB,GAAmB,CACvDA,EAAO,OAAS,SAEhB,MAAM,KAAK,MAAMA,CAAM,CACxB,CASA,MAAM,MAAMI,EAA6B,CACxC,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMH,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKG,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAME,EAAW,IAAI,IAAIF,CAAG,EAE5B,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAM,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,MAAM,mBAAmBE,EAAS,aAAa,SAAA,CAAU,EAAE,CAC1G,CAOA,MAAM,gBAAgC,CACrC,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAML,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEA,MAAM,KAAK,QAAQ,gBAAgB,KAAK,QAAQ,cAAgB,UAAU,CAC3E,CACD"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../utils/handlers.cjs"),o=require("../utils/State.cjs"),a=require("./BaseFlow.cjs");require("../utils/errors.cjs");require("../utils/crypto.cjs");require("../utils/base64Url.cjs");require("../utils/date.cjs");require("../utils/jwt.cjs");require("../utils/Metadata.cjs");require("../utils/Session.cjs");class s extends a.BaseFlow{constructor(e,r,i,t){e.urlHandler||(e.urlHandler=n.redirectUrlHandler),e.callbackHandler||(e.callbackHandler=n.redirectCallbackHandler),super(e,r,i,t)}async login(e={}){if(typeof this.options.urlHandler!="function"){const t=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",t),t}const r=await o.State.create(),i=await this.getAuthorizationUrl(e);i.searchParams.append("state",r.id),i.searchParams.append("code_challenge",r.codeChallenge),this.options.scopes?.includes("openid")&&i.searchParams.append("nonce",r.nonce),await this.storage.set(`sty.${r.id}`,JSON.stringify(r)),this.dispatchEvent("loginInitiated",[]),this.logging?.debug("Attempting to redirect for login"),await this.options.urlHandler(i.toString(),e)}async register(e={}){e.prompt="create",await this.login(e)}async entry(e){if(typeof this.options.urlHandler!="function"){const i=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",i),i}e||(e=globalThis.window?.location.href);const r=new URL(e);this.logging?.debug("Attempting to redirect for entry"),await this.options.urlHandler(`${this.options.issuer}/provider/entry?${r.searchParams.toString()}`)}async handleCallback(e){if(typeof this.options.callbackHandler!="function"){const r=new Error("Missing option: callbackHandler");throw this.logging?.error("Required option missing",r),r}e||(e=globalThis.window?.location.href),await this.tokenExchange(await this.options.callbackHandler(e,this.options.responseMode||"fragment"))}}exports.RedirectFlow=s;
|
|
2
|
-
//# sourceMappingURL=RedirectFlow.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RedirectFlow.cjs","sources":["../../src/flows/RedirectFlow.ts"],"sourcesContent":["import type { SDKOptions, RedirectParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';\nimport { redirectUrlHandler, redirectCallbackHandler } from '../utils/handlers';\nimport { State } from '../utils/State';\nimport { BaseFlow } from './BaseFlow';\n\n/**\n * Implements the Redirect flow for authentication using a full-page redirect.\n */\nexport class RedirectFlow extends BaseFlow<SDKOptions, RedirectParams> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = redirectUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = redirectCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\t}\n\n\t/**\n\t * Initiates the login process via a redirect.\n\t * @param {RedirectParams} [params={}] Optional parameters for redirect configuration.\n\t * @returns {Promise<void>} A promise that resolves when the login process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync login(params: RedirectParams = {}): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst state = await State.create();\n\t\tconst url = await this.getAuthorizationUrl(params);\n\n\t\turl.searchParams.append('state', state.id);\n\t\turl.searchParams.append('code_challenge', state.codeChallenge);\n\n\t\tif (this.options.scopes?.includes('openid')) {\n\t\t\turl.searchParams.append('nonce', state.nonce);\n\t\t}\n\n\t\tawait this.storage.set(`sty.${state.id}`, JSON.stringify(state));\n\n\t\tthis.dispatchEvent('loginInitiated', []);\n\t\tthis.logging?.debug('Attempting to redirect for login');\n\n\t\tawait this.options.urlHandler(url.toString(), params);\n\t}\n\n\t/**\n\t * Initiates the registration process via a redirect.\n\t * @param {RedirectParams} [params={}] Optional parameters for redirect configuration.\n\t * @returns {Promise<void>} A promise that resolves when the registration process completes.\n\t */\n\tasync register(params: RedirectParams = {}): Promise<void> {\n\t\tparams.prompt = 'create';\n\n\t\tawait this.login(params);\n\t}\n\n\t/**\n\t * Initiates the entry process via a redirect.\n\t * @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.\n\t * @returns {Promise<void>} A promise that resolves when the entry process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync entry(url?: string): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\n\t\tthis.logging?.debug('Attempting to redirect for entry');\n\n\t\tawait this.options.urlHandler(`${this.options.issuer}/provider/entry?${entryUrl.searchParams.toString()}`);\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a redirect.\n\t * @param {string} [url] The URL to handle the callback from. Defaults to the current window location.\n\t * @returns {Promise<void>} A promise that resolves when the callback is handled.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(url?: string): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tawait this.tokenExchange((await this.options.callbackHandler(url, this.options.responseMode || 'fragment')) as Record<string, string>);\n\t}\n}\n"],"names":["RedirectFlow","BaseFlow","options","storage","httpClient","logging","redirectUrlHandler","redirectCallbackHandler","params","error","state","State","url","entryUrl"],"mappings":"+YAQO,MAAMA,UAAqBC,EAAAA,QAAqC,CACtE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,EAAAA,oBAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,EAAAA,yBAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,CAC5C,CASA,MAAM,MAAMG,EAAyB,GAAmB,CACvD,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMC,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEA,MAAMC,EAAQ,MAAMC,EAAAA,MAAM,OAAA,EACpBC,EAAM,MAAM,KAAK,oBAAoBJ,CAAM,EAEjDI,EAAI,aAAa,OAAO,QAASF,EAAM,EAAE,EACzCE,EAAI,aAAa,OAAO,iBAAkBF,EAAM,aAAa,EAEzD,KAAK,QAAQ,QAAQ,SAAS,QAAQ,GACzCE,EAAI,aAAa,OAAO,QAASF,EAAM,KAAK,EAG7C,MAAM,KAAK,QAAQ,IAAI,OAAOA,EAAM,EAAE,GAAI,KAAK,UAAUA,CAAK,CAAC,EAE/D,KAAK,cAAc,iBAAkB,EAAE,EACvC,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAM,KAAK,QAAQ,WAAWE,EAAI,SAAA,EAAYJ,CAAM,CACrD,CAOA,MAAM,SAASA,EAAyB,GAAmB,CAC1DA,EAAO,OAAS,SAEhB,MAAM,KAAK,MAAMA,CAAM,CACxB,CASA,MAAM,MAAMI,EAA6B,CACxC,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMH,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKG,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAMC,EAAW,IAAI,IAAID,CAAG,EAE5B,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAM,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,MAAM,mBAAmBC,EAAS,aAAa,SAAA,CAAU,EAAE,CAC1G,CASA,MAAM,eAAeD,EAA6B,CACjD,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAMH,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKG,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAM,KAAK,cAAe,MAAM,KAAK,QAAQ,gBAAgBA,EAAK,KAAK,QAAQ,cAAgB,UAAU,CAA4B,CACtI,CACD"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { SDKOptions, RedirectParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';
|
|
2
|
-
import { BaseFlow } from './BaseFlow';
|
|
3
|
-
/**
|
|
4
|
-
* Implements the Redirect flow for authentication using a full-page redirect.
|
|
5
|
-
*/
|
|
6
|
-
export declare class RedirectFlow extends BaseFlow<SDKOptions, RedirectParams> {
|
|
7
|
-
constructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging);
|
|
8
|
-
/**
|
|
9
|
-
* Initiates the login process via a redirect.
|
|
10
|
-
* @param {RedirectParams} [params={}] Optional parameters for redirect configuration.
|
|
11
|
-
* @returns {Promise<void>} A promise that resolves when the login process completes.
|
|
12
|
-
*
|
|
13
|
-
* @throws {Error} Throws an error if URL handler is not defined.
|
|
14
|
-
*/
|
|
15
|
-
login(params?: RedirectParams): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Initiates the registration process via a redirect.
|
|
18
|
-
* @param {RedirectParams} [params={}] Optional parameters for redirect configuration.
|
|
19
|
-
* @returns {Promise<void>} A promise that resolves when the registration process completes.
|
|
20
|
-
*/
|
|
21
|
-
register(params?: RedirectParams): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* Initiates the entry process via a redirect.
|
|
24
|
-
* @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.
|
|
25
|
-
* @returns {Promise<void>} A promise that resolves when the entry process completes.
|
|
26
|
-
*
|
|
27
|
-
* @throws {Error} Throws an error if URL handler is not defined.
|
|
28
|
-
*/
|
|
29
|
-
entry(url?: string): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Handles the callback after login or registration via a redirect.
|
|
32
|
-
* @param {string} [url] The URL to handle the callback from. Defaults to the current window location.
|
|
33
|
-
* @returns {Promise<void>} A promise that resolves when the callback is handled.
|
|
34
|
-
*
|
|
35
|
-
* @throws {Error} Throws an error if callback handler is not defined.
|
|
36
|
-
*/
|
|
37
|
-
handleCallback(url?: string): Promise<void>;
|
|
38
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{redirectUrlHandler as e,redirectCallbackHandler as n}from"../utils/handlers.mjs";import{State as a}from"../utils/State.mjs";import{BaseFlow as s}from"./BaseFlow.mjs";import"../utils/errors.mjs";import"../utils/crypto.mjs";import"../utils/base64Url.mjs";import"../utils/date.mjs";import"../utils/jwt.mjs";import"../utils/Metadata.mjs";import"../utils/Session.mjs";class y extends s{constructor(t,i,r,o){t.urlHandler||(t.urlHandler=e),t.callbackHandler||(t.callbackHandler=n),super(t,i,r,o)}async login(t={}){if(typeof this.options.urlHandler!="function"){const o=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",o),o}const i=await a.create(),r=await this.getAuthorizationUrl(t);r.searchParams.append("state",i.id),r.searchParams.append("code_challenge",i.codeChallenge),this.options.scopes?.includes("openid")&&r.searchParams.append("nonce",i.nonce),await this.storage.set(`sty.${i.id}`,JSON.stringify(i)),this.dispatchEvent("loginInitiated",[]),this.logging?.debug("Attempting to redirect for login"),await this.options.urlHandler(r.toString(),t)}async register(t={}){t.prompt="create",await this.login(t)}async entry(t){if(typeof this.options.urlHandler!="function"){const r=new Error("Missing option: urlHandler");throw this.logging?.error("Required option missing",r),r}t||(t=globalThis.window?.location.href);const i=new URL(t);this.logging?.debug("Attempting to redirect for entry"),await this.options.urlHandler(`${this.options.issuer}/provider/entry?${i.searchParams.toString()}`)}async handleCallback(t){if(typeof this.options.callbackHandler!="function"){const i=new Error("Missing option: callbackHandler");throw this.logging?.error("Required option missing",i),i}t||(t=globalThis.window?.location.href),await this.tokenExchange(await this.options.callbackHandler(t,this.options.responseMode||"fragment"))}}export{y as RedirectFlow};
|
|
2
|
-
//# sourceMappingURL=RedirectFlow.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RedirectFlow.mjs","sources":["../../src/flows/RedirectFlow.ts"],"sourcesContent":["import type { SDKOptions, RedirectParams, SDKStorage, SDKHttpClient, SDKLogging } from '../types';\nimport { redirectUrlHandler, redirectCallbackHandler } from '../utils/handlers';\nimport { State } from '../utils/State';\nimport { BaseFlow } from './BaseFlow';\n\n/**\n * Implements the Redirect flow for authentication using a full-page redirect.\n */\nexport class RedirectFlow extends BaseFlow<SDKOptions, RedirectParams> {\n\tconstructor(options: SDKOptions, storage: SDKStorage, httpClient: SDKHttpClient, logging?: SDKLogging) {\n\t\tif (!options.urlHandler) {\n\t\t\toptions.urlHandler = redirectUrlHandler;\n\t\t}\n\t\tif (!options.callbackHandler) {\n\t\t\toptions.callbackHandler = redirectCallbackHandler;\n\t\t}\n\n\t\tsuper(options, storage, httpClient, logging);\n\t}\n\n\t/**\n\t * Initiates the login process via a redirect.\n\t * @param {RedirectParams} [params={}] Optional parameters for redirect configuration.\n\t * @returns {Promise<void>} A promise that resolves when the login process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync login(params: RedirectParams = {}): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst state = await State.create();\n\t\tconst url = await this.getAuthorizationUrl(params);\n\n\t\turl.searchParams.append('state', state.id);\n\t\turl.searchParams.append('code_challenge', state.codeChallenge);\n\n\t\tif (this.options.scopes?.includes('openid')) {\n\t\t\turl.searchParams.append('nonce', state.nonce);\n\t\t}\n\n\t\tawait this.storage.set(`sty.${state.id}`, JSON.stringify(state));\n\n\t\tthis.dispatchEvent('loginInitiated', []);\n\t\tthis.logging?.debug('Attempting to redirect for login');\n\n\t\tawait this.options.urlHandler(url.toString(), params);\n\t}\n\n\t/**\n\t * Initiates the registration process via a redirect.\n\t * @param {RedirectParams} [params={}] Optional parameters for redirect configuration.\n\t * @returns {Promise<void>} A promise that resolves when the registration process completes.\n\t */\n\tasync register(params: RedirectParams = {}): Promise<void> {\n\t\tparams.prompt = 'create';\n\n\t\tawait this.login(params);\n\t}\n\n\t/**\n\t * Initiates the entry process via a redirect.\n\t * @param {string} url Optional URL to use for the entry process. If not provided, the current window location will be used.\n\t * @returns {Promise<void>} A promise that resolves when the entry process completes.\n\t *\n\t * @throws {Error} Throws an error if URL handler is not defined.\n\t */\n\tasync entry(url?: string): Promise<void> {\n\t\tif (typeof this.options.urlHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: urlHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tconst entryUrl = new URL(url);\n\n\t\tthis.logging?.debug('Attempting to redirect for entry');\n\n\t\tawait this.options.urlHandler(`${this.options.issuer}/provider/entry?${entryUrl.searchParams.toString()}`);\n\t}\n\n\t/**\n\t * Handles the callback after login or registration via a redirect.\n\t * @param {string} [url] The URL to handle the callback from. Defaults to the current window location.\n\t * @returns {Promise<void>} A promise that resolves when the callback is handled.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined.\n\t */\n\tasync handleCallback(url?: string): Promise<void> {\n\t\tif (typeof this.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!url) {\n\t\t\turl = globalThis.window?.location.href;\n\t\t}\n\n\t\tawait this.tokenExchange((await this.options.callbackHandler(url, this.options.responseMode || 'fragment')) as Record<string, string>);\n\t}\n}\n"],"names":["RedirectFlow","BaseFlow","options","storage","httpClient","logging","redirectUrlHandler","redirectCallbackHandler","params","error","state","State","url","entryUrl"],"mappings":"kXAQO,MAAMA,UAAqBC,CAAqC,CACtE,YAAYC,EAAqBC,EAAqBC,EAA2BC,EAAsB,CACjGH,EAAQ,aACZA,EAAQ,WAAaI,GAEjBJ,EAAQ,kBACZA,EAAQ,gBAAkBK,GAG3B,MAAML,EAASC,EAASC,EAAYC,CAAO,CAC5C,CASA,MAAM,MAAMG,EAAyB,GAAmB,CACvD,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMC,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEA,MAAMC,EAAQ,MAAMC,EAAM,OAAA,EACpBC,EAAM,MAAM,KAAK,oBAAoBJ,CAAM,EAEjDI,EAAI,aAAa,OAAO,QAASF,EAAM,EAAE,EACzCE,EAAI,aAAa,OAAO,iBAAkBF,EAAM,aAAa,EAEzD,KAAK,QAAQ,QAAQ,SAAS,QAAQ,GACzCE,EAAI,aAAa,OAAO,QAASF,EAAM,KAAK,EAG7C,MAAM,KAAK,QAAQ,IAAI,OAAOA,EAAM,EAAE,GAAI,KAAK,UAAUA,CAAK,CAAC,EAE/D,KAAK,cAAc,iBAAkB,EAAE,EACvC,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAM,KAAK,QAAQ,WAAWE,EAAI,SAAA,EAAYJ,CAAM,CACrD,CAOA,MAAM,SAASA,EAAyB,GAAmB,CAC1DA,EAAO,OAAS,SAEhB,MAAM,KAAK,MAAMA,CAAM,CACxB,CASA,MAAM,MAAMI,EAA6B,CACxC,GAAI,OAAO,KAAK,QAAQ,YAAe,WAAY,CAClD,MAAMH,EAAQ,IAAI,MAAM,4BAA4B,EACpD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKG,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAMC,EAAW,IAAI,IAAID,CAAG,EAE5B,KAAK,SAAS,MAAM,kCAAkC,EAEtD,MAAM,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,MAAM,mBAAmBC,EAAS,aAAa,SAAA,CAAU,EAAE,CAC1G,CASA,MAAM,eAAeD,EAA6B,CACjD,GAAI,OAAO,KAAK,QAAQ,iBAAoB,WAAY,CACvD,MAAMH,EAAQ,IAAI,MAAM,iCAAiC,EACzD,WAAK,SAAS,MAAM,0BAA2BA,CAAK,EAC9CA,CACP,CAEKG,IACJA,EAAM,WAAW,QAAQ,SAAS,MAGnC,MAAM,KAAK,cAAe,MAAM,KAAK,QAAQ,gBAAgBA,EAAK,KAAK,QAAQ,cAAgB,UAAU,CAA4B,CACtI,CACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseFlowHandler.cjs","sources":["../../src/handlers/BaseFlowHandler.ts"],"sourcesContent":["import type { NativeParams, LoginFlowState } from '../types';\nimport type { BaseFlow } from '../flows/BaseFlow';\n\nexport abstract class BaseFlowHandler {\n\t/**\n\t * The session ID.\n\t *\n\t * @type {string | null}\n\t */\n\tprotected sessionId: string | null = null;\n\n\t/**\n\t * The language to use for the authentication flow.\n\t *\n\t * Defaults to the browser's language setting.\n\t *\n\t * @type {string}\n\t */\n\tlanguage!: string;\n\n\tconstructor(\n\t\t/**\n\t\t * The SDK instance.\n\t\t *\n\t\t * @type {SDKStorage}\n\t\t */\n\t\tprotected sdk: BaseFlow,\n\t\t/**\n\t\t * Optional parameters for native configuration.\n\t\t *\n\t\t * @type {NativeParams} [options={}]\n\t\t */\n\t\tprotected params: NativeParams = {},\n\t) {\n\t\tthis.language = navigator.language;\n\t}\n\n\t/**\n\t * Starts a new session.\n\t *\n\t * @param {string} [sessionId] - The session ID to start the session with. If not provided, a new session will be created.\n\t * @param {string} [language] - The language to use for the authentication flow. If not provided, the browser's language setting will be used.\n\t * @returns {Promise<LoginFlowState | void>}\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.\n\t */\n\tabstract startSession(sessionId?: string | null, language?: string | null): Promise<LoginFlowState | void>;\n\n\t/**\n\t * Finalizes the session using the provided [finalizeUrl].\n\t *\n\t * @param {string} finalizeUrl The URL to finalize the session.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.\n\t */\n\tabstract finalizeSession(finalizeUrl: URL | string): Promise<void>;\n}\n"],"names":["BaseFlowHandler","sdk","params"],"mappings":"gFAGO,MAAeA,CAAgB,CAiBrC,YAMWC,EAMAC,EAAuB,GAChC,CAPS,KAAA,IAAAD,EAMA,KAAA,OAAAC,EAEV,KAAK,SAAW,UAAU,QAC3B,CA1BU,UAA2B,KASrC,QAsCD"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { NativeParams, LoginFlowState } from '../types';
|
|
2
|
-
import { BaseFlow } from '../flows/BaseFlow';
|
|
3
|
-
export declare abstract class BaseFlowHandler {
|
|
4
|
-
/**
|
|
5
|
-
* The SDK instance.
|
|
6
|
-
*
|
|
7
|
-
* @type {SDKStorage}
|
|
8
|
-
*/
|
|
9
|
-
protected sdk: BaseFlow;
|
|
10
|
-
/**
|
|
11
|
-
* Optional parameters for native configuration.
|
|
12
|
-
*
|
|
13
|
-
* @type {NativeParams} [options={}]
|
|
14
|
-
*/
|
|
15
|
-
protected params: NativeParams;
|
|
16
|
-
/**
|
|
17
|
-
* The session ID.
|
|
18
|
-
*
|
|
19
|
-
* @type {string | null}
|
|
20
|
-
*/
|
|
21
|
-
protected sessionId: string | null;
|
|
22
|
-
/**
|
|
23
|
-
* The language to use for the authentication flow.
|
|
24
|
-
*
|
|
25
|
-
* Defaults to the browser's language setting.
|
|
26
|
-
*
|
|
27
|
-
* @type {string}
|
|
28
|
-
*/
|
|
29
|
-
language: string;
|
|
30
|
-
constructor(
|
|
31
|
-
/**
|
|
32
|
-
* The SDK instance.
|
|
33
|
-
*
|
|
34
|
-
* @type {SDKStorage}
|
|
35
|
-
*/
|
|
36
|
-
sdk: BaseFlow,
|
|
37
|
-
/**
|
|
38
|
-
* Optional parameters for native configuration.
|
|
39
|
-
*
|
|
40
|
-
* @type {NativeParams} [options={}]
|
|
41
|
-
*/
|
|
42
|
-
params?: NativeParams);
|
|
43
|
-
/**
|
|
44
|
-
* Starts a new session.
|
|
45
|
-
*
|
|
46
|
-
* @param {string} [sessionId] - The session ID to start the session with. If not provided, a new session will be created.
|
|
47
|
-
* @param {string} [language] - The language to use for the authentication flow. If not provided, the browser's language setting will be used.
|
|
48
|
-
* @returns {Promise<LoginFlowState | void>}
|
|
49
|
-
*
|
|
50
|
-
* @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.
|
|
51
|
-
*/
|
|
52
|
-
abstract startSession(sessionId?: string | null, language?: string | null): Promise<LoginFlowState | void>;
|
|
53
|
-
/**
|
|
54
|
-
* Finalizes the session using the provided [finalizeUrl].
|
|
55
|
-
*
|
|
56
|
-
* @param {string} finalizeUrl The URL to finalize the session.
|
|
57
|
-
*
|
|
58
|
-
* @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.
|
|
59
|
-
*/
|
|
60
|
-
abstract finalizeSession(finalizeUrl: URL | string): Promise<void>;
|
|
61
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseFlowHandler.mjs","sources":["../../src/handlers/BaseFlowHandler.ts"],"sourcesContent":["import type { NativeParams, LoginFlowState } from '../types';\nimport type { BaseFlow } from '../flows/BaseFlow';\n\nexport abstract class BaseFlowHandler {\n\t/**\n\t * The session ID.\n\t *\n\t * @type {string | null}\n\t */\n\tprotected sessionId: string | null = null;\n\n\t/**\n\t * The language to use for the authentication flow.\n\t *\n\t * Defaults to the browser's language setting.\n\t *\n\t * @type {string}\n\t */\n\tlanguage!: string;\n\n\tconstructor(\n\t\t/**\n\t\t * The SDK instance.\n\t\t *\n\t\t * @type {SDKStorage}\n\t\t */\n\t\tprotected sdk: BaseFlow,\n\t\t/**\n\t\t * Optional parameters for native configuration.\n\t\t *\n\t\t * @type {NativeParams} [options={}]\n\t\t */\n\t\tprotected params: NativeParams = {},\n\t) {\n\t\tthis.language = navigator.language;\n\t}\n\n\t/**\n\t * Starts a new session.\n\t *\n\t * @param {string} [sessionId] - The session ID to start the session with. If not provided, a new session will be created.\n\t * @param {string} [language] - The language to use for the authentication flow. If not provided, the browser's language setting will be used.\n\t * @returns {Promise<LoginFlowState | void>}\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.\n\t */\n\tabstract startSession(sessionId?: string | null, language?: string | null): Promise<LoginFlowState | void>;\n\n\t/**\n\t * Finalizes the session using the provided [finalizeUrl].\n\t *\n\t * @param {string} finalizeUrl The URL to finalize the session.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.\n\t */\n\tabstract finalizeSession(finalizeUrl: URL | string): Promise<void>;\n}\n"],"names":["BaseFlowHandler","sdk","params"],"mappings":"AAGO,MAAeA,CAAgB,CAiBrC,YAMWC,EAMAC,EAAuB,GAChC,CAPS,KAAA,IAAAD,EAMA,KAAA,OAAAC,EAEV,KAAK,SAAW,UAAU,QAC3B,CA1BU,UAA2B,KASrC,QAsCD"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./BaseFlowHandler.cjs"),a=require("../utils/State.cjs");require("../utils/crypto.cjs");require("../utils/base64Url.cjs");require("../utils/date.cjs");class n extends o.BaseFlowHandler{shortAppId=null;async startSession(){await this.sdk.waitToInitialize(),this.sdk.logging&&(this.sdk.logging.xEventId=void 0,this.sdk.logging.info("Starting login flow session"));const e=await a.State.create(),t=await this.sdk.getAuthorizationUrl(this.params);t.searchParams.append("sdk","web-embedded"),t.searchParams.append("state",e.id),t.searchParams.append("code_challenge",e.codeChallenge),this.sdk.options.scopes?.includes("openid")&&t.searchParams.append("nonce",e.nonce),await this.sdk.storage.set(`sty.${e.id}`,JSON.stringify(e));const i=await this.sdk.httpClient.request(t.toString(),{method:"GET",credentials:"include",headers:{"Accept-language":this.language}});if(!i.ok){const r=new Error(`Authorization request failed with status ${i.status}`);throw this.sdk.logging?.error("Authorization request error",r),r}let s;try{s=new URL(await i.text())}catch{s=new URL(i.url)}if(s.searchParams.has("code")){if(typeof this.sdk.options.callbackHandler!="function"){const r=new Error("Missing option: callbackHandler");throw this.sdk.logging?.error("Required option missing",r),r}if(!s.toString().startsWith(this.sdk.options.redirectUri)){const r=new Error("Invalid redirect URI");throw this.sdk.logging?.error("Invalid redirect URI",r),r}return await this.sdk.tokenExchange(await this.sdk.options.callbackHandler(s.toString(),this.sdk.options.responseMode||"fragment"))}if(s.searchParams.has("error")){const r=new Error(`${s.searchParams.get("error")}: ${s.searchParams.get("error_description")}`);throw this.sdk.logging?.error("Authorization error",r),r}if(s.searchParams.has("language")&&(this.language=s.searchParams.get("language")),this.shortAppId=s.searchParams.get("short_app_id"),this.sessionId=s.searchParams.get("session_id"),!this.shortAppId){const r=new Error('"short_app_id" is missing from the response');throw this.sdk.logging?.error("Failed to start a session",r),r}if(!this.sessionId){const r=new Error('"session_id" is missing from the response');throw this.sdk.logging?.error("Failed to start a session",r),r}}async finalizeSession(e){this.sdk.logging?.debug("Finalizing login flow session");const t=await this.sdk.httpClient.request(e.toString(),{method:"GET",headers:{Authorization:`Bearer ${this.sessionId}`,"Accept-language":this.language},credentials:"include"}),i=new URL(await t.text());if(typeof this.sdk.options.callbackHandler!="function"){const s=new Error("Missing option: callbackHandler");throw this.sdk.logging?.error("Required option missing",s),s}if(!i.toString().startsWith(this.sdk.options.redirectUri)){const s=new Error("Invalid redirect URI");throw this.sdk.logging?.error("Finalize session error",s),s}await this.sdk.tokenExchange(await this.sdk.options.callbackHandler(i.toString(),this.sdk.options.responseMode||"fragment"))}}exports.EmbeddedFlowHandler=n;
|
|
2
|
-
//# sourceMappingURL=EmbeddedFlowHandler.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedFlowHandler.cjs","sources":["../../src/handlers/EmbeddedFlowHandler.ts"],"sourcesContent":["import { BaseFlowHandler } from './BaseFlowHandler';\nimport { State } from '../utils/State';\n\n/**\n * Handler for the embedded login flow, managing the session and interactions with the SDK.\n */\nexport class EmbeddedFlowHandler extends BaseFlowHandler {\n\t/**\n\t * The short app ID associated with the session.\n\t *\n\t * @type {string | null}\n\t */\n\tshortAppId: string | null = null;\n\n\t/**\n\t * Starts a new session.\n\t *\n\t * @returns {Promise<void>}\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.\n\t */\n\tasync startSession(): Promise<void> {\n\t\tawait this.sdk.waitToInitialize();\n\n\t\tif (this.sdk.logging) {\n\t\t\tthis.sdk.logging.xEventId = undefined;\n\t\t\tthis.sdk.logging.info('Starting login flow session');\n\t\t}\n\n\t\tconst state = await State.create();\n\t\tconst authorizationUrl = await this.sdk.getAuthorizationUrl(this.params);\n\n\t\tauthorizationUrl.searchParams.append('sdk', 'web-embedded');\n\t\tauthorizationUrl.searchParams.append('state', state.id);\n\t\tauthorizationUrl.searchParams.append('code_challenge', state.codeChallenge);\n\n\t\tif (this.sdk.options.scopes?.includes('openid')) {\n\t\t\tauthorizationUrl.searchParams.append('nonce', state.nonce);\n\t\t}\n\n\t\tawait this.sdk.storage.set(`sty.${state.id}`, JSON.stringify(state));\n\n\t\tconst response = await this.sdk.httpClient.request(authorizationUrl.toString(), {\n\t\t\tmethod: 'GET',\n\t\t\tcredentials: 'include',\n\t\t\theaders: { 'Accept-language': this.language },\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconst error = new Error(`Authorization request failed with status ${response.status}`);\n\t\t\tthis.sdk.logging?.error('Authorization request error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet uri: URL;\n\n\t\ttry {\n\t\t\turi = new URL(await response.text());\n\t\t} catch {\n\t\t\turi = new URL(response.url);\n\t\t}\n\n\t\tif (uri.searchParams.has('code')) {\n\t\t\tif (typeof this.sdk.options.callbackHandler !== 'function') {\n\t\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\t\tthis.sdk.logging?.error('Required option missing', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!uri.toString().startsWith(this.sdk.options.redirectUri)) {\n\t\t\t\tconst error = new Error('Invalid redirect URI');\n\t\t\t\tthis.sdk.logging?.error('Invalid redirect URI', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn await this.sdk.tokenExchange(\n\t\t\t\t(await this.sdk.options.callbackHandler(uri.toString(), this.sdk.options.responseMode || 'fragment')) as Record<string, string>,\n\t\t\t);\n\t\t}\n\n\t\tif (uri.searchParams.has('error')) {\n\t\t\tconst error = new Error(`${uri.searchParams.get('error')}: ${uri.searchParams.get('error_description')}`);\n\t\t\tthis.sdk.logging?.error('Authorization error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (uri.searchParams.has('language')) {\n\t\t\tthis.language = uri.searchParams.get('language')!;\n\t\t}\n\n\t\tthis.shortAppId = uri.searchParams.get('short_app_id');\n\t\tthis.sessionId = uri.searchParams.get('session_id');\n\n\t\tif (!this.shortAppId) {\n\t\t\tconst error = new Error('\"short_app_id\" is missing from the response');\n\t\t\tthis.sdk.logging?.error('Failed to start a session', error);\n\t\t\tthrow error;\n\t\t}\n\t\tif (!this.sessionId) {\n\t\t\tconst error = new Error('\"session_id\" is missing from the response');\n\t\t\tthis.sdk.logging?.error('Failed to start a session', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Finalizes the session using the provided [finalizeUrl].\n\t *\n\t * @param {string} finalizeUrl The URL to finalize the session.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.\n\t */\n\tasync finalizeSession(finalizeUrl: URL | string): Promise<void> {\n\t\tthis.sdk.logging?.debug('Finalizing login flow session');\n\n\t\tconst response = await this.sdk.httpClient.request(finalizeUrl.toString(), {\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.sessionId}`,\n\t\t\t\t'Accept-language': this.language,\n\t\t\t},\n\t\t\tcredentials: 'include',\n\t\t});\n\t\tconst redirectUri = new URL(await response.text());\n\n\t\tif (typeof this.sdk.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.sdk.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!redirectUri.toString().startsWith(this.sdk.options.redirectUri)) {\n\t\t\tconst error = new Error('Invalid redirect URI');\n\t\t\tthis.sdk.logging?.error('Finalize session error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait this.sdk.tokenExchange(\n\t\t\t(await this.sdk.options.callbackHandler(redirectUri.toString(), this.sdk.options.responseMode || 'fragment')) as Record<string, string>,\n\t\t);\n\t}\n}\n"],"names":["EmbeddedFlowHandler","BaseFlowHandler","state","State","authorizationUrl","response","error","uri","finalizeUrl","redirectUri"],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { BaseFlowHandler } from './BaseFlowHandler';
|
|
2
|
-
/**
|
|
3
|
-
* Handler for the embedded login flow, managing the session and interactions with the SDK.
|
|
4
|
-
*/
|
|
5
|
-
export declare class EmbeddedFlowHandler extends BaseFlowHandler {
|
|
6
|
-
/**
|
|
7
|
-
* The short app ID associated with the session.
|
|
8
|
-
*
|
|
9
|
-
* @type {string | null}
|
|
10
|
-
*/
|
|
11
|
-
shortAppId: string | null;
|
|
12
|
-
/**
|
|
13
|
-
* Starts a new session.
|
|
14
|
-
*
|
|
15
|
-
* @returns {Promise<void>}
|
|
16
|
-
*
|
|
17
|
-
* @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.
|
|
18
|
-
*/
|
|
19
|
-
startSession(): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Finalizes the session using the provided [finalizeUrl].
|
|
22
|
-
*
|
|
23
|
-
* @param {string} finalizeUrl The URL to finalize the session.
|
|
24
|
-
*
|
|
25
|
-
* @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.
|
|
26
|
-
*/
|
|
27
|
-
finalizeSession(finalizeUrl: URL | string): Promise<void>;
|
|
28
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{BaseFlowHandler as o}from"./BaseFlowHandler.mjs";import{State as a}from"../utils/State.mjs";import"../utils/crypto.mjs";import"../utils/base64Url.mjs";import"../utils/date.mjs";class p extends o{shortAppId=null;async startSession(){await this.sdk.waitToInitialize(),this.sdk.logging&&(this.sdk.logging.xEventId=void 0,this.sdk.logging.info("Starting login flow session"));const t=await a.create(),i=await this.sdk.getAuthorizationUrl(this.params);i.searchParams.append("sdk","web-embedded"),i.searchParams.append("state",t.id),i.searchParams.append("code_challenge",t.codeChallenge),this.sdk.options.scopes?.includes("openid")&&i.searchParams.append("nonce",t.nonce),await this.sdk.storage.set(`sty.${t.id}`,JSON.stringify(t));const e=await this.sdk.httpClient.request(i.toString(),{method:"GET",credentials:"include",headers:{"Accept-language":this.language}});if(!e.ok){const r=new Error(`Authorization request failed with status ${e.status}`);throw this.sdk.logging?.error("Authorization request error",r),r}let s;try{s=new URL(await e.text())}catch{s=new URL(e.url)}if(s.searchParams.has("code")){if(typeof this.sdk.options.callbackHandler!="function"){const r=new Error("Missing option: callbackHandler");throw this.sdk.logging?.error("Required option missing",r),r}if(!s.toString().startsWith(this.sdk.options.redirectUri)){const r=new Error("Invalid redirect URI");throw this.sdk.logging?.error("Invalid redirect URI",r),r}return await this.sdk.tokenExchange(await this.sdk.options.callbackHandler(s.toString(),this.sdk.options.responseMode||"fragment"))}if(s.searchParams.has("error")){const r=new Error(`${s.searchParams.get("error")}: ${s.searchParams.get("error_description")}`);throw this.sdk.logging?.error("Authorization error",r),r}if(s.searchParams.has("language")&&(this.language=s.searchParams.get("language")),this.shortAppId=s.searchParams.get("short_app_id"),this.sessionId=s.searchParams.get("session_id"),!this.shortAppId){const r=new Error('"short_app_id" is missing from the response');throw this.sdk.logging?.error("Failed to start a session",r),r}if(!this.sessionId){const r=new Error('"session_id" is missing from the response');throw this.sdk.logging?.error("Failed to start a session",r),r}}async finalizeSession(t){this.sdk.logging?.debug("Finalizing login flow session");const i=await this.sdk.httpClient.request(t.toString(),{method:"GET",headers:{Authorization:`Bearer ${this.sessionId}`,"Accept-language":this.language},credentials:"include"}),e=new URL(await i.text());if(typeof this.sdk.options.callbackHandler!="function"){const s=new Error("Missing option: callbackHandler");throw this.sdk.logging?.error("Required option missing",s),s}if(!e.toString().startsWith(this.sdk.options.redirectUri)){const s=new Error("Invalid redirect URI");throw this.sdk.logging?.error("Finalize session error",s),s}await this.sdk.tokenExchange(await this.sdk.options.callbackHandler(e.toString(),this.sdk.options.responseMode||"fragment"))}}export{p as EmbeddedFlowHandler};
|
|
2
|
-
//# sourceMappingURL=EmbeddedFlowHandler.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedFlowHandler.mjs","sources":["../../src/handlers/EmbeddedFlowHandler.ts"],"sourcesContent":["import { BaseFlowHandler } from './BaseFlowHandler';\nimport { State } from '../utils/State';\n\n/**\n * Handler for the embedded login flow, managing the session and interactions with the SDK.\n */\nexport class EmbeddedFlowHandler extends BaseFlowHandler {\n\t/**\n\t * The short app ID associated with the session.\n\t *\n\t * @type {string | null}\n\t */\n\tshortAppId: string | null = null;\n\n\t/**\n\t * Starts a new session.\n\t *\n\t * @returns {Promise<void>}\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.\n\t */\n\tasync startSession(): Promise<void> {\n\t\tawait this.sdk.waitToInitialize();\n\n\t\tif (this.sdk.logging) {\n\t\t\tthis.sdk.logging.xEventId = undefined;\n\t\t\tthis.sdk.logging.info('Starting login flow session');\n\t\t}\n\n\t\tconst state = await State.create();\n\t\tconst authorizationUrl = await this.sdk.getAuthorizationUrl(this.params);\n\n\t\tauthorizationUrl.searchParams.append('sdk', 'web-embedded');\n\t\tauthorizationUrl.searchParams.append('state', state.id);\n\t\tauthorizationUrl.searchParams.append('code_challenge', state.codeChallenge);\n\n\t\tif (this.sdk.options.scopes?.includes('openid')) {\n\t\t\tauthorizationUrl.searchParams.append('nonce', state.nonce);\n\t\t}\n\n\t\tawait this.sdk.storage.set(`sty.${state.id}`, JSON.stringify(state));\n\n\t\tconst response = await this.sdk.httpClient.request(authorizationUrl.toString(), {\n\t\t\tmethod: 'GET',\n\t\t\tcredentials: 'include',\n\t\t\theaders: { 'Accept-language': this.language },\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconst error = new Error(`Authorization request failed with status ${response.status}`);\n\t\t\tthis.sdk.logging?.error('Authorization request error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet uri: URL;\n\n\t\ttry {\n\t\t\turi = new URL(await response.text());\n\t\t} catch {\n\t\t\turi = new URL(response.url);\n\t\t}\n\n\t\tif (uri.searchParams.has('code')) {\n\t\t\tif (typeof this.sdk.options.callbackHandler !== 'function') {\n\t\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\t\tthis.sdk.logging?.error('Required option missing', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!uri.toString().startsWith(this.sdk.options.redirectUri)) {\n\t\t\t\tconst error = new Error('Invalid redirect URI');\n\t\t\t\tthis.sdk.logging?.error('Invalid redirect URI', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn await this.sdk.tokenExchange(\n\t\t\t\t(await this.sdk.options.callbackHandler(uri.toString(), this.sdk.options.responseMode || 'fragment')) as Record<string, string>,\n\t\t\t);\n\t\t}\n\n\t\tif (uri.searchParams.has('error')) {\n\t\t\tconst error = new Error(`${uri.searchParams.get('error')}: ${uri.searchParams.get('error_description')}`);\n\t\t\tthis.sdk.logging?.error('Authorization error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (uri.searchParams.has('language')) {\n\t\t\tthis.language = uri.searchParams.get('language')!;\n\t\t}\n\n\t\tthis.shortAppId = uri.searchParams.get('short_app_id');\n\t\tthis.sessionId = uri.searchParams.get('session_id');\n\n\t\tif (!this.shortAppId) {\n\t\t\tconst error = new Error('\"short_app_id\" is missing from the response');\n\t\t\tthis.sdk.logging?.error('Failed to start a session', error);\n\t\t\tthrow error;\n\t\t}\n\t\tif (!this.sessionId) {\n\t\t\tconst error = new Error('\"session_id\" is missing from the response');\n\t\t\tthis.sdk.logging?.error('Failed to start a session', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Finalizes the session using the provided [finalizeUrl].\n\t *\n\t * @param {string} finalizeUrl The URL to finalize the session.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.\n\t */\n\tasync finalizeSession(finalizeUrl: URL | string): Promise<void> {\n\t\tthis.sdk.logging?.debug('Finalizing login flow session');\n\n\t\tconst response = await this.sdk.httpClient.request(finalizeUrl.toString(), {\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.sessionId}`,\n\t\t\t\t'Accept-language': this.language,\n\t\t\t},\n\t\t\tcredentials: 'include',\n\t\t});\n\t\tconst redirectUri = new URL(await response.text());\n\n\t\tif (typeof this.sdk.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.sdk.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!redirectUri.toString().startsWith(this.sdk.options.redirectUri)) {\n\t\t\tconst error = new Error('Invalid redirect URI');\n\t\t\tthis.sdk.logging?.error('Finalize session error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait this.sdk.tokenExchange(\n\t\t\t(await this.sdk.options.callbackHandler(redirectUri.toString(), this.sdk.options.responseMode || 'fragment')) as Record<string, string>,\n\t\t);\n\t}\n}\n"],"names":["EmbeddedFlowHandler","BaseFlowHandler","state","State","authorizationUrl","response","error","uri","finalizeUrl","redirectUri"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("./BaseFlowHandler.cjs"),l=require("../utils/State.cjs"),n=require("../utils/errors.cjs");require("../utils/crypto.cjs");require("../utils/base64Url.cjs");require("../utils/date.cjs");class d extends g.BaseFlowHandler{async startSession(i,a){if(this.sdk.logging&&(this.sdk.logging.xEventId=void 0,this.sdk.logging.info("Starting login flow session")),a&&(this.language=a),i)return this.sessionId=i,this.submitForm();const e=await l.State.create(),s=await this.sdk.getAuthorizationUrl(this.params);s.searchParams.append("sdk",this.params.sdk||"web"),s.searchParams.append("state",e.id),s.searchParams.append("code_challenge",e.codeChallenge),this.sdk.options.scopes?.includes("openid")&&s.searchParams.append("nonce",e.nonce),await this.sdk.storage.set(`sty.${e.id}`,JSON.stringify(e));const o=await this.sdk.httpClient.request(s.toString(),{method:"GET",credentials:"include",headers:{"Accept-language":this.language}});if(!o.ok){const r=new Error(`Authorization request failed with status ${o.status}`);throw this.sdk.logging?.error("Authorization request error",r),r}let t;try{t=new URL(await o.text())}catch{t=new URL(o.url)}if(t.searchParams.has("code")){if(typeof this.sdk.options.callbackHandler!="function"){const r=new Error("Missing option: callbackHandler");throw this.sdk.logging?.error("Required option missing",r),r}if(!t.toString().startsWith(this.sdk.options.redirectUri)){const r=new Error("Invalid redirect URI");throw this.sdk.logging?.error("Invalid redirect URI",r),r}return await this.sdk.tokenExchange(await this.sdk.options.callbackHandler(t.toString(),this.sdk.options.responseMode||"fragment"))}if(t.searchParams.has("error")){const r=new Error(`${t.searchParams.get("error")}: ${t.searchParams.get("error_description")}`);throw this.sdk.logging?.error("Authorization error",r),r}if(!t.searchParams.has("session_id")){const r=new Error('"session_id" is missing from the response');throw this.sdk.logging?.error("Failed to start a session",r),r}return t.searchParams.has("language")&&(this.language=t.searchParams.get("language")),this.sessionId=t.searchParams.get("session_id"),this.submitForm()}async finalizeSession(i){this.sdk.logging?.debug("Finalizing login flow session");const a=await this.sdk.httpClient.request(i.toString(),{method:"GET",headers:{Authorization:`Bearer ${this.sessionId}`,"Accept-language":this.language},credentials:"include"}),e=new URL(await a.text());if(typeof this.sdk.options.callbackHandler!="function"){const s=new Error("Missing option: callbackHandler");throw this.sdk.logging?.error("Required option missing",s),s}if(!e.toString().startsWith(this.sdk.options.redirectUri)){const s=new Error("Invalid redirect URI");throw this.sdk.logging?.error("Finalize session error",s),s}await this.sdk.tokenExchange(await this.sdk.options.callbackHandler(e.toString(),this.sdk.options.responseMode||"fragment"))}async submitForm(i,a={}){i&&this.sdk.logging?.debug(`Submitting form: ${i}`);const e=await this.sdk.httpClient.request(new URL(`/flow/api/v1/${i?`form/${i}`:"init"}`,this.sdk.options.issuer).toString(),{method:"POST",headers:{Authorization:`Bearer ${this.sessionId}`,"Content-Type":"application/json","Accept-language":this.language},body:JSON.stringify(a),credentials:"include"}),s=await e.json();if(!e.ok&&e.status>=400&&e.status<500){if(e.status!==403&&s?.hostedUrl&&!s.messages)throw this.sdk.logging?.warn(`Triggering fallback due to: Received HTTP ${e.status} without messages`),new n.FallbackError(new URL(s.hostedUrl));if(e.status!==400){const o=new Error(`HTTP ${e.status}: ${e.statusText}`);throw this.sdk.logging?.error("Form submission error",o),o}}if(s.finalizeUrl)await this.finalizeSession(s.finalizeUrl);else{if(s.hostedUrl&&!s.forms&&!s.messages)throw this.sdk.logging?.warn("Triggering fallback due to: No forms or messages in response"),new n.FallbackError(new URL(s.hostedUrl));s.screen&&this.sdk.logging?.info(`Rendering screen: ${s.screen}`)}return s}}exports.NativeFlowHandler=d;
|
|
2
|
-
//# sourceMappingURL=NativeFlowHandler.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeFlowHandler.cjs","sources":["../../src/handlers/NativeFlowHandler.ts"],"sourcesContent":["import type { LoginFlowState } from '../types';\nimport { BaseFlowHandler } from './BaseFlowHandler';\nimport { State } from '../utils/State';\nimport { FallbackError } from '../utils/errors';\n\nexport class NativeFlowHandler extends BaseFlowHandler {\n\t/**\n\t * Starts a new session.\n\t *\n\t * @param {string} [sessionId] - The session ID to start the session with. If not provided, a new session will be created.\n\t * @param {string} [language] - The language to use for the authentication flow. If not provided, the browser's language setting will be used.\n\t * @returns {Promise<LoginFlowState | void>}\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.\n\t */\n\tasync startSession(sessionId?: string | null, language?: string | null): Promise<LoginFlowState | void> {\n\t\tif (this.sdk.logging) {\n\t\t\tthis.sdk.logging.xEventId = undefined;\n\t\t\tthis.sdk.logging.info('Starting login flow session');\n\t\t}\n\n\t\tif (language) {\n\t\t\tthis.language = language;\n\t\t}\n\n\t\tif (sessionId) {\n\t\t\tthis.sessionId = sessionId;\n\t\t\treturn this.submitForm();\n\t\t}\n\n\t\tconst state = await State.create();\n\t\tconst authorizationUrl = await this.sdk.getAuthorizationUrl(this.params);\n\n\t\tauthorizationUrl.searchParams.append('sdk', this.params.sdk || 'web');\n\t\tauthorizationUrl.searchParams.append('state', state.id);\n\t\tauthorizationUrl.searchParams.append('code_challenge', state.codeChallenge);\n\n\t\tif (this.sdk.options.scopes?.includes('openid')) {\n\t\t\tauthorizationUrl.searchParams.append('nonce', state.nonce);\n\t\t}\n\n\t\tawait this.sdk.storage.set(`sty.${state.id}`, JSON.stringify(state));\n\n\t\tconst response = await this.sdk.httpClient.request(authorizationUrl.toString(), {\n\t\t\tmethod: 'GET',\n\t\t\tcredentials: 'include',\n\t\t\theaders: { 'Accept-language': this.language },\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconst error = new Error(`Authorization request failed with status ${response.status}`);\n\t\t\tthis.sdk.logging?.error('Authorization request error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tlet uri: URL;\n\n\t\ttry {\n\t\t\turi = new URL(await response.text());\n\t\t} catch {\n\t\t\turi = new URL(response.url);\n\t\t}\n\n\t\tif (uri.searchParams.has('code')) {\n\t\t\tif (typeof this.sdk.options.callbackHandler !== 'function') {\n\t\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\t\tthis.sdk.logging?.error('Required option missing', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!uri.toString().startsWith(this.sdk.options.redirectUri)) {\n\t\t\t\tconst error = new Error('Invalid redirect URI');\n\t\t\t\tthis.sdk.logging?.error('Invalid redirect URI', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn await this.sdk.tokenExchange(\n\t\t\t\t(await this.sdk.options.callbackHandler(uri.toString(), this.sdk.options.responseMode || 'fragment')) as Record<string, string>,\n\t\t\t);\n\t\t}\n\n\t\tif (uri.searchParams.has('error')) {\n\t\t\tconst error = new Error(`${uri.searchParams.get('error')}: ${uri.searchParams.get('error_description')}`);\n\t\t\tthis.sdk.logging?.error('Authorization error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!uri.searchParams.has('session_id')) {\n\t\t\tconst error = new Error('\"session_id\" is missing from the response');\n\t\t\tthis.sdk.logging?.error('Failed to start a session', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (uri.searchParams.has('language')) {\n\t\t\tthis.language = uri.searchParams.get('language')!;\n\t\t}\n\n\t\tthis.sessionId = uri.searchParams.get('session_id');\n\n\t\treturn this.submitForm();\n\t}\n\n\t/**\n\t * Finalizes the session using the provided [finalizeUrl].\n\t *\n\t * @param {string} finalizeUrl The URL to finalize the session.\n\t *\n\t * @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.\n\t */\n\tasync finalizeSession(finalizeUrl: URL | string): Promise<void> {\n\t\tthis.sdk.logging?.debug('Finalizing login flow session');\n\n\t\tconst response = await this.sdk.httpClient.request(finalizeUrl.toString(), {\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.sessionId}`,\n\t\t\t\t'Accept-language': this.language,\n\t\t\t},\n\t\t\tcredentials: 'include',\n\t\t});\n\t\tconst redirectUri = new URL(await response.text());\n\n\t\tif (typeof this.sdk.options.callbackHandler !== 'function') {\n\t\t\tconst error = new Error('Missing option: callbackHandler');\n\t\t\tthis.sdk.logging?.error('Required option missing', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!redirectUri.toString().startsWith(this.sdk.options.redirectUri)) {\n\t\t\tconst error = new Error('Invalid redirect URI');\n\t\t\tthis.sdk.logging?.error('Finalize session error', error);\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait this.sdk.tokenExchange(\n\t\t\t(await this.sdk.options.callbackHandler(redirectUri.toString(), this.sdk.options.responseMode || 'fragment')) as Record<string, string>,\n\t\t);\n\t}\n\n\t/**\n\t * Submits a form with the provided [formId] and [data].\n\t *\n\t * @returns {Promise<LoginFlowState>}\n\t *\n\t * @throws {Error} Throws an error if form submission fails.\n\t * @throws {FallbackError} Throws a fallback error if response indicates fallback is needed.\n\t */\n\tasync submitForm(formId?: string, body: Record<string, unknown> = {}): Promise<LoginFlowState> {\n\t\tif (formId) {\n\t\t\tthis.sdk.logging?.debug(`Submitting form: ${formId}`);\n\t\t}\n\n\t\tconst response = await this.sdk.httpClient.request<LoginFlowState>(\n\t\t\tnew URL(`/flow/api/v1/${formId ? `form/${formId}` : 'init'}`, this.sdk.options.issuer).toString(),\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\tAuthorization: `Bearer ${this.sessionId}`,\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t'Accept-language': this.language,\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(body),\n\t\t\t\tcredentials: 'include',\n\t\t\t},\n\t\t);\n\t\tconst data = await response.json();\n\n\t\tif (!response.ok) {\n\t\t\tif (response.status >= 400 && response.status < 500) {\n\t\t\t\tif (response.status !== 403 && data?.hostedUrl && !data.messages) {\n\t\t\t\t\tthis.sdk.logging?.warn(`Triggering fallback due to: Received HTTP ${response.status} without messages`);\n\t\t\t\t\tthrow new FallbackError(new URL(data.hostedUrl));\n\t\t\t\t}\n\n\t\t\t\tif (response.status !== 400) {\n\t\t\t\t\tconst error = new Error(`HTTP ${response.status}: ${response.statusText}`);\n\t\t\t\t\tthis.sdk.logging?.error(`Form submission error`, error);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (data.finalizeUrl) {\n\t\t\tawait this.finalizeSession(data.finalizeUrl);\n\t\t} else if (data.hostedUrl && !data.forms && !data.messages) {\n\t\t\tthis.sdk.logging?.warn(`Triggering fallback due to: No forms or messages in response`);\n\t\t\tthrow new FallbackError(new URL(data.hostedUrl));\n\t\t} else if (data.screen) {\n\t\t\tthis.sdk.logging?.info(`Rendering screen: ${data.screen}`);\n\t\t}\n\n\t\treturn data;\n\t}\n}\n"],"names":["NativeFlowHandler","BaseFlowHandler","sessionId","language","state","State","authorizationUrl","response","error","uri","finalizeUrl","redirectUri","formId","body","data","FallbackError"],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { LoginFlowState } from '../types';
|
|
2
|
-
import { BaseFlowHandler } from './BaseFlowHandler';
|
|
3
|
-
export declare class NativeFlowHandler extends BaseFlowHandler {
|
|
4
|
-
/**
|
|
5
|
-
* Starts a new session.
|
|
6
|
-
*
|
|
7
|
-
* @param {string} [sessionId] - The session ID to start the session with. If not provided, a new session will be created.
|
|
8
|
-
* @param {string} [language] - The language to use for the authentication flow. If not provided, the browser's language setting will be used.
|
|
9
|
-
* @returns {Promise<LoginFlowState | void>}
|
|
10
|
-
*
|
|
11
|
-
* @throws {Error} Throws an error if callback handler is not defined, redirect URI is invalid, authorization error occurs, or session ID is missing.
|
|
12
|
-
*/
|
|
13
|
-
startSession(sessionId?: string | null, language?: string | null): Promise<LoginFlowState | void>;
|
|
14
|
-
/**
|
|
15
|
-
* Finalizes the session using the provided [finalizeUrl].
|
|
16
|
-
*
|
|
17
|
-
* @param {string} finalizeUrl The URL to finalize the session.
|
|
18
|
-
*
|
|
19
|
-
* @throws {Error} Throws an error if callback handler is not defined or redirect URI is invalid.
|
|
20
|
-
*/
|
|
21
|
-
finalizeSession(finalizeUrl: URL | string): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* Submits a form with the provided [formId] and [data].
|
|
24
|
-
*
|
|
25
|
-
* @returns {Promise<LoginFlowState>}
|
|
26
|
-
*
|
|
27
|
-
* @throws {Error} Throws an error if form submission fails.
|
|
28
|
-
* @throws {FallbackError} Throws a fallback error if response indicates fallback is needed.
|
|
29
|
-
*/
|
|
30
|
-
submitForm(formId?: string, body?: Record<string, unknown>): Promise<LoginFlowState>;
|
|
31
|
-
}
|