auth0-deploy-cli 7.4.0 → 7.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +15 -0
- package/.eslintrc +66 -17
- package/.github/CODEOWNERS +1 -0
- package/.husky/pre-commit +2 -0
- package/CHANGELOG.md +27 -2
- package/lib/args.js +94 -81
- package/lib/commands/export.js +54 -78
- package/lib/commands/import.js +46 -70
- package/lib/commands/index.js +11 -20
- package/lib/configFactory.js +19 -27
- package/lib/context/defaults.js +18 -41
- package/lib/context/directory/handlers/actions.js +77 -107
- package/lib/context/directory/handlers/attackProtection.js +59 -0
- package/lib/context/directory/handlers/clientGrants.js +45 -54
- package/lib/context/directory/handlers/clients.js +60 -79
- package/lib/context/directory/handlers/connections.js +65 -89
- package/lib/context/directory/handlers/databases.js +91 -123
- package/lib/context/directory/handlers/emailProvider.js +46 -57
- package/lib/context/directory/handlers/emailTemplates.js +67 -80
- package/lib/context/directory/handlers/guardianFactorProviders.js +41 -49
- package/lib/context/directory/handlers/guardianFactorTemplates.js +41 -49
- package/lib/context/directory/handlers/guardianFactors.js +41 -49
- package/lib/context/directory/handlers/guardianPhoneFactorMessageTypes.js +40 -50
- package/lib/context/directory/handlers/guardianPhoneFactorSelectedProvider.js +40 -50
- package/lib/context/directory/handlers/guardianPolicies.js +40 -50
- package/lib/context/directory/handlers/hooks.js +55 -70
- package/lib/context/directory/handlers/index.js +53 -123
- package/lib/context/directory/handlers/migrations.js +36 -41
- package/lib/context/directory/handlers/organizations.js +54 -69
- package/lib/context/directory/handlers/pages.js +72 -86
- package/lib/context/directory/handlers/resourceServers.js +41 -49
- package/lib/context/directory/handlers/roles.js +49 -62
- package/lib/context/directory/handlers/rules.js +52 -68
- package/lib/context/directory/handlers/rulesConfigs.js +33 -32
- package/lib/context/directory/handlers/tenant.js +52 -47
- package/lib/context/directory/handlers/triggers.js +39 -54
- package/lib/context/directory/index.js +113 -101
- package/lib/context/index.js +96 -105
- package/lib/context/yaml/handlers/actions.js +71 -88
- package/lib/context/yaml/handlers/attackProtection.js +29 -0
- package/lib/context/yaml/handlers/clientGrants.js +36 -29
- package/lib/context/yaml/handlers/clients.js +61 -76
- package/lib/context/yaml/handlers/connections.js +76 -103
- package/lib/context/yaml/handlers/databases.js +64 -79
- package/lib/context/yaml/handlers/emailProvider.js +33 -30
- package/lib/context/yaml/handlers/emailTemplates.js +45 -54
- package/lib/context/yaml/handlers/guardianFactorProviders.js +27 -18
- package/lib/context/yaml/handlers/guardianFactorTemplates.js +27 -18
- package/lib/context/yaml/handlers/guardianFactors.js +27 -18
- package/lib/context/yaml/handlers/guardianPhoneFactorMessageTypes.js +27 -20
- package/lib/context/yaml/handlers/guardianPhoneFactorSelectedProvider.js +27 -20
- package/lib/context/yaml/handlers/guardianPolicies.js +27 -20
- package/lib/context/yaml/handlers/hooks.js +57 -67
- package/lib/context/yaml/handlers/index.js +53 -123
- package/lib/context/yaml/handlers/migrations.js +23 -24
- package/lib/context/yaml/handlers/organizations.js +40 -38
- package/lib/context/yaml/handlers/pages.js +49 -58
- package/lib/context/yaml/handlers/resourceServers.js +27 -18
- package/lib/context/yaml/handlers/roles.js +34 -24
- package/lib/context/yaml/handlers/rules.js +48 -58
- package/lib/context/yaml/handlers/rulesConfigs.js +27 -18
- package/lib/context/yaml/handlers/tenant.js +44 -30
- package/lib/context/yaml/handlers/triggers.js +32 -23
- package/lib/context/yaml/index.js +127 -142
- package/lib/index.js +73 -79
- package/lib/logger.js +18 -22
- package/lib/readonly.js +74 -66
- package/lib/tools/ValidationError.js +8 -13
- package/lib/tools/auth0/client.js +143 -133
- package/lib/tools/auth0/handlers/actions.js +231 -243
- package/lib/tools/auth0/handlers/attackProtection.js +86 -0
- package/lib/tools/auth0/handlers/branding.js +47 -46
- package/lib/tools/auth0/handlers/clientGrants.js +118 -116
- package/lib/tools/auth0/handlers/clients.js +72 -90
- package/lib/tools/auth0/handlers/connections.js +150 -118
- package/lib/tools/auth0/handlers/databases.js +127 -124
- package/lib/tools/auth0/handlers/default.js +186 -189
- package/lib/tools/auth0/handlers/emailProvider.js +67 -78
- package/lib/tools/auth0/handlers/emailTemplates.js +116 -92
- package/lib/tools/auth0/handlers/guardianFactorProviders.js +66 -81
- package/lib/tools/auth0/handlers/guardianFactorTemplates.js +60 -71
- package/lib/tools/auth0/handlers/guardianFactors.js +56 -63
- package/lib/tools/auth0/handlers/guardianPhoneFactorMessageTypes.js +80 -79
- package/lib/tools/auth0/handlers/guardianPhoneFactorSelectedProvider.js +77 -76
- package/lib/tools/auth0/handlers/guardianPolicies.js +59 -62
- package/lib/tools/auth0/handlers/hooks.js +201 -227
- package/lib/tools/auth0/handlers/index.js +53 -111
- package/lib/tools/auth0/handlers/migrations.js +99 -79
- package/lib/tools/auth0/handlers/organizations.js +225 -247
- package/lib/tools/auth0/handlers/pages.js +116 -154
- package/lib/tools/auth0/handlers/prompts.js +47 -46
- package/lib/tools/auth0/handlers/resourceServers.js +88 -112
- package/lib/tools/auth0/handlers/roles.js +203 -220
- package/lib/tools/auth0/handlers/rules.js +168 -189
- package/lib/tools/auth0/handlers/rulesConfigs.js +54 -63
- package/lib/tools/auth0/handlers/tenant.js +88 -64
- package/lib/tools/auth0/handlers/triggers.js +126 -126
- package/lib/tools/auth0/index.js +92 -85
- package/lib/tools/auth0/schema.js +39 -31
- package/lib/tools/constants.js +111 -21
- package/lib/tools/deploy.js +35 -32
- package/lib/tools/index.js +19 -32
- package/lib/tools/logger.js +11 -12
- package/lib/tools/utils.js +255 -282
- package/lib/utils.js +167 -190
- package/package.json +10 -16
- package/tsconfig.json +17 -0
- package/typescript-migration-progress.sh +22 -0
- package/.babelrc +0 -17
- package/.nyc_output/597f412e-a239-4319-ad5b-ddb87fc39e67.json +0 -1
- package/.nyc_output/processinfo/597f412e-a239-4319-ad5b-ddb87fc39e67.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
|
@@ -1,91 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
});
|
|
55
|
-
return {
|
|
56
|
-
pages
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async function dump(context) {
|
|
61
|
-
const pages = [...(context.assets.pages || [])];
|
|
62
|
-
if (!pages) return;
|
|
63
|
-
|
|
64
|
-
const pagesFolder = _path2.default.join(context.filePath, _tools.constants.PAGES_DIRECTORY);
|
|
65
|
-
|
|
66
|
-
_fsExtra2.default.ensureDirSync(pagesFolder);
|
|
67
|
-
|
|
68
|
-
pages.forEach(page => {
|
|
69
|
-
var metadata = { ...page
|
|
21
|
+
const pagesFolder = path_1.default.join(context.filePath, tools_1.constants.PAGES_DIRECTORY);
|
|
22
|
+
if (!(0, utils_1.existsMustBeDir)(pagesFolder))
|
|
23
|
+
return { pages: undefined }; // Skip
|
|
24
|
+
const files = (0, utils_1.getFiles)(pagesFolder, ['.json', '.html']);
|
|
25
|
+
const sorted = {};
|
|
26
|
+
files.forEach((file) => {
|
|
27
|
+
const { ext, name } = path_1.default.parse(file);
|
|
28
|
+
if (!sorted[name])
|
|
29
|
+
sorted[name] = {};
|
|
30
|
+
if (ext === '.json')
|
|
31
|
+
sorted[name].meta = file;
|
|
32
|
+
if (ext === '.html')
|
|
33
|
+
sorted[name].html = file;
|
|
34
|
+
});
|
|
35
|
+
const pages = [];
|
|
36
|
+
Object.values(sorted).forEach((data) => {
|
|
37
|
+
if (!data.meta) {
|
|
38
|
+
logger_1.default.warn(`Skipping pages file ${data.html} as missing the corresponding '.json' file`);
|
|
39
|
+
}
|
|
40
|
+
else if (!data.html) {
|
|
41
|
+
logger_1.default.warn(`Skipping pages file ${data.meta} as missing corresponding '.html' file`);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
pages.push(Object.assign(Object.assign({}, (0, utils_1.loadJSON)(data.meta, context.mappings)), { html: (0, tools_1.loadFileAndReplaceKeywords)(data.html, context.mappings) }));
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
pages
|
|
70
49
|
};
|
|
71
|
-
|
|
72
|
-
if (page.name !== 'error_page' || page.html !== undefined) {
|
|
73
|
-
const htmlFile = _path2.default.join(pagesFolder, `${page.name}.html`);
|
|
74
|
-
|
|
75
|
-
_logger2.default.info(`Writing ${htmlFile}`);
|
|
76
|
-
|
|
77
|
-
_fsExtra2.default.writeFileSync(htmlFile, page.html);
|
|
78
|
-
|
|
79
|
-
metadata.html = `./${page.name}.html`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const pageFile = _path2.default.join(pagesFolder, `${page.name}.json`);
|
|
83
|
-
|
|
84
|
-
(0, _utils.dumpJSON)(pageFile, metadata);
|
|
85
|
-
});
|
|
86
50
|
}
|
|
87
|
-
|
|
51
|
+
function dump(context) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const pages = [...context.assets.pages || []];
|
|
54
|
+
if (!pages)
|
|
55
|
+
return; // Skip, nothing to dump
|
|
56
|
+
// Create Pages folder
|
|
57
|
+
const pagesFolder = path_1.default.join(context.filePath, tools_1.constants.PAGES_DIRECTORY);
|
|
58
|
+
fs_extra_1.default.ensureDirSync(pagesFolder);
|
|
59
|
+
pages.forEach((page) => {
|
|
60
|
+
var metadata = Object.assign({}, page);
|
|
61
|
+
if (page.name !== 'error_page' || page.html !== undefined) {
|
|
62
|
+
// Dump template html to file
|
|
63
|
+
const htmlFile = path_1.default.join(pagesFolder, `${page.name}.html`);
|
|
64
|
+
logger_1.default.info(`Writing ${htmlFile}`);
|
|
65
|
+
fs_extra_1.default.writeFileSync(htmlFile, page.html);
|
|
66
|
+
metadata.html = `./${page.name}.html`;
|
|
67
|
+
}
|
|
68
|
+
// Dump page metadata
|
|
69
|
+
const pageFile = path_1.default.join(pagesFolder, `${page.name}.json`);
|
|
70
|
+
(0, utils_1.dumpJSON)(pageFile, metadata);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
88
74
|
exports.default = {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
};
|
|
75
|
+
parse,
|
|
76
|
+
dump
|
|
77
|
+
};
|
|
@@ -1,54 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
20
|
+
const resourceServersFolder = path_1.default.join(context.filePath, tools_1.constants.RESOURCE_SERVERS_DIRECTORY);
|
|
21
|
+
if (!(0, utils_1.existsMustBeDir)(resourceServersFolder))
|
|
22
|
+
return { resourceServers: undefined }; // Skip
|
|
23
|
+
const foundFiles = (0, utils_1.getFiles)(resourceServersFolder, ['.json']);
|
|
24
|
+
const resourceServers = foundFiles.map((f) => (0, utils_1.loadJSON)(f, context.mappings))
|
|
25
|
+
.filter((p) => Object.keys(p).length > 0); // Filter out empty resourceServers
|
|
26
|
+
return {
|
|
27
|
+
resourceServers
|
|
28
|
+
};
|
|
32
29
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const resourceServerFile = _path2.default.join(resourceServersFolder, (0, _utils.sanitize)(`${resourceServer.name}.json`));
|
|
46
|
-
|
|
47
|
-
(0, _utils.dumpJSON)(resourceServerFile, resourceServer);
|
|
48
|
-
});
|
|
30
|
+
function dump(context) {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const { resourceServers } = context.assets;
|
|
33
|
+
if (!resourceServers)
|
|
34
|
+
return; // Skip, nothing to dump
|
|
35
|
+
const resourceServersFolder = path_1.default.join(context.filePath, tools_1.constants.RESOURCE_SERVERS_DIRECTORY);
|
|
36
|
+
fs_extra_1.default.ensureDirSync(resourceServersFolder);
|
|
37
|
+
resourceServers.forEach((resourceServer) => {
|
|
38
|
+
const resourceServerFile = path_1.default.join(resourceServersFolder, (0, utils_1.sanitize)(`${resourceServer.name}.json`));
|
|
39
|
+
(0, utils_1.dumpJSON)(resourceServerFile, resourceServer);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
49
42
|
}
|
|
50
|
-
|
|
51
43
|
exports.default = {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
};
|
|
44
|
+
parse,
|
|
45
|
+
dump
|
|
46
|
+
};
|
|
@@ -1,68 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
const rolesFolder = path_1.default.join(context.filePath, tools_1.constants.ROLES_DIRECTORY);
|
|
22
|
+
if (!(0, utils_1.existsMustBeDir)(rolesFolder))
|
|
23
|
+
return { roles: undefined }; // Skip
|
|
24
|
+
const files = (0, utils_1.getFiles)(rolesFolder, ['.json']);
|
|
25
|
+
const roles = files.map((f) => {
|
|
26
|
+
const role = Object.assign({}, (0, utils_1.loadJSON)(f, context.mappings));
|
|
27
|
+
return role;
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
roles
|
|
34
31
|
};
|
|
35
|
-
return role;
|
|
36
|
-
});
|
|
37
|
-
return {
|
|
38
|
-
roles
|
|
39
|
-
};
|
|
40
32
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
(0, _utils.dumpJSON)(roleFile, role);
|
|
62
|
-
});
|
|
33
|
+
function dump(context) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const { roles } = context.assets;
|
|
36
|
+
// API returns an empty object if no grants are present
|
|
37
|
+
if (!roles || roles.constructor === Object)
|
|
38
|
+
return; // Skip, nothing to dump
|
|
39
|
+
const rolesFolder = path_1.default.join(context.filePath, tools_1.constants.ROLES_DIRECTORY);
|
|
40
|
+
fs_extra_1.default.ensureDirSync(rolesFolder);
|
|
41
|
+
roles.forEach((role) => {
|
|
42
|
+
const roleFile = path_1.default.join(rolesFolder, (0, utils_1.sanitize)(`${role.name}.json`));
|
|
43
|
+
logger_1.default.info(`Writing ${roleFile}`);
|
|
44
|
+
// remove empty description
|
|
45
|
+
if (role.description === null) {
|
|
46
|
+
delete role.description;
|
|
47
|
+
}
|
|
48
|
+
(0, utils_1.dumpJSON)(roleFile, role);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
63
51
|
}
|
|
64
|
-
|
|
65
52
|
exports.default = {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
};
|
|
53
|
+
parse,
|
|
54
|
+
dump
|
|
55
|
+
};
|
|
@@ -1,75 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
const rulesFolder = path_1.default.join(context.filePath, tools_1.constants.RULES_DIRECTORY);
|
|
22
|
+
if (!(0, utils_1.existsMustBeDir)(rulesFolder))
|
|
23
|
+
return { rules: undefined }; // Skip
|
|
24
|
+
const files = (0, utils_1.getFiles)(rulesFolder, ['.json']);
|
|
25
|
+
const rules = files.map((f) => {
|
|
26
|
+
const rule = Object.assign({}, (0, utils_1.loadJSON)(f, context.mappings));
|
|
27
|
+
if (rule.script) {
|
|
28
|
+
rule.script = context.loadFile(rule.script, tools_1.constants.RULES_DIRECTORY);
|
|
29
|
+
}
|
|
30
|
+
return rule;
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
rules
|
|
34
34
|
};
|
|
35
|
-
|
|
36
|
-
if (rule.script) {
|
|
37
|
-
rule.script = context.loadFile(rule.script, _tools.constants.RULES_DIRECTORY);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return rule;
|
|
41
|
-
});
|
|
42
|
-
return {
|
|
43
|
-
rules
|
|
44
|
-
};
|
|
45
35
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const ruleFile = _path2.default.join(rulesFolder, `${name}.json`);
|
|
65
|
-
|
|
66
|
-
(0, _utils.dumpJSON)(ruleFile, { ...rule,
|
|
67
|
-
script: `./${name}.js`
|
|
36
|
+
function dump(context) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const rules = [...context.assets.rules || []];
|
|
39
|
+
if (!rules)
|
|
40
|
+
return; // Skip, nothing to dump
|
|
41
|
+
// Create Rules folder
|
|
42
|
+
const rulesFolder = path_1.default.join(context.filePath, tools_1.constants.RULES_DIRECTORY);
|
|
43
|
+
fs_extra_1.default.ensureDirSync(rulesFolder);
|
|
44
|
+
rules.forEach((rule) => {
|
|
45
|
+
// Dump script to file
|
|
46
|
+
const name = (0, utils_1.sanitize)(rule.name);
|
|
47
|
+
const ruleJS = path_1.default.join(rulesFolder, `${name}.js`);
|
|
48
|
+
logger_1.default.info(`Writing ${ruleJS}`);
|
|
49
|
+
fs_extra_1.default.writeFileSync(ruleJS, rule.script);
|
|
50
|
+
// Dump template metadata
|
|
51
|
+
const ruleFile = path_1.default.join(rulesFolder, `${name}.json`);
|
|
52
|
+
(0, utils_1.dumpJSON)(ruleFile, Object.assign(Object.assign({}, rule), { script: `./${name}.js` }));
|
|
53
|
+
});
|
|
68
54
|
});
|
|
69
|
-
});
|
|
70
55
|
}
|
|
71
|
-
|
|
72
56
|
exports.default = {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
};
|
|
57
|
+
parse,
|
|
58
|
+
dump
|
|
59
|
+
};
|
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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 tools_1 = require("../../../tools");
|
|
17
|
+
const utils_1 = require("../../../utils");
|
|
17
18
|
function parse(context) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
19
|
+
const rulesConfigsFolder = path_1.default.join(context.filePath, tools_1.constants.RULES_CONFIGS_DIRECTORY);
|
|
20
|
+
if (!(0, utils_1.existsMustBeDir)(rulesConfigsFolder))
|
|
21
|
+
return { rulesConfigs: undefined }; // Skip
|
|
22
|
+
const foundFiles = (0, utils_1.getFiles)(rulesConfigsFolder, ['.json']);
|
|
23
|
+
const rulesConfigs = foundFiles.map((f) => (0, utils_1.loadJSON)(f, context.mappings))
|
|
24
|
+
.filter((p) => Object.keys(p).length > 0); // Filter out empty rulesConfigs
|
|
25
|
+
return {
|
|
26
|
+
rulesConfigs
|
|
27
|
+
};
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
function dump() {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
// do not export rulesConfigs as its values cannot be extracted
|
|
32
|
+
return null;
|
|
33
|
+
});
|
|
32
34
|
}
|
|
33
|
-
|
|
34
35
|
exports.default = {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
36
|
+
parse,
|
|
37
|
+
dump
|
|
38
|
+
};
|