@okta/okta-auth-js 6.7.2 → 6.7.5

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.
Files changed (27) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/cjs/OktaUserAgent.js +2 -2
  3. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +11 -20
  4. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
  5. package/cjs/idx/remediators/SelectEnrollmentChannel.js +24 -3
  6. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  7. package/cjs/idx/types/api.js.map +1 -1
  8. package/dist/okta-auth-js.min.js +1 -1
  9. package/dist/okta-auth-js.min.js.map +1 -1
  10. package/dist/okta-auth-js.umd.js +1 -1
  11. package/dist/okta-auth-js.umd.js.map +1 -1
  12. package/esm/browser/OktaUserAgent.js +2 -2
  13. package/esm/browser/idx/remediators/GenericRemediator/GenericRemediator.js +2 -5
  14. package/esm/browser/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
  15. package/esm/browser/idx/remediators/SelectEnrollmentChannel.js +16 -3
  16. package/esm/browser/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  17. package/esm/browser/idx/types/api.js.map +1 -1
  18. package/esm/node/OktaUserAgent.js +2 -2
  19. package/esm/node/idx/remediators/GenericRemediator/GenericRemediator.js +2 -5
  20. package/esm/node/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
  21. package/esm/node/idx/remediators/SelectEnrollmentChannel.js +16 -3
  22. package/esm/node/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  23. package/esm/node/idx/types/api.js.map +1 -1
  24. package/esm/package.json +2 -0
  25. package/lib/idx/remediators/SelectEnrollmentChannel.d.ts +6 -6
  26. package/lib/idx/types/api.d.ts +1 -0
  27. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,6 +1,24 @@
1
1
  # Changelog
2
2
 
3
- # 6.7.2
3
+ ## 6.7.5
4
+
5
+ ### Fixes
6
+ - [#1269](https://github.com/okta/okta-auth-js/pull/1269) Fixes ESM exports
7
+ - Adds `default` export under `./browser` to support `Jest@28.1+`
8
+ - Adds work-around for webpack/webpack#13457 to support Module Federation (with ESM bundles)
9
+
10
+ ## 6.7.4
11
+
12
+ ### Fixes
13
+ - [#1263](https://github.com/okta/okta-auth-js/pull/1263) (IDX) `select-enrollment-channel` remediation now accepts protocol defined inputs, as well as conveniences
14
+ - [#1262](https://github.com/okta/okta-auth-js/pull/1262) Freezes `broadcast-channel` version at `4.13.0`, `4.14.0` requires node 14+
15
+
16
+ ## 6.7.3
17
+
18
+ - [#1264](https://github.com/okta/okta-auth-js/pull/1264) IDX GenericRemediator patches (beta):
19
+ - allows proceeding when `options.step` is available
20
+
21
+ ## 6.7.2
4
22
 
5
23
  ### Fixes
6
24
 
@@ -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.2"}`];
24
+ this.environments = [`okta-auth-js/${"6.7.5"}`];
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.2";
39
+ return "6.7.5";
40
40
  }
41
41
 
42
42
  maybeAddNodeEnvironment() {
@@ -6,15 +6,11 @@ exports.GenericRemediator = void 0;
6
6
 
7
7
  var _endsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/ends-with"));
8
8
 
9
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
10
-
11
9
  var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
12
10
 
13
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
14
-
15
11
  var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
16
12
 
17
- var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
13
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
18
14
 
19
15
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
20
16
 
@@ -24,7 +20,7 @@ var _util = require("./util");
24
20
 
25
21
  class GenericRemediator extends _Remediator.Remediator {
26
22
  canRemediate() {
27
- var _context2, _context3, _context4;
23
+ var _context2;
28
24
 
29
25
  // only handle remediations that are able to submit form (xhr)
30
26
  if (typeof this.remediation.action !== 'function') {
@@ -41,23 +37,18 @@ class GenericRemediator extends _Remediator.Remediator {
41
37
  return true;
42
38
  }
43
39
 
44
- const inputKeys = (0, _map.default)(_context3 = this.getInputs()).call(_context3, ({
45
- name
46
- }) => name);
47
-
48
- if (!inputKeys.length) {
40
+ if (this.options.step) {
49
41
  return true;
50
- }
42
+ } // disable auto proceed for unknown remediations
43
+
51
44
 
52
- return (0, _reduce.default)(_context4 = (0, _keys.default)((0, _values.default)(this))).call(_context4, (acc, curr) => {
53
- return acc || (0, _includes.default)(inputKeys).call(inputKeys, curr);
54
- }, false);
45
+ return false;
55
46
  }
56
47
 
57
48
  getData() {
58
- var _context5;
49
+ var _context3;
59
50
 
60
- const data = (0, _reduce.default)(_context5 = this.getInputs()).call(_context5, (acc, {
51
+ const data = (0, _reduce.default)(_context3 = this.getInputs()).call(_context3, (acc, {
61
52
  name
62
53
  }) => {
63
54
  acc[name] = (0, _values.default)(this)[name];
@@ -108,11 +99,11 @@ class GenericRemediator extends _Remediator.Remediator {
108
99
  }
109
100
 
110
101
  getInputs() {
111
- var _context6, _context7, _context8;
102
+ var _context4, _context5, _context6;
112
103
 
113
- return (0, _map.default)(_context6 = (0, _map.default)(_context7 = (0, _filter.default)(_context8 = this.remediation.value || []).call(_context8, ({
104
+ return (0, _map.default)(_context4 = (0, _map.default)(_context5 = (0, _filter.default)(_context6 = this.remediation.value || []).call(_context6, ({
114
105
  name
115
- }) => name !== 'stateHandle')).call(_context7, _util.unwrapFormValue)).call(_context6, input => {
106
+ }) => name !== 'stateHandle')).call(_context5, _util.unwrapFormValue)).call(_context4, input => {
116
107
  // use string as default input type
117
108
  input.type = input.type || 'string';
118
109
  return input;
@@ -1 +1 @@
1
- {"version":3,"file":"GenericRemediator.js","names":["GenericRemediator","Remediator","canRemediate","remediation","action","name","inputKeys","getInputs","length","acc","curr","getData","data","getNextStep","authClient","_context","getName","inputs","href","method","rel","accepts","produces","value","rest","params","idx","proceed","step","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 const inputKeys = this.getInputs().map(({ name }) => name);\n\n if (!inputKeys.length) {\n return true;\n }\n\n return Object.keys(this.values).reduce((acc: boolean, curr) => {\n return acc || inputKeys.includes(curr);\n }, 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,MAAMC,SAAS,GAAG,mCAAKC,SAAL,oBAAqB,CAAC;MAAEF;IAAF,CAAD,KAAcA,IAAnC,CAAlB;;IAEA,IAAI,CAACC,SAAS,CAACE,MAAf,EAAuB;MACrB,OAAO,IAAP;IACD;;IAED,OAAO,yEAAY,IAAZ,oBAAgC,CAACC,GAAD,EAAeC,IAAf,KAAwB;MAC7D,OAAOD,GAAG,IAAI,uBAAAH,SAAS,MAAT,CAAAA,SAAS,EAAUI,IAAV,CAAvB;IACD,CAFM,EAEJ,KAFI,CAAP;EAGD;;EAEDC,OAAO,GAAG;IAAA;;IACR,MAAMC,IAAI,GAAG,sCAAKL,SAAL,oBAAwB,CAACE,GAAD,EAAM;MAAEJ;IAAF,CAAN,KAAmB;MACtDI,GAAG,CAACJ,IAAD,CAAH,GAAY,2BAAYA,IAAZ,CAAZ;MACA,OAAOI,GAAP;IACD,CAHY,EAGV,EAHU,CAAb;IAIA,OAAOG,IAAP;EACD;;EAEDC,WAAW,CAACC,UAAD,EAAmCC,QAAnC,EAAoE;IAC7E,MAAMV,IAAI,GAAG,KAAKW,OAAL,EAAb;IACA,MAAMC,MAAM,GAAG,KAAKV,SAAL,EAAf;IAEA;IACA;;IACA,MAAM;MACJ;MACAW,IAFI;MAGJC,MAHI;MAIJC,GAJI;MAKJC,OALI;MAMJC,QANI;MAOJ;MACAC,KARI;MASJ;MACAnB,MAVI;MAWJ,GAAGoB;IAXC,IAYF,KAAKrB,WAZT;IAaA;IAEA;;IACA,IAAIC,MAAJ,EAAY;MACV,OAAO,EACL,GAAGoB,IADE;QAEL,IAAI,CAAC,CAACP,MAAM,CAACT,MAAT,IAAmB;UAAES;QAAF,CAAvB,CAFK;QAGLb,MAAM,EAAE,MAAOqB,MAAP,IAAmB;UACzB,OAAOX,UAAU,CAACY,GAAX,CAAeC,OAAf,CAAuB;YAC5BC,IAAI,EAAEvB,IADsB;YAE5B,GAAGoB;UAFyB,CAAvB,CAAP;QAID;MARI,CAAP;IAUD,CAjC4E,CAmC7E;;;IACA,OAAO,EAAE,GAAG,KAAKtB;IAAV,CAAP;EAED;;EAEDI,SAAS,GAAY;IAAA;;IACnB,OAAO,6FAAC,KAAKJ,WAAL,CAAiBoB,KAAjB,IAA0B,EAA3B,kBACG,CAAC;MAAElB;IAAF,CAAD,KAAcA,IAAI,KAAK,aAD1B,mBAEAwB,qBAFA,mBAGAC,KAAK,IAAI;MACZ;MACAA,KAAK,CAACC,IAAN,GAAaD,KAAK,CAACC,IAAN,IAAc,QAA3B;MACA,OAAOD,KAAP;IACD,CAPI,CAAP;EAQD;;AAtF+C"}
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"}
@@ -33,7 +33,22 @@ var _util = require("./util");
33
33
  */
34
34
  class SelectEnrollmentChannel extends _Remediator.Remediator {
35
35
  canRemediate() {
36
- return Boolean((0, _values.default)(this).channel);
36
+ if ((0, _values.default)(this).channel) {
37
+ return true;
38
+ }
39
+
40
+ if ((0, _values.default)(this).authenticator) {
41
+ const {
42
+ id,
43
+ channel
44
+ } = (0, _values.default)(this).authenticator;
45
+
46
+ if (!!id && !!channel) {
47
+ return true;
48
+ }
49
+ }
50
+
51
+ return false;
37
52
  }
38
53
 
39
54
  getNextStep(authClient, context) {
@@ -60,12 +75,14 @@ class SelectEnrollmentChannel extends _Remediator.Remediator {
60
75
  }
61
76
 
62
77
  getData() {
78
+ var _this$values$authenti;
79
+
63
80
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
64
81
  const remediationValue = this.remediation.value[0].value;
65
82
  return {
66
83
  authenticator: {
67
84
  id: remediationValue.form.value[0].value,
68
- channel: (0, _values.default)(this).channel
85
+ channel: ((_this$values$authenti = (0, _values.default)(this).authenticator) === null || _this$values$authenti === void 0 ? void 0 : _this$values$authenti.channel) || (0, _values.default)(this).channel
69
86
  },
70
87
  stateHandle: (0, _values.default)(this).stateHandle
71
88
  };
@@ -74,7 +91,11 @@ class SelectEnrollmentChannel extends _Remediator.Remediator {
74
91
  getValuesAfterProceed() {
75
92
  var _context2;
76
93
 
77
- let trimmedValues = (0, _filter.default)(_context2 = (0, _keys.default)((0, _values.default)(this))).call(_context2, valueKey => valueKey !== 'channel');
94
+ this.values = super.getValuesAfterProceed();
95
+ delete (0, _values.default)(this).authenticators; // required to prevent infinite loops from auto-remediating via values
96
+
97
+ const filterKey = (0, _values.default)(this).channel ? 'channel' : 'authenticator';
98
+ let trimmedValues = (0, _filter.default)(_context2 = (0, _keys.default)((0, _values.default)(this))).call(_context2, valueKey => valueKey !== filterKey);
78
99
  return (0, _reduce.default)(trimmedValues).call(trimmedValues, (values, valueKey) => ({ ...values,
79
100
  [valueKey]: (0, _values.default)(this)[valueKey]
80
101
  }), {});
@@ -1 +1 @@
1
- {"version":3,"file":"SelectEnrollmentChannel.js","names":["SelectEnrollmentChannel","Remediator","canRemediate","Boolean","channel","getNextStep","authClient","context","common","options","getChannels","authenticator","currentAuthenticator","value","remediation","remediationValue","form","name","getData","id","stateHandle","getValuesAfterProceed","trimmedValues","valueKey","values"],"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, IdxOption, IdxRemediationValue, IdxContext } from '../types/idx-js';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { OktaAuthIdxInterface } from '../../types';\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 return Boolean(this.values.channel);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const options = this.getChannels();\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n // TODO: remove options field in the next major version - OKTA-491236\n ...(options && { options }),\n authenticator,\n };\n }\n\n private getChannels(): IdxOption[] | undefined {\n const authenticator: IdxRemediationValue = getAuthenticatorFromRemediation(this.remediation);\n const remediationValue = authenticator.value as IdxRemediationValueForm;\n return remediationValue.form.value.find(({ name }) => name === 'channel')?.options;\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.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'channel');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAaA;;AAEA;;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaO,MAAMA,uBAAN,SAAsCC,sBAAtC,CAAgF;EAGrFC,YAAY,GAAG;IACb,OAAOC,OAAO,CAAC,2BAAYC,OAAb,CAAd;EACD;;EAEDC,WAAW,CAACC,UAAD,EAAmCC,OAAnC,EAAwD;IACjE,MAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;IACA,MAAME,OAAO,GAAG,KAAKC,WAAL,EAAhB;IACA,MAAMC,aAAa,GAAGJ,OAAO,CAACK,oBAAR,CAA6BC,KAAnD;IACA,OAAO,EACL,GAAGL,MADE;MAEL;MACA,IAAIC,OAAO,IAAI;QAAEA;MAAF,CAAf,CAHK;MAILE;IAJK,CAAP;EAMD;;EAEOD,WAAW,GAA4B;IAAA;;IAC7C,MAAMC,aAAkC,GAAG,2CAAgC,KAAKG,WAArC,CAA3C;IACA,MAAMC,gBAAgB,GAAGJ,aAAa,CAACE,KAAvC;IACA,gCAAO,8BAAAE,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,iBAAiC,CAAC;MAAEI;IAAF,CAAD,KAAcA,IAAI,KAAK,SAAxD,CAAP,0DAAO,sBAAoER,OAA3E;EACD;;EAEDS,OAAO,GAAG;IACR;IACA,MAAMH,gBAAgB,GAAG,KAAKD,WAAL,CAAkBD,KAAlB,CAAyB,CAAzB,EAA4BA,KAArD;IACA,OAAO;MACLF,aAAa,EAAE;QACbQ,EAAE,EAAEJ,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,CAA4B,CAA5B,EAA+BA,KADtB;QAEbT,OAAO,EAAE,2BAAYA;MAFR,CADV;MAKLgB,WAAW,EAAE,2BAAYA;IALpB,CAAP;EAQD;;EAEDC,qBAAqB,GAAkC;IAAA;;IACrD,IAAIC,aAAa,GAAG,yEAAY,IAAZ,oBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,SAAzD,CAApB;IACA,OAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACE,MAAD,EAASD,QAAT,MAAuB,EAAC,GAAGC,MAAJ;MAAY,CAACD,QAAD,GAAY,2BAAYA,QAAZ;IAAxB,CAAvB,CAAR,EAAgF,EAAhF,CAApB;EACD;;AAzCoF;;;8BAA1EvB,uB,qBACc,2B"}
1
+ {"version":3,"file":"SelectEnrollmentChannel.js","names":["SelectEnrollmentChannel","Remediator","canRemediate","channel","authenticator","id","getNextStep","authClient","context","common","options","getChannels","currentAuthenticator","value","remediation","remediationValue","form","name","getData","stateHandle","getValuesAfterProceed","values","authenticators","filterKey","trimmedValues","valueKey"],"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, IdxOption, IdxRemediationValue, IdxContext } from '../types/idx-js';\nimport { Authenticator } from '../types';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { OktaAuthIdxInterface } from '../../types';\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 options = this.getChannels();\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n // TODO: remove options field in the next major version - OKTA-491236\n ...(options && { options }),\n authenticator,\n };\n }\n\n private getChannels(): IdxOption[] | undefined {\n const authenticator: IdxRemediationValue = getAuthenticatorFromRemediation(this.remediation);\n const remediationValue = authenticator.value as IdxRemediationValueForm;\n return remediationValue.form.value.find(({ name }) => name === 'channel')?.options;\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;;AAGA;;AAhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAcO,MAAMA,uBAAN,SAAsCC,sBAAtC,CAAgF;EAGrFC,YAAY,GAAG;IACb,IAAI,2BAAYC,OAAhB,EAAyB;MACvB,OAAO,IAAP;IACD;;IAED,IAAI,2BAAYC,aAAhB,EAA+B;MAC7B,MAAM;QAAEC,EAAF;QAAMF;MAAN,IAAkB,2BAAYC,aAApC;;MACA,IAAI,CAAC,CAACC,EAAF,IAAQ,CAAC,CAACF,OAAd,EAAuB;QACrB,OAAO,IAAP;MACD;IACF;;IAED,OAAO,KAAP;EACD;;EAEDG,WAAW,CAACC,UAAD,EAAmCC,OAAnC,EAAwD;IACjE,MAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;IACA,MAAME,OAAO,GAAG,KAAKC,WAAL,EAAhB;IACA,MAAMP,aAAa,GAAGI,OAAO,CAACI,oBAAR,CAA6BC,KAAnD;IACA,OAAO,EACL,GAAGJ,MADE;MAEL;MACA,IAAIC,OAAO,IAAI;QAAEA;MAAF,CAAf,CAHK;MAILN;IAJK,CAAP;EAMD;;EAEOO,WAAW,GAA4B;IAAA;;IAC7C,MAAMP,aAAkC,GAAG,2CAAgC,KAAKU,WAArC,CAA3C;IACA,MAAMC,gBAAgB,GAAGX,aAAa,CAACS,KAAvC;IACA,gCAAO,8BAAAE,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,iBAAiC,CAAC;MAAEI;IAAF,CAAD,KAAcA,IAAI,KAAK,SAAxD,CAAP,0DAAO,sBAAoEP,OAA3E;EACD;;EAEDQ,OAAO,GAAG;IAAA;;IACR;IACA,MAAMH,gBAAgB,GAAG,KAAKD,WAAL,CAAkBD,KAAlB,CAAyB,CAAzB,EAA4BA,KAArD;IACA,OAAO;MACLT,aAAa,EAAE;QACbC,EAAE,EAAEU,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,CAA4B,CAA5B,EAA+BA,KADtB;QAEbV,OAAO,EAAE,0BAAC,2BAAYC,aAAb,gFAA8CD,OAA9C,KAAyD,2BAAYA;MAFjE,CADV;MAKLgB,WAAW,EAAE,2BAAYA;IALpB,CAAP;EAQD;;EAEDC,qBAAqB,GAAkC;IAAA;;IACrD,KAAKC,MAAL,GAAc,MAAMD,qBAAN,EAAd;IACA,OAAO,2BAAYE,cAAnB,CAFqD,CAEf;;IACtC,MAAMC,SAAS,GAAG,2BAAYpB,OAAZ,GAAsB,SAAtB,GAAkC,eAApD;IACA,IAAIqB,aAAa,GAAG,yEAAY,IAAZ,oBAAgCC,QAAQ,IAAIA,QAAQ,KAAKF,SAAzD,CAApB;IACA,OAAO,qBAAAC,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACH,MAAD,EAASI,QAAT,MAAuB,EAAC,GAAGJ,MAAJ;MAAY,CAACI,QAAD,GAAY,2BAAYA,QAAZ;IAAxB,CAAvB,CAAR,EAAgF,EAAhF,CAApB;EACD;;AAvDoF;;;8BAA1EzB,uB,qBACc,2B"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","names":["IdxStatus","AuthenticatorKey","IdxFeature","isAuthenticator","obj","key","id"],"sources":["../../../../lib/idx/types/api.ts"],"sourcesContent":["import { APIError } from '../../types/api';\nimport { Tokens } from '../../types/Token';\nimport { PKCETransactionMeta } from '../../types/Transaction';\nimport { FlowIdentifier } from './FlowIdentifier';\nimport {\n IdxActions,\n IdxAuthenticator,\n IdxContext,\n IdxForm,\n IdxMessage,\n IdxOption,\n IdxRemediation,\n IdxResponse,\n RawIdxResponse,\n IdxActionParams,\n IdpConfig,\n} from './idx-js';\n\nexport enum IdxStatus {\n SUCCESS = 'SUCCESS',\n PENDING = 'PENDING',\n FAILURE = 'FAILURE',\n TERMINAL = 'TERMINAL',\n CANCELED = 'CANCELED',\n}\n\nexport enum AuthenticatorKey {\n OKTA_PASSWORD = 'okta_password',\n OKTA_EMAIL = 'okta_email',\n PHONE_NUMBER = 'phone_number',\n GOOGLE_AUTHENTICATOR = 'google_otp',\n SECURITY_QUESTION = 'security_question',\n OKTA_VERIFY = 'okta_verify',\n WEBAUTHN = 'webauthn',\n}\n\nexport type Input = {\n name: string;\n key?: string;\n type?: string;\n label?: string;\n value?: string | {form: IdxForm} | Input[];\n minLength?: number;\n maxLength?: number;\n secret?: boolean;\n required?: boolean;\n options?: IdxOption[];\n mutable?: boolean;\n visible?: boolean;\n}\n\n\nexport interface IdxPollOptions {\n required?: boolean;\n refresh?: number;\n}\n\nexport type NextStep = {\n name: string;\n authenticator?: IdxAuthenticator;\n canSkip?: boolean;\n canResend?: boolean;\n inputs?: Input[];\n options?: IdxOption[];\n poll?: IdxPollOptions;\n authenticatorEnrollments?: IdxAuthenticator[];\n // eslint-disable-next-line no-use-before-define\n action?: (params?: IdxActionParams) => Promise<IdxTransaction>;\n idp?: IdpConfig;\n href?: string;\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n refresh?: number;\n}\n\nexport enum IdxFeature {\n PASSWORD_RECOVERY = 'recover-password',\n REGISTRATION = 'enroll-profile',\n SOCIAL_IDP = 'redirect-idp',\n ACCOUNT_UNLOCK = 'unlock-account',\n}\n\nexport interface IdxTransactionMeta extends PKCETransactionMeta {\n interactionHandle?: string;\n remediations?: string[];\n flow?: FlowIdentifier;\n withCredentials?: boolean;\n activationToken?: string;\n recoveryToken?: string;\n maxAge?: string | number;\n}\n\nexport interface IdxTransaction {\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 requestDidSucceed?: boolean;\n stepUp?: boolean;\n \n // from idx-js, used by signin widget\n proceed: (remediationName: string, params: unknown) => Promise<IdxResponse>;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n context: IdxContext;\n}\n\n\nexport type Authenticator = {\n id?: string;\n key?: string;\n methodType?: string;\n phoneNumber?: string;\n};\n\nexport function isAuthenticator(obj: any): obj is Authenticator {\n return obj && (obj.key || obj.id);\n}\n\nexport interface RemediationResponse {\n idxResponse: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\n\nexport interface InteractResponse {\n state?: string;\n interactionHandle: string;\n meta: IdxTransactionMeta;\n}\n"],"mappings":";;;;IAkBYA,S;;;WAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;GAAAA,S,yBAAAA,S;;IAQAC,gB;;;WAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;GAAAA,gB,gCAAAA,gB;;IAmDAC,U;;;WAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;GAAAA,U,0BAAAA,U;;AA8CL,SAASC,eAAT,CAAyBC,GAAzB,EAAyD;EAC9D,OAAOA,GAAG,KAAKA,GAAG,CAACC,GAAJ,IAAWD,GAAG,CAACE,EAApB,CAAV;AACD"}
1
+ {"version":3,"file":"api.js","names":["IdxStatus","AuthenticatorKey","IdxFeature","isAuthenticator","obj","key","id"],"sources":["../../../../lib/idx/types/api.ts"],"sourcesContent":["import { APIError } from '../../types/api';\nimport { Tokens } from '../../types/Token';\nimport { PKCETransactionMeta } from '../../types/Transaction';\nimport { FlowIdentifier } from './FlowIdentifier';\nimport {\n IdxActions,\n IdxAuthenticator,\n IdxContext,\n IdxForm,\n IdxMessage,\n IdxOption,\n IdxRemediation,\n IdxResponse,\n RawIdxResponse,\n IdxActionParams,\n IdpConfig,\n} from './idx-js';\n\nexport enum IdxStatus {\n SUCCESS = 'SUCCESS',\n PENDING = 'PENDING',\n FAILURE = 'FAILURE',\n TERMINAL = 'TERMINAL',\n CANCELED = 'CANCELED',\n}\n\nexport enum AuthenticatorKey {\n OKTA_PASSWORD = 'okta_password',\n OKTA_EMAIL = 'okta_email',\n PHONE_NUMBER = 'phone_number',\n GOOGLE_AUTHENTICATOR = 'google_otp',\n SECURITY_QUESTION = 'security_question',\n OKTA_VERIFY = 'okta_verify',\n WEBAUTHN = 'webauthn',\n}\n\nexport type Input = {\n name: string;\n key?: string;\n type?: string;\n label?: string;\n value?: string | {form: IdxForm} | Input[];\n minLength?: number;\n maxLength?: number;\n secret?: boolean;\n required?: boolean;\n options?: IdxOption[];\n mutable?: boolean;\n visible?: boolean;\n}\n\n\nexport interface IdxPollOptions {\n required?: boolean;\n refresh?: number;\n}\n\nexport type NextStep = {\n name: string;\n authenticator?: IdxAuthenticator;\n canSkip?: boolean;\n canResend?: boolean;\n inputs?: Input[];\n options?: IdxOption[];\n poll?: IdxPollOptions;\n authenticatorEnrollments?: IdxAuthenticator[];\n // eslint-disable-next-line no-use-before-define\n action?: (params?: IdxActionParams) => Promise<IdxTransaction>;\n idp?: IdpConfig;\n href?: string;\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n refresh?: number;\n}\n\nexport enum IdxFeature {\n PASSWORD_RECOVERY = 'recover-password',\n REGISTRATION = 'enroll-profile',\n SOCIAL_IDP = 'redirect-idp',\n ACCOUNT_UNLOCK = 'unlock-account',\n}\n\nexport interface IdxTransactionMeta extends PKCETransactionMeta {\n interactionHandle?: string;\n remediations?: string[];\n flow?: FlowIdentifier;\n withCredentials?: boolean;\n activationToken?: string;\n recoveryToken?: string;\n maxAge?: string | number;\n}\n\nexport interface IdxTransaction {\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 requestDidSucceed?: boolean;\n stepUp?: boolean;\n \n // from idx-js, used by signin widget\n proceed: (remediationName: string, params: unknown) => Promise<IdxResponse>;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n context: IdxContext;\n}\n\n\nexport type Authenticator = {\n id?: string;\n key?: string;\n methodType?: string;\n phoneNumber?: string;\n channel?: string;\n};\n\nexport function isAuthenticator(obj: any): obj is Authenticator {\n return obj && (obj.key || obj.id);\n}\n\nexport interface RemediationResponse {\n idxResponse: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\n\nexport interface InteractResponse {\n state?: string;\n interactionHandle: string;\n meta: IdxTransactionMeta;\n}\n"],"mappings":";;;;IAkBYA,S;;;WAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;GAAAA,S,yBAAAA,S;;IAQAC,gB;;;WAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;GAAAA,gB,gCAAAA,gB;;IAmDAC,U;;;WAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;EAAAA,U;GAAAA,U,0BAAAA,U;;AA+CL,SAASC,eAAT,CAAyBC,GAAzB,EAAyD;EAC9D,OAAOA,GAAG,KAAKA,GAAG,CAACC,GAAJ,IAAWD,GAAG,CAACE,EAApB,CAAV;AACD"}