@okta/okta-auth-js 6.7.0 → 6.7.3
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 +26 -2
- package/cjs/OktaUserAgent.js +2 -2
- package/cjs/idx/flow/AuthenticationFlow.js +2 -0
- package/cjs/idx/flow/AuthenticationFlow.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +25 -10
- package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/util.js +13 -5
- package/cjs/idx/remediators/GenericRemediator/util.js.map +1 -1
- package/cjs/idx/types/idx-js.js.map +1 -1
- package/cjs/idx/util.js +34 -2
- package/cjs/idx/util.js.map +1 -1
- package/cjs/util/misc.js +8 -0
- package/cjs/util/misc.js.map +1 -1
- package/dist/okta-auth-js.min.js +1 -1
- package/dist/okta-auth-js.min.js.map +1 -1
- package/dist/okta-auth-js.umd.js +1 -1
- package/dist/okta-auth-js.umd.js.map +1 -1
- package/esm/browser/OktaUserAgent.js +2 -2
- package/esm/browser/idx/flow/AuthenticationFlow.js +4 -2
- package/esm/browser/idx/flow/AuthenticationFlow.js.map +1 -1
- package/esm/browser/idx/remediators/GenericRemediator/GenericRemediator.js +8 -6
- package/esm/browser/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
- package/esm/browser/idx/remediators/GenericRemediator/util.js +11 -53
- package/esm/browser/idx/remediators/GenericRemediator/util.js.map +1 -1
- package/esm/browser/idx/types/idx-js.js.map +1 -1
- package/esm/browser/idx/util.js +13 -2
- package/esm/browser/idx/util.js.map +1 -1
- package/esm/browser/index.js +1 -1
- package/esm/browser/util/misc.js +8 -1
- package/esm/browser/util/misc.js.map +1 -1
- package/esm/node/OktaUserAgent.js +2 -2
- package/esm/node/idx/flow/AuthenticationFlow.js +4 -2
- package/esm/node/idx/flow/AuthenticationFlow.js.map +1 -1
- package/esm/node/idx/remediators/GenericRemediator/GenericRemediator.js +8 -6
- package/esm/node/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
- package/esm/node/idx/remediators/GenericRemediator/util.js +11 -53
- package/esm/node/idx/remediators/GenericRemediator/util.js.map +1 -1
- package/esm/node/idx/types/idx-js.js.map +1 -1
- package/esm/node/idx/util.js +13 -2
- package/esm/node/idx/util.js.map +1 -1
- package/esm/node/index.js +1 -1
- package/esm/node/util/misc.js +8 -1
- package/esm/node/util/misc.js.map +1 -1
- package/lib/idx/types/idx-js.d.ts +12 -0
- package/lib/util/misc.d.ts +1 -0
- package/package.json +3 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 6.7.3
|
|
4
|
+
|
|
5
|
+
- [#1264](https://github.com/okta/okta-auth-js/pull/1264) IDX GenericRemediator patches (beta):
|
|
6
|
+
- allows proceeding when `options.step` is available
|
|
7
|
+
|
|
8
|
+
## 6.7.2
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
|
|
12
|
+
- [#1251](https://github.com/okta/okta-auth-js/pull/1251) IDX GenericRemediator patches (beta):
|
|
13
|
+
- allows flow entry point requests
|
|
14
|
+
|
|
15
|
+
## 6.7.1
|
|
16
|
+
|
|
17
|
+
### Fixes
|
|
18
|
+
|
|
19
|
+
- [#1245](https://github.com/okta/okta-auth-js/pull/1245) IDX GenericRemediator patches (beta):
|
|
20
|
+
- disables client side validation
|
|
21
|
+
- fixes ion response primitive types transformation issue
|
|
22
|
+
- adds missing types to `IdxAuthenticator`
|
|
23
|
+
- adds missing action meta to `IdxTransaction.availableSteps`
|
|
24
|
+
|
|
25
|
+
- [#1247](https://github.com/okta/okta-auth-js/pull/1247) - Fixes OV enrollment flow issue in authentication flow.
|
|
26
|
+
|
|
3
27
|
## 6.7.0
|
|
4
28
|
|
|
5
|
-
|
|
29
|
+
### Features
|
|
6
30
|
|
|
7
31
|
- [#1197](https://github.com/okta/okta-auth-js/pull/1197)
|
|
8
32
|
- Changes implementation of `SyncStorageService` using `broadcast-channel` instead of using `StorageEvent`. Supports `localStorage` and `cookie` storage.
|
|
@@ -25,7 +49,7 @@
|
|
|
25
49
|
|
|
26
50
|
## 6.6.0
|
|
27
51
|
|
|
28
|
-
|
|
52
|
+
### Features
|
|
29
53
|
|
|
30
54
|
- [#1225](https://github.com/okta/okta-auth-js/pull/1225) `oktaAuth.start`/`oktaAuth.stop` now return a `Promise`, ensures services have started/stopped before resolving
|
|
31
55
|
### Fixes
|
package/cjs/OktaUserAgent.js
CHANGED
|
@@ -21,7 +21,7 @@ var _features = require("./features");
|
|
|
21
21
|
class OktaUserAgent {
|
|
22
22
|
constructor() {
|
|
23
23
|
// add base sdk env
|
|
24
|
-
this.environments = [`okta-auth-js/${"6.7.
|
|
24
|
+
this.environments = [`okta-auth-js/${"6.7.3"}`];
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
addEnvironment(env) {
|
|
@@ -36,7 +36,7 @@ class OktaUserAgent {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
getVersion() {
|
|
39
|
-
return "6.7.
|
|
39
|
+
return "6.7.3";
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
maybeAddNodeEnvironment() {
|
|
@@ -26,6 +26,8 @@ const AuthenticationFlow = {
|
|
|
26
26
|
'challenge-poll': _remediators.ChallengePoll,
|
|
27
27
|
'reenroll-authenticator': _remediators.ReEnrollAuthenticator,
|
|
28
28
|
'enroll-poll': _remediators.EnrollPoll,
|
|
29
|
+
'select-enrollment-channel': _remediators.SelectEnrollmentChannel,
|
|
30
|
+
'enrollment-channel-data': _remediators.EnrollmentChannelData,
|
|
29
31
|
'redirect-idp': _remediators.RedirectIdp,
|
|
30
32
|
'skip': _remediators.Skip
|
|
31
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticationFlow.js","names":["AuthenticationFlow","Identify","SelectAuthenticatorAuthenticate","SelectAuthenticatorEnroll","AuthenticatorEnrollmentData","AuthenticatorVerificationData","EnrollAuthenticator","ChallengeAuthenticator","ChallengePoll","ReEnrollAuthenticator","EnrollPoll","RedirectIdp","Skip"],"sources":["../../../../lib/idx/flow/AuthenticationFlow.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 { RemediationFlow } from './RemediationFlow';\nimport { \n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ReEnrollAuthenticator,\n RedirectIdp,\n AuthenticatorEnrollmentData,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorVerificationData,\n EnrollPoll,\n ChallengePoll
|
|
1
|
+
{"version":3,"file":"AuthenticationFlow.js","names":["AuthenticationFlow","Identify","SelectAuthenticatorAuthenticate","SelectAuthenticatorEnroll","AuthenticatorEnrollmentData","AuthenticatorVerificationData","EnrollAuthenticator","ChallengeAuthenticator","ChallengePoll","ReEnrollAuthenticator","EnrollPoll","SelectEnrollmentChannel","EnrollmentChannelData","RedirectIdp","Skip"],"sources":["../../../../lib/idx/flow/AuthenticationFlow.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 { RemediationFlow } from './RemediationFlow';\nimport { \n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ReEnrollAuthenticator,\n RedirectIdp,\n AuthenticatorEnrollmentData,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorVerificationData,\n EnrollPoll,\n ChallengePoll,\n SelectEnrollmentChannel,\n EnrollmentChannelData,\n Skip\n} from '../remediators';\n\nexport const AuthenticationFlow: RemediationFlow = {\n 'identify': Identify,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'enroll-authenticator': EnrollAuthenticator,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'challenge-poll': ChallengePoll,\n 'reenroll-authenticator': ReEnrollAuthenticator,\n 'enroll-poll': EnrollPoll,\n 'select-enrollment-channel': SelectEnrollmentChannel,\n 'enrollment-channel-data': EnrollmentChannelData,\n 'redirect-idp': RedirectIdp,\n 'skip': Skip,\n};\n"],"mappings":";;;;AAcA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAqBO,MAAMA,kBAAmC,GAAG;EACjD,YAAYC,qBADqC;EAEjD,qCAAqCC,4CAFY;EAGjD,+BAA+BC,sCAHkB;EAIjD,iCAAiCC,wCAJgB;EAKjD,mCAAmCC,0CALc;EAMjD,wBAAwBC,gCANyB;EAOjD,2BAA2BC,mCAPsB;EAQjD,kBAAkBC,0BAR+B;EASjD,0BAA0BC,kCATuB;EAUjD,eAAeC,uBAVkC;EAWjD,6BAA6BC,oCAXoB;EAYjD,2BAA2BC,kCAZsB;EAajD,gBAAgBC,wBAbiC;EAcjD,QAAQC;AAdyC,CAA5C"}
|
|
@@ -4,6 +4,8 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
4
4
|
|
|
5
5
|
exports.GenericRemediator = void 0;
|
|
6
6
|
|
|
7
|
+
var _endsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/ends-with"));
|
|
8
|
+
|
|
7
9
|
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
8
10
|
|
|
9
11
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
|
|
@@ -18,22 +20,35 @@ var _util = require("./util");
|
|
|
18
20
|
|
|
19
21
|
class GenericRemediator extends _Remediator.Remediator {
|
|
20
22
|
canRemediate() {
|
|
23
|
+
var _context2;
|
|
24
|
+
|
|
21
25
|
// only handle remediations that are able to submit form (xhr)
|
|
22
26
|
if (typeof this.remediation.action !== 'function') {
|
|
23
27
|
return false;
|
|
28
|
+
} // DO NOT REMOVE - bring it back when enable client side validation for GenericRemediator - OKTA-512003
|
|
29
|
+
// const inputs = this.getInputs();
|
|
30
|
+
// const res = inputs.reduce((acc, input) => {
|
|
31
|
+
// return acc && hasValidInputValue(input, this.values);
|
|
32
|
+
// }, true);
|
|
33
|
+
// return res;
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
if (this.remediation.name === 'poll' || (0, _endsWith.default)(_context2 = this.remediation.name).call(_context2, '-poll')) {
|
|
37
|
+
return true;
|
|
24
38
|
}
|
|
25
39
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
if (this.options.step) {
|
|
41
|
+
return true;
|
|
42
|
+
} // disable auto proceed for unknown remediations
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
return false;
|
|
31
46
|
}
|
|
32
47
|
|
|
33
48
|
getData() {
|
|
34
|
-
var
|
|
49
|
+
var _context3;
|
|
35
50
|
|
|
36
|
-
const data = (0, _reduce.default)(
|
|
51
|
+
const data = (0, _reduce.default)(_context3 = this.getInputs()).call(_context3, (acc, {
|
|
37
52
|
name
|
|
38
53
|
}) => {
|
|
39
54
|
acc[name] = (0, _values.default)(this)[name];
|
|
@@ -84,11 +99,11 @@ class GenericRemediator extends _Remediator.Remediator {
|
|
|
84
99
|
}
|
|
85
100
|
|
|
86
101
|
getInputs() {
|
|
87
|
-
var
|
|
102
|
+
var _context4, _context5, _context6;
|
|
88
103
|
|
|
89
|
-
return (0, _map.default)(
|
|
104
|
+
return (0, _map.default)(_context4 = (0, _map.default)(_context5 = (0, _filter.default)(_context6 = this.remediation.value || []).call(_context6, ({
|
|
90
105
|
name
|
|
91
|
-
}) => name !== 'stateHandle')).call(
|
|
106
|
+
}) => name !== 'stateHandle')).call(_context5, _util.unwrapFormValue)).call(_context4, input => {
|
|
92
107
|
// use string as default input type
|
|
93
108
|
input.type = input.type || 'string';
|
|
94
109
|
return input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericRemediator.js","names":["GenericRemediator","Remediator","canRemediate","remediation","action","
|
|
1
|
+
{"version":3,"file":"GenericRemediator.js","names":["GenericRemediator","Remediator","canRemediate","remediation","action","name","options","step","getData","data","getInputs","acc","getNextStep","authClient","_context","getName","inputs","href","method","rel","accepts","produces","value","rest","length","params","idx","proceed","unwrapFormValue","input","type"],"sources":["../../../../../lib/idx/remediators/GenericRemediator/GenericRemediator.ts"],"sourcesContent":["import { IdxContext, NextStep, Input } from '../../types';\nimport { Remediator } from '../Base/Remediator';\nimport { unwrapFormValue } from './util';\nimport { OktaAuthIdxInterface } from '../../../types';\n\nexport class GenericRemediator extends Remediator {\n canRemediate(): boolean {\n // only handle remediations that are able to submit form (xhr)\n if (typeof this.remediation.action !== 'function') {\n return false;\n }\n\n // DO NOT REMOVE - bring it back when enable client side validation for GenericRemediator - OKTA-512003\n // const inputs = this.getInputs();\n // const res = inputs.reduce((acc, input) => {\n // return acc && hasValidInputValue(input, this.values);\n // }, true);\n // return res;\n\n if (this.remediation.name === 'poll' || this.remediation.name.endsWith('-poll')) {\n return true;\n }\n\n if (this.options.step) {\n return true;\n }\n \n // disable auto proceed for unknown remediations\n return false;\n }\n\n getData() {\n const data = this.getInputs().reduce((acc, { name }) => {\n acc[name] = this.values[name];\n return acc;\n }, {});\n return data;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n \n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n // excludes transformed fields\n const { \n // http metas have been transformed to action\n href, \n method, \n rel, \n accepts, \n produces, \n // value has been transform to inputs\n value,\n // will be transformed to a function that resolves IdxTransaction\n action,\n ...rest \n } = this.remediation;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n\n // step to handle form submission\n if (action) {\n return { \n ...rest,\n ...(!!inputs.length && { inputs }),\n action: async (params?) => {\n return authClient.idx.proceed({\n step: name,\n ...params\n });\n }\n };\n }\n\n // return whole remediation data for other steps, eg \"redirect-idp\"\n return { ...this.remediation } as NextStep;\n \n }\n\n getInputs(): Input[] {\n return (this.remediation.value || [])\n .filter(({ name }) => name !== 'stateHandle')\n .map(unwrapFormValue)\n .map(input => {\n // use string as default input type\n input.type = input.type || 'string';\n return input;\n });\n }\n\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA;;AACA;;AAGO,MAAMA,iBAAN,SAAgCC,sBAAhC,CAA2C;EAChDC,YAAY,GAAY;IAAA;;IACtB;IACA,IAAI,OAAO,KAAKC,WAAL,CAAiBC,MAAxB,KAAmC,UAAvC,EAAmD;MACjD,OAAO,KAAP;IACD,CAJqB,CAMtB;IACA;IACA;IACA;IACA;IACA;;;IAEA,IAAI,KAAKD,WAAL,CAAiBE,IAAjB,KAA0B,MAA1B,IAAoC,wCAAKF,WAAL,CAAiBE,IAAjB,kBAA+B,OAA/B,CAAxC,EAAiF;MAC/E,OAAO,IAAP;IACD;;IAED,IAAI,KAAKC,OAAL,CAAaC,IAAjB,EAAuB;MACrB,OAAO,IAAP;IACD,CAnBqB,CAqBtB;;;IACA,OAAO,KAAP;EACD;;EAEDC,OAAO,GAAG;IAAA;;IACR,MAAMC,IAAI,GAAG,sCAAKC,SAAL,oBAAwB,CAACC,GAAD,EAAM;MAAEN;IAAF,CAAN,KAAmB;MACtDM,GAAG,CAACN,IAAD,CAAH,GAAY,2BAAYA,IAAZ,CAAZ;MACA,OAAOM,GAAP;IACD,CAHY,EAGV,EAHU,CAAb;IAIA,OAAOF,IAAP;EACD;;EAEDG,WAAW,CAACC,UAAD,EAAmCC,QAAnC,EAAoE;IAC7E,MAAMT,IAAI,GAAG,KAAKU,OAAL,EAAb;IACA,MAAMC,MAAM,GAAG,KAAKN,SAAL,EAAf;IAEA;IACA;;IACA,MAAM;MACJ;MACAO,IAFI;MAGJC,MAHI;MAIJC,GAJI;MAKJC,OALI;MAMJC,QANI;MAOJ;MACAC,KARI;MASJ;MACAlB,MAVI;MAWJ,GAAGmB;IAXC,IAYF,KAAKpB,WAZT;IAaA;IAEA;;IACA,IAAIC,MAAJ,EAAY;MACV,OAAO,EACL,GAAGmB,IADE;QAEL,IAAI,CAAC,CAACP,MAAM,CAACQ,MAAT,IAAmB;UAAER;QAAF,CAAvB,CAFK;QAGLZ,MAAM,EAAE,MAAOqB,MAAP,IAAmB;UACzB,OAAOZ,UAAU,CAACa,GAAX,CAAeC,OAAf,CAAuB;YAC5BpB,IAAI,EAAEF,IADsB;YAE5B,GAAGoB;UAFyB,CAAvB,CAAP;QAID;MARI,CAAP;IAUD,CAjC4E,CAmC7E;;;IACA,OAAO,EAAE,GAAG,KAAKtB;IAAV,CAAP;EAED;;EAEDO,SAAS,GAAY;IAAA;;IACnB,OAAO,6FAAC,KAAKP,WAAL,CAAiBmB,KAAjB,IAA0B,EAA3B,kBACG,CAAC;MAAEjB;IAAF,CAAD,KAAcA,IAAI,KAAK,aAD1B,mBAEAuB,qBAFA,mBAGAC,KAAK,IAAI;MACZ;MACAA,KAAK,CAACC,IAAN,GAAaD,KAAK,CAACC,IAAN,IAAc,QAA3B;MACA,OAAOD,KAAP;IACD,CAPI,CAAP;EAQD;;AAnF+C"}
|
|
@@ -5,10 +5,10 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
5
5
|
exports.unwrapFormValue = unwrapFormValue;
|
|
6
6
|
exports.hasValidInputValue = hasValidInputValue;
|
|
7
7
|
|
|
8
|
-
var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
|
|
9
|
-
|
|
10
8
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
11
9
|
|
|
10
|
+
var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
|
|
11
|
+
|
|
12
12
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
13
13
|
|
|
14
14
|
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
@@ -25,6 +25,16 @@ var _errors = require("../../../errors");
|
|
|
25
25
|
|
|
26
26
|
/* eslint-disable complexity */
|
|
27
27
|
function unwrapFormValue(remediation) {
|
|
28
|
+
if (Array.isArray(remediation)) {
|
|
29
|
+
return (0, _map.default)(remediation).call(remediation, item => {
|
|
30
|
+
if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') {
|
|
31
|
+
return item;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return unwrapFormValue(item);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
28
38
|
const res = {};
|
|
29
39
|
|
|
30
40
|
for (const [key, value] of (0, _entries.default)(remediation)) {
|
|
@@ -32,9 +42,7 @@ function unwrapFormValue(remediation) {
|
|
|
32
42
|
continue;
|
|
33
43
|
}
|
|
34
44
|
|
|
35
|
-
if (
|
|
36
|
-
res[key] = (0, _map.default)(value).call(value, unwrapFormValue);
|
|
37
|
-
} else if (typeof value === 'object') {
|
|
45
|
+
if (typeof value === 'object') {
|
|
38
46
|
var _context, _context2;
|
|
39
47
|
|
|
40
48
|
const formKeys = (0, _keys.default)(value); // detect patterns like:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":["unwrapFormValue","remediation","
|
|
1
|
+
{"version":3,"file":"util.js","names":["unwrapFormValue","remediation","Array","isArray","item","res","key","value","formKeys","length","unwrappedForm","forEach","hasValidInputValue","input","values","fn","requiredTracker","name","type","options","required","isRequired","acc","selectedOption","id","optionSchema","option","idSchema","AuthSdkError"],"sources":["../../../../../lib/idx/remediators/GenericRemediator/util.ts"],"sourcesContent":["/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { Input } from '../../types';\n\nexport function unwrapFormValue(remediation): Input { \n if (Array.isArray(remediation)) {\n return remediation\n .map(item => {\n if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') {\n return item;\n }\n return unwrapFormValue(item);\n }) as any;\n }\n\n const res = {};\n for (const [key, value] of Object.entries(remediation)) {\n if (value === null || typeof value === 'undefined') {\n continue;\n }\n\n if (typeof value === 'object') {\n const formKeys = Object.keys(value as object);\n // detect patterns like:\n // value -> form -> value | form -> value\n if (['value', 'form'].includes(key) \n && formKeys.length === 1 \n && ['value', 'form'].includes(formKeys[0])\n ) {\n // unwrap nested form\n const unwrappedForm = unwrapFormValue(value);\n Object.entries(unwrappedForm).forEach(([key, value]) => {\n res[key] = value;\n });\n } else {\n // dfs\n res[key] = unwrapFormValue(value);\n }\n } else {\n // handle primitive value\n res[key] = value;\n }\n }\n\n return res as Input;\n}\n\n// only check if value is required for now\n// TODO: support SDK layer type based input validation\nexport function hasValidInputValue(input, values) {\n const fn = (input, values, requiredTracker) => {\n const { name, value, type, options, required } = input;\n const isRequired = required || requiredTracker;\n\n // handle nested value - all required fields should be avaiable in values \n if (Array.isArray(value)) {\n return value.reduce((acc, item) => {\n return acc && fn(item, values[name], isRequired); // recursive call\n }, true);\n }\n\n // handle options field\n // 1. object type options - check if each object field is required and value can be found from the selectedOption\n // 2. primitive options - required field is avaiable from top level\n // 3. unknown format - pass to backend for validation\n if (options) {\n // object type options\n if (type === 'object') {\n const selectedOption = values[name];\n if (!selectedOption) {\n return false;\n }\n if (!selectedOption.id) {\n // unknown option format, pass to backend for validation\n return true;\n }\n const optionSchema = options.find((option) => {\n const idSchema = option.value.find(({ name }) => name === 'id' );\n return idSchema.value === selectedOption.id;\n });\n if (!optionSchema) {\n return false;\n }\n return optionSchema.value\n .filter(({ required }) => !!required)\n .reduce((acc, { name }) => {\n return acc && !!selectedOption[name];\n }, true);\n }\n\n // primitive options, not required - always valid\n if (required === false) {\n return true;\n }\n\n // primitive options, required - check if value is available\n if (required === true) {\n return !!values[name];\n }\n\n // unknown options, throw\n throw new AuthSdkError(`Unknown options type, ${JSON.stringify(input)}`);\n }\n\n // base case\n if (!isRequired) {\n return true;\n }\n \n return !!(values && values[name]);\n };\n\n return fn(input, values, false);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idx-js.js","names":["isRawIdxResponse","obj","version","isIdxResponse","rawIdxState"],"sources":["../../../../lib/idx/types/idx-js.ts"],"sourcesContent":["/* eslint-disable no-use-before-define */\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\nimport { Input } from './api';\n\n\n// TODO: remove when idx-js provides type information\n\nexport interface ChallengeData {\n challenge: string; \n userVerification: string; \n extensions?: {\n appid: string;\n };\n}\nexport interface ActivationData {\n challenge: string;\n rp: {\n name: string;\n };\n user: {\n id: string;\n name: string;\n displayName: string;\n };\n pubKeyCredParams: {\n type: string;\n alg: number;\n }[];\n attestation?: string;\n authenticatorSelection?: {\n userVerification?: string;\n authenticatorAttachment?: string;\n requireResidentKey?: boolean;\n residentKey?: string;\n };\n excludeCredentials?: {\n id: string;\n type: string;\n }[];\n}\nexport interface IdxAuthenticatorMethod {\n type: string;\n}\nexport interface IdxAuthenticator {\n displayName: string;\n id: string;\n key: string;\n methods: IdxAuthenticatorMethod[];\n type: string;\n settings?: {\n complexity?: unknown;\n age?: unknown;\n };\n contextualData?: {\n enrolledQuestion?: {\n question: string;\n questionKey: string;\n };\n qrcode?: { \n href: string; \n method: string; \n type: string; \n };\n sharedSecret?: string;\n questions?: {\n questionKey: string;\n question: string;\n }[];\n questionKeys?: string[];\n selectedChannel?: string;\n activationData?: ActivationData;\n challengeData?: ChallengeData;\n };\n credentialId?: string;\n enrollmentId?: string;\n}\n\nexport interface IdxForm {\n value: IdxRemediationValue[];\n}\n\nexport interface IdxOption {\n value: string | {form: IdxForm} | Input[];\n label: string;\n relatesTo?: IdxAuthenticator;\n}\n\nexport interface IdpConfig {\n id: string;\n name: string;\n}\n\nexport interface IdxRemediationValueForm {\n form: IdxForm;\n}\n\nexport interface IdxRemediationValue {\n name: string;\n type?: string;\n required?: boolean;\n secret?: boolean;\n visible?: boolean;\n mutable?: boolean;\n value?: string | IdxRemediationValueForm;\n label?: string;\n form?: IdxForm;\n options?: IdxOption[];\n messages?: IdxMessages;\n minLength?: number;\n maxLength?: number;\n}\n\nexport interface IdxRemediation {\n name: string;\n label?: string;\n value?: IdxRemediationValue[];\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n idp?: IdpConfig;\n href?: string;\n method?: string;\n type?: string;\n accepts?: string;\n produces?: string;\n refresh?: number;\n rel?: string[];\n action?: (payload?: IdxActionParams) => Promise<IdxResponse>;\n}\n\nexport interface IdxContext {\n version: string;\n stateHandle: string;\n expiresAt: string;\n intent: string;\n currentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n authenticators: {\n type: string;\n value: IdxAuthenticator[];\n };\n authenticatorEnrollments: {\n type: string;\n value: IdxAuthenticator[];\n };\n enrollmentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n user?: {\n type: string;\n value: Record<string, unknown>;\n };\n app: {\n type: string;\n value: Record<string, unknown>;\n };\n messages?: IdxMessages;\n success?: IdxRemediation;\n failure?: IdxRemediation;\n}\n\nexport interface IdxMessage {\n message: string;\n class: string;\n i18n: {\n key: string;\n params?: unknown[];\n };\n}\n\nexport interface IdxMessages {\n type: 'array';\n value: IdxMessage[];\n}\n\n// JSON response from the server\nexport interface RawIdxResponse {\n version: string;\n stateHandle: string;\n intent?: string;\n expiresAt?: string;\n remediation?: {\n type: 'array';\n value: IdxRemediation[];\n };\n messages?: IdxMessages;\n success?: boolean;\n successWithInteractionCode?: IdxRemediation;\n}\n\nexport function isRawIdxResponse(obj: any): obj is RawIdxResponse {\n return obj && obj.version;\n}\n\nexport interface IdxActionParams {\n [key: string]: string | boolean | number | object;\n}\n\nexport interface IdxActions {\n [key: string]: (params?: IdxActionParams) => Promise<IdxResponse>;\n}\n\nexport interface IdxToPersist {\n interactionHandle?: string;\n withCredentials?: boolean;\n}\n\nexport interface IdxActionFunction {\n (params: IdxActionParams): Promise<IdxResponse>;\n neededParams?: Array<Array<IdxRemediationValue>>;\n}\n\nexport interface IdxResponse {\n proceed: (remediationName: string, params: unknown) => Promise<IdxResponse>;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n toPersist: IdxToPersist;\n context?: IdxContext;\n requestDidSucceed?: boolean;\n stepUp?: boolean;\n}\n\nexport function isIdxResponse(obj: any): obj is IdxResponse {\n return obj && isRawIdxResponse(obj.rawIdxState);\n}\n"],"mappings":";;;;;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;
|
|
1
|
+
{"version":3,"file":"idx-js.js","names":["isRawIdxResponse","obj","version","isIdxResponse","rawIdxState"],"sources":["../../../../lib/idx/types/idx-js.ts"],"sourcesContent":["/* eslint-disable no-use-before-define */\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\nimport { Input } from './api';\n\n\n// TODO: remove when idx-js provides type information\n\nexport interface ChallengeData {\n challenge: string; \n userVerification: string; \n extensions?: {\n appid: string;\n };\n}\nexport interface ActivationData {\n challenge: string;\n rp: {\n name: string;\n };\n user: {\n id: string;\n name: string;\n displayName: string;\n };\n pubKeyCredParams: {\n type: string;\n alg: number;\n }[];\n attestation?: string;\n authenticatorSelection?: {\n userVerification?: string;\n authenticatorAttachment?: string;\n requireResidentKey?: boolean;\n residentKey?: string;\n };\n excludeCredentials?: {\n id: string;\n type: string;\n }[];\n}\nexport interface IdxAuthenticatorMethod {\n type: string;\n}\nexport interface IdxAuthenticator {\n displayName: string;\n id: string;\n key: string;\n methods: IdxAuthenticatorMethod[];\n type: string;\n settings?: {\n complexity?: unknown;\n age?: unknown;\n };\n contextualData?: {\n enrolledQuestion?: {\n question: string;\n questionKey: string;\n };\n qrcode?: { \n href: string; \n method: string; \n type: string; \n };\n sharedSecret?: string;\n questions?: {\n questionKey: string;\n question: string;\n }[];\n questionKeys?: string[];\n selectedChannel?: string;\n activationData?: ActivationData;\n challengeData?: ChallengeData;\n };\n credentialId?: string;\n enrollmentId?: string;\n profile?: Record<string, unknown>;\n resend?: Record<string, unknown>;\n poll?: Record<string, unknown>;\n recover?: Record<string, unknown>;\n}\n\nexport interface IdxForm {\n value: IdxRemediationValue[];\n}\n\nexport interface IdxOption {\n value: string | {form: IdxForm} | Input[];\n label: string;\n relatesTo?: IdxAuthenticator;\n}\n\nexport interface IdpConfig {\n id: string;\n name: string;\n}\n\nexport interface IdxRemediationValueForm {\n form: IdxForm;\n}\n\nexport interface IdxRemediationValue {\n name: string;\n type?: string;\n required?: boolean;\n secret?: boolean;\n visible?: boolean;\n mutable?: boolean;\n value?: string | IdxRemediationValueForm;\n label?: string;\n form?: IdxForm;\n options?: IdxOption[];\n messages?: IdxMessages;\n minLength?: number;\n maxLength?: number;\n}\n\nexport interface IdxRemediation {\n name: string;\n label?: string;\n value?: IdxRemediationValue[];\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n idp?: IdpConfig;\n href?: string;\n method?: string;\n type?: string;\n accepts?: string;\n produces?: string;\n refresh?: number;\n rel?: string[];\n action?: (payload?: IdxActionParams) => Promise<IdxResponse>;\n}\n\nexport interface IdxContext {\n version: string;\n stateHandle: string;\n expiresAt: string;\n intent: string;\n currentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n authenticators: {\n type: string;\n value: IdxAuthenticator[];\n };\n authenticatorEnrollments: {\n type: string;\n value: IdxAuthenticator[];\n };\n enrollmentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n user?: {\n type: string;\n value: Record<string, unknown>;\n };\n app: {\n type: string;\n value: Record<string, unknown>;\n };\n messages?: IdxMessages;\n success?: IdxRemediation;\n failure?: IdxRemediation;\n}\n\nexport interface IdxMessage {\n message: string;\n class: string;\n i18n: {\n key: string;\n params?: unknown[];\n };\n}\n\nexport interface IdxMessages {\n type: 'array';\n value: IdxMessage[];\n}\n\n// JSON response from the server\nexport interface RawIdxResponse {\n version: string;\n stateHandle: string;\n intent?: string;\n expiresAt?: string;\n remediation?: {\n type: 'array';\n value: IdxRemediation[];\n };\n messages?: IdxMessages;\n success?: boolean;\n successWithInteractionCode?: IdxRemediation;\n currentAuthenticator?: {\n type: string;\n value: IdxAuthenticator;\n };\n currentAuthenticatorEnrollment?: {\n type: string;\n value: IdxAuthenticator;\n };\n}\n\nexport function isRawIdxResponse(obj: any): obj is RawIdxResponse {\n return obj && obj.version;\n}\n\nexport interface IdxActionParams {\n [key: string]: string | boolean | number | object;\n}\n\nexport interface IdxActions {\n [key: string]: (params?: IdxActionParams) => Promise<IdxResponse>;\n}\n\nexport interface IdxToPersist {\n interactionHandle?: string;\n withCredentials?: boolean;\n}\n\nexport interface IdxActionFunction {\n (params: IdxActionParams): Promise<IdxResponse>;\n neededParams?: Array<Array<IdxRemediationValue>>;\n}\n\nexport interface IdxResponse {\n proceed: (remediationName: string, params: unknown) => Promise<IdxResponse>;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n toPersist: IdxToPersist;\n context?: IdxContext;\n requestDidSucceed?: boolean;\n stepUp?: boolean;\n}\n\nexport function isIdxResponse(obj: any): obj is IdxResponse {\n return obj && isRawIdxResponse(obj.rawIdxState);\n}\n"],"mappings":";;;;;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AAkLA;AAuBO,SAASA,gBAAT,CAA0BC,GAA1B,EAA2D;EAChE,OAAOA,GAAG,IAAIA,GAAG,CAACC,OAAlB;AACD;;AAgCM,SAASC,aAAT,CAAuBF,GAAvB,EAAqD;EAC1D,OAAOA,GAAG,IAAID,gBAAgB,CAACC,GAAG,CAACG,WAAL,CAA9B;AACD"}
|
package/cjs/idx/util.js
CHANGED
|
@@ -30,6 +30,10 @@ var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
|
|
|
30
30
|
|
|
31
31
|
var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
|
|
32
32
|
|
|
33
|
+
var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/starts-with"));
|
|
34
|
+
|
|
35
|
+
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
36
|
+
|
|
33
37
|
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
34
38
|
|
|
35
39
|
var _util = require("../util");
|
|
@@ -200,7 +204,7 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
|
200
204
|
}
|
|
201
205
|
|
|
202
206
|
for (const [name] of (0, _entries.default)(idxResponse.actions || {})) {
|
|
203
|
-
|
|
207
|
+
let stepObj = {
|
|
204
208
|
name,
|
|
205
209
|
action: async params => {
|
|
206
210
|
return authClient.idx.proceed({
|
|
@@ -210,7 +214,35 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
|
210
214
|
}]
|
|
211
215
|
});
|
|
212
216
|
}
|
|
213
|
-
}
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
if ((0, _startsWith.default)(name).call(name, 'currentAuthenticator')) {
|
|
220
|
+
var _actionObj$value;
|
|
221
|
+
|
|
222
|
+
const [part1, part2] = (0, _util.split2)(name, '-');
|
|
223
|
+
const actionObj = idxResponse.rawIdxState[part1].value[part2];
|
|
224
|
+
/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
225
|
+
|
|
226
|
+
const {
|
|
227
|
+
href,
|
|
228
|
+
method,
|
|
229
|
+
rel,
|
|
230
|
+
accepts,
|
|
231
|
+
produces,
|
|
232
|
+
...rest
|
|
233
|
+
} = actionObj;
|
|
234
|
+
/* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
235
|
+
|
|
236
|
+
const value = (_actionObj$value = actionObj.value) === null || _actionObj$value === void 0 ? void 0 : (0, _filter.default)(_actionObj$value).call(_actionObj$value, item => item.name !== 'stateHandle');
|
|
237
|
+
stepObj = { ...rest,
|
|
238
|
+
...(value && {
|
|
239
|
+
value
|
|
240
|
+
}),
|
|
241
|
+
...stepObj
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
res.push(stepObj);
|
|
214
246
|
}
|
|
215
247
|
|
|
216
248
|
return res;
|
package/cjs/idx/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":["isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","actions","actionName","getMessagesFromIdxRemediationValue","value","Array","isArray","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","remediators","map","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","action","params","idx","proceed","filterValuesForRemediation","values","remediations","r","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleIdxError","e","requestDidSucceed","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport { IdxFeature, NextStep, RemediateOptions, RemediationResponse, RunOptions } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse, isIdxResponse } from './types/idx-js';\nimport { OktaAuthIdxInterface } from '../types';\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]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\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(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 res.push({ \n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n });\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 idxRemediations: IdxRemediation[],\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\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()) {\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 handleIdxError(authClient: OktaAuthIdxInterface, e, options = {}): RemediationResponse {\n // Handle idx messages\n let idxResponse = isIdxResponse(e) ? e : null;\n if (!idxResponse) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n idxResponse = {\n ...idxResponse,\n requestDidSucceed: false\n };\n const terminal = isTerminalResponse(idxResponse);\n const remediator = getRemediator(idxResponse.neededToProceed, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n ...(terminal && { terminal }),\n ...(!terminal && nextStep && { nextStep }) \n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","names":["isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","actions","actionName","getMessagesFromIdxRemediationValue","value","Array","isArray","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","remediators","map","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","stepObj","action","params","idx","proceed","part1","part2","actionObj","href","method","rel","accepts","produces","rest","item","filterValuesForRemediation","values","remediations","r","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleIdxError","e","requestDidSucceed","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn, split2 } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport { IdxFeature, NextStep, RemediateOptions, RemediationResponse, RunOptions } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse, isIdxResponse } from './types/idx-js';\nimport { OktaAuthIdxInterface } from '../types';\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]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\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(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 idxRemediations: IdxRemediation[],\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\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()) {\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 handleIdxError(authClient: OktaAuthIdxInterface, e, options = {}): RemediationResponse {\n // Handle idx messages\n let idxResponse = isIdxResponse(e) ? e : null;\n if (!idxResponse) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n idxResponse = {\n ...idxResponse,\n requestDidSucceed: false\n };\n const terminal = isTerminalResponse(idxResponse);\n const remediator = getRemediator(idxResponse.neededToProceed, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n ...(terminal && { terminal }),\n ...(!terminal && nextStep && { nextStep }) \n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;AAGO,SAASA,kBAAT,CAA4BC,WAA5B,EAAsD;EAC3D,MAAM;IAAEC,eAAF;IAAmBC;EAAnB,IAAuCF,WAA7C;EACA,OAAO,CAACC,eAAe,CAACE,MAAjB,IAA2B,CAACD,eAAnC;AACD;;AAEM,SAASE,SAAT,CAAmBJ,WAAnB,EAA6C;EAClD,OAAOA,WAAW,CAACC,eAAZ,CAA4BI,IAA5B,CAAiC,CAAC;IAAEC;EAAF,CAAD,KAAcA,IAAI,KAAK,MAAxD,CAAP;AACD;;AAEM,SAASC,WAAT,CAAqBP,WAArB,EAA+C;EACpD,OAAO,mBAAYA,WAAW,CAACQ,OAAxB,EAAiCH,IAAjC,CAAsCI,UAAU,IAAI,uBAAAA,UAAU,MAAV,CAAAA,UAAU,EAAU,QAAV,CAA9D,CAAP;AACD;;AAEM,SAASC,kCAAT,CACLC,KADK,EAEqB;EAC1B,IAAI,CAACA,KAAD,IAAU,CAACC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAf,EAAqC;IACnC;EACD;;EACD,OAAO,qBAAAA,KAAK,MAAL,CAAAA,KAAK,EAAQ,CAACG,QAAD,EAAWH,KAAX,KAAqB;IACvC,IAAIA,KAAK,CAACG,QAAV,EAAoB;MAClBA,QAAQ,GAAG,CAAC,GAAGA,QAAJ,EAAc,GAAGH,KAAK,CAACG,QAAN,CAAeH,KAAhC,CAAX;IACD;;IACD,IAAIA,KAAK,CAACI,IAAV,EAAgB;MACd,MAAMC,gBAAgB,GAAGN,kCAAkC,CAACC,KAAK,CAACI,IAAN,CAAWJ,KAAZ,CAAlC,IAAwD,EAAjF;MACAG,QAAQ,GAAG,CAAC,GAAGA,QAAJ,EAAc,GAAGE,gBAAjB,CAAX;IACD;;IACD,IAAIL,KAAK,CAACM,OAAV,EAAmB;MACjB,IAAIC,YAAY,GAAG,EAAnB;MACAP,KAAK,CAACM,OAAN,CAAcE,OAAd,CAAsBC,MAAM,IAAI;QAC9B,IAAI,CAACA,MAAM,CAACT,KAAR,IAAiB,OAAOS,MAAM,CAACT,KAAd,KAAwB,QAA7C,EAAuD;UACrD;QACD;;QACDO,YAAY,GAAG,CAAC,GAAGA,YAAJ,EAAkBE,MAAM,CAACT,KAAzB,CAAf;MACD,CALD;MAMA,MAAMU,mBAAmB,GAAGX,kCAAkC,CAACQ,YAAD,CAAlC,IAAoD,EAAhF;MACAJ,QAAQ,GAAG,CAAC,GAAGA,QAAJ,EAAc,GAAGO,mBAAjB,CAAX;IACD;;IACD,OAAOP,QAAP;EACD,CApBW,EAoBT,EApBS,CAAZ;AAqBD;;AAEM,SAASQ,uBAAT,CAAiCtB,WAAjC,EAA2DiB,OAA3D,EAA8F;EAAA;;EACnG,IAAIH,QAAsB,GAAG,EAA7B;EACA,MAAM;IAAES,WAAF;IAAetB;EAAf,IAAmCD,WAAzC,CAFmG,CAInG;;EACA,MAAMwB,cAAc,4BAAGD,WAAW,CAACT,QAAf,0DAAG,mDAAsBH,KAAtB,iBAAgCc,OAAO,IAAIA,OAA3C,CAAvB;;EACA,IAAID,cAAJ,EAAoB;IAClBV,QAAQ,GAAG,CAAC,GAAGA,QAAJ,EAAc,GAAGU,cAAjB,CAAX;EACD,CARkG,CAUnG;EACA;EACA;;;EACA,IAAI,CAACP,OAAO,CAACS,oBAAb,EAAmC;IACjC,KAAK,IAAIC,WAAT,IAAwB1B,eAAxB,EAAyC;MACvC,MAAM2B,aAAa,GAAGlB,kCAAkC,CAACiB,WAAW,CAAChB,KAAb,CAAxD;;MACA,IAAIiB,aAAJ,EAAmB;QACjBd,QAAQ,GAAG,CAAC,GAAGA,QAAJ,EAAc,GAAGc,aAAjB,CAAX;MACD;IACF;EACF,CApBkG,CAsBnG;;;EACA,MAAMC,IAAI,GAAG,EAAb;EACAf,QAAQ,GAAG,qBAAAA,QAAQ,MAAR,CAAAA,QAAQ,EAAQ,CAACgB,QAAD,EAAWL,OAAX,KAAuB;IAAA;;IAChD,MAAMM,GAAG,oBAAGN,OAAO,CAACO,IAAX,kDAAG,cAAcD,GAA1B;;IACA,IAAIA,GAAG,IAAIF,IAAI,CAACE,GAAD,CAAf,EAAsB;MACpB,OAAOD,QAAP;IACD;;IACDD,IAAI,CAACE,GAAD,CAAJ,GAAYN,OAAZ;IACAK,QAAQ,GAAG,CAAC,GAAGA,QAAJ,EAAcL,OAAd,CAAX;IACA,OAAOK,QAAP;EACD,CARkB,EAQhB,EARgB,CAAnB;EASA,OAAOhB,QAAP;AACD;;AAGM,SAASmB,kBAAT,CAA4BjC,WAA5B,EAAoE;EACzE,MAAMkC,GAAG,GAAG,EAAZ;EACA,MAAM;IAAE1B,OAAF;IAAWP;EAAX,IAA+BD,WAArC;;EAEA,IAAIQ,OAAO,CAAC,8BAAD,CAAX,EAA6C;IAC3C0B,GAAG,CAACC,IAAJ,CAASC,kBAAWC,iBAApB;EACD;;EAED,IAAIpC,eAAe,CAACI,IAAhB,CAAqB,CAAC;IAAEC;EAAF,CAAD,KAAcA,IAAI,KAAK,uBAA5C,CAAJ,EAA0E;IACxE4B,GAAG,CAACC,IAAJ,CAASC,kBAAWE,YAApB;EACD;;EAED,IAAIrC,eAAe,CAACI,IAAhB,CAAqB,CAAC;IAAEC;EAAF,CAAD,KAAcA,IAAI,KAAK,cAA5C,CAAJ,EAAiE;IAC/D4B,GAAG,CAACC,IAAJ,CAASC,kBAAWG,UAApB;EACD;;EAED,IAAItC,eAAe,CAACI,IAAhB,CAAqB,CAAC;IAAEC;EAAF,CAAD,KAAcA,IAAI,KAAK,gBAA5C,CAAJ,EAAmE;IACjE4B,GAAG,CAACC,IAAJ,CAASC,kBAAWI,cAApB;EACD;;EAED,OAAON,GAAP;AACD;;AAEM,SAASO,iBAAT,CACLC,UADK,EAEL1C,WAFK,EAGL0B,oBAHK,EAIO;EAAA;;EACZ,MAAMQ,GAAe,GAAG,EAAxB;EAEA,MAAMS,aAAoD,GAAG,sDAAcC,WAAd,mBACnD,CAACC,GAAD,EAAMC,eAAN,KAA0B;IAChC;IACA,IAAIA,eAAe,CAACC,eAApB,EAAqC;MACnCF,GAAG,CAACC,eAAe,CAACC,eAAjB,CAAH,GAAuCD,eAAvC;IACD;;IACD,OAAOD,GAAP;EACD,CAP0D,EAOxD,EAPwD,CAA7D;;EASA,KAAK,IAAIlB,WAAT,IAAwB3B,WAAW,CAACC,eAApC,EAAqD;IACnD,MAAM+C,CAAC,GAAGC,kBAAkB,CAACtB,WAAD,EAAc;MAAED,oBAAF;MAAwBkB,WAAW,EAAED;IAArC,CAAd,CAA5B;;IACA,IAAIK,CAAJ,EAAO;MACL,MAAME,UAAsB,GAAG,IAAIF,CAAJ,CAAMrB,WAAN,CAA/B;MACAO,GAAG,CAACC,IAAJ,CAAUe,UAAU,CAACC,WAAX,CAAuBT,UAAvB,EAAmC1C,WAAW,CAACoD,OAA/C,CAAV;IACD;EACF;;EAED,KAAK,MAAM,CAAC9C,IAAD,CAAX,IAAqB,sBAAgBN,WAAW,CAACQ,OAAZ,IAAuB,EAAvC,CAArB,EAAkE;IAChE,IAAI6C,OAAO,GAAG;MACZ/C,IADY;MAEZgD,MAAM,EAAE,MAAOC,MAAP,IAAmB;QACzB,OAAOb,UAAU,CAACc,GAAX,CAAeC,OAAf,CAAuB;UAC5BjD,OAAO,EAAE,CAAC;YAAEF,IAAF;YAAQiD;UAAR,CAAD;QADmB,CAAvB,CAAP;MAGD;IANW,CAAd;;IAQA,IAAI,yBAAAjD,IAAI,MAAJ,CAAAA,IAAI,EAAY,sBAAZ,CAAR,EAA6C;MAAA;;MAC3C,MAAM,CAACoD,KAAD,EAAQC,KAAR,IAAiB,kBAAOrD,IAAP,EAAa,GAAb,CAAvB;MACA,MAAMsD,SAAS,GAAG5D,WAAW,CAACuB,WAAZ,CAAwBmC,KAAxB,EAA+B/C,KAA/B,CAAqCgD,KAArC,CAAlB;MACA;;MACA,MAAM;QACJE,IADI;QAEJC,MAFI;QAGJC,GAHI;QAIJC,OAJI;QAKJC,QALI;QAMJ,GAAGC;MANC,IAOFN,SAPJ;MAQA;;MACA,MAAMjD,KAAK,uBAAGiD,SAAS,CAACjD,KAAb,qDAAG,8DAAwBwD,IAAI,IAAIA,IAAI,CAAC7D,IAAL,KAAc,aAA9C,CAAd;MACA+C,OAAO,GAAG,EACR,GAAGa,IADK;QAER,IAAIvD,KAAK,IAAI;UAAEA;QAAF,CAAb,CAFQ;QAGR,GAAG0C;MAHK,CAAV;IAKD;;IACDnB,GAAG,CAACC,IAAJ,CAASkB,OAAT;EACD;;EAED,OAAOnB,GAAP;AACD;;AAEM,SAASkC,0BAAT,CACLpE,WADK,EAEL+C,eAFK,EAGLsB,MAHK,EAIc;EAAA;;EACnB,MAAMC,YAAY,GAAGtE,WAAW,CAACC,eAAZ,IAA+B,EAApD;EACA,MAAM0B,WAAW,GAAG,mBAAA2C,YAAY,MAAZ,CAAAA,YAAY,EAAMC,CAAC,IAAIA,CAAC,CAACjE,IAAF,KAAWyC,eAAtB,CAAhC;;EACA,IAAI,CAACpB,WAAL,EAAkB;IAChB;IACA,gBAAM,gCAA+BoB,eAAgB,kCAArD;IACA,OAAOsB,MAAP;EACD,CAPkB,CASnB;;;EACA,MAAMG,oBAAoB,GAAG,iCAAA7C,WAAW,CAAChB,KAAZ,kBAA0B,CAACuB,GAAD,EAAMuC,KAAN,KAAgB;IACrE,MAAM;MAAEnE,IAAF;MAAQK;IAAR,IAAkB8D,KAAxB;;IACA,IAAInE,IAAI,KAAK,aAAb,EAA4B;MAC1B4B,GAAG,CAAC5B,IAAD,CAAH,GAAYK,KAAZ,CAD0B,CACP;IACpB,CAFD,MAEO;MACLuB,GAAG,CAAC5B,IAAD,CAAH,GAAY+D,MAAM,CAAC/D,IAAD,CAAlB,CADK,CACqB;IAC3B;;IACD,OAAO4B,GAAP;EACD,CAR4B,EAQ1B,EAR0B,CAA7B;EASA,OAAOsC,oBAAP;AACD;;AAED,SAASvB,kBAAT,CAA4BtB,WAA5B,EAAyDV,OAAzD,EAAoF;EAClF,MAAM;IAAES,oBAAF;IAAwBkB;EAAxB,IAAwC3B,OAA9C;;EAEA,IAAI,CAACU,WAAL,EAAkB;IAChB,OAAO+C,SAAP;EACD;;EAED,IAAIhD,oBAAJ,EAA0B;IACxB,OAAOiD,oCAAP;EACD,CATiF,CAWlF;;;EACA,OAAO/B,WAAW,CAAEjB,WAAW,CAACrB,IAAd,CAAlB;AACD,C,CAED;AACA;;;AACO,SAASsE,aAAT,CACLC,eADK,EAELR,MAFK,EAGLpD,OAHK,EAImB;EACxB;EACA,MAAM2B,WAAW,GAAG3B,OAAO,CAAC2B,WAA5B;EACA,MAAMlB,oBAAoB,GAAGT,OAAO,CAACS,oBAArC;EAEA,IAAIwB,UAAJ,CALwB,CAMxB;;EACA,IAAIjC,OAAO,CAAC6D,IAAZ,EAAkB;IAChB;IACA,MAAMnD,WAAW,GAAG,mBAAAkD,eAAe,MAAf,CAAAA,eAAe,EAAM,CAAC;MAAEvE;IAAF,CAAD,KAAcA,IAAI,KAAKW,OAAO,CAAC6D,IAArC,CAAnC;;IACA,IAAInD,WAAJ,EAAiB;MACf,MAAMqB,CAAC,GAAGC,kBAAkB,CAACtB,WAAD,EAAcV,OAAd,CAA5B;MACA,OAAO+B,CAAC,GAAG,IAAIA,CAAJ,CAAMrB,WAAN,EAAmB0C,MAAnB,EAA2BpD,OAA3B,CAAH,GAAyCyD,SAAjD;IACD,CAHD,MAGO;MACL;MACA,gBAAM,SAAQzD,OAAO,CAAC6D,IAAK,kCAA3B;MACA;IACD;EACF;;EAED,MAAMC,oBAAkC,GAAG,EAA3C;;EACA,IAAIrD,oBAAJ,EAA0B;IACxB;IACAqD,oBAAoB,CAAC5C,IAArB,CAA0B,IAAIwC,oCAAJ,CAAsBE,eAAe,CAAC,CAAD,CAArC,EAA0CR,MAA1C,EAAkDpD,OAAlD,CAA1B;EACD,CAHD,MAGO;IACL,KAAK,IAAIU,WAAT,IAAwBkD,eAAxB,EAAyC;MAAA;;MACvC,MAAMG,kBAAkB,GAAG,sDAAYpC,WAAZ,mBAA4CjB,WAAW,CAACrB,IAAxD,CAA3B;;MACA,IAAI,CAAC0E,kBAAL,EAAyB;QACvB;MACD,CAJsC,CAMvC;;;MACA,MAAMhC,CAAC,GAAGC,kBAAkB,CAACtB,WAAD,EAAcV,OAAd,CAA5B;MACAiC,UAAU,GAAG,IAAIF,CAAJ,CAAMrB,WAAN,EAAmB0C,MAAnB,EAA2BpD,OAA3B,CAAb;;MACA,IAAIiC,UAAU,CAAC+B,YAAX,EAAJ,EAA+B;QAC7B;QACA,OAAO/B,UAAP;MACD,CAZsC,CAavC;MACA;;;MACA6B,oBAAoB,CAAC5C,IAArB,CAA0Be,UAA1B;IACD;EACF;;EAED,OAAO6B,oBAAoB,CAAC,CAAD,CAA3B;AACD;;AAGM,SAAS5B,WAAT,CACLT,UADK,EAC6BQ,UAD7B,EACqDlD,WADrD,EAEK;EACV,MAAMkF,QAAQ,GAAGhC,UAAU,CAACC,WAAX,CAAuBT,UAAvB,EAAmC1C,WAAW,CAACoD,OAA/C,CAAjB;EACA,MAAM+B,OAAO,GAAG/E,SAAS,CAACJ,WAAD,CAAzB;EACA,MAAMoF,SAAS,GAAG7E,WAAW,CAACP,WAAD,CAA7B;EACA,OAAO,EACL,GAAGkF,QADE;IAEL,IAAIC,OAAO,IAAI;MAACA;IAAD,CAAf,CAFK;IAGL,IAAIC,SAAS,IAAI;MAACA;IAAD,CAAjB;EAHK,CAAP;AAKD;;AAEM,SAASC,cAAT,CAAwB3C,UAAxB,EAA0D4C,CAA1D,EAA6DrE,OAAO,GAAG,EAAvE,EAAgG;EACrG;EACA,IAAIjB,WAAW,GAAG,0BAAcsF,CAAd,IAAmBA,CAAnB,GAAuB,IAAzC;;EACA,IAAI,CAACtF,WAAL,EAAkB;IAChB;IACA,MAAMsF,CAAN;EACD;;EACDtF,WAAW,GAAG,EACZ,GAAGA,WADS;IAEZuF,iBAAiB,EAAE;EAFP,CAAd;EAIA,MAAMC,QAAQ,GAAGzF,kBAAkB,CAACC,WAAD,CAAnC;EACA,MAAMkD,UAAU,GAAG0B,aAAa,CAAC5E,WAAW,CAACC,eAAb,EAA8B,EAA9B,EAAkCgB,OAAlC,CAAhC;EACA,MAAMiE,QAAQ,GAAGhC,UAAU,IAAIC,WAAW,CAACT,UAAD,EAAaQ,UAAb,EAAyBlD,WAAzB,CAA1C;EACA,OAAO;IACLA,WADK;IAEL,IAAIwF,QAAQ,IAAI;MAAEA;IAAF,CAAhB,CAFK;IAGL,IAAI,CAACA,QAAD,IAAaN,QAAb,IAAyB;MAAEA;IAAF,CAA7B;EAHK,CAAP;AAKD"}
|
package/cjs/util/misc.js
CHANGED
|
@@ -5,9 +5,12 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
5
5
|
exports.isoToUTCString = isoToUTCString;
|
|
6
6
|
exports.genRandomString = genRandomString;
|
|
7
7
|
exports.delay = delay;
|
|
8
|
+
exports.split2 = split2;
|
|
8
9
|
|
|
9
10
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
10
11
|
|
|
12
|
+
var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
|
|
13
|
+
|
|
11
14
|
/*!
|
|
12
15
|
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
13
16
|
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
@@ -42,4 +45,9 @@ function delay(ms) {
|
|
|
42
45
|
setTimeout(resolve, ms);
|
|
43
46
|
});
|
|
44
47
|
}
|
|
48
|
+
|
|
49
|
+
function split2(str, delim) {
|
|
50
|
+
const parts = str.split(delim);
|
|
51
|
+
return [parts[0], (0, _splice.default)(parts).call(parts, 1, parts.length).join(delim)];
|
|
52
|
+
}
|
|
45
53
|
//# sourceMappingURL=misc.js.map
|
package/cjs/util/misc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","names":["isoToUTCString","str","parts","match","isoTime","Date","UTC","isoDate","toUTCString","genRandomString","length","randomCharset","random","c","cl","Math","floor","delay","ms","resolve","setTimeout"],"sources":["../../../lib/util/misc.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\nexport function isoToUTCString(str) {\n var parts = str.match(/\\d+/g),\n isoTime = Date.UTC(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]),\n isoDate = new Date(isoTime);\n\n return isoDate.toUTCString();\n}\n\nexport function genRandomString(length) {\n var randomCharset = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n var random = '';\n for (var c = 0, cl = randomCharset.length; c < length; ++c) {\n random += randomCharset[Math.floor(Math.random() * cl)];\n }\n return random;\n}\n\nexport function delay(ms) {\n return new Promise(function(resolve) {\n setTimeout(resolve, ms);\n });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"misc.js","names":["isoToUTCString","str","parts","match","isoTime","Date","UTC","isoDate","toUTCString","genRandomString","length","randomCharset","random","c","cl","Math","floor","delay","ms","resolve","setTimeout","split2","delim","split","join"],"sources":["../../../lib/util/misc.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\nexport function isoToUTCString(str) {\n var parts = str.match(/\\d+/g),\n isoTime = Date.UTC(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]),\n isoDate = new Date(isoTime);\n\n return isoDate.toUTCString();\n}\n\nexport function genRandomString(length) {\n var randomCharset = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n var random = '';\n for (var c = 0, cl = randomCharset.length; c < length; ++c) {\n random += randomCharset[Math.floor(Math.random() * cl)];\n }\n return random;\n}\n\nexport function delay(ms) {\n return new Promise(function(resolve) {\n setTimeout(resolve, ms);\n });\n}\n\nexport function split2(str, delim) {\n const parts = str.split(delim);\n return [\n parts[0], \n parts.splice(1, parts.length).join(delim),\n ];\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,SAASA,cAAT,CAAwBC,GAAxB,EAA6B;EAClC,IAAIC,KAAK,GAAGD,GAAG,CAACE,KAAJ,CAAU,MAAV,CAAZ;EAAA,IACIC,OAAO,GAAGC,IAAI,CAACC,GAAL,CAASJ,KAAK,CAAC,CAAD,CAAd,EAAmBA,KAAK,CAAC,CAAD,CAAL,GAAW,CAA9B,EAAiCA,KAAK,CAAC,CAAD,CAAtC,EAA2CA,KAAK,CAAC,CAAD,CAAhD,EAAqDA,KAAK,CAAC,CAAD,CAA1D,EAA+DA,KAAK,CAAC,CAAD,CAApE,CADd;EAAA,IAEIK,OAAO,GAAG,IAAIF,IAAJ,CAASD,OAAT,CAFd;EAIA,OAAOG,OAAO,CAACC,WAAR,EAAP;AACD;;AAEM,SAASC,eAAT,CAAyBC,MAAzB,EAAiC;EACtC,IAAIC,aAAa,GAAG,+DAApB;EACA,IAAIC,MAAM,GAAG,EAAb;;EACA,KAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,EAAE,GAAGH,aAAa,CAACD,MAAnC,EAA2CG,CAAC,GAAGH,MAA/C,EAAuD,EAAEG,CAAzD,EAA4D;IAC1DD,MAAM,IAAID,aAAa,CAACI,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACH,MAAL,KAAgBE,EAA3B,CAAD,CAAvB;EACD;;EACD,OAAOF,MAAP;AACD;;AAEM,SAASK,KAAT,CAAeC,EAAf,EAAmB;EACxB,OAAO,qBAAY,UAASC,OAAT,EAAkB;IACnCC,UAAU,CAACD,OAAD,EAAUD,EAAV,CAAV;EACD,CAFM,CAAP;AAGD;;AAEM,SAASG,MAAT,CAAgBpB,GAAhB,EAAqBqB,KAArB,EAA4B;EACjC,MAAMpB,KAAK,GAAGD,GAAG,CAACsB,KAAJ,CAAUD,KAAV,CAAd;EACA,OAAO,CACLpB,KAAK,CAAC,CAAD,CADA,EAEL,qBAAAA,KAAK,MAAL,CAAAA,KAAK,EAAQ,CAAR,EAAWA,KAAK,CAACQ,MAAjB,CAAL,CAA8Bc,IAA9B,CAAmCF,KAAnC,CAFK,CAAP;AAID"}
|