@okta/okta-auth-js 7.5.0 → 7.5.1
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/CHANGELOG.md +9 -0
- package/README.md +1 -1
- package/cjs/browser/fingerprint.js +1 -2
- package/cjs/browser/fingerprint.js.map +1 -1
- package/cjs/core/ServiceManager/browser.js +3 -4
- package/cjs/core/ServiceManager/browser.js.map +1 -1
- package/cjs/core/types/api.js.map +1 -1
- package/cjs/fetch/fetchRequest.js +1 -2
- package/cjs/fetch/fetchRequest.js.map +1 -1
- package/cjs/http/OktaUserAgent.js +2 -2
- package/cjs/http/request.js +11 -5
- package/cjs/http/request.js.map +1 -1
- package/cjs/idx/IdxTransactionManager.js +1 -1
- package/cjs/idx/IdxTransactionManager.js.map +1 -1
- package/cjs/idx/authenticator/OktaPassword.js +1 -2
- package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +1 -2
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/getAuthenticator.js +3 -4
- package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
- package/cjs/idx/idxState/index.js +1 -1
- package/cjs/idx/idxState/index.js.map +1 -1
- package/cjs/idx/idxState/v1/generateIdxAction.js +2 -2
- package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
- package/cjs/idx/idxState/v1/idxResponseParser.js +2 -4
- package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
- package/cjs/idx/idxState/v1/makeIdxState.js +1 -2
- package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
- package/cjs/idx/interact.js +1 -2
- package/cjs/idx/interact.js.map +1 -1
- package/cjs/idx/poll.js +3 -5
- package/cjs/idx/poll.js.map +1 -1
- package/cjs/idx/proceed.js +1 -1
- package/cjs/idx/proceed.js.map +1 -1
- package/cjs/idx/remediators/Base/AuthenticatorData.js +1 -1
- package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
- package/cjs/idx/remediators/Base/Remediator.js +5 -7
- package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
- package/cjs/idx/remediators/Base/SelectAuthenticator.js +3 -4
- package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js +1 -2
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/EnrollPoll.js +1 -1
- package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +2 -3
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +2 -3
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -1
- package/cjs/idx/remediators/SelectEnrollmentChannel.js +1 -2
- package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
- package/cjs/idx/remediators/util.js +2 -4
- package/cjs/idx/remediators/util.js.map +1 -1
- package/cjs/idx/run.js +6 -10
- package/cjs/idx/run.js.map +1 -1
- package/cjs/idx/transactionMeta.js +1 -1
- package/cjs/idx/transactionMeta.js.map +1 -1
- package/cjs/idx/util.js +3 -6
- package/cjs/idx/util.js.map +1 -1
- package/cjs/myaccount/emailApi.js +1 -1
- package/cjs/myaccount/emailApi.js.map +1 -1
- package/cjs/myaccount/passwordApi.js +2 -2
- package/cjs/myaccount/passwordApi.js.map +1 -1
- package/cjs/myaccount/phoneApi.js +1 -1
- package/cjs/myaccount/phoneApi.js.map +1 -1
- package/cjs/myaccount/profileApi.js +2 -2
- package/cjs/myaccount/profileApi.js.map +1 -1
- package/cjs/myaccount/request.js +1 -1
- package/cjs/myaccount/request.js.map +1 -1
- package/cjs/oidc/TokenManager.js +1 -2
- package/cjs/oidc/TokenManager.js.map +1 -1
- package/cjs/oidc/TransactionManager.js +1 -1
- package/cjs/oidc/TransactionManager.js.map +1 -1
- package/cjs/oidc/getToken.js +1 -2
- package/cjs/oidc/getToken.js.map +1 -1
- package/cjs/oidc/introspect.js +3 -5
- package/cjs/oidc/introspect.js.map +1 -1
- package/cjs/oidc/mixin/index.js +2 -3
- package/cjs/oidc/mixin/index.js.map +1 -1
- package/cjs/oidc/renewTokens.js +1 -2
- package/cjs/oidc/renewTokens.js.map +1 -1
- package/cjs/oidc/util/errors.js +2 -2
- package/cjs/oidc/util/errors.js.map +1 -1
- package/cjs/oidc/util/validateClaims.js +1 -1
- package/cjs/oidc/util/validateClaims.js.map +1 -1
- package/cjs/oidc/verifyToken.js +1 -1
- package/cjs/oidc/verifyToken.js.map +1 -1
- package/cjs/services/LeaderElectionService.js +3 -6
- package/cjs/services/LeaderElectionService.js.map +1 -1
- package/cjs/services/SyncStorageService.js +6 -11
- package/cjs/services/SyncStorageService.js.map +1 -1
- package/dist/okta-auth-js.authn.min.analyzer.html +2 -2
- package/dist/okta-auth-js.authn.min.js +1 -1
- package/dist/okta-auth-js.authn.min.js.map +1 -1
- package/dist/okta-auth-js.core.min.analyzer.html +2 -2
- package/dist/okta-auth-js.core.min.js +1 -1
- package/dist/okta-auth-js.core.min.js.map +1 -1
- package/dist/okta-auth-js.idx.min.analyzer.html +2 -2
- package/dist/okta-auth-js.idx.min.js +1 -1
- package/dist/okta-auth-js.idx.min.js.map +1 -1
- package/dist/okta-auth-js.min.analyzer.html +2 -2
- package/dist/okta-auth-js.min.js +1 -1
- package/dist/okta-auth-js.min.js.map +1 -1
- package/dist/okta-auth-js.myaccount.min.analyzer.html +2 -2
- package/dist/okta-auth-js.myaccount.min.js +1 -1
- package/dist/okta-auth-js.myaccount.min.js.map +1 -1
- package/esm/browser/http/OktaUserAgent.js +2 -2
- package/esm/browser/http/request.js +7 -1
- package/esm/browser/http/request.js.map +1 -1
- package/esm/browser/oidc/introspect.js +1 -1
- package/esm/browser/oidc/introspect.js.map +1 -1
- package/esm/browser/oidc/util/validateClaims.js +2 -1
- package/esm/browser/oidc/util/validateClaims.js.map +1 -1
- package/esm/browser/package.json +1 -1
- package/esm/node/http/OktaUserAgent.js +2 -2
- package/esm/node/http/request.js +7 -1
- package/esm/node/http/request.js.map +1 -1
- package/esm/node/oidc/introspect.js +1 -1
- package/esm/node/oidc/introspect.js.map +1 -1
- package/esm/node/oidc/util/validateClaims.js +2 -1
- package/esm/node/oidc/util/validateClaims.js.map +1 -1
- package/esm/node/package.json +1 -1
- package/package.json +3 -3
- package/types/lib/core/types/api.d.ts +1 -0
- package/umd/authn.js +1 -1
- package/umd/authn.js.map +1 -1
- package/umd/core.js +1 -1
- package/umd/core.js.map +1 -1
- package/umd/default.js +1 -1
- package/umd/default.js.map +1 -1
- package/umd/idx.js +1 -1
- package/umd/idx.js.map +1 -1
- package/umd/myaccount.js +1 -1
- package/umd/myaccount.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectAuthenticatorUnlockAccount.js","names":["SelectAuthenticatorUnlockAccount","SelectAuthenticator","identifier","canRemediate","getData","mapAuthenticator","remediationValue","authenticatorMap","methodTypeOption","selectedOption","value","form","find","name","methodTypeValue","values","methodType","options","getInputUsername","type"],"sources":["../../../../lib/idx/remediators/SelectAuthenticatorUnlockAccount.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { Authenticator } from '../types';\nimport { IdxRemediationValue } from '../types/idx-js';\n\n\nexport type SelectAuthenticatorUnlockAccountValues = SelectAuthenticatorValues & {\n identifier?: string;\n methodType?: string;\n};\n\nexport class SelectAuthenticatorUnlockAccount extends SelectAuthenticator<SelectAuthenticatorUnlockAccountValues> {\n static remediationName = 'select-authenticator-unlock-account';\n authenticator?: Authenticator;\n\n map = {\n identifier: ['username']\n };\n\n canRemediate() {\n const identifier = this.getData('identifier');\n return !!identifier && super.canRemediate();\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const authenticatorMap = super.mapAuthenticator(remediationValue);\n const methodTypeOption = this.selectedOption?.value.form.value.find(({ name }) => name === 'methodType');\n\n // defaults to 'manually defined' value\n // 2nd: option may have pre-defined value, like stateHandle\n // 3rd: if only a single OV option is available, default to that option\n const methodTypeValue = this.values.methodType ||\n methodTypeOption?.value as string || methodTypeOption?.options?.[0]?.value as string;\n\n if (methodTypeValue) {\n return {\n ...authenticatorMap,\n methodType: methodTypeValue\n };\n }\n\n return authenticatorMap;\n }\n\n getInputUsername () {\n return { name: 'username', type: 'string' };\n }\n\n}\n"],"mappings":";;;;;AAaA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaO,MAAMA,gCAAgC,SAASC,wCAAmB,CAAyC;EAAA;IAAA;IAAA,2CAI1G;MACJC,UAAU,EAAE,CAAC,UAAU;IACzB,CAAC;EAAA;EAEDC,YAAY,GAAG;IACb,MAAMD,UAAU,GAAG,IAAI,CAACE,OAAO,CAAC,YAAY,CAAC;IAC7C,OAAO,CAAC,CAACF,UAAU,IAAI,KAAK,CAACC,YAAY,EAAE;EAC7C;EAEAE,gBAAgB,CAACC,gBAAqC,EAAE;
|
|
1
|
+
{"version":3,"file":"SelectAuthenticatorUnlockAccount.js","names":["SelectAuthenticatorUnlockAccount","SelectAuthenticator","identifier","canRemediate","getData","mapAuthenticator","remediationValue","authenticatorMap","methodTypeOption","selectedOption","value","form","find","name","methodTypeValue","values","methodType","options","getInputUsername","type"],"sources":["../../../../lib/idx/remediators/SelectAuthenticatorUnlockAccount.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { Authenticator } from '../types';\nimport { IdxRemediationValue } from '../types/idx-js';\n\n\nexport type SelectAuthenticatorUnlockAccountValues = SelectAuthenticatorValues & {\n identifier?: string;\n methodType?: string;\n};\n\nexport class SelectAuthenticatorUnlockAccount extends SelectAuthenticator<SelectAuthenticatorUnlockAccountValues> {\n static remediationName = 'select-authenticator-unlock-account';\n authenticator?: Authenticator;\n\n map = {\n identifier: ['username']\n };\n\n canRemediate() {\n const identifier = this.getData('identifier');\n return !!identifier && super.canRemediate();\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const authenticatorMap = super.mapAuthenticator(remediationValue);\n const methodTypeOption = this.selectedOption?.value.form.value.find(({ name }) => name === 'methodType');\n\n // defaults to 'manually defined' value\n // 2nd: option may have pre-defined value, like stateHandle\n // 3rd: if only a single OV option is available, default to that option\n const methodTypeValue = this.values.methodType ||\n methodTypeOption?.value as string || methodTypeOption?.options?.[0]?.value as string;\n\n if (methodTypeValue) {\n return {\n ...authenticatorMap,\n methodType: methodTypeValue\n };\n }\n\n return authenticatorMap;\n }\n\n getInputUsername () {\n return { name: 'username', type: 'string' };\n }\n\n}\n"],"mappings":";;;;;AAaA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaO,MAAMA,gCAAgC,SAASC,wCAAmB,CAAyC;EAAA;IAAA;IAAA,2CAI1G;MACJC,UAAU,EAAE,CAAC,UAAU;IACzB,CAAC;EAAA;EAEDC,YAAY,GAAG;IACb,MAAMD,UAAU,GAAG,IAAI,CAACE,OAAO,CAAC,YAAY,CAAC;IAC7C,OAAO,CAAC,CAACF,UAAU,IAAI,KAAK,CAACC,YAAY,EAAE;EAC7C;EAEAE,gBAAgB,CAACC,gBAAqC,EAAE;IACtD,MAAMC,gBAAgB,GAAG,KAAK,CAACF,gBAAgB,CAACC,gBAAgB,CAAC;IACjE,MAAME,gBAAgB,GAAG,IAAI,CAACC,cAAc,EAAEC,KAAK,CAACC,IAAI,CAACD,KAAK,CAACE,IAAI,CAAC,CAAC;MAAEC;IAAK,CAAC,KAAKA,IAAI,KAAK,YAAY,CAAC;;IAExG;IACA;IACA;IACA,MAAMC,eAAe,GAAG,IAAI,CAACC,MAAM,CAACC,UAAU,IAC5CR,gBAAgB,EAAEE,KAAe,IAAIF,gBAAgB,EAAES,OAAO,GAAG,CAAC,CAAC,EAAEP,KAAe;IAEtF,IAAII,eAAe,EAAE;MACnB,OAAO;QACL,GAAGP,gBAAgB;QACnBS,UAAU,EAAEF;MACd,CAAC;IACH;IAEA,OAAOP,gBAAgB;EACzB;EAEAW,gBAAgB,GAAI;IAClB,OAAO;MAAEL,IAAI,EAAE,UAAU;MAAEM,IAAI,EAAE;IAAS,CAAC;EAC7C;AAEF;AAAC;AAAA,8BArCYnB,gCAAgC,qBAClB,qCAAqC"}
|
|
@@ -41,13 +41,12 @@ class SelectEnrollmentChannel extends _Remediator.Remediator {
|
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
getData() {
|
|
44
|
-
var _this$values$authenti;
|
|
45
44
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
46
45
|
const remediationValue = this.remediation.value[0].value;
|
|
47
46
|
return {
|
|
48
47
|
authenticator: {
|
|
49
48
|
id: remediationValue.form.value[0].value,
|
|
50
|
-
channel:
|
|
49
|
+
channel: this.values.authenticator?.channel || this.values.channel
|
|
51
50
|
},
|
|
52
51
|
stateHandle: this.values.stateHandle
|
|
53
52
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectEnrollmentChannel.js","names":["SelectEnrollmentChannel","Remediator","canRemediate","values","channel","authenticator","id","getNextStep","authClient","context","common","currentAuthenticator","value","getData","remediationValue","remediation","form","stateHandle","getValuesAfterProceed","authenticators","filterKey","trimmedValues","Object","keys","filter","valueKey","reduce"],"sources":["../../../../lib/idx/remediators/SelectEnrollmentChannel.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxRemediationValueForm, IdxContext } from '../types/idx-js';\nimport { Authenticator, OktaAuthIdxInterface } from '../types/api';\n\n\nexport type SelectEnrollmentChannelValues = RemediationValues & {\n channel?: string;\n};\n\nexport class SelectEnrollmentChannel extends Remediator<SelectEnrollmentChannelValues> {\n static remediationName = 'select-enrollment-channel';\n\n canRemediate() {\n if (this.values.channel) {\n return true;\n }\n\n if (this.values.authenticator) {\n const { id, channel } = this.values.authenticator as Authenticator;\n if (!!id && !!channel) {\n return true;\n }\n }\n\n return false;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediationValue = this.remediation!.value![0].value as IdxRemediationValueForm;\n return {\n authenticator: {\n id: remediationValue.form.value[0].value,\n channel: (this.values.authenticator as Authenticator)?.channel || this.values.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n this.values = super.getValuesAfterProceed();\n delete this.values.authenticators; // required to prevent infinite loops from auto-remediating via values\n const filterKey = this.values.channel ? 'channel' : 'authenticator';\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== filterKey);\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"mappings":";;;;;AAaA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYO,MAAMA,uBAAuB,SAASC,sBAAU,CAAgC;EAGrFC,YAAY,GAAG;IACb,IAAI,IAAI,CAACC,MAAM,CAACC,OAAO,EAAE;MACvB,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAACD,MAAM,CAACE,aAAa,EAAE;MAC7B,MAAM;QAAEC,EAAE;QAAEF;MAAQ,CAAC,GAAG,IAAI,CAACD,MAAM,CAACE,aAA8B;MAClE,IAAI,CAAC,CAACC,EAAE,IAAI,CAAC,CAACF,OAAO,EAAE;QACrB,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd;EAEAG,WAAW,CAACC,UAAgC,EAAEC,OAAmB,EAAE;IACjE,MAAMC,MAAM,GAAG,KAAK,CAACH,WAAW,CAACC,UAAU,EAAEC,OAAO,CAAC;IACrD,MAAMJ,aAAa,GAAGI,OAAO,CAACE,oBAAoB,CAACC,KAAK;IACxD,OAAO;MACL,GAAGF,MAAM;MACTL;IACF,CAAC;EACH;EAEAQ,OAAO,GAAG;
|
|
1
|
+
{"version":3,"file":"SelectEnrollmentChannel.js","names":["SelectEnrollmentChannel","Remediator","canRemediate","values","channel","authenticator","id","getNextStep","authClient","context","common","currentAuthenticator","value","getData","remediationValue","remediation","form","stateHandle","getValuesAfterProceed","authenticators","filterKey","trimmedValues","Object","keys","filter","valueKey","reduce"],"sources":["../../../../lib/idx/remediators/SelectEnrollmentChannel.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxRemediationValueForm, IdxContext } from '../types/idx-js';\nimport { Authenticator, OktaAuthIdxInterface } from '../types/api';\n\n\nexport type SelectEnrollmentChannelValues = RemediationValues & {\n channel?: string;\n};\n\nexport class SelectEnrollmentChannel extends Remediator<SelectEnrollmentChannelValues> {\n static remediationName = 'select-enrollment-channel';\n\n canRemediate() {\n if (this.values.channel) {\n return true;\n }\n\n if (this.values.authenticator) {\n const { id, channel } = this.values.authenticator as Authenticator;\n if (!!id && !!channel) {\n return true;\n }\n }\n\n return false;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediationValue = this.remediation!.value![0].value as IdxRemediationValueForm;\n return {\n authenticator: {\n id: remediationValue.form.value[0].value,\n channel: (this.values.authenticator as Authenticator)?.channel || this.values.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n this.values = super.getValuesAfterProceed();\n delete this.values.authenticators; // required to prevent infinite loops from auto-remediating via values\n const filterKey = this.values.channel ? 'channel' : 'authenticator';\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== filterKey);\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"mappings":";;;;;AAaA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYO,MAAMA,uBAAuB,SAASC,sBAAU,CAAgC;EAGrFC,YAAY,GAAG;IACb,IAAI,IAAI,CAACC,MAAM,CAACC,OAAO,EAAE;MACvB,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAACD,MAAM,CAACE,aAAa,EAAE;MAC7B,MAAM;QAAEC,EAAE;QAAEF;MAAQ,CAAC,GAAG,IAAI,CAACD,MAAM,CAACE,aAA8B;MAClE,IAAI,CAAC,CAACC,EAAE,IAAI,CAAC,CAACF,OAAO,EAAE;QACrB,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd;EAEAG,WAAW,CAACC,UAAgC,EAAEC,OAAmB,EAAE;IACjE,MAAMC,MAAM,GAAG,KAAK,CAACH,WAAW,CAACC,UAAU,EAAEC,OAAO,CAAC;IACrD,MAAMJ,aAAa,GAAGI,OAAO,CAACE,oBAAoB,CAACC,KAAK;IACxD,OAAO;MACL,GAAGF,MAAM;MACTL;IACF,CAAC;EACH;EAEAQ,OAAO,GAAG;IACR;IACA,MAAMC,gBAAgB,GAAG,IAAI,CAACC,WAAW,CAAEH,KAAK,CAAE,CAAC,CAAC,CAACA,KAAgC;IACrF,OAAO;MACLP,aAAa,EAAE;QACbC,EAAE,EAAEQ,gBAAgB,CAACE,IAAI,CAACJ,KAAK,CAAC,CAAC,CAAC,CAACA,KAAK;QACxCR,OAAO,EAAG,IAAI,CAACD,MAAM,CAACE,aAAa,EAAoBD,OAAO,IAAI,IAAI,CAACD,MAAM,CAACC;MAChF,CAAC;MACDa,WAAW,EAAE,IAAI,CAACd,MAAM,CAACc;IAE3B,CAAC;EACH;EAEAC,qBAAqB,GAAkC;IACrD,IAAI,CAACf,MAAM,GAAG,KAAK,CAACe,qBAAqB,EAAE;IAC3C,OAAO,IAAI,CAACf,MAAM,CAACgB,cAAc,CAAC,CAAI;IACtC,MAAMC,SAAS,GAAG,IAAI,CAACjB,MAAM,CAACC,OAAO,GAAG,SAAS,GAAG,eAAe;IACnE,IAAIiB,aAAa,GAAGC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACpB,MAAM,CAAC,CAACqB,MAAM,CAACC,QAAQ,IAAIA,QAAQ,KAAKL,SAAS,CAAC;IACvF,OAAOC,aAAa,CAACK,MAAM,CAAC,CAACvB,MAAM,EAAEsB,QAAQ,MAAM;MAAC,GAAGtB,MAAM;MAAE,CAACsB,QAAQ,GAAG,IAAI,CAACtB,MAAM,CAACsB,QAAQ;IAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACzG;AACF;AAAC;AAAA,8BA/CYzB,uBAAuB,qBACT,2BAA2B"}
|
|
@@ -17,12 +17,10 @@ exports.titleCase = titleCase;
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
function getAllValues(idxRemediation) {
|
|
20
|
-
|
|
21
|
-
return (_idxRemediation$value = idxRemediation.value) === null || _idxRemediation$value === void 0 ? void 0 : _idxRemediation$value.map(r => r.name);
|
|
20
|
+
return idxRemediation.value?.map(r => r.name);
|
|
22
21
|
}
|
|
23
22
|
function getRequiredValues(idxRemediation) {
|
|
24
|
-
|
|
25
|
-
return (_idxRemediation$value2 = idxRemediation.value) === null || _idxRemediation$value2 === void 0 ? void 0 : _idxRemediation$value2.reduce((required, cur) => {
|
|
23
|
+
return idxRemediation.value?.reduce((required, cur) => {
|
|
26
24
|
if (cur.required) {
|
|
27
25
|
required.push(cur.name);
|
|
28
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":["getAllValues","idxRemediation","value","map","r","name","getRequiredValues","reduce","required","cur","push","titleCase","str","charAt","toUpperCase","substring","getAuthenticatorFromRemediation","remediation","find"],"sources":["../../../../lib/idx/remediators/util.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxRemediation, IdxRemediationValue } from '../types/idx-js';\n\nexport function getAllValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.map(r => r.name);\n}\n\nexport function getRequiredValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.reduce((required, cur) => {\n if (cur.required) {\n required.push(cur.name as never);\n }\n return required;\n }, []);\n}\n\nexport function titleCase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\nexport function getAuthenticatorFromRemediation(\n remediation: IdxRemediation\n): IdxRemediationValue {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediation.value!.find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIO,SAASA,YAAY,CAACC,cAA8B,EAAE;
|
|
1
|
+
{"version":3,"file":"util.js","names":["getAllValues","idxRemediation","value","map","r","name","getRequiredValues","reduce","required","cur","push","titleCase","str","charAt","toUpperCase","substring","getAuthenticatorFromRemediation","remediation","find"],"sources":["../../../../lib/idx/remediators/util.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxRemediation, IdxRemediationValue } from '../types/idx-js';\n\nexport function getAllValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.map(r => r.name);\n}\n\nexport function getRequiredValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.reduce((required, cur) => {\n if (cur.required) {\n required.push(cur.name as never);\n }\n return required;\n }, []);\n}\n\nexport function titleCase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\nexport function getAuthenticatorFromRemediation(\n remediation: IdxRemediation\n): IdxRemediationValue {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediation.value!.find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIO,SAASA,YAAY,CAACC,cAA8B,EAAE;EAC3D,OAAOA,cAAc,CAACC,KAAK,EAAEC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,CAAC;AAC/C;AAEO,SAASC,iBAAiB,CAACL,cAA8B,EAAE;EAChE,OAAOA,cAAc,CAACC,KAAK,EAAEK,MAAM,CAAC,CAACC,QAAQ,EAAEC,GAAG,KAAK;IACrD,IAAIA,GAAG,CAACD,QAAQ,EAAE;MAChBA,QAAQ,CAACE,IAAI,CAACD,GAAG,CAACJ,IAAI,CAAU;IAClC;IACA,OAAOG,QAAQ;EACjB,CAAC,EAAE,EAAE,CAAC;AACR;AAEO,SAASG,SAAS,CAACC,GAAW,EAAE;EACrC,OAAOA,GAAG,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGF,GAAG,CAACG,SAAS,CAAC,CAAC,CAAC;AACvD;AAEO,SAASC,+BAA+B,CAC7CC,WAA2B,EACN;EACrB;EACA,OAAOA,WAAW,CAACf,KAAK,CAAEgB,IAAI,CAAC,CAAC;IAAEb;EAAK,CAAC,KAAKA,IAAI,KAAK,eAAe,CAAC;AACxE"}
|
package/cjs/idx/run.js
CHANGED
|
@@ -34,7 +34,6 @@ function initializeValues(options) {
|
|
|
34
34
|
return values;
|
|
35
35
|
}
|
|
36
36
|
function initializeData(authClient, data) {
|
|
37
|
-
var _authClient$idx$getFl, _authClient$idx;
|
|
38
37
|
let {
|
|
39
38
|
options
|
|
40
39
|
} = data;
|
|
@@ -51,10 +50,9 @@ function initializeData(authClient, data) {
|
|
|
51
50
|
const status = _types.IdxStatus.PENDING;
|
|
52
51
|
|
|
53
52
|
// certain options can be set by the flow specification
|
|
54
|
-
flow = flow ||
|
|
53
|
+
flow = flow || authClient.idx.getFlow?.() || 'default';
|
|
55
54
|
if (flow) {
|
|
56
|
-
|
|
57
|
-
(_authClient$idx$setFl = (_authClient$idx2 = authClient.idx).setFlow) === null || _authClient$idx$setFl === void 0 ? void 0 : _authClient$idx$setFl.call(_authClient$idx2, flow);
|
|
55
|
+
authClient.idx.setFlow?.(flow);
|
|
58
56
|
const flowSpec = (0, _util.getFlowSpecification)(authClient, flow);
|
|
59
57
|
// Favor option values over flow spec
|
|
60
58
|
withCredentials = typeof withCredentials !== 'undefined' ? withCredentials : flowSpec.withCredentials;
|
|
@@ -103,8 +101,7 @@ async function getDataFromIntrospect(authClient, data) {
|
|
|
103
101
|
stateHandle
|
|
104
102
|
});
|
|
105
103
|
} else {
|
|
106
|
-
|
|
107
|
-
let interactionHandle = (_meta = meta) === null || _meta === void 0 ? void 0 : _meta.interactionHandle; // may be undefined
|
|
104
|
+
let interactionHandle = meta?.interactionHandle; // may be undefined
|
|
108
105
|
if (!interactionHandle) {
|
|
109
106
|
// start a new transaction
|
|
110
107
|
authClient.transactionManager.clear();
|
|
@@ -251,7 +248,7 @@ async function finalizeData(authClient, data) {
|
|
|
251
248
|
} else if (canceled) {
|
|
252
249
|
status = _types.IdxStatus.CANCELED;
|
|
253
250
|
shouldClearTransaction = true;
|
|
254
|
-
} else if (idxResponse
|
|
251
|
+
} else if (idxResponse?.interactionCode) {
|
|
255
252
|
interactionCode = idxResponse.interactionCode;
|
|
256
253
|
if (exchangeCodeForTokens === false) {
|
|
257
254
|
status = _types.IdxStatus.SUCCESS;
|
|
@@ -310,7 +307,6 @@ async function run(authClient, options = {}) {
|
|
|
310
307
|
...meta
|
|
311
308
|
});
|
|
312
309
|
if (shouldSaveResponse) {
|
|
313
|
-
var _context;
|
|
314
310
|
// Save intermediate idx response in storage to reduce introspect call
|
|
315
311
|
const {
|
|
316
312
|
rawIdxState: rawIdxResponse,
|
|
@@ -319,8 +315,8 @@ async function run(authClient, options = {}) {
|
|
|
319
315
|
authClient.transactionManager.saveIdxResponse({
|
|
320
316
|
rawIdxResponse,
|
|
321
317
|
requestDidSucceed,
|
|
322
|
-
stateHandle:
|
|
323
|
-
interactionHandle: meta
|
|
318
|
+
stateHandle: idxResponse.context?.stateHandle,
|
|
319
|
+
interactionHandle: meta?.interactionHandle
|
|
324
320
|
});
|
|
325
321
|
}
|
|
326
322
|
}
|
package/cjs/idx/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","names":["initializeValues","options","knownOptions","values","forEach","option","initializeData","authClient","data","idx","flow","withCredentials","remediators","actions","status","IdxStatus","PENDING","getFlow","setFlow","flowSpec","getFlowSpecification","getDataFromIntrospect","stateHandle","version","state","scopes","recoveryToken","activationToken","maxAge","acrValues","nonce","idxResponse","meta","getSavedTransactionMeta","introspect","interactionHandle","transactionManager","clear","interactResponse","interact","getDataFromRemediate","autoRemediate","step","useGenericRemediator","shouldRemediate","rawIdxState","idxResponseFromRemediation","nextStep","canceled","remediate","getTokens","interactionCode","clientId","codeVerifier","ignoreSignature","redirectUri","urls","tokenResponse","token","exchangeCodeForTokens","tokens","finalizeData","shouldSaveResponse","shouldClearTransaction","clearSharedStorage","enabledFeatures","availableSteps","messages","terminal","requestDidSucceed","stepUp","getEnabledFeatures","getAvailableSteps","getMessagesFromResponse","isTerminalResponse","TERMINAL","hasActions","Object","keys","length","hasErrors","find","msg","class","isTerminalSuccess","CANCELED","SUCCESS","run","error","saveTransactionMeta","rawIdxResponse","saveIdxResponse","context","neededToProceed","proceed"],"sources":["../../../lib/idx/run.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, complexity, max-depth */\nimport { interact } from './interact';\nimport { introspect } from './introspect';\nimport { remediate } from './remediate';\nimport { RemediationValues } from './remediators/Base/Remediator';\nimport { \n OktaAuthIdxInterface,\n IdxStatus,\n IdxTransaction,\n IdxFeature,\n NextStep,\n RunOptions,\n IdxTransactionMeta,\n} from './types';\nimport { IdxMessage, IdxResponse } from './types/idx-js';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport {\n getAvailableSteps,\n getEnabledFeatures,\n getMessagesFromResponse,\n isTerminalResponse,\n getFlowSpecification\n} from './util';\nimport { Tokens } from '../oidc/types';\nimport { APIError } from '../errors/types';\ndeclare interface RunData {\n options: RunOptions;\n values: RemediationValues;\n status?: IdxStatus;\n tokens?: Tokens;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n error?: APIError | IdxResponse;\n meta?: IdxTransactionMeta;\n enabledFeatures?: IdxFeature[];\n availableSteps?: NextStep[];\n idxResponse?: IdxResponse;\n canceled?: boolean;\n interactionCode?: string;\n shouldSaveResponse?: boolean;\n shouldClearTransaction?: boolean;\n clearSharedStorage?: boolean;\n terminal?: boolean;\n}\n\nfunction initializeValues(options: RunOptions) {\n // remove known options, everything else is assumed to be a value\n const knownOptions = [\n 'flow', \n 'remediators', \n 'actions', \n 'withCredentials', \n 'step',\n 'useGenericRemediator',\n 'exchangeCodeForTokens',\n ];\n const values = { ...options };\n knownOptions.forEach(option => {\n delete values[option];\n });\n return values;\n}\n\nfunction initializeData(authClient: OktaAuthIdxInterface, data: RunData): RunData {\n let { options } = data;\n options = {\n ...authClient.options.idx,\n ...options\n };\n let {\n flow,\n withCredentials,\n remediators,\n actions,\n } = options;\n\n const status = IdxStatus.PENDING;\n\n // certain options can be set by the flow specification\n flow = flow || authClient.idx.getFlow?.() || 'default';\n if (flow) {\n authClient.idx.setFlow?.(flow);\n const flowSpec = getFlowSpecification(authClient, flow);\n // Favor option values over flow spec\n withCredentials = (typeof withCredentials !== 'undefined') ? withCredentials : flowSpec.withCredentials;\n remediators = remediators || flowSpec.remediators;\n actions = actions || flowSpec.actions;\n }\n\n return { \n ...data,\n options: { \n ...options, \n flow, \n withCredentials, \n remediators, \n actions,\n },\n status\n };\n}\n\nasync function getDataFromIntrospect(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n const { options } = data;\n const {\n stateHandle,\n withCredentials,\n version,\n state,\n scopes,\n recoveryToken,\n activationToken,\n maxAge,\n acrValues,\n nonce,\n } = options;\n\n let idxResponse;\n let meta = getSavedTransactionMeta(authClient, { state, recoveryToken, activationToken }); // may be undefined\n\n if (stateHandle) {\n idxResponse = await introspect(authClient, { withCredentials, version, stateHandle });\n } else {\n let interactionHandle = meta?.interactionHandle; // may be undefined\n if (!interactionHandle) {\n // start a new transaction\n authClient.transactionManager.clear();\n const interactResponse = await interact(authClient, {\n withCredentials,\n state,\n scopes,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues,\n nonce,\n }); \n interactionHandle = interactResponse.interactionHandle;\n meta = interactResponse.meta;\n }\n \n // Introspect to get idx response\n idxResponse = await introspect(authClient, { withCredentials, version, interactionHandle });\n }\n return { ...data, idxResponse, meta };\n}\n\nasync function getDataFromRemediate(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n let {\n idxResponse,\n options,\n values\n } = data;\n\n const {\n autoRemediate,\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n } = options;\n \n const shouldRemediate = (autoRemediate !== false && (remediators || actions || step));\n if (!shouldRemediate) {\n return data;\n }\n\n values = { \n ...values, \n stateHandle: idxResponse!.rawIdxState.stateHandle \n };\n\n // Can we handle the remediations?\n const { \n idxResponse: idxResponseFromRemediation, \n nextStep,\n canceled,\n } = await remediate(\n authClient,\n idxResponse!, \n values, \n {\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n }\n );\n idxResponse = idxResponseFromRemediation;\n\n return { ...data, idxResponse, nextStep, canceled };\n}\n\nasync function getTokens(authClient: OktaAuthIdxInterface, data: RunData): Promise<Tokens> {\n let { meta, idxResponse } = data;\n const { interactionCode } = idxResponse as IdxResponse;\n const {\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n urls,\n scopes,\n } = meta as IdxTransactionMeta;\n const tokenResponse = await authClient.token.exchangeCodeForTokens({\n interactionCode,\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n scopes\n }, urls);\n return tokenResponse.tokens;\n}\n\nasync function finalizeData(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n let {\n options,\n idxResponse,\n canceled,\n status,\n } = data;\n const { exchangeCodeForTokens } = options;\n let shouldSaveResponse = false;\n let shouldClearTransaction = false;\n let clearSharedStorage = true;\n let interactionCode;\n let tokens;\n let enabledFeatures;\n let availableSteps;\n let messages;\n let terminal;\n\n if (idxResponse) {\n shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);\n enabledFeatures = getEnabledFeatures(idxResponse);\n availableSteps = getAvailableSteps(authClient, idxResponse, options.useGenericRemediator);\n messages = getMessagesFromResponse(idxResponse, options);\n terminal = isTerminalResponse(idxResponse);\n }\n\n if (terminal) {\n status = IdxStatus.TERMINAL;\n\n // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.\n // A terminal \"success\" is a non-error response with no further actions available.\n // In these narrow cases, saved transaction data should be cleared.\n // One example of a terminal success is when the email verify flow is continued in another tab\n const hasActions = Object.keys(idxResponse!.actions).length > 0;\n const hasErrors = !!messages.find(msg => msg.class === 'ERROR');\n const isTerminalSuccess = !hasActions && !hasErrors && idxResponse!.requestDidSucceed === true;\n if (isTerminalSuccess) {\n shouldClearTransaction = true;\n } else {\n // save response if there are actions available (ignore messages)\n shouldSaveResponse = !!hasActions;\n }\n // leave shared storage intact so the transaction can be continued in another tab\n clearSharedStorage = false;\n } else if (canceled) {\n status = IdxStatus.CANCELED;\n shouldClearTransaction = true;\n } else if (idxResponse?.interactionCode) { \n interactionCode = idxResponse.interactionCode;\n if (exchangeCodeForTokens === false) {\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = false;\n } else {\n tokens = await getTokens(authClient, data);\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = true;\n }\n }\n return {\n ...data,\n status,\n interactionCode,\n tokens,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n enabledFeatures,\n availableSteps,\n messages,\n terminal\n };\n}\n\nexport async function run(\n authClient: OktaAuthIdxInterface, \n options: RunOptions = {},\n): Promise<IdxTransaction> {\n let data: RunData = {\n options,\n values: initializeValues(options)\n };\n\n data = initializeData(authClient, data);\n data = await getDataFromIntrospect(authClient, data);\n data = await getDataFromRemediate(authClient, data);\n data = await finalizeData(authClient, data);\n\n const {\n idxResponse,\n meta,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n status,\n enabledFeatures,\n availableSteps,\n tokens,\n nextStep,\n messages,\n error,\n interactionCode\n } = data;\n\n if (shouldClearTransaction) {\n authClient.transactionManager.clear({ clearSharedStorage });\n }\n else {\n // ensures state is saved to sessionStorage\n saveTransactionMeta(authClient, { ...meta });\n\n if (shouldSaveResponse) {\n // Save intermediate idx response in storage to reduce introspect call\n const { rawIdxState: rawIdxResponse, requestDidSucceed } = idxResponse!;\n authClient.transactionManager.saveIdxResponse({\n rawIdxResponse,\n requestDidSucceed,\n stateHandle: idxResponse!.context?.stateHandle,\n interactionHandle: meta?.interactionHandle\n });\n }\n }\n \n // copy all fields from idxResponse which are needed by the widget\n const { actions, context, neededToProceed, proceed, rawIdxState, requestDidSucceed, stepUp } = idxResponse || {};\n return {\n status: status!,\n ...(meta && { meta }),\n ...(enabledFeatures && { enabledFeatures }),\n ...(availableSteps && { availableSteps }),\n ...(tokens && { tokens }),\n ...(nextStep && { nextStep }),\n ...(messages && messages.length && { messages }),\n ...(error && { error }),\n ...(stepUp && { stepUp }),\n interactionCode, // if options.exchangeCodeForTokens is false\n\n // from idx-js\n actions: actions!,\n context: context!,\n neededToProceed: neededToProceed!,\n proceed: proceed!,\n rawIdxState: rawIdxState!,\n requestDidSucceed\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","names":["initializeValues","options","knownOptions","values","forEach","option","initializeData","authClient","data","idx","flow","withCredentials","remediators","actions","status","IdxStatus","PENDING","getFlow","setFlow","flowSpec","getFlowSpecification","getDataFromIntrospect","stateHandle","version","state","scopes","recoveryToken","activationToken","maxAge","acrValues","nonce","idxResponse","meta","getSavedTransactionMeta","introspect","interactionHandle","transactionManager","clear","interactResponse","interact","getDataFromRemediate","autoRemediate","step","useGenericRemediator","shouldRemediate","rawIdxState","idxResponseFromRemediation","nextStep","canceled","remediate","getTokens","interactionCode","clientId","codeVerifier","ignoreSignature","redirectUri","urls","tokenResponse","token","exchangeCodeForTokens","tokens","finalizeData","shouldSaveResponse","shouldClearTransaction","clearSharedStorage","enabledFeatures","availableSteps","messages","terminal","requestDidSucceed","stepUp","getEnabledFeatures","getAvailableSteps","getMessagesFromResponse","isTerminalResponse","TERMINAL","hasActions","Object","keys","length","hasErrors","find","msg","class","isTerminalSuccess","CANCELED","SUCCESS","run","error","saveTransactionMeta","rawIdxResponse","saveIdxResponse","context","neededToProceed","proceed"],"sources":["../../../lib/idx/run.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, complexity, max-depth */\nimport { interact } from './interact';\nimport { introspect } from './introspect';\nimport { remediate } from './remediate';\nimport { RemediationValues } from './remediators/Base/Remediator';\nimport { \n OktaAuthIdxInterface,\n IdxStatus,\n IdxTransaction,\n IdxFeature,\n NextStep,\n RunOptions,\n IdxTransactionMeta,\n} from './types';\nimport { IdxMessage, IdxResponse } from './types/idx-js';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport {\n getAvailableSteps,\n getEnabledFeatures,\n getMessagesFromResponse,\n isTerminalResponse,\n getFlowSpecification\n} from './util';\nimport { Tokens } from '../oidc/types';\nimport { APIError } from '../errors/types';\ndeclare interface RunData {\n options: RunOptions;\n values: RemediationValues;\n status?: IdxStatus;\n tokens?: Tokens;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n error?: APIError | IdxResponse;\n meta?: IdxTransactionMeta;\n enabledFeatures?: IdxFeature[];\n availableSteps?: NextStep[];\n idxResponse?: IdxResponse;\n canceled?: boolean;\n interactionCode?: string;\n shouldSaveResponse?: boolean;\n shouldClearTransaction?: boolean;\n clearSharedStorage?: boolean;\n terminal?: boolean;\n}\n\nfunction initializeValues(options: RunOptions) {\n // remove known options, everything else is assumed to be a value\n const knownOptions = [\n 'flow', \n 'remediators', \n 'actions', \n 'withCredentials', \n 'step',\n 'useGenericRemediator',\n 'exchangeCodeForTokens',\n ];\n const values = { ...options };\n knownOptions.forEach(option => {\n delete values[option];\n });\n return values;\n}\n\nfunction initializeData(authClient: OktaAuthIdxInterface, data: RunData): RunData {\n let { options } = data;\n options = {\n ...authClient.options.idx,\n ...options\n };\n let {\n flow,\n withCredentials,\n remediators,\n actions,\n } = options;\n\n const status = IdxStatus.PENDING;\n\n // certain options can be set by the flow specification\n flow = flow || authClient.idx.getFlow?.() || 'default';\n if (flow) {\n authClient.idx.setFlow?.(flow);\n const flowSpec = getFlowSpecification(authClient, flow);\n // Favor option values over flow spec\n withCredentials = (typeof withCredentials !== 'undefined') ? withCredentials : flowSpec.withCredentials;\n remediators = remediators || flowSpec.remediators;\n actions = actions || flowSpec.actions;\n }\n\n return { \n ...data,\n options: { \n ...options, \n flow, \n withCredentials, \n remediators, \n actions,\n },\n status\n };\n}\n\nasync function getDataFromIntrospect(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n const { options } = data;\n const {\n stateHandle,\n withCredentials,\n version,\n state,\n scopes,\n recoveryToken,\n activationToken,\n maxAge,\n acrValues,\n nonce,\n } = options;\n\n let idxResponse;\n let meta = getSavedTransactionMeta(authClient, { state, recoveryToken, activationToken }); // may be undefined\n\n if (stateHandle) {\n idxResponse = await introspect(authClient, { withCredentials, version, stateHandle });\n } else {\n let interactionHandle = meta?.interactionHandle; // may be undefined\n if (!interactionHandle) {\n // start a new transaction\n authClient.transactionManager.clear();\n const interactResponse = await interact(authClient, {\n withCredentials,\n state,\n scopes,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues,\n nonce,\n }); \n interactionHandle = interactResponse.interactionHandle;\n meta = interactResponse.meta;\n }\n \n // Introspect to get idx response\n idxResponse = await introspect(authClient, { withCredentials, version, interactionHandle });\n }\n return { ...data, idxResponse, meta };\n}\n\nasync function getDataFromRemediate(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n let {\n idxResponse,\n options,\n values\n } = data;\n\n const {\n autoRemediate,\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n } = options;\n \n const shouldRemediate = (autoRemediate !== false && (remediators || actions || step));\n if (!shouldRemediate) {\n return data;\n }\n\n values = { \n ...values, \n stateHandle: idxResponse!.rawIdxState.stateHandle \n };\n\n // Can we handle the remediations?\n const { \n idxResponse: idxResponseFromRemediation, \n nextStep,\n canceled,\n } = await remediate(\n authClient,\n idxResponse!, \n values, \n {\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n }\n );\n idxResponse = idxResponseFromRemediation;\n\n return { ...data, idxResponse, nextStep, canceled };\n}\n\nasync function getTokens(authClient: OktaAuthIdxInterface, data: RunData): Promise<Tokens> {\n let { meta, idxResponse } = data;\n const { interactionCode } = idxResponse as IdxResponse;\n const {\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n urls,\n scopes,\n } = meta as IdxTransactionMeta;\n const tokenResponse = await authClient.token.exchangeCodeForTokens({\n interactionCode,\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n scopes\n }, urls);\n return tokenResponse.tokens;\n}\n\nasync function finalizeData(authClient: OktaAuthIdxInterface, data: RunData): Promise<RunData> {\n let {\n options,\n idxResponse,\n canceled,\n status,\n } = data;\n const { exchangeCodeForTokens } = options;\n let shouldSaveResponse = false;\n let shouldClearTransaction = false;\n let clearSharedStorage = true;\n let interactionCode;\n let tokens;\n let enabledFeatures;\n let availableSteps;\n let messages;\n let terminal;\n\n if (idxResponse) {\n shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);\n enabledFeatures = getEnabledFeatures(idxResponse);\n availableSteps = getAvailableSteps(authClient, idxResponse, options.useGenericRemediator);\n messages = getMessagesFromResponse(idxResponse, options);\n terminal = isTerminalResponse(idxResponse);\n }\n\n if (terminal) {\n status = IdxStatus.TERMINAL;\n\n // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.\n // A terminal \"success\" is a non-error response with no further actions available.\n // In these narrow cases, saved transaction data should be cleared.\n // One example of a terminal success is when the email verify flow is continued in another tab\n const hasActions = Object.keys(idxResponse!.actions).length > 0;\n const hasErrors = !!messages.find(msg => msg.class === 'ERROR');\n const isTerminalSuccess = !hasActions && !hasErrors && idxResponse!.requestDidSucceed === true;\n if (isTerminalSuccess) {\n shouldClearTransaction = true;\n } else {\n // save response if there are actions available (ignore messages)\n shouldSaveResponse = !!hasActions;\n }\n // leave shared storage intact so the transaction can be continued in another tab\n clearSharedStorage = false;\n } else if (canceled) {\n status = IdxStatus.CANCELED;\n shouldClearTransaction = true;\n } else if (idxResponse?.interactionCode) { \n interactionCode = idxResponse.interactionCode;\n if (exchangeCodeForTokens === false) {\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = false;\n } else {\n tokens = await getTokens(authClient, data);\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = true;\n }\n }\n return {\n ...data,\n status,\n interactionCode,\n tokens,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n enabledFeatures,\n availableSteps,\n messages,\n terminal\n };\n}\n\nexport async function run(\n authClient: OktaAuthIdxInterface, \n options: RunOptions = {},\n): Promise<IdxTransaction> {\n let data: RunData = {\n options,\n values: initializeValues(options)\n };\n\n data = initializeData(authClient, data);\n data = await getDataFromIntrospect(authClient, data);\n data = await getDataFromRemediate(authClient, data);\n data = await finalizeData(authClient, data);\n\n const {\n idxResponse,\n meta,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n status,\n enabledFeatures,\n availableSteps,\n tokens,\n nextStep,\n messages,\n error,\n interactionCode\n } = data;\n\n if (shouldClearTransaction) {\n authClient.transactionManager.clear({ clearSharedStorage });\n }\n else {\n // ensures state is saved to sessionStorage\n saveTransactionMeta(authClient, { ...meta });\n\n if (shouldSaveResponse) {\n // Save intermediate idx response in storage to reduce introspect call\n const { rawIdxState: rawIdxResponse, requestDidSucceed } = idxResponse!;\n authClient.transactionManager.saveIdxResponse({\n rawIdxResponse,\n requestDidSucceed,\n stateHandle: idxResponse!.context?.stateHandle,\n interactionHandle: meta?.interactionHandle\n });\n }\n }\n \n // copy all fields from idxResponse which are needed by the widget\n const { actions, context, neededToProceed, proceed, rawIdxState, requestDidSucceed, stepUp } = idxResponse || {};\n return {\n status: status!,\n ...(meta && { meta }),\n ...(enabledFeatures && { enabledFeatures }),\n ...(availableSteps && { availableSteps }),\n ...(tokens && { tokens }),\n ...(nextStep && { nextStep }),\n ...(messages && messages.length && { messages }),\n ...(error && { error }),\n ...(stepUp && { stepUp }),\n interactionCode, // if options.exchangeCodeForTokens is false\n\n // from idx-js\n actions: actions!,\n context: context!,\n neededToProceed: neededToProceed!,\n proceed: proceed!,\n rawIdxState: rawIdxState!,\n requestDidSucceed\n };\n}\n"],"mappings":";;;AAeA;AACA;AACA;AAEA;AAUA;AACA;AA9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;;AA6CA,SAASA,gBAAgB,CAACC,OAAmB,EAAE;EAC7C;EACA,MAAMC,YAAY,GAAG,CACnB,MAAM,EACN,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,sBAAsB,EACtB,uBAAuB,CACxB;EACD,MAAMC,MAAM,GAAG;IAAE,GAAGF;EAAQ,CAAC;EAC7BC,YAAY,CAACE,OAAO,CAACC,MAAM,IAAI;IAC7B,OAAOF,MAAM,CAACE,MAAM,CAAC;EACvB,CAAC,CAAC;EACF,OAAOF,MAAM;AACf;AAEA,SAASG,cAAc,CAACC,UAAgC,EAAEC,IAAa,EAAW;EAChF,IAAI;IAAEP;EAAQ,CAAC,GAAGO,IAAI;EACtBP,OAAO,GAAG;IACR,GAAGM,UAAU,CAACN,OAAO,CAACQ,GAAG;IACzB,GAAGR;EACL,CAAC;EACD,IAAI;IACFS,IAAI;IACJC,eAAe;IACfC,WAAW;IACXC;EACF,CAAC,GAAGZ,OAAO;EAEX,MAAMa,MAAM,GAAGC,gBAAS,CAACC,OAAO;;EAEhC;EACAN,IAAI,GAAGA,IAAI,IAAIH,UAAU,CAACE,GAAG,CAACQ,OAAO,IAAI,IAAI,SAAS;EACtD,IAAIP,IAAI,EAAE;IACRH,UAAU,CAACE,GAAG,CAACS,OAAO,GAAGR,IAAI,CAAC;IAC9B,MAAMS,QAAQ,GAAG,IAAAC,0BAAoB,EAACb,UAAU,EAAEG,IAAI,CAAC;IACvD;IACAC,eAAe,GAAI,OAAOA,eAAe,KAAK,WAAW,GAAIA,eAAe,GAAGQ,QAAQ,CAACR,eAAe;IACvGC,WAAW,GAAGA,WAAW,IAAIO,QAAQ,CAACP,WAAW;IACjDC,OAAO,GAAGA,OAAO,IAAIM,QAAQ,CAACN,OAAO;EACvC;EAEA,OAAO;IACL,GAAGL,IAAI;IACPP,OAAO,EAAE;MACP,GAAGA,OAAO;MACVS,IAAI;MACJC,eAAe;MACfC,WAAW;MACXC;IACF,CAAC;IACDC;EACF,CAAC;AACH;AAEA,eAAeO,qBAAqB,CAACd,UAAgC,EAAEC,IAAa,EAAoB;EACtG,MAAM;IAAEP;EAAQ,CAAC,GAAGO,IAAI;EACxB,MAAM;IACJc,WAAW;IACXX,eAAe;IACfY,OAAO;IACPC,KAAK;IACLC,MAAM;IACNC,aAAa;IACbC,eAAe;IACfC,MAAM;IACNC,SAAS;IACTC;EACF,CAAC,GAAG7B,OAAO;EAEX,IAAI8B,WAAW;EACf,IAAIC,IAAI,GAAG,IAAAC,wCAAuB,EAAC1B,UAAU,EAAE;IAAEiB,KAAK;IAAEE,aAAa;IAAEC;EAAgB,CAAC,CAAC,CAAC,CAAC;;EAE3F,IAAIL,WAAW,EAAE;IACfS,WAAW,GAAG,MAAM,IAAAG,sBAAU,EAAC3B,UAAU,EAAE;MAAEI,eAAe;MAAEY,OAAO;MAAED;IAAY,CAAC,CAAC;EACvF,CAAC,MAAM;IACL,IAAIa,iBAAiB,GAAGH,IAAI,EAAEG,iBAAiB,CAAC,CAAC;IACjD,IAAI,CAACA,iBAAiB,EAAE;MACtB;MACA5B,UAAU,CAAC6B,kBAAkB,CAACC,KAAK,EAAE;MACrC,MAAMC,gBAAgB,GAAG,MAAM,IAAAC,kBAAQ,EAAChC,UAAU,EAAE;QAClDI,eAAe;QACfa,KAAK;QACLC,MAAM;QACNE,eAAe;QACfD,aAAa;QACbE,MAAM;QACNC,SAAS;QACTC;MACF,CAAC,CAAC;MACFK,iBAAiB,GAAGG,gBAAgB,CAACH,iBAAiB;MACtDH,IAAI,GAAGM,gBAAgB,CAACN,IAAI;IAC9B;;IAEA;IACAD,WAAW,GAAG,MAAM,IAAAG,sBAAU,EAAC3B,UAAU,EAAE;MAAEI,eAAe;MAAEY,OAAO;MAAEY;IAAkB,CAAC,CAAC;EAC7F;EACA,OAAO;IAAE,GAAG3B,IAAI;IAAEuB,WAAW;IAAEC;EAAK,CAAC;AACvC;AAEA,eAAeQ,oBAAoB,CAACjC,UAAgC,EAAEC,IAAa,EAAoB;EACrG,IAAI;IACFuB,WAAW;IACX9B,OAAO;IACPE;EACF,CAAC,GAAGK,IAAI;EAER,MAAM;IACJiC,aAAa;IACb7B,WAAW;IACXC,OAAO;IACPH,IAAI;IACJgC,IAAI;IACJC;EACF,CAAC,GAAG1C,OAAO;EAEX,MAAM2C,eAAe,GAAIH,aAAa,KAAK,KAAK,KAAK7B,WAAW,IAAIC,OAAO,IAAI6B,IAAI,CAAE;EACrF,IAAI,CAACE,eAAe,EAAE;IACpB,OAAOpC,IAAI;EACb;EAEAL,MAAM,GAAG;IACP,GAAGA,MAAM;IACTmB,WAAW,EAAES,WAAW,CAAEc,WAAW,CAACvB;EACxC,CAAC;;EAED;EACA,MAAM;IACJS,WAAW,EAAEe,0BAA0B;IACvCC,QAAQ;IACRC;EACF,CAAC,GAAG,MAAM,IAAAC,oBAAS,EACjB1C,UAAU,EACVwB,WAAW,EACX5B,MAAM,EACN;IACES,WAAW;IACXC,OAAO;IACPH,IAAI;IACJgC,IAAI;IACJC;EACF,CAAC,CACF;EACDZ,WAAW,GAAGe,0BAA0B;EAExC,OAAO;IAAE,GAAGtC,IAAI;IAAEuB,WAAW;IAAEgB,QAAQ;IAAEC;EAAS,CAAC;AACrD;AAEA,eAAeE,SAAS,CAAC3C,UAAgC,EAAEC,IAAa,EAAmB;EACzF,IAAI;IAAEwB,IAAI;IAAED;EAAY,CAAC,GAAGvB,IAAI;EAChC,MAAM;IAAE2C;EAAgB,CAAC,GAAGpB,WAA0B;EACtD,MAAM;IACJqB,QAAQ;IACRC,YAAY;IACZC,eAAe;IACfC,WAAW;IACXC,IAAI;IACJ/B;EACF,CAAC,GAAGO,IAA0B;EAC9B,MAAMyB,aAAa,GAAG,MAAMlD,UAAU,CAACmD,KAAK,CAACC,qBAAqB,CAAC;IACjER,eAAe;IACfC,QAAQ;IACRC,YAAY;IACZC,eAAe;IACfC,WAAW;IACX9B;EACF,CAAC,EAAE+B,IAAI,CAAC;EACR,OAAOC,aAAa,CAACG,MAAM;AAC7B;AAEA,eAAeC,YAAY,CAACtD,UAAgC,EAAEC,IAAa,EAAoB;EAC7F,IAAI;IACFP,OAAO;IACP8B,WAAW;IACXiB,QAAQ;IACRlC;EACF,CAAC,GAAGN,IAAI;EACR,MAAM;IAAEmD;EAAsB,CAAC,GAAG1D,OAAO;EACzC,IAAI6D,kBAAkB,GAAG,KAAK;EAC9B,IAAIC,sBAAsB,GAAG,KAAK;EAClC,IAAIC,kBAAkB,GAAG,IAAI;EAC7B,IAAIb,eAAe;EACnB,IAAIS,MAAM;EACV,IAAIK,eAAe;EACnB,IAAIC,cAAc;EAClB,IAAIC,QAAQ;EACZ,IAAIC,QAAQ;EAEZ,IAAIrC,WAAW,EAAE;IACf+B,kBAAkB,GAAG,CAAC,EAAE/B,WAAW,CAACsC,iBAAiB,IAAItC,WAAW,CAACuC,MAAM,CAAC;IAC5EL,eAAe,GAAG,IAAAM,wBAAkB,EAACxC,WAAW,CAAC;IACjDmC,cAAc,GAAG,IAAAM,uBAAiB,EAACjE,UAAU,EAAEwB,WAAW,EAAE9B,OAAO,CAAC0C,oBAAoB,CAAC;IACzFwB,QAAQ,GAAG,IAAAM,6BAAuB,EAAC1C,WAAW,EAAE9B,OAAO,CAAC;IACxDmE,QAAQ,GAAG,IAAAM,wBAAkB,EAAC3C,WAAW,CAAC;EAC5C;EAEA,IAAIqC,QAAQ,EAAE;IACZtD,MAAM,GAAGC,gBAAS,CAAC4D,QAAQ;;IAE3B;IACA;IACA;IACA;IACA,MAAMC,UAAU,GAAGC,MAAM,CAACC,IAAI,CAAC/C,WAAW,CAAElB,OAAO,CAAC,CAACkE,MAAM,GAAG,CAAC;IAC/D,MAAMC,SAAS,GAAG,CAAC,CAACb,QAAQ,CAACc,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACC,KAAK,KAAK,OAAO,CAAC;IAC/D,MAAMC,iBAAiB,GAAG,CAACR,UAAU,IAAI,CAACI,SAAS,IAAIjD,WAAW,CAAEsC,iBAAiB,KAAK,IAAI;IAC9F,IAAIe,iBAAiB,EAAE;MACrBrB,sBAAsB,GAAG,IAAI;IAC/B,CAAC,MAAM;MACL;MACAD,kBAAkB,GAAG,CAAC,CAACc,UAAU;IACnC;IACA;IACAZ,kBAAkB,GAAG,KAAK;EAC5B,CAAC,MAAM,IAAIhB,QAAQ,EAAE;IACnBlC,MAAM,GAAGC,gBAAS,CAACsE,QAAQ;IAC3BtB,sBAAsB,GAAG,IAAI;EAC/B,CAAC,MAAM,IAAIhC,WAAW,EAAEoB,eAAe,EAAE;IACvCA,eAAe,GAAGpB,WAAW,CAACoB,eAAe;IAC7C,IAAIQ,qBAAqB,KAAK,KAAK,EAAE;MACnC7C,MAAM,GAAGC,gBAAS,CAACuE,OAAO;MAC1BvB,sBAAsB,GAAG,KAAK;IAChC,CAAC,MAAM;MACLH,MAAM,GAAG,MAAMV,SAAS,CAAC3C,UAAU,EAAEC,IAAI,CAAC;MAC1CM,MAAM,GAAGC,gBAAS,CAACuE,OAAO;MAC1BvB,sBAAsB,GAAG,IAAI;IAC/B;EACF;EACA,OAAO;IACL,GAAGvD,IAAI;IACPM,MAAM;IACNqC,eAAe;IACfS,MAAM;IACNE,kBAAkB;IAClBC,sBAAsB;IACtBC,kBAAkB;IAClBC,eAAe;IACfC,cAAc;IACdC,QAAQ;IACRC;EACF,CAAC;AACH;AAEO,eAAemB,GAAG,CACvBhF,UAAgC,EAChCN,OAAmB,GAAG,CAAC,CAAC,EACC;EACzB,IAAIO,IAAa,GAAG;IAClBP,OAAO;IACPE,MAAM,EAAEH,gBAAgB,CAACC,OAAO;EAClC,CAAC;EAEDO,IAAI,GAAGF,cAAc,CAACC,UAAU,EAAEC,IAAI,CAAC;EACvCA,IAAI,GAAG,MAAMa,qBAAqB,CAACd,UAAU,EAAEC,IAAI,CAAC;EACpDA,IAAI,GAAG,MAAMgC,oBAAoB,CAACjC,UAAU,EAAEC,IAAI,CAAC;EACnDA,IAAI,GAAG,MAAMqD,YAAY,CAACtD,UAAU,EAAEC,IAAI,CAAC;EAE3C,MAAM;IACJuB,WAAW;IACXC,IAAI;IACJ8B,kBAAkB;IAClBC,sBAAsB;IACtBC,kBAAkB;IAClBlD,MAAM;IACNmD,eAAe;IACfC,cAAc;IACdN,MAAM;IACNb,QAAQ;IACRoB,QAAQ;IACRqB,KAAK;IACLrC;EACF,CAAC,GAAG3C,IAAI;EAER,IAAIuD,sBAAsB,EAAE;IAC1BxD,UAAU,CAAC6B,kBAAkB,CAACC,KAAK,CAAC;MAAE2B;IAAmB,CAAC,CAAC;EAC7D,CAAC,MACI;IACH;IACA,IAAAyB,oCAAmB,EAAClF,UAAU,EAAE;MAAE,GAAGyB;IAAK,CAAC,CAAC;IAE5C,IAAI8B,kBAAkB,EAAE;MACtB;MACA,MAAM;QAAEjB,WAAW,EAAE6C,cAAc;QAAErB;MAAkB,CAAC,GAAGtC,WAAY;MACvExB,UAAU,CAAC6B,kBAAkB,CAACuD,eAAe,CAAC;QAC5CD,cAAc;QACdrB,iBAAiB;QACjB/C,WAAW,EAAES,WAAW,CAAE6D,OAAO,EAAEtE,WAAW;QAC9Ca,iBAAiB,EAAEH,IAAI,EAAEG;MAC3B,CAAC,CAAC;IACJ;EACF;;EAEA;EACA,MAAM;IAAEtB,OAAO;IAAE+E,OAAO;IAAEC,eAAe;IAAEC,OAAO;IAAEjD,WAAW;IAAEwB,iBAAiB;IAAEC;EAAO,CAAC,GAAGvC,WAAW,IAAI,CAAC,CAAC;EAChH,OAAO;IACLjB,MAAM,EAAEA,MAAO;IACf,IAAIkB,IAAI,IAAI;MAAEA;IAAK,CAAC,CAAC;IACrB,IAAIiC,eAAe,IAAI;MAAEA;IAAgB,CAAC,CAAC;IAC3C,IAAIC,cAAc,IAAI;MAAEA;IAAe,CAAC,CAAC;IACzC,IAAIN,MAAM,IAAI;MAAEA;IAAO,CAAC,CAAC;IACzB,IAAIb,QAAQ,IAAI;MAAEA;IAAS,CAAC,CAAC;IAC7B,IAAIoB,QAAQ,IAAIA,QAAQ,CAACY,MAAM,IAAI;MAAEZ;IAAS,CAAC,CAAC;IAChD,IAAIqB,KAAK,IAAI;MAAEA;IAAM,CAAC,CAAC;IACvB,IAAIlB,MAAM,IAAI;MAAEA;IAAO,CAAC,CAAC;IACzBnB,eAAe;IAAE;;IAEjB;IACAtC,OAAO,EAAEA,OAAQ;IACjB+E,OAAO,EAAEA,OAAQ;IACjBC,eAAe,EAAEA,eAAgB;IACjCC,OAAO,EAAEA,OAAQ;IACjBjD,WAAW,EAAEA,WAAY;IACzBwB;EACF,CAAC;AACH"}
|
|
@@ -53,7 +53,7 @@ async function createTransactionMeta(authClient, options = {}) {
|
|
|
53
53
|
}
|
|
54
54
|
function hasSavedInteractionHandle(authClient, options) {
|
|
55
55
|
const savedMeta = getSavedTransactionMeta(authClient, options);
|
|
56
|
-
if (savedMeta
|
|
56
|
+
if (savedMeta?.interactionHandle) {
|
|
57
57
|
return true;
|
|
58
58
|
}
|
|
59
59
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionMeta.js","names":["createTransactionMeta","authClient","options","tokenParams","token","prepareTokenParams","pkceMeta","createOAuthMeta","flow","withCredentials","activationToken","undefined","recoveryToken","maxAge","acrValues","meta","hasSavedInteractionHandle","savedMeta","getSavedTransactionMeta","interactionHandle","removeNils","transactionManager","load","e","isTransactionMetaValid","warn","getTransactionMeta","validExistingMeta","saveTransactionMeta","save","muteWarning","clearTransactionMeta","clear","keys","isTransactionMetaValidForOptions","isTransactionMetaValidForFlow","shouldValidateFlow","mismatch","some","key","value"],"sources":["../../../lib/idx/transactionMeta.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, IdxTransactionMeta, IdxTransactionMetaOptions } from './types';\nimport { removeNils, warn } from '../util';\nimport { createOAuthMeta, PKCETransactionMeta } from '../oidc';\n\n// Calculate new values\nexport async function createTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options: IdxTransactionMetaOptions = {}\n): Promise<IdxTransactionMeta> {\n const tokenParams = await authClient.token.prepareTokenParams(options);\n const pkceMeta = createOAuthMeta(authClient, tokenParams) as PKCETransactionMeta;\n let {\n flow = 'default',\n withCredentials = true,\n activationToken = undefined,\n recoveryToken = undefined,\n maxAge = undefined,\n acrValues = undefined,\n } = { ...authClient.options, ...options }; // local options override SDK options\n\n const meta: IdxTransactionMeta = {\n ...pkceMeta,\n flow,\n withCredentials,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues\n };\n return meta;\n}\n\nexport function hasSavedInteractionHandle(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): boolean {\n const savedMeta = getSavedTransactionMeta(authClient, options);\n if (savedMeta?.interactionHandle) {\n return true;\n }\n return false;\n}\n\n// Returns the saved transaction meta, if it exists and is valid\nexport function getSavedTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): IdxTransactionMeta | undefined {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n let savedMeta;\n try {\n savedMeta = authClient.transactionManager.load(options) as IdxTransactionMeta;\n } catch (e) {\n // ignore errors here\n }\n\n if (!savedMeta) {\n return;\n }\n\n if (isTransactionMetaValid(savedMeta, options)) {\n return savedMeta;\n }\n\n // existing meta is not valid for this configuration\n // this is common when changing configuration in local development environment\n // in a production environment, this may indicate that two apps are sharing a storage key\n warn('Saved transaction meta does not match the current configuration. ' + \n 'This may indicate that two apps are sharing a storage key.');\n\n}\n\nexport async function getTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): Promise<IdxTransactionMeta> {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n // Load existing transaction meta from storage\n const validExistingMeta = getSavedTransactionMeta(authClient, options);\n if (validExistingMeta) {\n return validExistingMeta;\n }\n // No existing? Create new transaction meta.\n return createTransactionMeta(authClient, options);\n}\n\nexport function saveTransactionMeta (authClient: OktaAuthIdxInterface, meta): void {\n authClient.transactionManager.save(meta, { muteWarning: true });\n}\n\nexport function clearTransactionMeta (authClient: OktaAuthIdxInterface): void {\n authClient.transactionManager.clear();\n}\n\nexport function isTransactionMetaValid (meta, options: IdxTransactionMetaOptions = {}): boolean {\n // Validate against certain options. If these exist in options, they must match in meta\n const keys = [\n 'issuer',\n 'clientId',\n 'redirectUri',\n 'state',\n 'codeChallenge',\n 'codeChallengeMethod',\n 'activationToken',\n 'recoveryToken'\n ];\n if (isTransactionMetaValidForOptions(meta, options, keys) === false) {\n return false;\n }\n\n // Validate configured flow\n const { flow } = options;\n if (isTransactionMetaValidForFlow(meta, flow) === false) {\n return false;\n }\n\n return true;\n}\n\nexport function isTransactionMetaValidForFlow(meta, flow) {\n // Specific flows should not share transaction data\n const shouldValidateFlow = flow && flow !== 'default' && flow !== 'proceed';\n if (shouldValidateFlow) {\n if (flow !== meta.flow) {\n // The flow has changed; abandon the old transaction\n return false;\n }\n }\n return true;\n}\n\nexport function isTransactionMetaValidForOptions(meta, options, keys) {\n // returns false if values in meta do not match options\n // if the option does not have a value for a specific key, it is ignored\n const mismatch = keys.some(key => {\n const value = options[key];\n if (value && value !== meta[key]) {\n return true;\n }\n });\n return !mismatch;\n}\n"],"mappings":";;;;;;;;;;;AAcA;AACA;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACO,eAAeA,qBAAqB,CACzCC,UAAgC,EAChCC,OAAkC,GAAG,CAAC,CAAC,EACV;EAC7B,MAAMC,WAAW,GAAG,MAAMF,UAAU,CAACG,KAAK,CAACC,kBAAkB,CAACH,OAAO,CAAC;EACtE,MAAMI,QAAQ,GAAG,IAAAC,qBAAe,EAACN,UAAU,EAAEE,WAAW,CAAwB;EAChF,IAAI;IACFK,IAAI,GAAG,SAAS;IAChBC,eAAe,GAAG,IAAI;IACtBC,eAAe,GAAGC,SAAS;IAC3BC,aAAa,GAAGD,SAAS;IACzBE,MAAM,GAAGF,SAAS;IAClBG,SAAS,GAAGH;EACd,CAAC,GAAG;IAAE,GAAGV,UAAU,CAACC,OAAO;IAAE,GAAGA;EAAQ,CAAC,CAAC,CAAC;;EAE3C,MAAMa,IAAwB,GAAG;IAC/B,GAAGT,QAAQ;IACXE,IAAI;IACJC,eAAe;IACfC,eAAe;IACfE,aAAa;IACbC,MAAM;IACNC;EACF,CAAC;EACD,OAAOC,IAAI;AACb;AAEO,SAASC,yBAAyB,CACvCf,UAAgC,EAChCC,OAAmC,EAC1B;EACT,MAAMe,SAAS,GAAGC,uBAAuB,CAACjB,UAAU,EAAEC,OAAO,CAAC;EAC9D,IAAIe,SAAS,
|
|
1
|
+
{"version":3,"file":"transactionMeta.js","names":["createTransactionMeta","authClient","options","tokenParams","token","prepareTokenParams","pkceMeta","createOAuthMeta","flow","withCredentials","activationToken","undefined","recoveryToken","maxAge","acrValues","meta","hasSavedInteractionHandle","savedMeta","getSavedTransactionMeta","interactionHandle","removeNils","transactionManager","load","e","isTransactionMetaValid","warn","getTransactionMeta","validExistingMeta","saveTransactionMeta","save","muteWarning","clearTransactionMeta","clear","keys","isTransactionMetaValidForOptions","isTransactionMetaValidForFlow","shouldValidateFlow","mismatch","some","key","value"],"sources":["../../../lib/idx/transactionMeta.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, IdxTransactionMeta, IdxTransactionMetaOptions } from './types';\nimport { removeNils, warn } from '../util';\nimport { createOAuthMeta, PKCETransactionMeta } from '../oidc';\n\n// Calculate new values\nexport async function createTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options: IdxTransactionMetaOptions = {}\n): Promise<IdxTransactionMeta> {\n const tokenParams = await authClient.token.prepareTokenParams(options);\n const pkceMeta = createOAuthMeta(authClient, tokenParams) as PKCETransactionMeta;\n let {\n flow = 'default',\n withCredentials = true,\n activationToken = undefined,\n recoveryToken = undefined,\n maxAge = undefined,\n acrValues = undefined,\n } = { ...authClient.options, ...options }; // local options override SDK options\n\n const meta: IdxTransactionMeta = {\n ...pkceMeta,\n flow,\n withCredentials,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues\n };\n return meta;\n}\n\nexport function hasSavedInteractionHandle(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): boolean {\n const savedMeta = getSavedTransactionMeta(authClient, options);\n if (savedMeta?.interactionHandle) {\n return true;\n }\n return false;\n}\n\n// Returns the saved transaction meta, if it exists and is valid\nexport function getSavedTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): IdxTransactionMeta | undefined {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n let savedMeta;\n try {\n savedMeta = authClient.transactionManager.load(options) as IdxTransactionMeta;\n } catch (e) {\n // ignore errors here\n }\n\n if (!savedMeta) {\n return;\n }\n\n if (isTransactionMetaValid(savedMeta, options)) {\n return savedMeta;\n }\n\n // existing meta is not valid for this configuration\n // this is common when changing configuration in local development environment\n // in a production environment, this may indicate that two apps are sharing a storage key\n warn('Saved transaction meta does not match the current configuration. ' + \n 'This may indicate that two apps are sharing a storage key.');\n\n}\n\nexport async function getTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): Promise<IdxTransactionMeta> {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n // Load existing transaction meta from storage\n const validExistingMeta = getSavedTransactionMeta(authClient, options);\n if (validExistingMeta) {\n return validExistingMeta;\n }\n // No existing? Create new transaction meta.\n return createTransactionMeta(authClient, options);\n}\n\nexport function saveTransactionMeta (authClient: OktaAuthIdxInterface, meta): void {\n authClient.transactionManager.save(meta, { muteWarning: true });\n}\n\nexport function clearTransactionMeta (authClient: OktaAuthIdxInterface): void {\n authClient.transactionManager.clear();\n}\n\nexport function isTransactionMetaValid (meta, options: IdxTransactionMetaOptions = {}): boolean {\n // Validate against certain options. If these exist in options, they must match in meta\n const keys = [\n 'issuer',\n 'clientId',\n 'redirectUri',\n 'state',\n 'codeChallenge',\n 'codeChallengeMethod',\n 'activationToken',\n 'recoveryToken'\n ];\n if (isTransactionMetaValidForOptions(meta, options, keys) === false) {\n return false;\n }\n\n // Validate configured flow\n const { flow } = options;\n if (isTransactionMetaValidForFlow(meta, flow) === false) {\n return false;\n }\n\n return true;\n}\n\nexport function isTransactionMetaValidForFlow(meta, flow) {\n // Specific flows should not share transaction data\n const shouldValidateFlow = flow && flow !== 'default' && flow !== 'proceed';\n if (shouldValidateFlow) {\n if (flow !== meta.flow) {\n // The flow has changed; abandon the old transaction\n return false;\n }\n }\n return true;\n}\n\nexport function isTransactionMetaValidForOptions(meta, options, keys) {\n // returns false if values in meta do not match options\n // if the option does not have a value for a specific key, it is ignored\n const mismatch = keys.some(key => {\n const value = options[key];\n if (value && value !== meta[key]) {\n return true;\n }\n });\n return !mismatch;\n}\n"],"mappings":"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"}
|
package/cjs/idx/util.js
CHANGED
|
@@ -75,7 +75,6 @@ function getMessagesFromIdxRemediationValue(value) {
|
|
|
75
75
|
}, []);
|
|
76
76
|
}
|
|
77
77
|
function getMessagesFromResponse(idxResponse, options) {
|
|
78
|
-
var _rawIdxState$messages;
|
|
79
78
|
let messages = [];
|
|
80
79
|
const {
|
|
81
80
|
rawIdxState,
|
|
@@ -83,7 +82,7 @@ function getMessagesFromResponse(idxResponse, options) {
|
|
|
83
82
|
} = idxResponse;
|
|
84
83
|
|
|
85
84
|
// Handle global messages
|
|
86
|
-
const globalMessages =
|
|
85
|
+
const globalMessages = rawIdxState.messages?.value.map(message => message);
|
|
87
86
|
if (globalMessages) {
|
|
88
87
|
messages = [...messages, ...globalMessages];
|
|
89
88
|
}
|
|
@@ -103,8 +102,7 @@ function getMessagesFromResponse(idxResponse, options) {
|
|
|
103
102
|
// API may return identical error on same field, filter by i18n key
|
|
104
103
|
const seen = {};
|
|
105
104
|
messages = messages.reduce((filtered, message) => {
|
|
106
|
-
|
|
107
|
-
const key = (_message$i18n = message.i18n) === null || _message$i18n === void 0 ? void 0 : _message$i18n.key;
|
|
105
|
+
const key = message.i18n?.key;
|
|
108
106
|
if (key && seen[key] && message.message === seen[key].message) {
|
|
109
107
|
return filtered;
|
|
110
108
|
}
|
|
@@ -172,7 +170,6 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
|
172
170
|
}
|
|
173
171
|
};
|
|
174
172
|
if (name.startsWith('currentAuthenticator')) {
|
|
175
|
-
var _actionObj$value;
|
|
176
173
|
const [part1, part2] = (0, _util.split2)(name, '-');
|
|
177
174
|
const actionObj = idxResponse.rawIdxState[part1].value[part2];
|
|
178
175
|
/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
@@ -185,7 +182,7 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
|
185
182
|
...rest
|
|
186
183
|
} = actionObj;
|
|
187
184
|
/* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
188
|
-
const value =
|
|
185
|
+
const value = actionObj.value?.filter(item => item.name !== 'stateHandle');
|
|
189
186
|
stepObj = {
|
|
190
187
|
...rest,
|
|
191
188
|
...(value && {
|
package/cjs/idx/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":["ctx","remediators","getFlowSpecification","_oktaAuth","_flow","setRemediatorsCtx","newCtx","Object","assign","oktaAuth","flow","isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","keys","actions","actionName","includes","getMessagesFromIdxRemediationValue","value","Array","isArray","reduce","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","map","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","values","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","entries","stepObj","action","params","idx","proceed","startsWith","part1","part2","split2","actionObj","href","method","rel","accepts","produces","rest","filter","item","filterValuesForRemediation","remediations","find","r","warn","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleFailedResponse","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn, split2 } from '../util';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport {\n OktaAuthIdxInterface,\n IdxFeature,\n NextStep,\n RemediateOptions,\n RemediationResponse,\n RunOptions,\n FlowIdentifier,\n FlowSpecification\n} from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\ntype GetFlowSpecification = (\n oktaAuth: OktaAuthIdxInterface,\n flow: FlowIdentifier\n) => FlowSpecification;\n\nconst ctx: {\n remediators: Record<string, RemediatorConstructor>,\n getFlowSpecification: GetFlowSpecification,\n} = {\n // default values to be used by minimal IDX API\n remediators: {},\n getFlowSpecification: function(_oktaAuth: OktaAuthIdxInterface, _flow: FlowIdentifier = 'default') {\n return {\n remediators: {}\n } as FlowSpecification;\n }\n};\n\n// should be set in createIdxAPI() factory\nexport function setRemediatorsCtx(newCtx: Partial<typeof ctx>) {\n Object.assign(ctx, newCtx);\n}\n\nexport function getFlowSpecification(oktaAuth: OktaAuthIdxInterface, flow: FlowIdentifier = 'default') {\n return ctx.getFlowSpecification(oktaAuth, flow);\n}\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key] && message.message === seen[key].message) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record<string, RemediatorConstructor> = Object.values(ctx.remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n const useGenericRemediator = options.useGenericRemediator;\n const {neededToProceed: idxRemediations, context} = idxResponse;\n\n let remediator: Remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n if (remediation) {\n const T = getRemediatorClass(remediation, options);\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate(context)) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAiBA,MAAMA,GAGL,GAAG;EACF;EACAC,WAAW,EAAE,CAAC,CAAC;EACfC,oBAAoB,EAAE,UAASC,SAA+B,EAAEC,KAAqB,GAAG,SAAS,EAAE;IACjG,OAAO;MACLH,WAAW,EAAE,CAAC;IAChB,CAAC;EACH;AACF,CAAC;;AAED;AACO,SAASI,iBAAiB,CAACC,MAA2B,EAAE;EAC7DC,MAAM,CAACC,MAAM,CAACR,GAAG,EAAEM,MAAM,CAAC;AAC5B;AAEO,SAASJ,oBAAoB,CAACO,QAA8B,EAAEC,IAAoB,GAAG,SAAS,EAAE;EACrG,OAAOV,GAAG,CAACE,oBAAoB,CAACO,QAAQ,EAAEC,IAAI,CAAC;AACjD;AAEO,SAASC,kBAAkB,CAACC,WAAwB,EAAE;EAC3D,MAAM;IAAEC,eAAe;IAAEC;EAAgB,CAAC,GAAGF,WAAW;EACxD,OAAO,CAACC,eAAe,CAACE,MAAM,IAAI,CAACD,eAAe;AACpD;AAEO,SAASE,SAAS,CAACJ,WAAwB,EAAE;EAClD,OAAOA,WAAW,CAACC,eAAe,CAACI,IAAI,CAAC,CAAC;IAAEC;EAAK,CAAC,KAAKA,IAAI,KAAK,MAAM,CAAC;AACxE;AAEO,SAASC,WAAW,CAACP,WAAwB,EAAE;EACpD,OAAOL,MAAM,CAACa,IAAI,CAACR,WAAW,CAACS,OAAO,CAAC,CAACJ,IAAI,CAACK,UAAU,IAAIA,UAAU,CAACC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3F;AAEO,SAASC,kCAAkC,CAChDC,KAA6B,EACH;EAC1B,IAAI,CAACA,KAAK,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;IACnC;EACF;EACA,OAAOA,KAAK,CAACG,MAAM,CAAC,CAACC,QAAQ,EAAEJ,KAAK,KAAK;IACvC,IAAIA,KAAK,CAACI,QAAQ,EAAE;MAClBA,QAAQ,GAAG,CAAC,GAAGA,QAAQ,EAAE,GAAGJ,KAAK,CAACI,QAAQ,CAACJ,KAAK,CAAU;IAC5D;IACA,IAAIA,KAAK,CAACK,IAAI,EAAE;MACd,MAAMC,gBAAgB,GAAGP,kCAAkC,CAACC,KAAK,CAACK,IAAI,CAACL,KAAK,CAAC,IAAI,EAAE;MACnFI,QAAQ,GAAG,CAAC,GAAGA,QAAQ,EAAE,GAAGE,gBAAgB,CAAU;IACxD;IACA,IAAIN,KAAK,CAACO,OAAO,EAAE;MACjB,IAAIC,YAAY,GAAG,EAAE;MACrBR,KAAK,CAACO,OAAO,CAACE,OAAO,CAACC,MAAM,IAAI;QAC9B,IAAI,CAACA,MAAM,CAACV,KAAK,IAAI,OAAOU,MAAM,CAACV,KAAK,KAAK,QAAQ,EAAE;UACrD;QACF;QACAQ,YAAY,GAAG,CAAC,GAAGA,YAAY,EAAEE,MAAM,CAACV,KAAK,CAAU;MACzD,CAAC,CAAC;MACF,MAAMW,mBAAmB,GAAGZ,kCAAkC,CAACS,YAAY,CAAC,IAAI,EAAE;MAClFJ,QAAQ,GAAG,CAAC,GAAGA,QAAQ,EAAE,GAAGO,mBAAmB,CAAU;IAC3D;IACA,OAAOP,QAAQ;EACjB,CAAC,EAAE,EAAE,CAAC;AACR;AAEO,SAASQ,uBAAuB,CAACzB,WAAwB,EAAEoB,OAAmB,EAAgB;EAAA;EACnG,IAAIH,QAAsB,GAAG,EAAE;EAC/B,MAAM;IAAES,WAAW;IAAEzB;EAAgB,CAAC,GAAGD,WAAW;;EAEpD;EACA,MAAM2B,cAAc,4BAAGD,WAAW,CAACT,QAAQ,0DAApB,sBAAsBJ,KAAK,CAACe,GAAG,CAACC,OAAO,IAAIA,OAAO,CAAC;EAC1E,IAAIF,cAAc,EAAE;IAClBV,QAAQ,GAAG,CAAC,GAAGA,QAAQ,EAAE,GAAGU,cAAc,CAAU;EACtD;;EAEA;EACA;EACA;EACA,IAAI,CAACP,OAAO,CAACU,oBAAoB,EAAE;IACjC,KAAK,IAAIC,WAAW,IAAI9B,eAAe,EAAE;MACvC,MAAM+B,aAAa,GAAGpB,kCAAkC,CAACmB,WAAW,CAAClB,KAAK,CAAC;MAC3E,IAAImB,aAAa,EAAE;QACjBf,QAAQ,GAAG,CAAC,GAAGA,QAAQ,EAAE,GAAGe,aAAa,CAAU;MACrD;IACF;EACF;;EAEA;EACA,MAAMC,IAAI,GAAG,CAAC,CAAC;EACfhB,QAAQ,GAAGA,QAAQ,CAACD,MAAM,CAAC,CAACkB,QAAQ,EAAEL,OAAO,KAAK;IAAA;IAChD,MAAMM,GAAG,oBAAGN,OAAO,CAACO,IAAI,kDAAZ,cAAcD,GAAG;IAC7B,IAAIA,GAAG,IAAIF,IAAI,CAACE,GAAG,CAAC,IAAIN,OAAO,CAACA,OAAO,KAAKI,IAAI,CAACE,GAAG,CAAC,CAACN,OAAO,EAAE;MAC7D,OAAOK,QAAQ;IACjB;IACAD,IAAI,CAACE,GAAG,CAAC,GAAGN,OAAO;IACnBK,QAAQ,GAAG,CAAC,GAAGA,QAAQ,EAAEL,OAAO,CAAU;IAC1C,OAAOK,QAAQ;EACjB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOjB,QAAQ;AACjB;AAGO,SAASoB,kBAAkB,CAACrC,WAAwB,EAAgB;EACzE,MAAMsC,GAAG,GAAG,EAAE;EACd,MAAM;IAAE7B,OAAO;IAAER;EAAgB,CAAC,GAAGD,WAAW;EAEhD,IAAIS,OAAO,CAAC,8BAA8B,CAAC,EAAE;IAC3C6B,GAAG,CAACC,IAAI,CAACC,iBAAU,CAACC,iBAAiB,CAAU;EACjD;EAEA,IAAIxC,eAAe,CAACI,IAAI,CAAC,CAAC;IAAEC;EAAK,CAAC,KAAKA,IAAI,KAAK,uBAAuB,CAAC,EAAE;IACxEgC,GAAG,CAACC,IAAI,CAACC,iBAAU,CAACE,YAAY,CAAU;EAC5C;EAEA,IAAIzC,eAAe,CAACI,IAAI,CAAC,CAAC;IAAEC;EAAK,CAAC,KAAKA,IAAI,KAAK,cAAc,CAAC,EAAE;IAC/DgC,GAAG,CAACC,IAAI,CAACC,iBAAU,CAACG,UAAU,CAAU;EAC1C;EAEA,IAAI1C,eAAe,CAACI,IAAI,CAAC,CAAC;IAAEC;EAAK,CAAC,KAAKA,IAAI,KAAK,gBAAgB,CAAC,EAAE;IACjEgC,GAAG,CAACC,IAAI,CAACC,iBAAU,CAACI,cAAc,CAAU;EAC9C;EAEA,OAAON,GAAG;AACZ;AAEO,SAASO,iBAAiB,CAC/BC,UAAgC,EAChC9C,WAAwB,EACxB8B,oBAA8B,EAClB;EACZ,MAAMQ,GAAe,GAAG,EAAE;EAE1B,MAAMS,aAAoD,GAAGpD,MAAM,CAACqD,MAAM,CAAC5D,GAAG,CAACC,WAAW,CAAC,CACxF2B,MAAM,CAAC,CAACY,GAAG,EAAEqB,eAAe,KAAK;IAChC;IACA,IAAIA,eAAe,CAACC,eAAe,EAAE;MACnCtB,GAAG,CAACqB,eAAe,CAACC,eAAe,CAAC,GAAGD,eAAe;IACxD;IACA,OAAOrB,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAER,KAAK,IAAIG,WAAW,IAAI/B,WAAW,CAACC,eAAe,EAAE;IACnD,MAAMkD,CAAC,GAAGC,kBAAkB,CAACrB,WAAW,EAAE;MAAED,oBAAoB;MAAEzC,WAAW,EAAE0D;IAAc,CAAC,CAAC;IAC/F,IAAII,CAAC,EAAE;MACL,MAAME,UAAsB,GAAG,IAAIF,CAAC,CAACpB,WAAW,CAAC;MACjDO,GAAG,CAACC,IAAI,CAAEc,UAAU,CAACC,WAAW,CAACR,UAAU,EAAE9C,WAAW,CAACuD,OAAO,CAAC,CAAU;IAC7E;EACF;EAEA,KAAK,MAAM,CAACjD,IAAI,CAAC,IAAIX,MAAM,CAAC6D,OAAO,CAAExD,WAAW,CAACS,OAAO,IAAI,CAAC,CAAC,CAAE,EAAE;IAChE,IAAIgD,OAAO,GAAG;MACZnD,IAAI;MACJoD,MAAM,EAAE,MAAOC,MAAO,IAAK;QACzB,OAAOb,UAAU,CAACc,GAAG,CAACC,OAAO,CAAC;UAC5BpD,OAAO,EAAE,CAAC;YAAEH,IAAI;YAAEqD;UAAO,CAAC;QAC5B,CAAC,CAAC;MACJ;IACF,CAAC;IACD,IAAIrD,IAAI,CAACwD,UAAU,CAAC,sBAAsB,CAAC,EAAE;MAAA;MAC3C,MAAM,CAACC,KAAK,EAAEC,KAAK,CAAC,GAAG,IAAAC,YAAM,EAAC3D,IAAI,EAAE,GAAG,CAAC;MACxC,MAAM4D,SAAS,GAAGlE,WAAW,CAAC0B,WAAW,CAACqC,KAAK,CAAC,CAAClD,KAAK,CAACmD,KAAK,CAAC;MAC7D;MACA,MAAM;QACJG,IAAI;QACJC,MAAM;QACNC,GAAG;QACHC,OAAO;QACPC,QAAQ;QACR,GAAGC;MACL,CAAC,GAAGN,SAAS;MACb;MACA,MAAMrD,KAAK,uBAAGqD,SAAS,CAACrD,KAAK,qDAAf,iBAAiB4D,MAAM,CAACC,IAAI,IAAIA,IAAI,CAACpE,IAAI,KAAK,aAAa,CAAC;MAC1EmD,OAAO,GAAG;QACR,GAAGe,IAAI;QACP,IAAI3D,KAAK,IAAI;UAAEA;QAAM,CAAC,CAAC;QACvB,GAAG4C;MACL,CAAC;IACH;IACAnB,GAAG,CAACC,IAAI,CAACkB,OAAO,CAAC;EACnB;EAEA,OAAOnB,GAAG;AACZ;AAEO,SAASqC,0BAA0B,CACxC3E,WAAwB,EACxBkD,eAAuB,EACvBF,MAAyB,EACN;EACnB,MAAM4B,YAAY,GAAG5E,WAAW,CAACC,eAAe,IAAI,EAAE;EACtD,MAAM8B,WAAW,GAAG6C,YAAY,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACxE,IAAI,KAAK4C,eAAe,CAAC;EACtE,IAAI,CAACnB,WAAW,EAAE;IAChB;IACA,IAAAgD,UAAI,EAAE,gCAA+B7B,eAAgB,kCAAiC,CAAC;IACvF,OAAOF,MAAM;EACf;;EAEA;EACA,MAAMgC,oBAAoB,GAAGjD,WAAW,CAAClB,KAAK,CAAEG,MAAM,CAAC,CAACsB,GAAG,EAAE2C,KAAK,KAAK;IACrE,MAAM;MAAE3E,IAAI;MAAEO;IAAM,CAAC,GAAGoE,KAAK;IAC7B,IAAI3E,IAAI,KAAK,aAAa,EAAE;MAC1BgC,GAAG,CAAChC,IAAI,CAAC,GAAGO,KAAK,CAAC,CAAC;IACrB,CAAC,MAAM;MACLyB,GAAG,CAAChC,IAAI,CAAC,GAAG0C,MAAM,CAAC1C,IAAI,CAAC,CAAC,CAAC;IAC5B;;IACA,OAAOgC,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EACN,OAAO0C,oBAAoB;AAC7B;AAEA,SAAS5B,kBAAkB,CAACrB,WAA2B,EAAEX,OAAyB,EAAE;EAClF,MAAM;IAAEU,oBAAoB;IAAEzC;EAAY,CAAC,GAAG+B,OAAO;EAErD,IAAI,CAACW,WAAW,EAAE;IAChB,OAAOmD,SAAS;EAClB;EAEA,IAAIpD,oBAAoB,EAAE;IACxB,OAAOqD,oCAAiB;EAC1B;;EAEA;EACA,OAAO9F,WAAW,CAAE0C,WAAW,CAACzB,IAAI,CAAC;AACvC;;AAEA;AACA;AACO,SAAS8E,aAAa,CAC3BpF,WAAwB,EACxBgD,MAAyB,EACzB5B,OAAyB,EACD;EACxB;EACA,MAAM/B,WAAW,GAAG+B,OAAO,CAAC/B,WAAY;EACxC,MAAMyC,oBAAoB,GAAGV,OAAO,CAACU,oBAAoB;EACzD,MAAM;IAAC7B,eAAe,EAAEoF,eAAe;IAAE9B;EAAO,CAAC,GAAGvD,WAAW;EAE/D,IAAIqD,UAAsB;EAC1B;EACA,IAAIjC,OAAO,CAACkE,IAAI,EAAE;IAChB;IACA,MAAMvD,WAAW,GAAGsD,eAAe,CAACR,IAAI,CAAC,CAAC;MAAEvE;IAAK,CAAC,KAAKA,IAAI,KAAKc,OAAO,CAACkE,IAAI,CAAE;IAC9E,IAAIvD,WAAW,EAAE;MACf,MAAMoB,CAAC,GAAGC,kBAAkB,CAACrB,WAAW,EAAEX,OAAO,CAAC;MAClD,OAAO+B,CAAC,GAAG,IAAIA,CAAC,CAACpB,WAAW,EAAEiB,MAAM,EAAE5B,OAAO,CAAC,GAAG8D,SAAS;IAC5D,CAAC,MAAM;MACL;MACA,IAAAH,UAAI,EAAE,SAAQ3D,OAAO,CAACkE,IAAK,kCAAiC,CAAC;MAC7D;IACF;EACF;EAEA,MAAMC,oBAAkC,GAAG,EAAE;EAC7C,IAAIzD,oBAAoB,EAAE;IACxB;IACAyD,oBAAoB,CAAChD,IAAI,CAAC,IAAI4C,oCAAiB,CAACE,eAAe,CAAC,CAAC,CAAC,EAAErC,MAAM,EAAE5B,OAAO,CAAC,CAAC;EACvF,CAAC,MAAM;IACL,KAAK,IAAIW,WAAW,IAAIsD,eAAe,EAAE;MACvC,MAAMG,kBAAkB,GAAG7F,MAAM,CAACa,IAAI,CAACnB,WAAW,CAAW,CAACsB,QAAQ,CAACoB,WAAW,CAACzB,IAAI,CAAC;MACxF,IAAI,CAACkF,kBAAkB,EAAE;QACvB;MACF;;MAEA;MACA,MAAMrC,CAAC,GAAGC,kBAAkB,CAACrB,WAAW,EAAEX,OAAO,CAAE;MACnDiC,UAAU,GAAG,IAAIF,CAAC,CAACpB,WAAW,EAAEiB,MAAM,EAAE5B,OAAO,CAAC;MAChD,IAAIiC,UAAU,CAACoC,YAAY,CAAClC,OAAO,CAAC,EAAE;QACpC;QACA,OAAOF,UAAU;MACnB;MACA;MACA;MACAkC,oBAAoB,CAAChD,IAAI,CAACc,UAAU,CAAC;IACvC;EACF;EAEA,OAAOkC,oBAAoB,CAAC,CAAC,CAAC;AAChC;AAGO,SAASjC,WAAW,CACzBR,UAAgC,EAAEO,UAAsB,EAAErD,WAAwB,EACxE;EACV,MAAM0F,QAAQ,GAAGrC,UAAU,CAACC,WAAW,CAACR,UAAU,EAAE9C,WAAW,CAACuD,OAAO,CAAC;EACxE,MAAMoC,OAAO,GAAGvF,SAAS,CAACJ,WAAW,CAAC;EACtC,MAAM4F,SAAS,GAAGrF,WAAW,CAACP,WAAW,CAAC;EAC1C,OAAO;IACL,GAAG0F,QAAQ;IACX,IAAIC,OAAO,IAAI;MAACA;IAAO,CAAC,CAAC;IACzB,IAAIC,SAAS,IAAI;MAACA;IAAS,CAAC;EAC9B,CAAC;AACH;AAEO,SAASC,oBAAoB,CAClC/C,UAAgC,EAChC9C,WAAwB,EACxBoB,OAAO,GAAG,CAAC,CAAC,EACS;EACrB,MAAM0E,QAAQ,GAAG/F,kBAAkB,CAACC,WAAW,CAAC;EAChD,MAAMiB,QAAQ,GAAGQ,uBAAuB,CAACzB,WAAW,EAAEoB,OAAO,CAAC;EAC9D,IAAI0E,QAAQ,EAAE;IACZ,OAAO;MAAE9F,WAAW;MAAE8F,QAAQ;MAAE7E;IAAS,CAAC;EAC5C,CAAC,MAAM;IACL,MAAMoC,UAAU,GAAG+B,aAAa,CAACpF,WAAW,EAAE,CAAC,CAAC,EAAEoB,OAAO,CAAC;IAC1D,MAAMsE,QAAQ,GAAGrC,UAAU,IAAIC,WAAW,CAACR,UAAU,EAAEO,UAAU,EAAErD,WAAW,CAAC;IAC/E,OAAO;MACLA,WAAW;MACXiB,QAAQ;MACR,IAAIyE,QAAQ,IAAI;QAAEA;MAAS,CAAC;IAC9B,CAAC;EACH;AAEF"}
|
|
1
|
+
{"version":3,"file":"util.js","names":["ctx","remediators","getFlowSpecification","_oktaAuth","_flow","setRemediatorsCtx","newCtx","Object","assign","oktaAuth","flow","isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","keys","actions","actionName","includes","getMessagesFromIdxRemediationValue","value","Array","isArray","reduce","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","map","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","values","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","entries","stepObj","action","params","idx","proceed","startsWith","part1","part2","split2","actionObj","href","method","rel","accepts","produces","rest","filter","item","filterValuesForRemediation","remediations","find","r","warn","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleFailedResponse","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn, split2 } from '../util';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport {\n OktaAuthIdxInterface,\n IdxFeature,\n NextStep,\n RemediateOptions,\n RemediationResponse,\n RunOptions,\n FlowIdentifier,\n FlowSpecification\n} from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\ntype GetFlowSpecification = (\n oktaAuth: OktaAuthIdxInterface,\n flow: FlowIdentifier\n) => FlowSpecification;\n\nconst ctx: {\n remediators: Record<string, RemediatorConstructor>,\n getFlowSpecification: GetFlowSpecification,\n} = {\n // default values to be used by minimal IDX API\n remediators: {},\n getFlowSpecification: function(_oktaAuth: OktaAuthIdxInterface, _flow: FlowIdentifier = 'default') {\n return {\n remediators: {}\n } as FlowSpecification;\n }\n};\n\n// should be set in createIdxAPI() factory\nexport function setRemediatorsCtx(newCtx: Partial<typeof ctx>) {\n Object.assign(ctx, newCtx);\n}\n\nexport function getFlowSpecification(oktaAuth: OktaAuthIdxInterface, flow: FlowIdentifier = 'default') {\n return ctx.getFlowSpecification(oktaAuth, flow);\n}\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key] && message.message === seen[key].message) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record<string, RemediatorConstructor> = Object.values(ctx.remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n const useGenericRemediator = options.useGenericRemediator;\n const {neededToProceed: idxRemediations, context} = idxResponse;\n\n let remediator: Remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n if (remediation) {\n const T = getRemediatorClass(remediation, options);\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate(context)) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\n"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ const getEmails = async (oktaAuth, options) => {
|
|
|
10
10
|
const transaction = await (0, _request.sendRequest)(oktaAuth, {
|
|
11
11
|
url: '/idp/myaccount/emails',
|
|
12
12
|
method: 'GET',
|
|
13
|
-
accessToken: options
|
|
13
|
+
accessToken: options?.accessToken
|
|
14
14
|
}, _transactions.EmailTransaction);
|
|
15
15
|
return transaction;
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emailApi.js","names":["getEmails","oktaAuth","options","transaction","sendRequest","url","method","accessToken","EmailTransaction","getEmail","id","addEmail","payload","deleteEmail","sendEmailChallenge","EmailChallengeTransaction","getEmailChallenge","emailId","challengeId","verifyEmailChallenge"],"sources":["../../../lib/myaccount/emailApi.ts"],"sourcesContent":["import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n EmailTransaction, \n EmailChallengeTransaction \n} from './transactions';\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmails: IAPIFunction<EmailTransaction[]> = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest<EmailTransaction, 'plural'>(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'GET',\n accessToken: options?.accessToken\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmail: IAPIFunction<EmailTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'GET',\n accessToken,\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const addEmail: IAPIFunction<EmailTransaction> = async (\n oktaAuth, \n options\n): Promise<EmailTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'POST',\n payload,\n accessToken,\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const deleteEmail: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'DELETE',\n accessToken\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const sendEmailChallenge: IAPIFunction<EmailChallengeTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}/challenge`,\n method: 'POST',\n accessToken,\n }, EmailChallengeTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmailChallenge: IAPIFunction<EmailChallengeTransaction> = async (\n oktaAuth, \n options\n) => {\n const { emailId, challengeId, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}`,\n method: 'POST',\n accessToken,\n }, EmailChallengeTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const verifyEmailChallenge: IAPIFunction<BaseTransaction> = async (\n oktaAuth,\n options\n) => {\n const { emailId, challengeId, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}/verify`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n"],"mappings":";;;AAAA;AAEA;AAMA;AACA;AACA;AACO,MAAMA,SAA2C,GAAG,OACzDC,QAAQ,EACRC,OAAQ,KACL;EACH,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAA6BH,QAAQ,EAAE;IAC1EI,GAAG,EAAE,uBAAuB;IAC5BC,MAAM,EAAE,KAAK;IACbC,WAAW,EAAEL,OAAO,
|
|
1
|
+
{"version":3,"file":"emailApi.js","names":["getEmails","oktaAuth","options","transaction","sendRequest","url","method","accessToken","EmailTransaction","getEmail","id","addEmail","payload","deleteEmail","sendEmailChallenge","EmailChallengeTransaction","getEmailChallenge","emailId","challengeId","verifyEmailChallenge"],"sources":["../../../lib/myaccount/emailApi.ts"],"sourcesContent":["import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n EmailTransaction, \n EmailChallengeTransaction \n} from './transactions';\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmails: IAPIFunction<EmailTransaction[]> = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest<EmailTransaction, 'plural'>(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'GET',\n accessToken: options?.accessToken\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmail: IAPIFunction<EmailTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'GET',\n accessToken,\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const addEmail: IAPIFunction<EmailTransaction> = async (\n oktaAuth, \n options\n): Promise<EmailTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'POST',\n payload,\n accessToken,\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const deleteEmail: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'DELETE',\n accessToken\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const sendEmailChallenge: IAPIFunction<EmailChallengeTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}/challenge`,\n method: 'POST',\n accessToken,\n }, EmailChallengeTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmailChallenge: IAPIFunction<EmailChallengeTransaction> = async (\n oktaAuth, \n options\n) => {\n const { emailId, challengeId, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}`,\n method: 'POST',\n accessToken,\n }, EmailChallengeTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const verifyEmailChallenge: IAPIFunction<BaseTransaction> = async (\n oktaAuth,\n options\n) => {\n const { emailId, challengeId, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}/verify`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ const getPassword = async (oktaAuth, options) => {
|
|
|
10
10
|
const transaction = await (0, _request.sendRequest)(oktaAuth, {
|
|
11
11
|
url: `/idp/myaccount/password`,
|
|
12
12
|
method: 'GET',
|
|
13
|
-
accessToken: options
|
|
13
|
+
accessToken: options?.accessToken
|
|
14
14
|
}, _transactions.PasswordTransaction);
|
|
15
15
|
return transaction;
|
|
16
16
|
};
|
|
@@ -59,7 +59,7 @@ const deletePassword = async (oktaAuth, options) => {
|
|
|
59
59
|
const transaction = await (0, _request.sendRequest)(oktaAuth, {
|
|
60
60
|
url: `/idp/myaccount/password`,
|
|
61
61
|
method: 'DELETE',
|
|
62
|
-
accessToken: options
|
|
62
|
+
accessToken: options?.accessToken
|
|
63
63
|
});
|
|
64
64
|
return transaction;
|
|
65
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passwordApi.js","names":["getPassword","oktaAuth","options","transaction","sendRequest","url","method","accessToken","PasswordTransaction","enrollPassword","payload","updatePassword","deletePassword"],"sources":["../../../lib/myaccount/passwordApi.ts"],"sourcesContent":["import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n PasswordTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.password.read\n */\nexport const getPassword: IAPIFunction<PasswordTransaction> = async (\n oktaAuth,\n options\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/password`,\n method: 'GET',\n accessToken: options?.accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const enrollPassword: IAPIFunction<PasswordTransaction> = async (\n oktaAuth, \n options\n): Promise<PasswordTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/password',\n method: 'POST',\n payload,\n accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const updatePassword: IAPIFunction<PasswordTransaction> = async (\n oktaAuth, \n options\n): Promise<PasswordTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/password',\n method: 'PUT',\n payload,\n accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const deletePassword: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options?\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/password`,\n method: 'DELETE',\n accessToken: options?.accessToken,\n });\n return transaction;\n};\n"],"mappings":";;;AAAA;AAEA;AAKA;AACA;AACA;AACO,MAAMA,WAA8C,GAAG,OAC5DC,QAAQ,EACRC,OAAO,KACJ;EACH,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAG,yBAAwB;IAC9BC,MAAM,EAAE,KAAK;IACbC,WAAW,EAAEL,OAAO,
|
|
1
|
+
{"version":3,"file":"passwordApi.js","names":["getPassword","oktaAuth","options","transaction","sendRequest","url","method","accessToken","PasswordTransaction","enrollPassword","payload","updatePassword","deletePassword"],"sources":["../../../lib/myaccount/passwordApi.ts"],"sourcesContent":["import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n PasswordTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.password.read\n */\nexport const getPassword: IAPIFunction<PasswordTransaction> = async (\n oktaAuth,\n options\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/password`,\n method: 'GET',\n accessToken: options?.accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const enrollPassword: IAPIFunction<PasswordTransaction> = async (\n oktaAuth, \n options\n): Promise<PasswordTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/password',\n method: 'POST',\n payload,\n accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const updatePassword: IAPIFunction<PasswordTransaction> = async (\n oktaAuth, \n options\n): Promise<PasswordTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/password',\n method: 'PUT',\n payload,\n accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const deletePassword: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options?\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/password`,\n method: 'DELETE',\n accessToken: options?.accessToken,\n });\n return transaction;\n};\n"],"mappings":";;;AAAA;AAEA;AAKA;AACA;AACA;AACO,MAAMA,WAA8C,GAAG,OAC5DC,QAAQ,EACRC,OAAO,KACJ;EACH,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAG,yBAAwB;IAC9BC,MAAM,EAAE,KAAK;IACbC,WAAW,EAAEL,OAAO,EAAEK;EACxB,CAAC,EAAEC,iCAAmB,CAAC;EACvB,OAAOL,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMM,cAAiD,GAAG,OAC/DR,QAAQ,EACRC,OAAO,KAC0B;EACjC,MAAM;IAAEK,WAAW;IAAEG;EAAQ,CAAC,GAAGR,OAAQ;EACzC,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAE,yBAAyB;IAC9BC,MAAM,EAAE,MAAM;IACdI,OAAO;IACPH;EACF,CAAC,EAAEC,iCAAmB,CAAC;EACvB,OAAOL,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMQ,cAAiD,GAAG,OAC/DV,QAAQ,EACRC,OAAO,KAC0B;EACjC,MAAM;IAAEK,WAAW;IAAEG;EAAQ,CAAC,GAAGR,OAAQ;EACzC,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAE,yBAAyB;IAC9BC,MAAM,EAAE,KAAK;IACbI,OAAO;IACPH;EACF,CAAC,EAAEC,iCAAmB,CAAC;EACvB,OAAOL,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMS,cAA6C,GAAG,OAC3DX,QAAQ,EACRC,OAAQ,KACL;EACH,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAG,yBAAwB;IAC9BC,MAAM,EAAE,QAAQ;IAChBC,WAAW,EAAEL,OAAO,EAAEK;EACxB,CAAC,CAAC;EACF,OAAOJ,WAAW;AACpB,CAAC;AAAC"}
|
|
@@ -10,7 +10,7 @@ const getPhones = async (oktaAuth, options) => {
|
|
|
10
10
|
const transaction = await (0, _request.sendRequest)(oktaAuth, {
|
|
11
11
|
url: '/idp/myaccount/phones',
|
|
12
12
|
method: 'GET',
|
|
13
|
-
accessToken: options
|
|
13
|
+
accessToken: options?.accessToken
|
|
14
14
|
}, _transactions.PhoneTransaction);
|
|
15
15
|
return transaction;
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phoneApi.js","names":["getPhones","oktaAuth","options","transaction","sendRequest","url","method","accessToken","PhoneTransaction","getPhone","id","addPhone","payload","deletePhone","sendPhoneChallenge","verifyPhoneChallenge"],"sources":["../../../lib/myaccount/phoneApi.ts"],"sourcesContent":["import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n PhoneTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhones: IAPIFunction<PhoneTransaction[]> = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest<PhoneTransaction, 'plural'>(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'GET',\n accessToken: options?.accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhone: IAPIFunction<PhoneTransaction> = async (\n oktaAuth,\n options\n) => {\n const { accessToken, id } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'GET',\n accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const addPhone: IAPIFunction<PhoneTransaction> = async (\n oktaAuth, \n options\n): Promise<PhoneTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'POST',\n payload,\n accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const deletePhone: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'DELETE',\n accessToken,\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const sendPhoneChallenge: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options\n) => {\n const { accessToken, id, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/challenge`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const verifyPhoneChallenge: IAPIFunction<BaseTransaction> = async (\n oktaAuth,\n options\n) => {\n const { id, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/verify`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n"],"mappings":";;;AAAA;AAEA;AAKA;AACA;AACA;AACO,MAAMA,SAA2C,GAAG,OACzDC,QAAQ,EACRC,OAAQ,KACL;EACH,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAA6BH,QAAQ,EAAE;IAC1EI,GAAG,EAAE,uBAAuB;IAC5BC,MAAM,EAAE,KAAK;IACbC,WAAW,EAAEL,OAAO,
|
|
1
|
+
{"version":3,"file":"phoneApi.js","names":["getPhones","oktaAuth","options","transaction","sendRequest","url","method","accessToken","PhoneTransaction","getPhone","id","addPhone","payload","deletePhone","sendPhoneChallenge","verifyPhoneChallenge"],"sources":["../../../lib/myaccount/phoneApi.ts"],"sourcesContent":["import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n PhoneTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhones: IAPIFunction<PhoneTransaction[]> = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest<PhoneTransaction, 'plural'>(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'GET',\n accessToken: options?.accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhone: IAPIFunction<PhoneTransaction> = async (\n oktaAuth,\n options\n) => {\n const { accessToken, id } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'GET',\n accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const addPhone: IAPIFunction<PhoneTransaction> = async (\n oktaAuth, \n options\n): Promise<PhoneTransaction> => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'POST',\n payload,\n accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const deletePhone: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'DELETE',\n accessToken,\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const sendPhoneChallenge: IAPIFunction<BaseTransaction> = async (\n oktaAuth, \n options\n) => {\n const { accessToken, id, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/challenge`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const verifyPhoneChallenge: IAPIFunction<BaseTransaction> = async (\n oktaAuth,\n options\n) => {\n const { id, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/verify`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n"],"mappings":";;;AAAA;AAEA;AAKA;AACA;AACA;AACO,MAAMA,SAA2C,GAAG,OACzDC,QAAQ,EACRC,OAAQ,KACL;EACH,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAA6BH,QAAQ,EAAE;IAC1EI,GAAG,EAAE,uBAAuB;IAC5BC,MAAM,EAAE,KAAK;IACbC,WAAW,EAAEL,OAAO,EAAEK;EACxB,CAAC,EAAEC,8BAAgB,CAAC;EACpB,OAAOL,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMM,QAAwC,GAAG,OACtDR,QAAQ,EACRC,OAAO,KACJ;EACH,MAAM;IAAEK,WAAW;IAAEG;EAAG,CAAC,GAAGR,OAAQ;EACpC,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAG,yBAAwBK,EAAG,EAAC;IAClCJ,MAAM,EAAE,KAAK;IACbC;EACF,CAAC,EAAEC,8BAAgB,CAAC;EACpB,OAAOL,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMQ,QAAwC,GAAG,OACtDV,QAAQ,EACRC,OAAO,KACuB;EAC9B,MAAM;IAAEK,WAAW;IAAEK;EAAQ,CAAC,GAAGV,OAAQ;EACzC,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAE,uBAAuB;IAC5BC,MAAM,EAAE,MAAM;IACdM,OAAO;IACPL;EACF,CAAC,EAAEC,8BAAgB,CAAC;EACpB,OAAOL,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMU,WAA0C,GAAG,OACxDZ,QAAQ,EACRC,OAAO,KACJ;EACH,MAAM;IAAEQ,EAAE;IAAEH;EAAY,CAAC,GAAGL,OAAQ;EACpC,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAG,yBAAwBK,EAAG,EAAC;IAClCJ,MAAM,EAAE,QAAQ;IAChBC;EACF,CAAC,CAAC;EACF,OAAOJ,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMW,kBAAiD,GAAG,OAC/Db,QAAQ,EACRC,OAAO,KACJ;EACH,MAAM;IAAEK,WAAW;IAAEG,EAAE;IAAEE;EAAQ,CAAC,GAAGV,OAAQ;EAC7C,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAG,yBAAwBK,EAAG,YAAW;IAC5CJ,MAAM,EAAE,MAAM;IACdM,OAAO;IACPL;EACF,CAAC,CAAC;EACF,OAAOJ,WAAW;AACpB,CAAC;;AAED;AACA;AACA;AAFA;AAGO,MAAMY,oBAAmD,GAAG,OACjEd,QAAQ,EACRC,OAAO,KACJ;EACH,MAAM;IAAEQ,EAAE;IAAEE,OAAO;IAAEL;EAAY,CAAC,GAAGL,OAAQ;EAC7C,MAAMC,WAAW,GAAG,MAAM,IAAAC,oBAAW,EAACH,QAAQ,EAAE;IAC9CI,GAAG,EAAG,yBAAwBK,EAAG,SAAQ;IACzCJ,MAAM,EAAE,MAAM;IACdM,OAAO;IACPL;EACF,CAAC,CAAC;EACF,OAAOJ,WAAW;AACpB,CAAC;AAAC"}
|
|
@@ -10,7 +10,7 @@ const getProfile = async (oktaAuth, options) => {
|
|
|
10
10
|
const transaction = await (0, _request.sendRequest)(oktaAuth, {
|
|
11
11
|
url: '/idp/myaccount/profile',
|
|
12
12
|
method: 'GET',
|
|
13
|
-
accessToken: options
|
|
13
|
+
accessToken: options?.accessToken
|
|
14
14
|
}, _transactions.ProfileTransaction);
|
|
15
15
|
return transaction;
|
|
16
16
|
};
|
|
@@ -41,7 +41,7 @@ const getProfileSchema = async (oktaAuth, options) => {
|
|
|
41
41
|
const transaction = await (0, _request.sendRequest)(oktaAuth, {
|
|
42
42
|
url: '/idp/myaccount/profile/schema',
|
|
43
43
|
method: 'GET',
|
|
44
|
-
accessToken: options
|
|
44
|
+
accessToken: options?.accessToken
|
|
45
45
|
}, _transactions.ProfileSchemaTransaction);
|
|
46
46
|
return transaction;
|
|
47
47
|
};
|