auth0-deploy-cli 7.7.0 → 7.9.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.
- package/CHANGELOG.md +42 -1
- package/README.md +1 -1
- package/lib/args.d.ts +29 -0
- package/lib/commands/export.d.ts +2 -0
- package/lib/commands/import.d.ts +2 -0
- package/lib/commands/index.d.ts +9 -0
- package/lib/configFactory.d.ts +7 -0
- package/lib/context/defaults.d.ts +1 -0
- package/lib/context/directory/handlers/actions.d.ts +6 -0
- package/lib/context/directory/handlers/attackProtection.d.ts +10 -0
- package/lib/context/directory/handlers/attackProtection.js +3 -3
- package/lib/context/directory/handlers/branding.d.ts +6 -0
- package/lib/context/directory/handlers/clientGrants.d.ts +6 -0
- package/lib/context/directory/handlers/clients.d.ts +6 -0
- package/lib/context/directory/handlers/connections.d.ts +6 -0
- package/lib/context/directory/handlers/databases.d.ts +6 -0
- package/lib/context/directory/handlers/emailProvider.d.ts +6 -0
- package/lib/context/directory/handlers/emailTemplates.d.ts +6 -0
- package/lib/context/directory/handlers/guardianFactorProviders.d.ts +6 -0
- package/lib/context/directory/handlers/guardianFactorTemplates.d.ts +6 -0
- package/lib/context/directory/handlers/guardianFactors.d.ts +6 -0
- package/lib/context/directory/handlers/guardianPhoneFactorMessageTypes.d.ts +6 -0
- package/lib/context/directory/handlers/guardianPhoneFactorSelectedProvider.d.ts +6 -0
- package/lib/context/directory/handlers/guardianPolicies.d.ts +6 -0
- package/lib/context/directory/handlers/hooks.d.ts +6 -0
- package/lib/context/directory/handlers/index.d.ts +12 -0
- package/lib/context/directory/handlers/index.js +2 -0
- package/lib/context/directory/handlers/logStreams.d.ts +7 -0
- package/lib/context/directory/handlers/logStreams.js +49 -0
- package/lib/context/directory/handlers/migrations.d.ts +6 -0
- package/lib/context/directory/handlers/organizations.d.ts +6 -0
- package/lib/context/directory/handlers/pages.d.ts +6 -0
- package/lib/context/directory/handlers/resourceServers.d.ts +6 -0
- package/lib/context/directory/handlers/roles.d.ts +6 -0
- package/lib/context/directory/handlers/rules.d.ts +6 -0
- package/lib/context/directory/handlers/rulesConfigs.d.ts +6 -0
- package/lib/context/directory/handlers/tenant.d.ts +10 -0
- package/lib/context/directory/handlers/triggers.d.ts +6 -0
- package/lib/context/directory/index.d.ts +17 -0
- package/lib/context/index.d.ts +4 -0
- package/lib/context/index.js +18 -0
- package/lib/context/yaml/handlers/actions.d.ts +6 -0
- package/lib/context/yaml/handlers/attackProtection.d.ts +6 -0
- package/lib/context/yaml/handlers/branding.d.ts +6 -0
- package/lib/context/yaml/handlers/clientGrants.d.ts +6 -0
- package/lib/context/yaml/handlers/clients.d.ts +6 -0
- package/lib/context/yaml/handlers/connections.d.ts +6 -0
- package/lib/context/yaml/handlers/databases.d.ts +6 -0
- package/lib/context/yaml/handlers/emailProvider.d.ts +6 -0
- package/lib/context/yaml/handlers/emailTemplates.d.ts +6 -0
- package/lib/context/yaml/handlers/guardianFactorProviders.d.ts +6 -0
- package/lib/context/yaml/handlers/guardianFactorTemplates.d.ts +6 -0
- package/lib/context/yaml/handlers/guardianFactors.d.ts +6 -0
- package/lib/context/yaml/handlers/guardianPhoneFactorMessageTypes.d.ts +6 -0
- package/lib/context/yaml/handlers/guardianPhoneFactorSelectedProvider.d.ts +6 -0
- package/lib/context/yaml/handlers/guardianPolicies.d.ts +6 -0
- package/lib/context/yaml/handlers/hooks.d.ts +6 -0
- package/lib/context/yaml/handlers/index.d.ts +12 -0
- package/lib/context/yaml/handlers/index.js +2 -0
- package/lib/context/yaml/handlers/logStreams.d.ts +7 -0
- package/lib/context/yaml/handlers/logStreams.js +23 -0
- package/lib/context/yaml/handlers/migrations.d.ts +6 -0
- package/lib/context/yaml/handlers/organizations.d.ts +6 -0
- package/lib/context/yaml/handlers/pages.d.ts +6 -0
- package/lib/context/yaml/handlers/resourceServers.d.ts +6 -0
- package/lib/context/yaml/handlers/roles.d.ts +6 -0
- package/lib/context/yaml/handlers/rules.d.ts +6 -0
- package/lib/context/yaml/handlers/rulesConfigs.d.ts +6 -0
- package/lib/context/yaml/handlers/tenant.d.ts +6 -0
- package/lib/context/yaml/handlers/triggers.d.ts +6 -0
- package/lib/context/yaml/index.d.ts +13 -0
- package/lib/index.d.ts +89 -0
- package/lib/index.js +5 -2
- package/lib/logger.d.ts +2 -0
- package/lib/logger.js +7 -17
- package/lib/readonly.d.ts +2 -0
- package/lib/sessionDurationsToMinutes.d.ts +7 -0
- package/lib/tools/auth0/client.d.ts +2 -0
- package/lib/tools/auth0/client.js +7 -7
- package/lib/tools/auth0/handlers/actions.d.ts +95 -0
- package/lib/tools/auth0/handlers/actions.js +1 -1
- package/lib/tools/auth0/handlers/attackProtection.d.ts +28 -0
- package/lib/tools/auth0/handlers/branding.d.ts +27 -0
- package/lib/tools/auth0/handlers/clientGrants.d.ts +32 -0
- package/lib/tools/auth0/handlers/clients.d.ts +23 -0
- package/lib/tools/auth0/handlers/connections.d.ts +54 -0
- package/lib/tools/auth0/handlers/databases.d.ts +36 -0
- package/lib/tools/auth0/handlers/databases.js +2 -2
- package/lib/tools/auth0/handlers/default.d.ts +54 -0
- package/lib/tools/auth0/handlers/default.js +29 -15
- package/lib/tools/auth0/handlers/emailProvider.d.ts +11 -0
- package/lib/tools/auth0/handlers/emailTemplates.d.ts +26 -0
- package/lib/tools/auth0/handlers/guardianFactorProviders.d.ts +25 -0
- package/lib/tools/auth0/handlers/guardianFactorTemplates.d.ts +21 -0
- package/lib/tools/auth0/handlers/guardianFactors.d.ts +21 -0
- package/lib/tools/auth0/handlers/guardianPhoneFactorMessageTypes.d.ts +21 -0
- package/lib/tools/auth0/handlers/guardianPhoneFactorSelectedProvider.d.ts +18 -0
- package/lib/tools/auth0/handlers/guardianPolicies.d.ts +23 -0
- package/lib/tools/auth0/handlers/hooks.d.ts +58 -0
- package/lib/tools/auth0/handlers/index.d.ts +134 -0
- package/lib/tools/auth0/handlers/index.js +2 -0
- package/lib/tools/auth0/handlers/logStreams.d.ts +40 -0
- package/lib/tools/auth0/handlers/logStreams.js +77 -0
- package/lib/tools/auth0/handlers/migrations.d.ts +15 -0
- package/lib/tools/auth0/handlers/migrations.js +1 -1
- package/lib/tools/auth0/handlers/organizations.d.ts +51 -0
- package/lib/tools/auth0/handlers/organizations.js +1 -1
- package/lib/tools/auth0/handlers/pages.d.ts +42 -0
- package/lib/tools/auth0/handlers/prompts.d.ts +11 -0
- package/lib/tools/auth0/handlers/resourceServers.d.ts +51 -0
- package/lib/tools/auth0/handlers/roles.d.ts +48 -0
- package/lib/tools/auth0/handlers/roles.js +1 -1
- package/lib/tools/auth0/handlers/rules.d.ts +55 -0
- package/lib/tools/auth0/handlers/rules.js +4 -4
- package/lib/tools/auth0/handlers/rulesConfigs.d.ts +25 -0
- package/lib/tools/auth0/handlers/tenant.d.ts +11 -0
- package/lib/tools/auth0/handlers/tenant.js +1 -1
- package/lib/tools/auth0/handlers/triggers.d.ts +35 -0
- package/lib/tools/auth0/handlers/triggers.js +1 -1
- package/lib/tools/auth0/index.d.ts +15 -0
- package/lib/tools/auth0/schema.d.ts +15 -0
- package/lib/tools/calculateChanges.d.ts +26 -0
- package/lib/tools/calculateChanges.js +1 -1
- package/lib/tools/constants.d.ts +72 -0
- package/lib/tools/constants.js +4 -1
- package/lib/tools/deploy.d.ts +3 -0
- package/lib/tools/deploy.js +2 -2
- package/lib/tools/index.d.ts +83 -0
- package/lib/tools/utils.d.ts +18 -0
- package/lib/tools/utils.js +67 -9
- package/lib/tools/validationError.d.ts +5 -0
- package/lib/types.d.ts +257 -0
- package/lib/utils.d.ts +67 -0
- package/lib/utils.js +8 -5
- package/package.json +11 -9
- package/tsconfig.json +2 -1
- package/lib/tools/logger.js +0 -21
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import constants from './constants';
|
|
2
|
+
import deploy from './deploy';
|
|
3
|
+
import Auth0 from './auth0';
|
|
4
|
+
import { keywordReplace, loadFileAndReplaceKeywords } from './utils';
|
|
5
|
+
declare const _default: {
|
|
6
|
+
constants: {
|
|
7
|
+
CONCURRENT_CALLS: number;
|
|
8
|
+
RULES_DIRECTORY: string;
|
|
9
|
+
RULES_STAGES: string[];
|
|
10
|
+
DEFAULT_RULE_STAGE: string;
|
|
11
|
+
HOOKS_HIDDEN_SECRET_VALUE: string;
|
|
12
|
+
OBFUSCATED_SECRET_VALUE: string;
|
|
13
|
+
HOOKS_DIRECTORY: string;
|
|
14
|
+
ACTIONS_DIRECTORY: string;
|
|
15
|
+
TRIGGERS_DIRECTORY: string;
|
|
16
|
+
RULES_CONFIGS_DIRECTORY: string;
|
|
17
|
+
PAGES_DIRECTORY: string;
|
|
18
|
+
PAGE_LOGIN: string;
|
|
19
|
+
PAGE_GUARDIAN_MULTIFACTOR: string;
|
|
20
|
+
PAGE_PASSWORD_RESET: string;
|
|
21
|
+
PAGE_ERROR: string;
|
|
22
|
+
DATABASE_CONNECTIONS_DIRECTORY: string;
|
|
23
|
+
DATABASE_SCRIPTS_CHANGE_EMAIL: string;
|
|
24
|
+
DATABASE_SCRIPTS_GET_USER: string;
|
|
25
|
+
EMAIL_TEMPLATES_TYPES: string[];
|
|
26
|
+
ACTIONS_TRIGGERS: string[];
|
|
27
|
+
EMAIL_TEMPLATES_DIRECTORY: string;
|
|
28
|
+
EMAIL_VERIFY: string;
|
|
29
|
+
EMAIL_VERIFY_BY_CODE: string;
|
|
30
|
+
EMAIL_RESET: string;
|
|
31
|
+
EMAIL_WELCOME: string;
|
|
32
|
+
EMAIL_BLOCKED: string;
|
|
33
|
+
EMAIL_STOLEN_CREDENTIALS: string;
|
|
34
|
+
EMAIL_ENROLLMENT: string;
|
|
35
|
+
EMAIL_CHANGE_PASSWORD: string;
|
|
36
|
+
EMAIL_PASSWORD_RESET: string;
|
|
37
|
+
EMAIL_MFA_OOB_CODE: string;
|
|
38
|
+
EMAIL_USER_INVITATION: string;
|
|
39
|
+
GUARDIAN_DIRECTORY: string;
|
|
40
|
+
GUARDIAN_FACTORS_DIRECTORY: string;
|
|
41
|
+
GUARDIAN_PROVIDERS_DIRECTORY: string;
|
|
42
|
+
GUARDIAN_TEMPLATES_DIRECTORY: string;
|
|
43
|
+
UNIVERSAL_LOGIN_TEMPLATE: string;
|
|
44
|
+
RESOURCE_SERVERS_DIRECTORY: string;
|
|
45
|
+
RESOURCE_SERVERS_CLIENT_NAME: string;
|
|
46
|
+
RESOURCE_SERVERS_MANAGEMENT_API_NAME: string;
|
|
47
|
+
RESOURCE_SERVERS_ID_NAME: string;
|
|
48
|
+
CLIENTS_DIRECTORY: string;
|
|
49
|
+
CLIENTS_GRANTS_DIRECTORY: string;
|
|
50
|
+
BRANDING_DIRECTORY: string;
|
|
51
|
+
BRANDING_TEMPLATES_DIRECTORY: string;
|
|
52
|
+
BRANDING_TEMPLATES_YAML_DIRECTORY: string;
|
|
53
|
+
CLIENTS_CLIENT_NAME: string;
|
|
54
|
+
CLIENTS_CLIENT_ID_NAME: string;
|
|
55
|
+
CONNECTIONS_DIRECTORY: string;
|
|
56
|
+
CONNECTIONS_CLIENT_NAME: string;
|
|
57
|
+
CONNECTIONS_ID_NAME: string;
|
|
58
|
+
ROLES_DIRECTORY: string;
|
|
59
|
+
ATTACK_PROTECTION_DIRECTORY: string;
|
|
60
|
+
GUARDIAN_FACTORS: string[];
|
|
61
|
+
GUARDIAN_POLICIES: string[];
|
|
62
|
+
GUARDIAN_PHONE_PROVIDERS: string[];
|
|
63
|
+
GUARDIAN_PHONE_MESSAGE_TYPES: string[];
|
|
64
|
+
GUARDIAN_FACTOR_TEMPLATES: string[];
|
|
65
|
+
GUARDIAN_FACTOR_PROVIDERS: {
|
|
66
|
+
sms: string[];
|
|
67
|
+
'push-notification': string[];
|
|
68
|
+
};
|
|
69
|
+
PAGE_NAMES: string[];
|
|
70
|
+
DATABASE_SCRIPTS: string[];
|
|
71
|
+
DATABASE_SCRIPTS_NO_IMPORT: string[];
|
|
72
|
+
DATABASE_SCRIPTS_IMPORT: string[];
|
|
73
|
+
EMAIL_TEMPLATES_NAMES: string[];
|
|
74
|
+
SUPPORTED_BRANDING_TEMPLATES: string[];
|
|
75
|
+
LOG_STREAMS_DIRECTORY: string;
|
|
76
|
+
};
|
|
77
|
+
deploy: typeof deploy;
|
|
78
|
+
keywordReplace: typeof keywordReplace;
|
|
79
|
+
loadFileAndReplaceKeywords: typeof loadFileAndReplaceKeywords;
|
|
80
|
+
Auth0: typeof Auth0;
|
|
81
|
+
};
|
|
82
|
+
export default _default;
|
|
83
|
+
export { constants, deploy, keywordReplace, loadFileAndReplaceKeywords, Auth0 };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Asset, Assets, CalculatedChanges, KeywordMappings } from '../types';
|
|
2
|
+
export declare function keywordArrayReplace(input: string, mappings: KeywordMappings): string;
|
|
3
|
+
export declare function keywordStringReplace(input: string, mappings: KeywordMappings): string;
|
|
4
|
+
export declare function keywordReplace(input: string, mappings: KeywordMappings): string;
|
|
5
|
+
export declare function convertClientNameToId(name: string, clients: Asset[]): string;
|
|
6
|
+
export declare function convertClientNamesToIds(names: string[], clients: Asset[]): string[];
|
|
7
|
+
export declare function loadFileAndReplaceKeywords(file: string, mappings: KeywordMappings): string;
|
|
8
|
+
export declare function flatten(list: any[]): any[];
|
|
9
|
+
export declare function convertJsonToString(obj: {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}, spacing?: number): string;
|
|
12
|
+
export declare function stripFields(obj: Asset, fields: string[]): Asset;
|
|
13
|
+
export declare function getEnabledClients(assets: Assets, connection: Asset, existing: Asset[], clients: Asset[]): string[];
|
|
14
|
+
export declare function duplicateItems(arr: Asset[], key: string): Asset[];
|
|
15
|
+
export declare function filterExcluded(changes: CalculatedChanges, exclude: string[]): CalculatedChanges;
|
|
16
|
+
export declare function areArraysEquals(x: any[], y: any[]): boolean;
|
|
17
|
+
export declare const obfuscateSensitiveValues: (data: Asset | Asset[] | null, sensitiveFieldsToObfuscate: string[]) => Asset | Asset[] | null;
|
|
18
|
+
export declare const stripObfuscatedFieldsFromPayload: (data: Asset | Asset[] | null, obfuscatedFields: string[]) => Asset | Asset[] | null;
|
package/lib/tools/utils.js
CHANGED
|
@@ -1,14 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.areArraysEquals = exports.filterExcluded = exports.duplicateItems = exports.getEnabledClients = exports.stripFields = exports.
|
|
29
|
+
exports.stripObfuscatedFieldsFromPayload = exports.obfuscateSensitiveValues = exports.areArraysEquals = exports.filterExcluded = exports.duplicateItems = exports.getEnabledClients = exports.stripFields = exports.convertJsonToString = exports.flatten = exports.loadFileAndReplaceKeywords = exports.convertClientNamesToIds = exports.convertClientNameToId = exports.keywordReplace = exports.keywordStringReplace = exports.keywordArrayReplace = void 0;
|
|
7
30
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const fs_1 =
|
|
31
|
+
const fs_1 = __importStar(require("fs"));
|
|
9
32
|
const dot_prop_1 = __importDefault(require("dot-prop"));
|
|
10
33
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
-
const logger_1 = __importDefault(require("
|
|
34
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
35
|
+
const constants_1 = __importDefault(require("./constants"));
|
|
12
36
|
function keywordArrayReplace(input, mappings) {
|
|
13
37
|
Object.keys(mappings).forEach(function (key) {
|
|
14
38
|
// Matching against two sets of patterns because a developer may provide their array replacement keyword with or without wrapping quotes. It is not obvious to the developer which to do depending if they're operating in YAML or JSON.
|
|
@@ -23,6 +47,7 @@ exports.keywordArrayReplace = keywordArrayReplace;
|
|
|
23
47
|
function keywordStringReplace(input, mappings) {
|
|
24
48
|
Object.keys(mappings).forEach(function (key) {
|
|
25
49
|
const regex = new RegExp(`##${key}##`, 'g');
|
|
50
|
+
// @ts-ignore TODO: come back and distinguish strings vs array replacement.
|
|
26
51
|
input = input.replace(regex, mappings[key]);
|
|
27
52
|
});
|
|
28
53
|
return input;
|
|
@@ -31,8 +56,8 @@ exports.keywordStringReplace = keywordStringReplace;
|
|
|
31
56
|
function keywordReplace(input, mappings) {
|
|
32
57
|
// Replace keywords with mappings within input.
|
|
33
58
|
if (mappings && Object.keys(mappings).length > 0) {
|
|
34
|
-
input = keywordStringReplace(input, mappings);
|
|
35
59
|
input = keywordArrayReplace(input, mappings);
|
|
60
|
+
input = keywordStringReplace(input, mappings);
|
|
36
61
|
}
|
|
37
62
|
return input;
|
|
38
63
|
}
|
|
@@ -48,11 +73,12 @@ function convertClientNamesToIds(names, clients) {
|
|
|
48
73
|
if (names.includes(client.name)) {
|
|
49
74
|
const index = resolvedNames.findIndex((item) => item.name === client.name);
|
|
50
75
|
resolvedNames[index].resolved = true;
|
|
51
|
-
acc
|
|
76
|
+
return [...acc, client.client_id];
|
|
52
77
|
}
|
|
53
|
-
return acc;
|
|
78
|
+
return [...acc];
|
|
54
79
|
}, []);
|
|
55
80
|
const unresolved = resolvedNames.filter((item) => !item.resolved).map((item) => item.name);
|
|
81
|
+
// @ts-ignore TODO: come back and refactor to use map instead of reduce.
|
|
56
82
|
return [...unresolved, ...result];
|
|
57
83
|
}
|
|
58
84
|
exports.convertClientNamesToIds = convertClientNamesToIds;
|
|
@@ -60,7 +86,7 @@ function loadFileAndReplaceKeywords(file, mappings) {
|
|
|
60
86
|
// Load file and replace keyword mappings
|
|
61
87
|
const f = path_1.default.resolve(file);
|
|
62
88
|
try {
|
|
63
|
-
fs_1.default.accessSync(f, fs_1.
|
|
89
|
+
fs_1.default.accessSync(f, fs_1.constants.F_OK);
|
|
64
90
|
if (mappings) {
|
|
65
91
|
return keywordReplace(fs_1.default.readFileSync(f, 'utf8'), mappings);
|
|
66
92
|
}
|
|
@@ -76,10 +102,10 @@ function flatten(list) {
|
|
|
76
102
|
return list.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []);
|
|
77
103
|
}
|
|
78
104
|
exports.flatten = flatten;
|
|
79
|
-
function
|
|
105
|
+
function convertJsonToString(obj, spacing = 0) {
|
|
80
106
|
return JSON.stringify(obj, null, spacing);
|
|
81
107
|
}
|
|
82
|
-
exports.
|
|
108
|
+
exports.convertJsonToString = convertJsonToString;
|
|
83
109
|
function stripFields(obj, fields) {
|
|
84
110
|
// Strip object fields supporting dot notation (ie: a.deep.field)
|
|
85
111
|
const stripped = [];
|
|
@@ -150,3 +176,35 @@ function areArraysEquals(x, y) {
|
|
|
150
176
|
return lodash_1.default.isEqual(x && x.sort(), y && y.sort());
|
|
151
177
|
}
|
|
152
178
|
exports.areArraysEquals = areArraysEquals;
|
|
179
|
+
const obfuscateSensitiveValues = (data, sensitiveFieldsToObfuscate) => {
|
|
180
|
+
if (data === null)
|
|
181
|
+
return data;
|
|
182
|
+
if (Array.isArray(data)) {
|
|
183
|
+
return data.map((asset) => (0, exports.obfuscateSensitiveValues)(asset, sensitiveFieldsToObfuscate));
|
|
184
|
+
}
|
|
185
|
+
const newAsset = Object.assign({}, data);
|
|
186
|
+
sensitiveFieldsToObfuscate.forEach((sensitiveField) => {
|
|
187
|
+
if (dot_prop_1.default.get(newAsset, sensitiveField) !== undefined) {
|
|
188
|
+
dot_prop_1.default.set(newAsset, sensitiveField, constants_1.default.OBFUSCATED_SECRET_VALUE);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return newAsset;
|
|
192
|
+
};
|
|
193
|
+
exports.obfuscateSensitiveValues = obfuscateSensitiveValues;
|
|
194
|
+
// The reverse of `obfuscateSensitiveValues()`, preventing an obfuscated value from being passed to the API
|
|
195
|
+
const stripObfuscatedFieldsFromPayload = (data, obfuscatedFields) => {
|
|
196
|
+
if (data === null)
|
|
197
|
+
return data;
|
|
198
|
+
if (Array.isArray(data)) {
|
|
199
|
+
return data.map((asset) => (0, exports.stripObfuscatedFieldsFromPayload)(asset, obfuscatedFields));
|
|
200
|
+
}
|
|
201
|
+
const newAsset = Object.assign({}, data);
|
|
202
|
+
obfuscatedFields.forEach((sensitiveField) => {
|
|
203
|
+
const obfuscatedFieldValue = dot_prop_1.default.get(newAsset, sensitiveField);
|
|
204
|
+
if (obfuscatedFieldValue === constants_1.default.OBFUSCATED_SECRET_VALUE) {
|
|
205
|
+
dot_prop_1.default.delete(newAsset, sensitiveField);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
return newAsset;
|
|
209
|
+
};
|
|
210
|
+
exports.stripObfuscatedFieldsFromPayload = stripObfuscatedFieldsFromPayload;
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
declare type SharedPaginationParams = {
|
|
2
|
+
checkpoint?: boolean;
|
|
3
|
+
paginate?: boolean;
|
|
4
|
+
is_global?: boolean;
|
|
5
|
+
include_totals?: boolean;
|
|
6
|
+
id?: string;
|
|
7
|
+
strategy?: 'auth0';
|
|
8
|
+
};
|
|
9
|
+
export declare type CheckpointPaginationParams = SharedPaginationParams & {
|
|
10
|
+
from: string;
|
|
11
|
+
take: number;
|
|
12
|
+
};
|
|
13
|
+
export declare type PagePaginationParams = SharedPaginationParams & {
|
|
14
|
+
page: number;
|
|
15
|
+
per_page: number;
|
|
16
|
+
};
|
|
17
|
+
declare type APIClientBaseFunctions = {
|
|
18
|
+
getAll: (arg0: SharedPaginationParams) => Promise<Asset[]>;
|
|
19
|
+
create: (arg0: {
|
|
20
|
+
id: string;
|
|
21
|
+
}) => Promise<Asset>;
|
|
22
|
+
update: (arg0: {}, arg1: Asset) => Promise<Asset>;
|
|
23
|
+
delete: (arg0: Asset) => Promise<void>;
|
|
24
|
+
};
|
|
25
|
+
export declare type ApiResponse = {
|
|
26
|
+
start: number;
|
|
27
|
+
limit: number;
|
|
28
|
+
total: number;
|
|
29
|
+
next?: string;
|
|
30
|
+
} & {
|
|
31
|
+
[key in AssetTypes]: Asset[];
|
|
32
|
+
};
|
|
33
|
+
export declare type BaseAuth0APIClient = {
|
|
34
|
+
actions: APIClientBaseFunctions & {
|
|
35
|
+
deploy: ({ id: string }: {
|
|
36
|
+
id: any;
|
|
37
|
+
}) => Promise<void>;
|
|
38
|
+
getAllTriggers: () => Promise<{
|
|
39
|
+
triggers: Asset[];
|
|
40
|
+
}>;
|
|
41
|
+
getTriggerBindings: ({ trigger_id: string }: {
|
|
42
|
+
trigger_id: any;
|
|
43
|
+
}) => Promise<{
|
|
44
|
+
bindings: Asset[];
|
|
45
|
+
}>;
|
|
46
|
+
updateTriggerBindings: ({ trigger_id: string }: {
|
|
47
|
+
trigger_id: any;
|
|
48
|
+
}, { bindings: Object }: {
|
|
49
|
+
bindings: any;
|
|
50
|
+
}) => Promise<{
|
|
51
|
+
bindings: Asset[];
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
attackProtection: APIClientBaseFunctions & {
|
|
55
|
+
getBreachedPasswordDetectionConfig: () => Promise<Asset>;
|
|
56
|
+
getBruteForceConfig: () => Promise<Asset>;
|
|
57
|
+
getSuspiciousIpThrottlingConfig: () => Promise<Asset>;
|
|
58
|
+
updateBreachedPasswordDetectionConfig: ({}: {}, arg1: Asset) => Promise<void>;
|
|
59
|
+
updateSuspiciousIpThrottlingConfig: ({}: {}, arg1: Asset) => Promise<void>;
|
|
60
|
+
updateBruteForceConfig: ({}: {}, arg1: Asset) => Promise<void>;
|
|
61
|
+
};
|
|
62
|
+
branding: APIClientBaseFunctions & {
|
|
63
|
+
getSettings: () => Promise<Asset>;
|
|
64
|
+
getUniversalLoginTemplate: () => Promise<Asset>;
|
|
65
|
+
updateSettings: ({}: {}, Asset: any) => Promise<void>;
|
|
66
|
+
setUniversalLoginTemplate: ({}: {}, Asset: any) => Promise<void>;
|
|
67
|
+
};
|
|
68
|
+
clients: APIClientBaseFunctions;
|
|
69
|
+
clientGrants: APIClientBaseFunctions;
|
|
70
|
+
connections: APIClientBaseFunctions & {
|
|
71
|
+
get: (arg0: Asset) => Promise<Asset>;
|
|
72
|
+
getAll: (arg0: PagePaginationParams | CheckpointPaginationParams) => Promise<Asset[]>;
|
|
73
|
+
};
|
|
74
|
+
customDomains: APIClientBaseFunctions & {
|
|
75
|
+
getAll: () => Promise<Asset[]>;
|
|
76
|
+
};
|
|
77
|
+
emailProvider: APIClientBaseFunctions & {
|
|
78
|
+
delete: () => Promise<void>;
|
|
79
|
+
get: (arg0: Asset) => Promise<Asset>;
|
|
80
|
+
configure: (arg0: Object, arg1: Object) => Promise<Asset>;
|
|
81
|
+
};
|
|
82
|
+
emailTemplates: APIClientBaseFunctions & {
|
|
83
|
+
get: (arg0: Asset) => Promise<Asset>;
|
|
84
|
+
};
|
|
85
|
+
guardian: APIClientBaseFunctions & {
|
|
86
|
+
getFactorProvider: (arg0: Asset) => Promise<Asset>;
|
|
87
|
+
updateFactorProvider: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
88
|
+
getFactors: () => Promise<Asset[]>;
|
|
89
|
+
updateFactor: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
90
|
+
getPolicies: () => Promise<Asset[]>;
|
|
91
|
+
updatePolicies: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
92
|
+
getFactorTemplates: (arg0: {
|
|
93
|
+
name: string;
|
|
94
|
+
}) => Promise<Asset[]>;
|
|
95
|
+
updateFactorTemplates: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
96
|
+
updatePhoneFactorMessageTypes: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
97
|
+
getPhoneFactorSelectedProvider: () => Promise<Asset[]>;
|
|
98
|
+
getPhoneFactorMessageTypes: () => Promise<Asset[]>;
|
|
99
|
+
updatePhoneFactorSelectedProvider: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
100
|
+
};
|
|
101
|
+
hooks: APIClientBaseFunctions & {
|
|
102
|
+
get: ({ id: string }: {
|
|
103
|
+
id: any;
|
|
104
|
+
}) => Promise<Asset>;
|
|
105
|
+
removeSecrets: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
106
|
+
updateSecrets: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
107
|
+
getSecrets: ({ id: string }: {
|
|
108
|
+
id: any;
|
|
109
|
+
}) => Promise<Promise<Asset[]>>;
|
|
110
|
+
addSecrets: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
111
|
+
};
|
|
112
|
+
logStreams: APIClientBaseFunctions;
|
|
113
|
+
migrations: APIClientBaseFunctions & {
|
|
114
|
+
getMigrations: () => Promise<{
|
|
115
|
+
flags: Asset[];
|
|
116
|
+
}>;
|
|
117
|
+
updateMigrations: (arg0: {
|
|
118
|
+
flags: Asset[];
|
|
119
|
+
}) => Promise<void>;
|
|
120
|
+
};
|
|
121
|
+
organizations: APIClientBaseFunctions & {
|
|
122
|
+
updateEnabledConnection: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
123
|
+
addEnabledConnection: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
124
|
+
removeEnabledConnection: (arg0: Asset) => Promise<void>;
|
|
125
|
+
connections: {
|
|
126
|
+
get: (arg0: Asset) => Promise<Asset>;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
prompts: APIClientBaseFunctions & {
|
|
130
|
+
getSettings: () => Promise<Asset[]>;
|
|
131
|
+
updateSettings: (arg0: {}, arg1: Asset) => Promise<void>;
|
|
132
|
+
};
|
|
133
|
+
resourceServers: APIClientBaseFunctions;
|
|
134
|
+
roles: APIClientBaseFunctions & {
|
|
135
|
+
permissions: APIClientBaseFunctions & {
|
|
136
|
+
delete: (arg0: {
|
|
137
|
+
id: string;
|
|
138
|
+
}, arg1: {
|
|
139
|
+
permissions: Asset[];
|
|
140
|
+
}) => Promise<void>;
|
|
141
|
+
create: (arg0: {
|
|
142
|
+
id: string;
|
|
143
|
+
}, arg1: {
|
|
144
|
+
permissions: Asset[];
|
|
145
|
+
}) => Promise<Asset>;
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
rules: APIClientBaseFunctions;
|
|
149
|
+
rulesConfigs: APIClientBaseFunctions & {
|
|
150
|
+
getAll: () => Promise<Asset[]>;
|
|
151
|
+
};
|
|
152
|
+
tenant: APIClientBaseFunctions & {
|
|
153
|
+
getSettings: () => Promise<Asset>;
|
|
154
|
+
updateSettings: (arg0: Asset) => Promise<void>;
|
|
155
|
+
};
|
|
156
|
+
triggers: APIClientBaseFunctions & {
|
|
157
|
+
getTriggerBindings: () => Promise<Asset>;
|
|
158
|
+
};
|
|
159
|
+
updateRule: (arg0: {
|
|
160
|
+
id: string;
|
|
161
|
+
}, arg1: Asset) => Promise<Asset>;
|
|
162
|
+
};
|
|
163
|
+
export declare type Auth0APIClient = BaseAuth0APIClient & {
|
|
164
|
+
pool: {
|
|
165
|
+
addSingleTask: (arg0: {
|
|
166
|
+
data: Object;
|
|
167
|
+
generator: any;
|
|
168
|
+
}) => {
|
|
169
|
+
promise: () => Promise<ApiResponse>;
|
|
170
|
+
};
|
|
171
|
+
addEachTask: (arg0: {
|
|
172
|
+
data: Object;
|
|
173
|
+
generator: any;
|
|
174
|
+
}) => {
|
|
175
|
+
promise: () => Promise<Asset[][]>;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
export declare type Config = {
|
|
180
|
+
AUTH0_DOMAIN: string;
|
|
181
|
+
AUTH0_CLIENT_ID: string;
|
|
182
|
+
AUTH0_CLIENT_SECRET: string;
|
|
183
|
+
AUTH0_INPUT_FILE: string;
|
|
184
|
+
AUTH0_ALLOW_DELETE: boolean;
|
|
185
|
+
AUTH0_EXCLUDED: AssetTypes[];
|
|
186
|
+
EXTENSION_SECRET: string;
|
|
187
|
+
AUTH0_ACCESS_TOKEN?: string;
|
|
188
|
+
AUTH0_BASE_PATH?: string;
|
|
189
|
+
AUTH0_AUDIENCE?: string;
|
|
190
|
+
AUTH0_API_MAX_RETRIES?: number;
|
|
191
|
+
AUTH0_KEYWORD_REPLACE_MAPPINGS?: KeywordMappings;
|
|
192
|
+
AUTH0_EXPORT_IDENTIFIERS?: boolean;
|
|
193
|
+
AUTH0_CONNECTIONS_DIRECTORY?: string;
|
|
194
|
+
EXCLUDED_PROPS?: {
|
|
195
|
+
[key: string]: string[];
|
|
196
|
+
};
|
|
197
|
+
INCLUDED_PROPS?: {
|
|
198
|
+
[key: string]: string[];
|
|
199
|
+
};
|
|
200
|
+
AUTH0_IGNORE_UNAVAILABLE_MIGRATIONS?: boolean;
|
|
201
|
+
AUTH0_EXCLUDED_RULES?: string[];
|
|
202
|
+
AUTH0_EXCLUDED_CLIENTS?: string[];
|
|
203
|
+
AUTH0_EXCLUDED_DATABASES?: string[];
|
|
204
|
+
AUTH0_EXCLUDED_CONNECTIONS?: string[];
|
|
205
|
+
AUTH0_EXCLUDED_RESOURCE_SERVERS?: string[];
|
|
206
|
+
AUTH0_EXCLUDED_DEFAULTS?: string[];
|
|
207
|
+
};
|
|
208
|
+
export declare type Asset = {
|
|
209
|
+
[key: string]: any;
|
|
210
|
+
};
|
|
211
|
+
export declare type Assets = {
|
|
212
|
+
actions: Asset[];
|
|
213
|
+
attackProtection: Asset;
|
|
214
|
+
branding: Asset;
|
|
215
|
+
clients: Asset[];
|
|
216
|
+
clientGrants: Asset[];
|
|
217
|
+
connections: Asset[];
|
|
218
|
+
databases: Asset[];
|
|
219
|
+
emailProvider: Asset;
|
|
220
|
+
emailTemplates: Asset[];
|
|
221
|
+
guardianFactorProviders: Asset[];
|
|
222
|
+
guardianFactors: Asset[];
|
|
223
|
+
guardianFactorTemplates: Asset[];
|
|
224
|
+
guardianPhoneFactorMessageTypes: {
|
|
225
|
+
message_types: Asset[];
|
|
226
|
+
};
|
|
227
|
+
guardianPhoneFactorSelectedProvider: Asset;
|
|
228
|
+
guardianPolicies: {
|
|
229
|
+
policies: Asset[];
|
|
230
|
+
};
|
|
231
|
+
hooks: Asset[];
|
|
232
|
+
logStreams: Asset[];
|
|
233
|
+
migrations: Asset[];
|
|
234
|
+
organizations: Asset[];
|
|
235
|
+
pages: Asset[];
|
|
236
|
+
resourceServers: Asset[];
|
|
237
|
+
roles: Asset[];
|
|
238
|
+
rules: Asset[];
|
|
239
|
+
rulesConfigs: Asset[];
|
|
240
|
+
tenant: Asset;
|
|
241
|
+
triggers: Asset[];
|
|
242
|
+
exclude?: {
|
|
243
|
+
[key: string]: string[];
|
|
244
|
+
};
|
|
245
|
+
clientsOrig: Asset[];
|
|
246
|
+
};
|
|
247
|
+
export declare type CalculatedChanges = {
|
|
248
|
+
del: Asset[];
|
|
249
|
+
update: Asset[];
|
|
250
|
+
conflicts: Asset[];
|
|
251
|
+
create: Asset[];
|
|
252
|
+
};
|
|
253
|
+
export declare type AssetTypes = 'rules' | 'rulesConfigs' | 'hooks' | 'pages' | 'databases' | 'clientGrants' | 'resourceServers' | 'clients' | 'connections' | 'tenant' | 'emailProvider' | 'emailTemplates' | 'guardianFactors' | 'guardianFactorProviders' | 'guardianFactorTemplates' | 'migrations' | 'guardianPhoneFactorMessageTypes' | 'guardianPhoneFactorSelectedProvider' | 'guardianPolicies' | 'roles' | 'actions' | 'organizations' | 'triggers' | 'attackProtection' | 'branding' | 'logStreams';
|
|
254
|
+
export declare type KeywordMappings = {
|
|
255
|
+
[key: string]: (string | number)[] | string | number;
|
|
256
|
+
};
|
|
257
|
+
export {};
|
package/lib/utils.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Auth0 } from './tools';
|
|
2
|
+
import { Asset, Assets, Config, KeywordMappings } from './types';
|
|
3
|
+
export declare function isDirectory(filePath: string): boolean;
|
|
4
|
+
export declare function isFile(filePath: string): boolean;
|
|
5
|
+
export declare function getFiles(folder: string, exts: string[]): string[];
|
|
6
|
+
export declare function loadJSON(file: string, mappings: KeywordMappings): any;
|
|
7
|
+
export declare function dumpJSON(file: string, mappings: {
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}): void;
|
|
10
|
+
export declare function existsMustBeDir(folder: string): boolean;
|
|
11
|
+
export declare function toConfigFn(data: Config): (arg0: keyof Config) => any;
|
|
12
|
+
export declare function stripIdentifiers(auth0: Auth0, assets: Assets): {
|
|
13
|
+
actions: Asset[];
|
|
14
|
+
attackProtection: Asset;
|
|
15
|
+
branding: Asset;
|
|
16
|
+
clients: Asset[];
|
|
17
|
+
clientGrants: Asset[];
|
|
18
|
+
connections: Asset[];
|
|
19
|
+
databases: Asset[];
|
|
20
|
+
emailProvider: Asset;
|
|
21
|
+
emailTemplates: Asset[];
|
|
22
|
+
guardianFactorProviders: Asset[];
|
|
23
|
+
guardianFactors: Asset[];
|
|
24
|
+
guardianFactorTemplates: Asset[];
|
|
25
|
+
guardianPhoneFactorMessageTypes: {
|
|
26
|
+
message_types: Asset[];
|
|
27
|
+
};
|
|
28
|
+
guardianPhoneFactorSelectedProvider: Asset;
|
|
29
|
+
guardianPolicies: {
|
|
30
|
+
policies: Asset[];
|
|
31
|
+
};
|
|
32
|
+
hooks: Asset[];
|
|
33
|
+
logStreams: Asset[];
|
|
34
|
+
migrations: Asset[];
|
|
35
|
+
organizations: Asset[];
|
|
36
|
+
pages: Asset[];
|
|
37
|
+
resourceServers: Asset[];
|
|
38
|
+
roles: Asset[];
|
|
39
|
+
rules: Asset[];
|
|
40
|
+
rulesConfigs: Asset[];
|
|
41
|
+
tenant: Asset;
|
|
42
|
+
triggers: Asset[];
|
|
43
|
+
exclude?: {
|
|
44
|
+
[key: string]: string[];
|
|
45
|
+
} | undefined;
|
|
46
|
+
clientsOrig: Asset[];
|
|
47
|
+
};
|
|
48
|
+
export declare function sanitize(str: string): string;
|
|
49
|
+
declare type ImportantFields = {
|
|
50
|
+
name: string | null;
|
|
51
|
+
client_id: string | null;
|
|
52
|
+
audience: string | null;
|
|
53
|
+
template: string | null;
|
|
54
|
+
identifier: string | null;
|
|
55
|
+
strategy: string | null;
|
|
56
|
+
script: string | null;
|
|
57
|
+
stage: string | null;
|
|
58
|
+
id: string | null;
|
|
59
|
+
};
|
|
60
|
+
export declare function formatResults(item: any): Partial<ImportantFields>;
|
|
61
|
+
export declare function recordsSorter(a: Partial<ImportantFields>, b: Partial<ImportantFields>): number;
|
|
62
|
+
export declare function clearTenantFlags(tenant: Asset): void;
|
|
63
|
+
export declare function ensureProp(obj: Asset, props: string): void;
|
|
64
|
+
export declare function clearClientArrays(client: Asset): Asset;
|
|
65
|
+
export declare function convertClientIdToName(clientId: string, knownClients?: Asset[]): string;
|
|
66
|
+
export declare function mapClientID2NameSorted(enabledClients: string[], knownClients: Asset[]): string[];
|
|
67
|
+
export {};
|
package/lib/utils.js
CHANGED
|
@@ -10,18 +10,18 @@ const sanitize_filename_1 = __importDefault(require("sanitize-filename"));
|
|
|
10
10
|
const dot_prop_1 = __importDefault(require("dot-prop"));
|
|
11
11
|
const tools_1 = require("./tools");
|
|
12
12
|
const logger_1 = __importDefault(require("./logger"));
|
|
13
|
-
function isDirectory(
|
|
13
|
+
function isDirectory(filePath) {
|
|
14
14
|
try {
|
|
15
|
-
return fs_extra_1.default.statSync(path_1.default.resolve(
|
|
15
|
+
return fs_extra_1.default.statSync(path_1.default.resolve(filePath)).isDirectory();
|
|
16
16
|
}
|
|
17
17
|
catch (err) {
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.isDirectory = isDirectory;
|
|
22
|
-
function isFile(
|
|
22
|
+
function isFile(filePath) {
|
|
23
23
|
try {
|
|
24
|
-
return fs_extra_1.default.statSync(path_1.default.resolve(
|
|
24
|
+
return fs_extra_1.default.statSync(path_1.default.resolve(filePath)).isFile();
|
|
25
25
|
}
|
|
26
26
|
catch (err) {
|
|
27
27
|
return false;
|
|
@@ -151,7 +151,8 @@ function clearTenantFlags(tenant) {
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
exports.clearTenantFlags = clearTenantFlags;
|
|
154
|
-
function ensureProp(obj, props
|
|
154
|
+
function ensureProp(obj, props) {
|
|
155
|
+
const value = '';
|
|
155
156
|
if (!dot_prop_1.default.has(obj, props)) {
|
|
156
157
|
dot_prop_1.default.set(obj, props, value);
|
|
157
158
|
}
|
|
@@ -159,8 +160,10 @@ function ensureProp(obj, props, value = '') {
|
|
|
159
160
|
exports.ensureProp = ensureProp;
|
|
160
161
|
function clearClientArrays(client) {
|
|
161
162
|
const propsToClear = ['allowed_clients', 'allowed_logout_urls', 'allowed_origins', 'callbacks'];
|
|
163
|
+
//If designated properties are null, set them as empty arrays instead
|
|
162
164
|
Object.keys(client).forEach((prop) => {
|
|
163
165
|
if (propsToClear.indexOf(prop) >= 0 && !client[prop]) {
|
|
166
|
+
//TODO: understand why setting as empty array instead of deleting null prop. Ex: `delete client[prop]`
|
|
164
167
|
client[prop] = [];
|
|
165
168
|
}
|
|
166
169
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auth0-deploy-cli",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.9.0",
|
|
4
4
|
"description": "A command line tool for deploying updates to your Auth0 tenant",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -40,33 +40,35 @@
|
|
|
40
40
|
"global-agent": "^2.1.12",
|
|
41
41
|
"js-yaml": "^4.1.0",
|
|
42
42
|
"lodash": "^4.17.20",
|
|
43
|
-
"mkdirp": "^0.5.
|
|
44
|
-
"nconf": "^0.11.
|
|
43
|
+
"mkdirp": "^0.5.6",
|
|
44
|
+
"nconf": "^0.11.4",
|
|
45
45
|
"promise-pool-executor": "^1.1.1",
|
|
46
46
|
"sanitize-filename": "^1.6.1",
|
|
47
|
-
"
|
|
47
|
+
"sinon": "^13.0.1",
|
|
48
|
+
"sinon-chai": "^3.7.0",
|
|
49
|
+
"winston": "^3.6.0",
|
|
48
50
|
"yargs": "^15.3.1"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
53
|
"@types/expect": "^24.3.0",
|
|
52
54
|
"@types/mocha": "^9.1.0",
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
+
"chai": "^4.3.6",
|
|
56
|
+
"@typescript-eslint/parser": "^5.17.0",
|
|
55
57
|
"chai-as-promised": "^7.1.1",
|
|
56
58
|
"cross-env": "^3.1.4",
|
|
57
59
|
"eslint": "^7.28.0",
|
|
58
60
|
"eslint-config-airbnb-base": "^14.2.1",
|
|
59
61
|
"eslint-config-prettier": "^8.5.0",
|
|
60
|
-
"eslint-plugin-import": "^2.
|
|
62
|
+
"eslint-plugin-import": "^2.25.4",
|
|
61
63
|
"husky": "^7.0.4",
|
|
62
64
|
"kacl": "^1.1.1",
|
|
63
|
-
"mocha": "^9.
|
|
65
|
+
"mocha": "^9.2.2",
|
|
64
66
|
"nyc": "^15.0.1",
|
|
65
67
|
"prettier": "^2.6.1",
|
|
66
68
|
"pretty-quick": "^3.1.3",
|
|
67
69
|
"rimraf": "^3.0.2",
|
|
68
70
|
"rmdir-sync": "^1.0.1",
|
|
69
71
|
"ts-mocha": "^9.0.2",
|
|
70
|
-
"typescript": "^4.6.
|
|
72
|
+
"typescript": "^4.6.3"
|
|
71
73
|
}
|
|
72
74
|
}
|