auth0-deploy-cli 7.3.7 → 7.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.circleci/config.yml +15 -0
  2. package/.eslintrc +66 -17
  3. package/.github/CODEOWNERS +1 -0
  4. package/.husky/pre-commit +6 -0
  5. package/.husky/pre-push +4 -0
  6. package/CHANGELOG.md +37 -2
  7. package/lib/args.js +94 -81
  8. package/lib/commands/export.js +54 -78
  9. package/lib/commands/import.js +46 -70
  10. package/lib/commands/index.js +11 -20
  11. package/lib/configFactory.js +19 -27
  12. package/lib/context/defaults.js +18 -41
  13. package/lib/context/directory/handlers/actions.js +77 -107
  14. package/lib/context/directory/handlers/attackProtection.js +59 -0
  15. package/lib/context/directory/handlers/clientGrants.js +45 -54
  16. package/lib/context/directory/handlers/clients.js +60 -79
  17. package/lib/context/directory/handlers/connections.js +65 -89
  18. package/lib/context/directory/handlers/databases.js +91 -123
  19. package/lib/context/directory/handlers/emailProvider.js +46 -57
  20. package/lib/context/directory/handlers/emailTemplates.js +67 -80
  21. package/lib/context/directory/handlers/guardianFactorProviders.js +41 -49
  22. package/lib/context/directory/handlers/guardianFactorTemplates.js +41 -49
  23. package/lib/context/directory/handlers/guardianFactors.js +41 -49
  24. package/lib/context/directory/handlers/guardianPhoneFactorMessageTypes.js +40 -50
  25. package/lib/context/directory/handlers/guardianPhoneFactorSelectedProvider.js +40 -50
  26. package/lib/context/directory/handlers/guardianPolicies.js +40 -50
  27. package/lib/context/directory/handlers/hooks.js +55 -70
  28. package/lib/context/directory/handlers/index.js +53 -123
  29. package/lib/context/directory/handlers/migrations.js +36 -41
  30. package/lib/context/directory/handlers/organizations.js +54 -69
  31. package/lib/context/directory/handlers/pages.js +72 -86
  32. package/lib/context/directory/handlers/resourceServers.js +41 -49
  33. package/lib/context/directory/handlers/roles.js +49 -62
  34. package/lib/context/directory/handlers/rules.js +52 -68
  35. package/lib/context/directory/handlers/rulesConfigs.js +33 -32
  36. package/lib/context/directory/handlers/tenant.js +52 -47
  37. package/lib/context/directory/handlers/triggers.js +39 -54
  38. package/lib/context/directory/index.js +113 -101
  39. package/lib/context/index.js +96 -105
  40. package/lib/context/yaml/handlers/actions.js +71 -88
  41. package/lib/context/yaml/handlers/attackProtection.js +29 -0
  42. package/lib/context/yaml/handlers/clientGrants.js +36 -29
  43. package/lib/context/yaml/handlers/clients.js +61 -76
  44. package/lib/context/yaml/handlers/connections.js +76 -103
  45. package/lib/context/yaml/handlers/databases.js +64 -79
  46. package/lib/context/yaml/handlers/emailProvider.js +33 -30
  47. package/lib/context/yaml/handlers/emailTemplates.js +45 -54
  48. package/lib/context/yaml/handlers/guardianFactorProviders.js +27 -18
  49. package/lib/context/yaml/handlers/guardianFactorTemplates.js +27 -18
  50. package/lib/context/yaml/handlers/guardianFactors.js +27 -18
  51. package/lib/context/yaml/handlers/guardianPhoneFactorMessageTypes.js +27 -20
  52. package/lib/context/yaml/handlers/guardianPhoneFactorSelectedProvider.js +27 -20
  53. package/lib/context/yaml/handlers/guardianPolicies.js +27 -20
  54. package/lib/context/yaml/handlers/hooks.js +57 -67
  55. package/lib/context/yaml/handlers/index.js +53 -123
  56. package/lib/context/yaml/handlers/migrations.js +23 -24
  57. package/lib/context/yaml/handlers/organizations.js +40 -38
  58. package/lib/context/yaml/handlers/pages.js +49 -58
  59. package/lib/context/yaml/handlers/resourceServers.js +27 -18
  60. package/lib/context/yaml/handlers/roles.js +34 -24
  61. package/lib/context/yaml/handlers/rules.js +48 -58
  62. package/lib/context/yaml/handlers/rulesConfigs.js +27 -18
  63. package/lib/context/yaml/handlers/tenant.js +44 -30
  64. package/lib/context/yaml/handlers/triggers.js +32 -23
  65. package/lib/context/yaml/index.js +127 -142
  66. package/lib/index.js +73 -79
  67. package/lib/logger.js +18 -22
  68. package/lib/readonly.js +74 -66
  69. package/lib/tools/ValidationError.js +8 -13
  70. package/lib/tools/auth0/client.js +143 -133
  71. package/lib/tools/auth0/handlers/actions.js +231 -243
  72. package/lib/tools/auth0/handlers/attackProtection.js +86 -0
  73. package/lib/tools/auth0/handlers/branding.js +47 -46
  74. package/lib/tools/auth0/handlers/clientGrants.js +118 -116
  75. package/lib/tools/auth0/handlers/clients.js +72 -90
  76. package/lib/tools/auth0/handlers/connections.js +150 -118
  77. package/lib/tools/auth0/handlers/databases.js +127 -124
  78. package/lib/tools/auth0/handlers/default.js +186 -189
  79. package/lib/tools/auth0/handlers/emailProvider.js +67 -78
  80. package/lib/tools/auth0/handlers/emailTemplates.js +116 -92
  81. package/lib/tools/auth0/handlers/guardianFactorProviders.js +66 -81
  82. package/lib/tools/auth0/handlers/guardianFactorTemplates.js +60 -71
  83. package/lib/tools/auth0/handlers/guardianFactors.js +56 -63
  84. package/lib/tools/auth0/handlers/guardianPhoneFactorMessageTypes.js +80 -79
  85. package/lib/tools/auth0/handlers/guardianPhoneFactorSelectedProvider.js +77 -76
  86. package/lib/tools/auth0/handlers/guardianPolicies.js +59 -62
  87. package/lib/tools/auth0/handlers/hooks.js +201 -227
  88. package/lib/tools/auth0/handlers/index.js +53 -111
  89. package/lib/tools/auth0/handlers/migrations.js +99 -79
  90. package/lib/tools/auth0/handlers/organizations.js +225 -247
  91. package/lib/tools/auth0/handlers/pages.js +116 -154
  92. package/lib/tools/auth0/handlers/prompts.js +47 -46
  93. package/lib/tools/auth0/handlers/resourceServers.js +88 -112
  94. package/lib/tools/auth0/handlers/roles.js +203 -220
  95. package/lib/tools/auth0/handlers/rules.js +168 -189
  96. package/lib/tools/auth0/handlers/rulesConfigs.js +54 -63
  97. package/lib/tools/auth0/handlers/tenant.js +88 -64
  98. package/lib/tools/auth0/handlers/triggers.js +126 -126
  99. package/lib/tools/auth0/index.js +92 -85
  100. package/lib/tools/auth0/schema.js +39 -31
  101. package/lib/tools/constants.js +111 -21
  102. package/lib/tools/deploy.js +35 -32
  103. package/lib/tools/index.js +19 -32
  104. package/lib/tools/logger.js +11 -12
  105. package/lib/tools/utils.js +258 -254
  106. package/lib/utils.js +167 -190
  107. package/package.json +13 -17
  108. package/tsconfig.json +17 -0
  109. package/typescript-migration-progress.sh +22 -0
  110. package/.babelrc +0 -17
  111. package/.nyc_output/32e2bffd-d561-4814-9aa3-fe929a1e178a.json +0 -1
  112. package/.nyc_output/processinfo/32e2bffd-d561-4814-9aa3-fe929a1e178a.json +0 -1
  113. package/.nyc_output/processinfo/index.json +0 -1
@@ -1,22 +1,13 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _import = require("./import");
8
-
9
- var _import2 = _interopRequireDefault(_import);
10
-
11
- var _export = require("./export");
12
-
13
- var _export2 = _interopRequireDefault(_export);
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
-
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const import_1 = __importDefault(require("./import"));
7
+ const export_1 = __importDefault(require("./export"));
17
8
  exports.default = {
18
- import: _import2.default,
19
- export: _export2.default,
20
- deploy: _import2.default,
21
- dump: _export2.default
22
- };
9
+ import: import_1.default,
10
+ export: export_1.default,
11
+ deploy: import_1.default,
12
+ dump: export_1.default
13
+ };
@@ -1,28 +1,20 @@
1
- "use strict";
2
-
3
1
  module.exports = function () {
4
- const settings = {};
5
- let currentProvider = null;
6
-
7
- const config = function getConfig(key) {
8
- if (settings && settings[key]) {
9
- return settings[key];
10
- }
11
-
12
- if (!currentProvider) {
13
- throw new Error('A configuration provider has not been set');
14
- }
15
-
16
- return currentProvider(key);
17
- };
18
-
19
- config.setProvider = function setProvider(providerFunction) {
20
- currentProvider = providerFunction;
21
- };
22
-
23
- config.setValue = function setValue(key, value) {
24
- settings[key] = value;
25
- };
26
-
27
- return config;
28
- };
2
+ const settings = {};
3
+ let currentProvider = null;
4
+ const config = function getConfig(key) {
5
+ if (settings && settings[key]) {
6
+ return settings[key];
7
+ }
8
+ if (!currentProvider) {
9
+ throw new Error('A configuration provider has not been set');
10
+ }
11
+ return currentProvider(key);
12
+ };
13
+ config.setProvider = function setProvider(providerFunction) {
14
+ currentProvider = providerFunction;
15
+ };
16
+ config.setValue = function setValue(key, value) {
17
+ settings[key] = value;
18
+ };
19
+ return config;
20
+ };
@@ -1,43 +1,20 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.emailProviderDefaults = emailProviderDefaults;
7
-
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emailProviderDefaults = void 0;
8
4
  function emailProviderDefaults(emailProvider) {
9
- const updated = { ...emailProvider
10
- };
11
- const apiKeyProviders = ['mailgun', 'mandrill', 'sendgrid', 'sparkpost'];
12
- const {
13
- name
14
- } = updated;
15
-
16
- if (apiKeyProviders.includes(name)) {
17
- updated.credentials = {
18
- api_key: `##${name.toUpperCase()}_API_KEY##`,
19
- ...(updated.credentials || {})
20
- };
21
- }
22
-
23
- if (name === 'smtp') {
24
- updated.credentials = {
25
- smtp_host: '##SMTP_HOSTNAME##',
26
- smtp_port: '##SMTP_PORT##',
27
- smtp_user: '##SMTP_USER##',
28
- smtp_pass: '##SMTP_PASS##',
29
- ...(updated.credentials || {})
30
- };
31
- }
32
-
33
- if (name === 'ses') {
34
- updated.credentials = {
35
- accessKeyId: '##SES_ACCESS_KEY_ID##',
36
- secretAccessKey: '##SES_ACCESS_SECRET_KEY##',
37
- region: '##SES_AWS_REGION##',
38
- ...(updated.credentials || {})
39
- };
40
- }
41
-
42
- return updated;
43
- }
5
+ const updated = Object.assign({}, emailProvider);
6
+ const apiKeyProviders = ['mailgun', 'mandrill', 'sendgrid', 'sparkpost'];
7
+ // Add placeholder for credentials as they cannot be exported
8
+ const { name } = updated;
9
+ if (apiKeyProviders.includes(name)) {
10
+ updated.credentials = Object.assign({ api_key: `##${name.toUpperCase()}_API_KEY##` }, updated.credentials || {});
11
+ }
12
+ if (name === 'smtp') {
13
+ updated.credentials = Object.assign({ smtp_host: '##SMTP_HOSTNAME##', smtp_port: '##SMTP_PORT##', smtp_user: '##SMTP_USER##', smtp_pass: '##SMTP_PASS##' }, updated.credentials || {});
14
+ }
15
+ if (name === 'ses') {
16
+ updated.credentials = Object.assign({ accessKeyId: '##SES_ACCESS_KEY_ID##', secretAccessKey: '##SES_ACCESS_SECRET_KEY##', region: '##SES_AWS_REGION##' }, updated.credentials || {});
17
+ }
18
+ return updated;
19
+ }
20
+ exports.emailProviderDefaults = emailProviderDefaults;
@@ -1,119 +1,89 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _fsExtra = require("fs-extra");
8
-
9
- var _fsExtra2 = _interopRequireDefault(_fsExtra);
10
-
11
- var _path = require("path");
12
-
13
- var _path2 = _interopRequireDefault(_path);
14
-
15
- var _tools = require("../../../tools");
16
-
17
- var _utils = require("../../../utils");
18
-
19
- var _logger = require("../../../logger");
20
-
21
- var _logger2 = _interopRequireDefault(_logger);
22
-
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
-
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
+ /* eslint-disable consistent-return */
16
+ const fs_extra_1 = __importDefault(require("fs-extra"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const tools_1 = require("../../../tools");
19
+ const utils_1 = require("../../../utils");
20
+ const logger_1 = __importDefault(require("../../../logger"));
25
21
  function parse(context) {
26
- const actionsFolder = _path2.default.join(context.filePath, _tools.constants.ACTIONS_DIRECTORY);
27
-
28
- if (!(0, _utils.existsMustBeDir)(actionsFolder)) return {
29
- actions: undefined
30
- };
31
- const files = (0, _utils.getFiles)(actionsFolder, ['.json']);
32
- const actions = files.map(file => {
33
- const action = { ...(0, _utils.loadJSON)(file, context.mappings)
22
+ const actionsFolder = path_1.default.join(context.filePath, tools_1.constants.ACTIONS_DIRECTORY);
23
+ if (!(0, utils_1.existsMustBeDir)(actionsFolder))
24
+ return { actions: undefined }; // Skip
25
+ const files = (0, utils_1.getFiles)(actionsFolder, ['.json']);
26
+ const actions = files.map((file) => {
27
+ const action = Object.assign({}, (0, utils_1.loadJSON)(file, context.mappings));
28
+ const actionFolder = path_1.default.join(tools_1.constants.ACTIONS_DIRECTORY, `${action.name}`);
29
+ if (action.code) {
30
+ action.code = context.loadFile(action.code, actionFolder);
31
+ }
32
+ return action;
33
+ });
34
+ return {
35
+ actions
34
36
  };
35
-
36
- const actionFolder = _path2.default.join(_tools.constants.ACTIONS_DIRECTORY, `${action.name}`);
37
-
38
- if (action.code) {
39
- action.code = context.loadFile(action.code, actionFolder);
40
- }
41
-
42
- return action;
43
- });
44
- return {
45
- actions
46
- };
47
37
  }
48
-
49
38
  function mapSecrets(secrets) {
50
- if (secrets && secrets.length > 0) {
51
- return secrets.map(secret => ({
52
- name: secret.name,
53
- value: secret.value
54
- }));
55
- }
56
-
57
- return [];
39
+ if (secrets && secrets.length > 0) {
40
+ return secrets.map((secret) => ({ name: secret.name, value: secret.value }));
41
+ }
42
+ return [];
58
43
  }
59
-
60
44
  function mapActionCode(filePath, action) {
61
- const {
62
- code
63
- } = action;
64
-
65
- if (!code) {
66
- return '';
67
- }
68
-
69
- const actionName = (0, _utils.sanitize)(action.name);
70
-
71
- const actionFolder = _path2.default.join(filePath, _tools.constants.ACTIONS_DIRECTORY, `${actionName}`);
72
-
73
- _fsExtra2.default.ensureDirSync(actionFolder);
74
-
75
- const codeFile = _path2.default.join(actionFolder, 'code.js');
76
-
77
- _logger2.default.info(`Writing ${codeFile}`);
78
-
79
- _fsExtra2.default.writeFileSync(codeFile, code);
80
-
81
- return `${codeFile}`;
45
+ const { code } = action;
46
+ if (!code) {
47
+ return '';
48
+ }
49
+ const actionName = (0, utils_1.sanitize)(action.name);
50
+ const actionFolder = path_1.default.join(filePath, tools_1.constants.ACTIONS_DIRECTORY, `${actionName}`);
51
+ fs_extra_1.default.ensureDirSync(actionFolder);
52
+ const codeFile = path_1.default.join(actionFolder, 'code.js');
53
+ logger_1.default.info(`Writing ${codeFile}`);
54
+ fs_extra_1.default.writeFileSync(codeFile, code);
55
+ return `${codeFile}`;
82
56
  }
83
-
84
57
  function mapToAction(filePath, action) {
85
- return {
86
- name: action.name,
87
- code: mapActionCode(filePath, action),
88
- runtime: action.runtime,
89
- status: action.status,
90
- dependencies: action.dependencies || [],
91
- secrets: mapSecrets(action.secrets),
92
- supported_triggers: action.supported_triggers,
93
- deployed: action.deployed || action.all_changes_deployed
94
- };
58
+ return {
59
+ name: action.name,
60
+ code: mapActionCode(filePath, action),
61
+ runtime: action.runtime,
62
+ status: action.status,
63
+ dependencies: action.dependencies || [],
64
+ secrets: mapSecrets(action.secrets),
65
+ supported_triggers: action.supported_triggers,
66
+ deployed: action.deployed || action.all_changes_deployed
67
+ };
95
68
  }
96
-
97
- async function dump(context) {
98
- const actions = [...(context.assets.actions || [])];
99
- if (actions.length < 1) return;
100
-
101
- const actionsFolder = _path2.default.join(context.filePath, _tools.constants.ACTIONS_DIRECTORY);
102
-
103
- _fsExtra2.default.ensureDirSync(actionsFolder);
104
-
105
- actions.forEach(action => {
106
- const name = (0, _utils.sanitize)(action.name);
107
-
108
- const actionFile = _path2.default.join(actionsFolder, `${name}.json`);
109
-
110
- _logger2.default.info(`Writing ${actionFile}`);
111
-
112
- _fsExtra2.default.writeFileSync(actionFile, JSON.stringify(mapToAction(context.filePath, action), null, 2));
113
- });
69
+ function dump(context) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ const actions = [...context.assets.actions || []];
72
+ if (actions.length < 1)
73
+ return;
74
+ // Create Actions folder
75
+ const actionsFolder = path_1.default.join(context.filePath, tools_1.constants.ACTIONS_DIRECTORY);
76
+ fs_extra_1.default.ensureDirSync(actionsFolder);
77
+ actions.forEach((action) => {
78
+ // Dump template metadata
79
+ const name = (0, utils_1.sanitize)(action.name);
80
+ const actionFile = path_1.default.join(actionsFolder, `${name}.json`);
81
+ logger_1.default.info(`Writing ${actionFile}`);
82
+ fs_extra_1.default.writeFileSync(actionFile, JSON.stringify(mapToAction(context.filePath, action), null, 2));
83
+ });
84
+ });
114
85
  }
115
-
116
86
  exports.default = {
117
- parse,
118
- dump
119
- };
87
+ parse,
88
+ dump
89
+ };
@@ -0,0 +1,59 @@
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 fs_extra_1 = __importDefault(require("fs-extra"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const tools_1 = require("../../../tools");
18
+ const utils_1 = require("../../../utils");
19
+ function attackProtectionFiles(filePath) {
20
+ const directory = path_1.default.join(filePath, tools_1.constants.ATTACK_PROTECTION_DIRECTORY);
21
+ return {
22
+ directory: directory,
23
+ breachedPasswordDetection: path_1.default.join(directory, 'breached-password-detection.json'),
24
+ bruteForceProtection: path_1.default.join(directory, 'brute-force-protection.json'),
25
+ suspiciousIpThrottling: path_1.default.join(directory, 'suspicious-ip-throttling.json')
26
+ };
27
+ }
28
+ function parse(context) {
29
+ const files = attackProtectionFiles(context.filePath);
30
+ if (!(0, utils_1.existsMustBeDir)(files.directory)) {
31
+ return {
32
+ attackProtection: undefined
33
+ };
34
+ }
35
+ const breachedPasswordDetection = (0, utils_1.loadJSON)(files.breachedPasswordDetection);
36
+ const bruteForceProtection = (0, utils_1.loadJSON)(files.bruteForceProtection);
37
+ const suspiciousIpThrottling = (0, utils_1.loadJSON)(files.suspiciousIpThrottling);
38
+ return {
39
+ attackProtection: {
40
+ breachedPasswordDetection,
41
+ bruteForceProtection,
42
+ suspiciousIpThrottling
43
+ }
44
+ };
45
+ }
46
+ function dump(context) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const { attackProtection } = context.assets;
49
+ const files = attackProtectionFiles(context.filePath);
50
+ fs_extra_1.default.ensureDirSync(files.directory);
51
+ (0, utils_1.dumpJSON)(files.breachedPasswordDetection, attackProtection.breachedPasswordDetection);
52
+ (0, utils_1.dumpJSON)(files.bruteForceProtection, attackProtection.bruteForceProtection);
53
+ (0, utils_1.dumpJSON)(files.suspiciousIpThrottling, attackProtection.suspiciousIpThrottling);
54
+ });
55
+ }
56
+ exports.default = {
57
+ parse,
58
+ dump
59
+ };
@@ -1,59 +1,50 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _fsExtra = require("fs-extra");
8
-
9
- var _fsExtra2 = _interopRequireDefault(_fsExtra);
10
-
11
- var _path = require("path");
12
-
13
- var _path2 = _interopRequireDefault(_path);
14
-
15
- var _tools = require("../../../tools");
16
-
17
- var _utils = require("../../../utils");
18
-
19
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
-
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 fs_extra_1 = __importDefault(require("fs-extra"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const tools_1 = require("../../../tools");
18
+ const utils_1 = require("../../../utils");
21
19
  function parse(context) {
22
- const grantsFolder = _path2.default.join(context.filePath, _tools.constants.CLIENTS_GRANTS_DIRECTORY);
23
-
24
- if (!(0, _utils.existsMustBeDir)(grantsFolder)) return {
25
- clientGrants: undefined
26
- };
27
- const foundFiles = (0, _utils.getFiles)(grantsFolder, ['.json']);
28
- const clientGrants = foundFiles.map(f => (0, _utils.loadJSON)(f, context.mappings)).filter(p => Object.keys(p).length > 0);
29
- return {
30
- clientGrants
31
- };
32
- }
33
-
34
- async function dump(context) {
35
- const {
36
- clientGrants
37
- } = context.assets;
38
- if (!clientGrants) return;
39
-
40
- const grantsFolder = _path2.default.join(context.filePath, _tools.constants.CLIENTS_GRANTS_DIRECTORY);
41
-
42
- _fsExtra2.default.ensureDirSync(grantsFolder);
43
-
44
- clientGrants.forEach(grant => {
45
- const dumpGrant = { ...grant
20
+ const grantsFolder = path_1.default.join(context.filePath, tools_1.constants.CLIENTS_GRANTS_DIRECTORY);
21
+ if (!(0, utils_1.existsMustBeDir)(grantsFolder))
22
+ return { clientGrants: undefined }; // Skip
23
+ const foundFiles = (0, utils_1.getFiles)(grantsFolder, ['.json']);
24
+ const clientGrants = foundFiles.map((f) => (0, utils_1.loadJSON)(f, context.mappings))
25
+ .filter((p) => Object.keys(p).length > 0); // Filter out empty grants
26
+ return {
27
+ clientGrants
46
28
  };
47
- dumpGrant.client_id = (0, _utils.convertClientIdToName)(dumpGrant.client_id, context.assets.clientsOrig);
48
- const name = (0, _utils.sanitize)(`${dumpGrant.client_id} (${dumpGrant.audience})`);
49
-
50
- const grantFile = _path2.default.join(grantsFolder, `${name}.json`);
51
-
52
- (0, _utils.dumpJSON)(grantFile, dumpGrant);
53
- });
54
29
  }
55
-
30
+ function dump(context) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const { clientGrants } = context.assets;
33
+ if (!clientGrants)
34
+ return; // Skip, nothing to dump
35
+ const grantsFolder = path_1.default.join(context.filePath, tools_1.constants.CLIENTS_GRANTS_DIRECTORY);
36
+ fs_extra_1.default.ensureDirSync(grantsFolder);
37
+ // Convert client_id to the client name for readability
38
+ clientGrants.forEach((grant) => {
39
+ const dumpGrant = Object.assign({}, grant);
40
+ dumpGrant.client_id = (0, utils_1.convertClientIdToName)(dumpGrant.client_id, context.assets.clientsOrig);
41
+ const name = (0, utils_1.sanitize)(`${dumpGrant.client_id} (${dumpGrant.audience})`);
42
+ const grantFile = path_1.default.join(grantsFolder, `${name}.json`);
43
+ (0, utils_1.dumpJSON)(grantFile, dumpGrant);
44
+ });
45
+ });
46
+ }
56
47
  exports.default = {
57
- parse,
58
- dump
59
- };
48
+ parse,
49
+ dump
50
+ };
@@ -1,84 +1,65 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _fsExtra = require("fs-extra");
8
-
9
- var _fsExtra2 = _interopRequireDefault(_fsExtra);
10
-
11
- var _path = require("path");
12
-
13
- var _path2 = _interopRequireDefault(_path);
14
-
15
- var _tools = require("../../../tools");
16
-
17
- var _logger = require("../../../logger");
18
-
19
- var _logger2 = _interopRequireDefault(_logger);
20
-
21
- var _utils = require("../../../utils");
22
-
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
-
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 fs_extra_1 = __importDefault(require("fs-extra"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const tools_1 = require("../../../tools");
18
+ const logger_1 = __importDefault(require("../../../logger"));
19
+ const utils_1 = require("../../../utils");
25
20
  function parse(context) {
26
- const clientsFolder = _path2.default.join(context.filePath, _tools.constants.CLIENTS_DIRECTORY);
27
-
28
- if (!(0, _utils.existsMustBeDir)(clientsFolder)) return {
29
- clients: undefined
30
- };
31
- const foundFiles = (0, _utils.getFiles)(clientsFolder, ['.json']);
32
- const clients = foundFiles.map(f => {
33
- const client = (0, _utils.loadJSON)(f, context.mappings);
34
-
35
- if (client.custom_login_page) {
36
- const htmlFileName = _path2.default.join(clientsFolder, client.custom_login_page);
37
-
38
- if ((0, _utils.isFile)(htmlFileName)) {
39
- client.custom_login_page = (0, _tools.loadFile)(htmlFileName, context.mappings);
40
- }
41
- }
42
-
43
- return client;
44
- }).filter(p => Object.keys(p).length > 0);
45
- return {
46
- clients
47
- };
21
+ const clientsFolder = path_1.default.join(context.filePath, tools_1.constants.CLIENTS_DIRECTORY);
22
+ if (!(0, utils_1.existsMustBeDir)(clientsFolder))
23
+ return { clients: undefined }; // Skip
24
+ const foundFiles = (0, utils_1.getFiles)(clientsFolder, ['.json']);
25
+ const clients = foundFiles
26
+ .map((f) => {
27
+ const client = (0, utils_1.loadJSON)(f, context.mappings);
28
+ if (client.custom_login_page) {
29
+ const htmlFileName = path_1.default.join(clientsFolder, client.custom_login_page);
30
+ if ((0, utils_1.isFile)(htmlFileName)) {
31
+ client.custom_login_page = (0, tools_1.loadFileAndReplaceKeywords)(htmlFileName, context.mappings);
32
+ }
33
+ }
34
+ return client;
35
+ })
36
+ .filter((p) => Object.keys(p).length > 0); // Filter out empty clients
37
+ return {
38
+ clients
39
+ };
48
40
  }
49
-
50
- async function dump(context) {
51
- const {
52
- clients
53
- } = context.assets;
54
- if (!clients) return;
55
-
56
- const clientsFolder = _path2.default.join(context.filePath, _tools.constants.CLIENTS_DIRECTORY);
57
-
58
- _fsExtra2.default.ensureDirSync(clientsFolder);
59
-
60
- clients.forEach(client => {
61
- const clientName = (0, _utils.sanitize)(client.name);
62
-
63
- const clientFile = _path2.default.join(clientsFolder, `${clientName}.json`);
64
-
65
- if (client.custom_login_page) {
66
- const html = client.custom_login_page;
67
-
68
- const customLoginHtml = _path2.default.join(clientsFolder, `${clientName}_custom_login_page.html`);
69
-
70
- _logger2.default.info(`Writing ${customLoginHtml}`);
71
-
72
- _fsExtra2.default.writeFileSync(customLoginHtml, html);
73
-
74
- client.custom_login_page = `./${clientName}_custom_login_page.html`;
75
- }
76
-
77
- (0, _utils.dumpJSON)(clientFile, (0, _utils.clearClientArrays)(client));
78
- });
41
+ function dump(context) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ const { clients } = context.assets;
44
+ if (!clients)
45
+ return; // Skip, nothing to dump
46
+ const clientsFolder = path_1.default.join(context.filePath, tools_1.constants.CLIENTS_DIRECTORY);
47
+ fs_extra_1.default.ensureDirSync(clientsFolder);
48
+ clients.forEach((client) => {
49
+ const clientName = (0, utils_1.sanitize)(client.name);
50
+ const clientFile = path_1.default.join(clientsFolder, `${clientName}.json`);
51
+ if (client.custom_login_page) {
52
+ const html = client.custom_login_page;
53
+ const customLoginHtml = path_1.default.join(clientsFolder, `${clientName}_custom_login_page.html`);
54
+ logger_1.default.info(`Writing ${customLoginHtml}`);
55
+ fs_extra_1.default.writeFileSync(customLoginHtml, html);
56
+ client.custom_login_page = `./${clientName}_custom_login_page.html`;
57
+ }
58
+ (0, utils_1.dumpJSON)(clientFile, (0, utils_1.clearClientArrays)(client));
59
+ });
60
+ });
79
61
  }
80
-
81
62
  exports.default = {
82
- parse,
83
- dump
84
- };
63
+ parse,
64
+ dump
65
+ };