auth0-deploy-cli 8.1.0 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.nyc_output/22a18025-9f7a-437a-8a03-9b2d634bd0a0.json +1 -0
  2. package/.nyc_output/processinfo/22a18025-9f7a-437a-8a03-9b2d634bd0a0.json +1 -0
  3. package/.nyc_output/processinfo/43514efa-958a-42dc-98b7-6a094257d3c1.json +1 -0
  4. package/.nyc_output/processinfo/97d5e38d-7d72-4b1a-b747-5dd4b539b6f0.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -1
  6. package/CHANGELOG.md +14 -1
  7. package/coverage/lcov-report/index.html +47 -47
  8. package/coverage/lcov.info +1948 -1096
  9. package/docs/configuring-the-deploy-cli.md +8 -0
  10. package/lib/context/directory/handlers/flowVaultConnections.d.ts +6 -0
  11. package/lib/context/directory/handlers/flowVaultConnections.js +81 -0
  12. package/lib/context/directory/handlers/flowVaultConnections.js.map +1 -0
  13. package/lib/context/directory/handlers/flows.d.ts +6 -0
  14. package/lib/context/directory/handlers/flows.js +80 -0
  15. package/lib/context/directory/handlers/flows.js.map +1 -0
  16. package/lib/context/directory/handlers/forms.d.ts +6 -0
  17. package/lib/context/directory/handlers/forms.js +80 -0
  18. package/lib/context/directory/handlers/forms.js.map +1 -0
  19. package/lib/context/directory/handlers/index.js +6 -0
  20. package/lib/context/directory/handlers/index.js.map +1 -1
  21. package/lib/context/yaml/handlers/flowVaultConnections.d.ts +6 -0
  22. package/lib/context/yaml/handlers/flowVaultConnections.js +66 -0
  23. package/lib/context/yaml/handlers/flowVaultConnections.js.map +1 -0
  24. package/lib/context/yaml/handlers/flows.d.ts +6 -0
  25. package/lib/context/yaml/handlers/flows.js +92 -0
  26. package/lib/context/yaml/handlers/flows.js.map +1 -0
  27. package/lib/context/yaml/handlers/forms.d.ts +6 -0
  28. package/lib/context/yaml/handlers/forms.js +92 -0
  29. package/lib/context/yaml/handlers/forms.js.map +1 -0
  30. package/lib/context/yaml/handlers/index.js +6 -0
  31. package/lib/context/yaml/handlers/index.js.map +1 -1
  32. package/lib/index.d.ts +4 -0
  33. package/lib/tools/auth0/handlers/flowVaultConnections.d.ts +53 -0
  34. package/lib/tools/auth0/handlers/flowVaultConnections.js +188 -0
  35. package/lib/tools/auth0/handlers/flowVaultConnections.js.map +1 -0
  36. package/lib/tools/auth0/handlers/flows.d.ts +32 -0
  37. package/lib/tools/auth0/handlers/flows.js +156 -0
  38. package/lib/tools/auth0/handlers/flows.js.map +1 -0
  39. package/lib/tools/auth0/handlers/forms.d.ts +32 -0
  40. package/lib/tools/auth0/handlers/forms.js +137 -0
  41. package/lib/tools/auth0/handlers/forms.js.map +1 -0
  42. package/lib/tools/auth0/handlers/index.js +6 -0
  43. package/lib/tools/auth0/handlers/index.js.map +1 -1
  44. package/lib/tools/constants.d.ts +4 -0
  45. package/lib/tools/constants.js +26 -0
  46. package/lib/tools/constants.js.map +1 -1
  47. package/lib/tools/index.d.ts +4 -0
  48. package/lib/types.d.ts +7 -1
  49. package/lib/types.js.map +1 -1
  50. package/lib/utils.d.ts +7 -0
  51. package/lib/utils.js +25 -0
  52. package/lib/utils.js.map +1 -1
  53. package/package.json +6 -6
  54. package/.nyc_output/eddfc559-04e8-4f99-adef-dd9503950c80.json +0 -1
  55. package/.nyc_output/processinfo/20b0af71-c58f-402b-ac9c-4c5b7a505a79.json +0 -1
  56. package/.nyc_output/processinfo/9b0c8b3d-76ba-4549-b82e-b44e387f2419.json +0 -1
  57. package/.nyc_output/processinfo/eddfc559-04e8-4f99-adef-dd9503950c80.json +0 -1
  58. /package/.nyc_output/{20b0af71-c58f-402b-ac9c-4c5b7a505a79.json → 43514efa-958a-42dc-98b7-6a094257d3c1.json} +0 -0
  59. /package/.nyc_output/{9b0c8b3d-76ba-4549-b82e-b44e387f2419.json → 97d5e38d-7d72-4b1a-b747-5dd4b539b6f0.json} +0 -0
@@ -48,6 +48,14 @@ export AUTH0_KEYWORD_REPLACE_MAPPINGS='{"ENVIRONMENT":"dev"}'
48
48
  a0deploy export -c=config.json --format=yaml --output_folder=local
49
49
  ```
50
50
 
51
+ ### Free Tier
52
+
53
+ Certain Auth0 resources require a paid plan with a verified credit card on file to manage. On free tier tenants, logStreams need to be excluded in `config.json`. You can also exclude customDomains, if you don't want to add credit card information.
54
+
55
+ ```json
56
+ "AUTH0_EXCLUDED": ["logStreams", "customDomains"]
57
+ ```
58
+
51
59
  ## Available Configuration Properties
52
60
 
53
61
  ### `AUTH0_DOMAIN`
@@ -0,0 +1,6 @@
1
+ import { DirectoryHandler } from '.';
2
+ import { ParsedAsset } from '../../../types';
3
+ import { FlowVaultConnection } from '../../../tools/auth0/handlers/flowVaultConnections';
4
+ type ParsedFlowVaults = ParsedAsset<'flowVaultConnections', FlowVaultConnection[]>;
5
+ declare const flowVaultsHandler: DirectoryHandler<ParsedFlowVaults>;
6
+ export default flowVaultsHandler;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const path_1 = __importDefault(require("path"));
16
+ const fs_extra_1 = __importDefault(require("fs-extra"));
17
+ const lodash_1 = require("lodash");
18
+ const tools_1 = require("../../../tools");
19
+ const logger_1 = __importDefault(require("../../../logger"));
20
+ const utils_1 = require("../../../utils");
21
+ function parse(context) {
22
+ const flowVaultsFolder = path_1.default.join(context.filePath, tools_1.constants.FLOWS_VAULT_DIRECTORY);
23
+ if (!(0, utils_1.existsMustBeDir)(flowVaultsFolder))
24
+ return { flowVaultConnections: null }; // Skip
25
+ const files = (0, utils_1.getFiles)(flowVaultsFolder, ['.json']);
26
+ const flowVaultConnections = files.map((f) => {
27
+ const connection = Object.assign({}, (0, utils_1.loadJSON)(f, {
28
+ mappings: context.mappings,
29
+ disableKeywordReplacement: context.disableKeywordReplacement,
30
+ }));
31
+ return connection;
32
+ });
33
+ return {
34
+ flowVaultConnections,
35
+ };
36
+ }
37
+ function dump(context) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const { flowVaultConnections } = context.assets;
40
+ if (!flowVaultConnections || (0, lodash_1.isEmpty)(flowVaultConnections))
41
+ return; // Skip, nothing to dump
42
+ // Check if there is any duplicate form name
43
+ const vaultConnectionsNamesSet = new Set();
44
+ const duplicateVaultConnectionsNames = new Set();
45
+ flowVaultConnections.forEach((form) => {
46
+ if (vaultConnectionsNamesSet.has(form.name)) {
47
+ duplicateVaultConnectionsNames.add(form.name);
48
+ }
49
+ else {
50
+ vaultConnectionsNamesSet.add(form.name);
51
+ }
52
+ });
53
+ if (duplicateVaultConnectionsNames.size > 0) {
54
+ const duplicatesArray = Array.from(duplicateVaultConnectionsNames);
55
+ logger_1.default.error(`Duplicate flow vault connections names found: [${duplicatesArray}] , make sure to rename them to avoid conflicts`);
56
+ throw new Error(`Duplicate flow vault connections names found: ${duplicatesArray}`);
57
+ }
58
+ const flowVaultsFolder = path_1.default.join(context.filePath, tools_1.constants.FLOWS_VAULT_DIRECTORY);
59
+ fs_extra_1.default.ensureDirSync(flowVaultsFolder);
60
+ const removeKeysFromOutput = ['id', 'created_at', 'updated_at', 'refreshed_at', 'fingerprint'];
61
+ flowVaultConnections.forEach((connection) => {
62
+ removeKeysFromOutput.forEach((key) => {
63
+ if (key in connection) {
64
+ delete connection[key];
65
+ }
66
+ });
67
+ });
68
+ console.warn('WARNING! Flow vault connections `setup` key does not support keyword preservation, `export` or `dump` commmand will not preserve `setup` key in local configuration file.');
69
+ flowVaultConnections.forEach((connection) => {
70
+ const connectionFile = path_1.default.join(flowVaultsFolder, (0, utils_1.sanitize)(`${connection.name}.json`));
71
+ logger_1.default.info(`Writing ${connectionFile}`);
72
+ (0, utils_1.dumpJSON)(connectionFile, connection);
73
+ });
74
+ });
75
+ }
76
+ const flowVaultsHandler = {
77
+ parse,
78
+ dump,
79
+ };
80
+ exports.default = flowVaultsHandler;
81
+ //# sourceMappingURL=flowVaultConnections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowVaultConnections.js","sourceRoot":"","sources":["../../../../src/context/directory/handlers/flowVaultConnections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { DirectoryHandler } from '.';
2
+ import { ParsedAsset } from '../../../types';
3
+ import { Flow } from '../../../tools/auth0/handlers/flows';
4
+ type ParsedFlows = ParsedAsset<'flows', Flow[]>;
5
+ declare const flowsHandler: DirectoryHandler<ParsedFlows>;
6
+ export default flowsHandler;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const path_1 = __importDefault(require("path"));
16
+ const fs_extra_1 = __importDefault(require("fs-extra"));
17
+ const tools_1 = require("../../../tools");
18
+ const logger_1 = __importDefault(require("../../../logger"));
19
+ const utils_1 = require("../../../utils");
20
+ function parse(context) {
21
+ const flowsFolder = path_1.default.join(context.filePath, tools_1.constants.FLOWS_DIRECTORY);
22
+ if (!(0, utils_1.existsMustBeDir)(flowsFolder))
23
+ return { flows: null }; // Skip
24
+ const files = (0, utils_1.getFiles)(flowsFolder, ['.json']);
25
+ const flows = files.map((f) => {
26
+ const flow = Object.assign({}, (0, utils_1.loadJSON)(f, {
27
+ mappings: context.mappings,
28
+ disableKeywordReplacement: context.disableKeywordReplacement,
29
+ }));
30
+ return flow;
31
+ });
32
+ return {
33
+ flows,
34
+ };
35
+ }
36
+ function dump(context) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const { flows } = context.assets;
39
+ if (!flows)
40
+ return; // Skip, nothing to dump
41
+ const flowsFolder = path_1.default.join(context.filePath, tools_1.constants.FLOWS_DIRECTORY);
42
+ fs_extra_1.default.ensureDirSync(flowsFolder);
43
+ // Check if there is any duplicate flow name
44
+ const flowNameSet = new Set();
45
+ const duplicateFlowNames = new Set();
46
+ flows.forEach((flow) => {
47
+ if (flowNameSet.has(flow.name)) {
48
+ duplicateFlowNames.add(flow.name);
49
+ }
50
+ else {
51
+ flowNameSet.add(flow.name);
52
+ }
53
+ });
54
+ if (duplicateFlowNames.size > 0) {
55
+ const duplicateNamesArray = Array.from(duplicateFlowNames).join(', ');
56
+ logger_1.default.error(`Duplicate flow names found: [${duplicateNamesArray}] , make sure to rename them to avoid conflicts`);
57
+ throw new Error(`Duplicate flow names found: ${duplicateNamesArray}`);
58
+ }
59
+ flows.forEach((flow) => {
60
+ if (flow.name === undefined) {
61
+ return;
62
+ }
63
+ const flowFile = path_1.default.join(flowsFolder, (0, utils_1.sanitize)(`${flow.name}.json`));
64
+ logger_1.default.info(`Writing ${flowFile}`);
65
+ const removeKeysFromOutput = ['id', 'created_at', 'updated_at', 'submitted_at', 'embedded_at'];
66
+ removeKeysFromOutput.forEach((key) => {
67
+ if (key in flow) {
68
+ delete flow[key];
69
+ }
70
+ });
71
+ (0, utils_1.dumpJSON)(flowFile, flow);
72
+ });
73
+ });
74
+ }
75
+ const flowsHandler = {
76
+ parse,
77
+ dump,
78
+ };
79
+ exports.default = flowsHandler;
80
+ //# sourceMappingURL=flows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../../src/context/directory/handlers/flows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { DirectoryHandler } from '.';
2
+ import { ParsedAsset } from '../../../types';
3
+ import { Form } from '../../../tools/auth0/handlers/forms';
4
+ type ParsedFroms = ParsedAsset<'forms', Form[]>;
5
+ declare const formsHandler: DirectoryHandler<ParsedFroms>;
6
+ export default formsHandler;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const path_1 = __importDefault(require("path"));
16
+ const fs_extra_1 = __importDefault(require("fs-extra"));
17
+ const tools_1 = require("../../../tools");
18
+ const logger_1 = __importDefault(require("../../../logger"));
19
+ const utils_1 = require("../../../utils");
20
+ function parse(context) {
21
+ const formsFolder = path_1.default.join(context.filePath, tools_1.constants.FORMS_DIRECTORY);
22
+ if (!(0, utils_1.existsMustBeDir)(formsFolder))
23
+ return { forms: null }; // Skip
24
+ const files = (0, utils_1.getFiles)(formsFolder, ['.json']);
25
+ const forms = files.map((f) => {
26
+ const form = Object.assign({}, (0, utils_1.loadJSON)(f, {
27
+ mappings: context.mappings,
28
+ disableKeywordReplacement: context.disableKeywordReplacement,
29
+ }));
30
+ return form;
31
+ });
32
+ return {
33
+ forms,
34
+ };
35
+ }
36
+ function dump(context) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const { forms } = context.assets;
39
+ if (!forms)
40
+ return; // Skip, nothing to dump
41
+ const formsFolder = path_1.default.join(context.filePath, tools_1.constants.FORMS_DIRECTORY);
42
+ fs_extra_1.default.ensureDirSync(formsFolder);
43
+ // Check if there is any duplicate form name
44
+ const formNameSet = new Set();
45
+ const duplicateFormNames = new Set();
46
+ forms.forEach((form) => {
47
+ if (formNameSet.has(form.name)) {
48
+ duplicateFormNames.add(form.name);
49
+ }
50
+ else {
51
+ formNameSet.add(form.name);
52
+ }
53
+ });
54
+ if (duplicateFormNames.size > 0) {
55
+ const duplicateNamesArray = Array.from(duplicateFormNames).join(', ');
56
+ logger_1.default.error(`Duplicate form names found: [${duplicateNamesArray}] , make sure to rename them to avoid conflicts`);
57
+ throw new Error(`Duplicate form names found: ${duplicateNamesArray}`);
58
+ }
59
+ forms.forEach((form) => {
60
+ if (form.name === undefined) {
61
+ return;
62
+ }
63
+ const formFile = path_1.default.join(formsFolder, (0, utils_1.sanitize)(`${form.name}.json`));
64
+ logger_1.default.info(`Writing ${formFile}`);
65
+ const removeKeysFromOutput = ['id', 'created_at', 'updated_at'];
66
+ removeKeysFromOutput.forEach((key) => {
67
+ if (key in form) {
68
+ delete form[key];
69
+ }
70
+ });
71
+ (0, utils_1.dumpJSON)(formFile, form);
72
+ });
73
+ });
74
+ }
75
+ const formsHandler = {
76
+ parse,
77
+ dump,
78
+ };
79
+ exports.default = formsHandler;
80
+ //# sourceMappingURL=forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../../src/context/directory/handlers/forms.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,9 @@ const themes_1 = __importDefault(require("./themes"));
31
31
  const rules_1 = __importDefault(require("./rules"));
32
32
  const hooks_1 = __importDefault(require("./hooks"));
33
33
  const rulesConfigs_1 = __importDefault(require("./rulesConfigs"));
34
+ const forms_1 = __importDefault(require("./forms"));
35
+ const flows_1 = __importDefault(require("./flows"));
36
+ const flowVaultConnections_1 = __importDefault(require("./flowVaultConnections"));
34
37
  const directoryHandlers = {
35
38
  rules: rules_1.default,
36
39
  rulesConfigs: rulesConfigs_1.default,
@@ -60,6 +63,9 @@ const directoryHandlers = {
60
63
  prompts: prompts_1.default,
61
64
  customDomains: customDomains_1.default,
62
65
  themes: themes_1.default,
66
+ forms: forms_1.default,
67
+ flows: flows_1.default,
68
+ flowVaultConnections: flowVaultConnections_1.default,
63
69
  };
64
70
  exports.default = directoryHandlers;
65
71
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/context/directory/handlers/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,wDAAgC;AAChC,sDAA8B;AAC9B,oEAA4C;AAC5C,gEAAwC;AACxC,4DAAoC;AACpC,sEAA8C;AAC9C,kEAA0C;AAC1C,wEAAgD;AAChD,wEAAgD;AAChD,wFAAgE;AAChE,wFAAgE;AAChE,wGAAgF;AAChF,gHAAwF;AACxF,0EAAkD;AAClD,oDAA4B;AAC5B,wDAAgC;AAChC,oEAA4C;AAC5C,0DAAkC;AAClC,0EAAkD;AAClD,0DAAkC;AAClC,8DAAsC;AACtC,wDAAgC;AAChC,oEAA4C;AAC5C,sDAA8B;AAC9B,oDAA4B;AAC5B,oDAA4B;AAC5B,kEAA0C;AAU1C,MAAM,iBAAiB,GAEnB;IACF,KAAK,EAAL,eAAK;IACL,YAAY,EAAZ,sBAAY;IACZ,KAAK,EAAL,eAAK;IACL,KAAK,EAAL,eAAK;IACL,SAAS,EAAT,mBAAS;IACT,YAAY,EAAZ,sBAAY;IACZ,eAAe,EAAf,yBAAe;IACf,OAAO,EAAP,iBAAO;IACP,WAAW,EAAX,qBAAW;IACX,MAAM,EAAN,gBAAM;IACN,aAAa,EAAb,uBAAa;IACb,cAAc,EAAd,wBAAc;IACd,eAAe,EAAf,yBAAe;IACf,uBAAuB,EAAvB,iCAAuB;IACvB,uBAAuB,EAAvB,iCAAuB;IACvB,+BAA+B,EAA/B,yCAA+B;IAC/B,mCAAmC,EAAnC,6CAAmC;IACnC,gBAAgB,EAAhB,0BAAgB;IAChB,KAAK,EAAL,eAAK;IACL,OAAO,EAAP,iBAAO;IACP,aAAa,EAAb,uBAAa;IACb,QAAQ,EAAR,kBAAQ;IACR,gBAAgB,EAAhB,0BAAgB;IAChB,QAAQ,EAAR,kBAAQ;IACR,UAAU,EAAV,oBAAU;IACV,OAAO,EAAP,iBAAO;IACP,aAAa,EAAb,uBAAa;IACb,MAAM,EAAN,gBAAM;CACP,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/context/directory/handlers/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,wDAAgC;AAChC,sDAA8B;AAC9B,oEAA4C;AAC5C,gEAAwC;AACxC,4DAAoC;AACpC,sEAA8C;AAC9C,kEAA0C;AAC1C,wEAAgD;AAChD,wEAAgD;AAChD,wFAAgE;AAChE,wFAAgE;AAChE,wGAAgF;AAChF,gHAAwF;AACxF,0EAAkD;AAClD,oDAA4B;AAC5B,wDAAgC;AAChC,oEAA4C;AAC5C,0DAAkC;AAClC,0EAAkD;AAClD,0DAAkC;AAClC,8DAAsC;AACtC,wDAAgC;AAChC,oEAA4C;AAC5C,sDAA8B;AAC9B,oDAA4B;AAC5B,oDAA4B;AAC5B,kEAA0C;AAC1C,oDAA4B;AAC5B,oDAA4B;AAC5B,kFAA0D;AAU1D,MAAM,iBAAiB,GAEnB;IACF,KAAK,EAAL,eAAK;IACL,YAAY,EAAZ,sBAAY;IACZ,KAAK,EAAL,eAAK;IACL,KAAK,EAAL,eAAK;IACL,SAAS,EAAT,mBAAS;IACT,YAAY,EAAZ,sBAAY;IACZ,eAAe,EAAf,yBAAe;IACf,OAAO,EAAP,iBAAO;IACP,WAAW,EAAX,qBAAW;IACX,MAAM,EAAN,gBAAM;IACN,aAAa,EAAb,uBAAa;IACb,cAAc,EAAd,wBAAc;IACd,eAAe,EAAf,yBAAe;IACf,uBAAuB,EAAvB,iCAAuB;IACvB,uBAAuB,EAAvB,iCAAuB;IACvB,+BAA+B,EAA/B,yCAA+B;IAC/B,mCAAmC,EAAnC,6CAAmC;IACnC,gBAAgB,EAAhB,0BAAgB;IAChB,KAAK,EAAL,eAAK;IACL,OAAO,EAAP,iBAAO;IACP,aAAa,EAAb,uBAAa;IACb,QAAQ,EAAR,kBAAQ;IACR,gBAAgB,EAAhB,0BAAgB;IAChB,QAAQ,EAAR,kBAAQ;IACR,UAAU,EAAV,oBAAU;IACV,OAAO,EAAP,iBAAO;IACP,aAAa,EAAb,uBAAa;IACb,MAAM,EAAN,gBAAM;IACN,KAAK,EAAL,eAAK;IACL,KAAK,EAAL,eAAK;IACL,oBAAoB,EAApB,8BAAoB;CACrB,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { YAMLHandler } from '.';
2
+ import { ParsedAsset } from '../../../types';
3
+ import { FlowVaultConnection } from '../../../tools/auth0/handlers/flowVaultConnections';
4
+ type ParsedParsedFlowVaults = ParsedAsset<'flowVaultConnections', FlowVaultConnection[]>;
5
+ declare const pagesHandler: YAMLHandler<ParsedParsedFlowVaults>;
6
+ export default pagesHandler;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const logger_1 = __importDefault(require("../../../logger"));
16
+ function dump(context) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const { flowVaultConnections } = context.assets;
19
+ if (!flowVaultConnections)
20
+ return { flowVaultConnections: null };
21
+ // Check if there is any duplicate form name
22
+ const vaultConnectionsNames = new Set();
23
+ const duplicateVaultConnectionsNames = new Set();
24
+ flowVaultConnections.forEach((form) => {
25
+ if (vaultConnectionsNames.has(form.name)) {
26
+ duplicateVaultConnectionsNames.add(form.name);
27
+ }
28
+ else {
29
+ vaultConnectionsNames.add(form.name);
30
+ }
31
+ });
32
+ if (duplicateVaultConnectionsNames.size > 0) {
33
+ const duplicatesArray = Array.from(duplicateVaultConnectionsNames).join(', ');
34
+ logger_1.default.error(`Duplicate flow vault connections names found: [${duplicatesArray}] , make sure to rename them to avoid conflicts`);
35
+ throw new Error(`Duplicate flow vault connections names found: ${duplicatesArray}`);
36
+ }
37
+ const removeKeysFromOutput = ['id', 'created_at', 'updated_at', 'refreshed_at', 'fingerprint'];
38
+ flowVaultConnections.forEach((connection) => {
39
+ removeKeysFromOutput.forEach((key) => {
40
+ if (key in connection) {
41
+ delete connection[key];
42
+ }
43
+ });
44
+ });
45
+ console.warn('WARNING! Flow vault connections `setup` key does not support keyword preservation, `export` or `dump` commmand will not preserve `setup` key in local configuration file.');
46
+ return {
47
+ flowVaultConnections,
48
+ };
49
+ });
50
+ }
51
+ function parse(context) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const { flowVaultConnections } = context.assets;
54
+ if (!flowVaultConnections)
55
+ return { flowVaultConnections: null };
56
+ return {
57
+ flowVaultConnections,
58
+ };
59
+ });
60
+ }
61
+ const pagesHandler = {
62
+ parse,
63
+ dump,
64
+ };
65
+ exports.default = pagesHandler;
66
+ //# sourceMappingURL=flowVaultConnections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowVaultConnections.js","sourceRoot":"","sources":["../../../../src/context/yaml/handlers/flowVaultConnections.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,6DAAkC;AAIlC,SAAe,IAAI,CAAC,OAAoB;;QACtC,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEhD,IAAI,CAAC,oBAAoB;YAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;QAEjE,4CAA4C;QAC5C,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;QACxC,MAAM,8BAA8B,GAAG,IAAI,GAAG,EAAE,CAAC;QAEjD,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,8BAA8B,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,gBAAG,CAAC,KAAK,CACP,kDAAkD,eAAe,iDAAiD,CACnH,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,iDAAiD,eAAe,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QAC/F,oBAAoB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC1C,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnC,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;oBACtB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CACV,2KAA2K,CAC5K,CAAC;QAEF,OAAO;YACL,oBAAoB;SACrB,CAAC;IACJ,CAAC;CAAA;AAED,SAAe,KAAK,CAAC,OAAoB;;QACvC,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEhD,IAAI,CAAC,oBAAoB;YAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;QAEjE,OAAO;YACL,oBAAoB;SACrB,CAAC;IACJ,CAAC;CAAA;AAED,MAAM,YAAY,GAAwC;IACxD,KAAK;IACL,IAAI;CACL,CAAC;AAEF,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { YAMLHandler } from '.';
2
+ import { ParsedAsset } from '../../../types';
3
+ import { Flow } from '../../../tools/auth0/handlers/flows';
4
+ type ParsedFlows = ParsedAsset<'flows', Flow[]>;
5
+ declare const pagesHandler: YAMLHandler<ParsedFlows>;
6
+ export default pagesHandler;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const path_1 = __importDefault(require("path"));
16
+ const fs_extra_1 = __importDefault(require("fs-extra"));
17
+ const logger_1 = __importDefault(require("../../../logger"));
18
+ const utils_1 = require("../../../utils");
19
+ const tools_1 = require("../../../tools");
20
+ function parse(context) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const { flows } = context.assets;
23
+ if (!flows)
24
+ return { flows: null };
25
+ const parsedFlows = flows.map((flow) => {
26
+ const flowFile = path_1.default.join(context.basePath, flow.body);
27
+ const parsedFlowBody = (0, utils_1.loadJSON)(flowFile, {
28
+ mappings: context.mappings,
29
+ disableKeywordReplacement: context.disableKeywordReplacement,
30
+ });
31
+ // Remove the body from the form object
32
+ delete parsedFlowBody.body;
33
+ return Object.assign({ name: flow.name }, parsedFlowBody);
34
+ });
35
+ return {
36
+ flows: [...parsedFlows],
37
+ };
38
+ });
39
+ }
40
+ function dump(context) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ let { flows } = context.assets;
43
+ if (!flows) {
44
+ return { flows: null };
45
+ }
46
+ const pagesFolder = path_1.default.join(context.basePath, tools_1.constants.FLOWS_DIRECTORY);
47
+ fs_extra_1.default.ensureDirSync(pagesFolder);
48
+ // Check if there is any duplicate flow name
49
+ const flowNameSet = new Set();
50
+ const duplicateFlowNames = new Set();
51
+ flows.forEach((flow) => {
52
+ if (flowNameSet.has(flow.name)) {
53
+ duplicateFlowNames.add(flow.name);
54
+ }
55
+ else {
56
+ flowNameSet.add(flow.name);
57
+ }
58
+ });
59
+ if (duplicateFlowNames.size > 0) {
60
+ const duplicateNamesArray = Array.from(duplicateFlowNames).join(', ');
61
+ logger_1.default.error(`Duplicate flow names found: [${duplicateNamesArray}] , make sure to rename them to avoid conflicts`);
62
+ throw new Error(`Duplicate flow names found: ${duplicateNamesArray}`);
63
+ }
64
+ flows = flows.map((flow) => {
65
+ if (flow.name === undefined) {
66
+ return flow;
67
+ }
68
+ const flowName = (0, utils_1.sanitize)(flow.name);
69
+ const jsonFile = path_1.default.join(pagesFolder, `${flowName}.json`);
70
+ logger_1.default.info(`Writing ${jsonFile}`);
71
+ const removeKeysFromOutput = ['id', 'created_at', 'updated_at', 'submitted_at', 'embedded_at'];
72
+ removeKeysFromOutput.forEach((key) => {
73
+ if (key in flow) {
74
+ delete flow[key];
75
+ }
76
+ });
77
+ const jsonBody = JSON.stringify(flow, null, 2);
78
+ fs_extra_1.default.writeFileSync(jsonFile, jsonBody);
79
+ return {
80
+ name: flow.name,
81
+ body: `./flows/${flowName}.json`,
82
+ };
83
+ });
84
+ return { flows };
85
+ });
86
+ }
87
+ const pagesHandler = {
88
+ parse,
89
+ dump,
90
+ };
91
+ exports.default = pagesHandler;
92
+ //# sourceMappingURL=flows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../../src/context/yaml/handlers/flows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { YAMLHandler } from '.';
2
+ import { ParsedAsset } from '../../../types';
3
+ import { Form } from '../../../tools/auth0/handlers/forms';
4
+ type ParsedForms = ParsedAsset<'forms', Partial<Form>[]>;
5
+ declare const pagesHandler: YAMLHandler<ParsedForms>;
6
+ export default pagesHandler;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const path_1 = __importDefault(require("path"));
16
+ const fs_extra_1 = __importDefault(require("fs-extra"));
17
+ const logger_1 = __importDefault(require("../../../logger"));
18
+ const utils_1 = require("../../../utils");
19
+ const constants_1 = __importDefault(require("../../../tools/constants"));
20
+ function parse(context) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const { forms } = context.assets;
23
+ if (!forms)
24
+ return { forms: null };
25
+ const parsedForms = forms.map((form) => {
26
+ const formFile = path_1.default.join(context.basePath, form.body);
27
+ const parsedFormBody = (0, utils_1.loadJSON)(formFile, {
28
+ mappings: context.mappings,
29
+ disableKeywordReplacement: context.disableKeywordReplacement,
30
+ });
31
+ // Remove the body from the form object
32
+ delete parsedFormBody.body;
33
+ return Object.assign({ name: form.name }, parsedFormBody);
34
+ });
35
+ return {
36
+ forms: [...parsedForms],
37
+ };
38
+ });
39
+ }
40
+ function dump(context) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ let { forms } = context.assets;
43
+ if (!forms) {
44
+ return { forms: null };
45
+ }
46
+ const pagesFolder = path_1.default.join(context.basePath, constants_1.default.FORMS_DIRECTORY);
47
+ fs_extra_1.default.ensureDirSync(pagesFolder);
48
+ // Check if there is any duplicate form name
49
+ const formNameSet = new Set();
50
+ const duplicateFormNames = new Set();
51
+ forms.forEach((form) => {
52
+ if (formNameSet.has(form.name)) {
53
+ duplicateFormNames.add(form.name);
54
+ }
55
+ else {
56
+ formNameSet.add(form.name);
57
+ }
58
+ });
59
+ if (duplicateFormNames.size > 0) {
60
+ const duplicateNamesArray = Array.from(duplicateFormNames).join(', ');
61
+ logger_1.default.error(`Duplicate form names found: [${duplicateNamesArray}] , make sure to rename them to avoid conflicts`);
62
+ throw new Error(`Duplicate form names found: ${duplicateNamesArray}`);
63
+ }
64
+ forms = forms.map((form) => {
65
+ if (form.name === undefined) {
66
+ return form;
67
+ }
68
+ const formName = (0, utils_1.sanitize)(form.name);
69
+ const jsonFile = path_1.default.join(pagesFolder, `${formName}.json`);
70
+ logger_1.default.info(`Writing ${jsonFile}`);
71
+ const removeKeysFromOutput = ['id', 'created_at', 'updated_at'];
72
+ removeKeysFromOutput.forEach((key) => {
73
+ if (key in form) {
74
+ delete form[key];
75
+ }
76
+ });
77
+ const jsonBody = JSON.stringify(form, null, 2);
78
+ fs_extra_1.default.writeFileSync(jsonFile, jsonBody);
79
+ return {
80
+ name: form.name,
81
+ body: `./forms/${formName}.json`,
82
+ };
83
+ });
84
+ return { forms };
85
+ });
86
+ }
87
+ const pagesHandler = {
88
+ parse,
89
+ dump,
90
+ };
91
+ exports.default = pagesHandler;
92
+ //# sourceMappingURL=forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../../src/context/yaml/handlers/forms.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAE1B,6DAAkC;AAKlC,0CAAoD;AACpD,yEAAiD;AAIjD,SAAe,KAAK,CAAC,OAAoB;;QACvC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAEnC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE;YAC3C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAExD,MAAM,cAAc,GAAG,IAAA,gBAAQ,EAAC,QAAQ,EAAE;gBACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,yBAAyB,EAAE,OAAO,CAAC,yBAAyB;aAC7D,CAAC,CAAC;YAEH,uCAAuC;YACvC,OAAO,cAAc,CAAC,IAAI,CAAC;YAE3B,uBACE,IAAI,EAAE,IAAI,CAAC,IAAI,IACZ,cAAc,EACjB;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC;SACxB,CAAC;IACJ,CAAC;CAAA;AAED,SAAe,IAAI,CAAC,OAAoB;;QACtC,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAS,CAAC,eAAe,CAAC,CAAC;QAC3E,kBAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE9B,4CAA4C;QAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,gBAAG,CAAC,KAAK,CACP,gCAAgC,mBAAmB,iDAAiD,CACrG,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,+BAA+B,mBAAmB,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;YAC5D,gBAAG,CAAC,IAAI,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;YAEhC,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAChE,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAChB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,kBAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrC,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,WAAW,QAAQ,OAAO;aACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;CAAA;AAED,MAAM,YAAY,GAA6B;IAC7C,KAAK;IACL,IAAI;CACL,CAAC;AAEF,kBAAe,YAAY,CAAC"}