auth0-deploy-cli 7.10.0 → 7.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/lib/context/directory/handlers/actions.d.ts +2 -3
  3. package/lib/context/directory/handlers/actions.js +4 -4
  4. package/lib/context/directory/handlers/attackProtection.d.ts +6 -7
  5. package/lib/context/directory/handlers/attackProtection.js +3 -1
  6. package/lib/context/directory/handlers/branding.d.ts +2 -3
  7. package/lib/context/directory/handlers/branding.js +8 -18
  8. package/lib/context/directory/handlers/clientGrants.d.ts +2 -3
  9. package/lib/context/directory/handlers/clientGrants.js +3 -2
  10. package/lib/context/directory/handlers/clients.d.ts +2 -3
  11. package/lib/context/directory/handlers/clients.js +1 -1
  12. package/lib/context/directory/handlers/connections.d.ts +2 -3
  13. package/lib/context/directory/handlers/connections.js +3 -3
  14. package/lib/context/directory/handlers/databases.d.ts +2 -3
  15. package/lib/context/directory/handlers/databases.js +2 -2
  16. package/lib/context/directory/handlers/emailProvider.d.ts +2 -3
  17. package/lib/context/directory/handlers/emailProvider.js +12 -10
  18. package/lib/context/directory/handlers/emailTemplates.d.ts +2 -3
  19. package/lib/context/directory/handlers/emailTemplates.js +2 -2
  20. package/lib/context/directory/handlers/guardianFactorProviders.d.ts +2 -3
  21. package/lib/context/directory/handlers/guardianFactorProviders.js +1 -1
  22. package/lib/context/directory/handlers/guardianFactorTemplates.d.ts +2 -3
  23. package/lib/context/directory/handlers/guardianFactorTemplates.js +1 -1
  24. package/lib/context/directory/handlers/guardianFactors.d.ts +2 -3
  25. package/lib/context/directory/handlers/guardianFactors.js +1 -1
  26. package/lib/context/directory/handlers/guardianPhoneFactorMessageTypes.d.ts +2 -3
  27. package/lib/context/directory/handlers/guardianPhoneFactorMessageTypes.js +6 -6
  28. package/lib/context/directory/handlers/guardianPhoneFactorSelectedProvider.d.ts +2 -3
  29. package/lib/context/directory/handlers/guardianPhoneFactorSelectedProvider.js +6 -6
  30. package/lib/context/directory/handlers/guardianPolicies.d.ts +2 -3
  31. package/lib/context/directory/handlers/guardianPolicies.js +6 -6
  32. package/lib/context/directory/handlers/hooks.d.ts +2 -3
  33. package/lib/context/directory/handlers/hooks.js +3 -3
  34. package/lib/context/directory/handlers/index.d.ts +2 -2
  35. package/lib/context/directory/handlers/logStreams.d.ts +2 -4
  36. package/lib/context/directory/handlers/logStreams.js +2 -2
  37. package/lib/context/directory/handlers/migrations.d.ts +2 -3
  38. package/lib/context/directory/handlers/migrations.js +2 -2
  39. package/lib/context/directory/handlers/organizations.d.ts +2 -3
  40. package/lib/context/directory/handlers/organizations.js +1 -1
  41. package/lib/context/directory/handlers/pages.d.ts +2 -3
  42. package/lib/context/directory/handlers/pages.js +2 -2
  43. package/lib/context/directory/handlers/resourceServers.d.ts +2 -3
  44. package/lib/context/directory/handlers/resourceServers.js +1 -1
  45. package/lib/context/directory/handlers/roles.d.ts +2 -3
  46. package/lib/context/directory/handlers/roles.js +1 -1
  47. package/lib/context/directory/handlers/rules.d.ts +2 -3
  48. package/lib/context/directory/handlers/rules.js +2 -2
  49. package/lib/context/directory/handlers/rulesConfigs.d.ts +2 -3
  50. package/lib/context/directory/handlers/rulesConfigs.js +1 -1
  51. package/lib/context/directory/handlers/tenant.d.ts +7 -7
  52. package/lib/context/directory/handlers/tenant.js +11 -10
  53. package/lib/context/directory/handlers/triggers.d.ts +2 -3
  54. package/lib/context/directory/handlers/triggers.js +1 -1
  55. package/lib/context/yaml/handlers/actions.d.ts +2 -3
  56. package/lib/context/yaml/handlers/actions.js +6 -8
  57. package/lib/context/yaml/handlers/attackProtection.d.ts +6 -3
  58. package/lib/context/yaml/handlers/attackProtection.js +9 -1
  59. package/lib/context/yaml/handlers/branding.d.ts +6 -6
  60. package/lib/context/yaml/handlers/branding.js +11 -6
  61. package/lib/context/yaml/handlers/clientGrants.d.ts +2 -3
  62. package/lib/context/yaml/handlers/clientGrants.js +7 -6
  63. package/lib/context/yaml/handlers/clients.d.ts +2 -3
  64. package/lib/context/yaml/handlers/clients.js +6 -3
  65. package/lib/context/yaml/handlers/connections.d.ts +2 -3
  66. package/lib/context/yaml/handlers/connections.js +6 -9
  67. package/lib/context/yaml/handlers/databases.d.ts +3 -4
  68. package/lib/context/yaml/handlers/databases.js +7 -7
  69. package/lib/context/yaml/handlers/emailProvider.d.ts +2 -3
  70. package/lib/context/yaml/handlers/emailProvider.js +17 -10
  71. package/lib/context/yaml/handlers/emailTemplates.d.ts +2 -3
  72. package/lib/context/yaml/handlers/emailTemplates.js +16 -13
  73. package/lib/context/yaml/handlers/guardianFactorProviders.d.ts +2 -3
  74. package/lib/context/yaml/handlers/guardianFactorProviders.js +4 -2
  75. package/lib/context/yaml/handlers/guardianFactorTemplates.d.ts +2 -3
  76. package/lib/context/yaml/handlers/guardianFactorTemplates.js +4 -2
  77. package/lib/context/yaml/handlers/guardianFactors.d.ts +2 -3
  78. package/lib/context/yaml/handlers/guardianFactors.js +4 -2
  79. package/lib/context/yaml/handlers/guardianPhoneFactorMessageTypes.d.ts +2 -3
  80. package/lib/context/yaml/handlers/guardianPhoneFactorMessageTypes.js +4 -2
  81. package/lib/context/yaml/handlers/guardianPhoneFactorSelectedProvider.d.ts +2 -3
  82. package/lib/context/yaml/handlers/guardianPhoneFactorSelectedProvider.js +4 -2
  83. package/lib/context/yaml/handlers/guardianPolicies.d.ts +4 -3
  84. package/lib/context/yaml/handlers/guardianPolicies.js +4 -2
  85. package/lib/context/yaml/handlers/hooks.d.ts +2 -3
  86. package/lib/context/yaml/handlers/hooks.js +20 -19
  87. package/lib/context/yaml/handlers/index.d.ts +1 -1
  88. package/lib/context/yaml/handlers/logStreams.d.ts +2 -4
  89. package/lib/context/yaml/handlers/logStreams.js +4 -1
  90. package/lib/context/yaml/handlers/migrations.d.ts +2 -3
  91. package/lib/context/yaml/handlers/migrations.js +5 -9
  92. package/lib/context/yaml/handlers/organizations.d.ts +2 -1
  93. package/lib/context/yaml/handlers/organizations.js +17 -15
  94. package/lib/context/yaml/handlers/pages.d.ts +2 -3
  95. package/lib/context/yaml/handlers/pages.js +20 -18
  96. package/lib/context/yaml/handlers/resourceServers.d.ts +2 -3
  97. package/lib/context/yaml/handlers/resourceServers.js +8 -13
  98. package/lib/context/yaml/handlers/roles.d.ts +2 -3
  99. package/lib/context/yaml/handlers/roles.js +13 -11
  100. package/lib/context/yaml/handlers/rules.d.ts +2 -3
  101. package/lib/context/yaml/handlers/rules.js +18 -17
  102. package/lib/context/yaml/handlers/rulesConfigs.d.ts +2 -3
  103. package/lib/context/yaml/handlers/rulesConfigs.js +9 -5
  104. package/lib/context/yaml/handlers/tenant.d.ts +2 -3
  105. package/lib/context/yaml/handlers/tenant.js +4 -3
  106. package/lib/context/yaml/handlers/triggers.d.ts +2 -3
  107. package/lib/context/yaml/handlers/triggers.js +2 -2
  108. package/lib/context/yaml/index.js +2 -1
  109. package/lib/tools/auth0/handlers/actions.js +3 -3
  110. package/lib/tools/auth0/handlers/branding.d.ts +2 -2
  111. package/lib/tools/auth0/handlers/clientGrants.js +1 -1
  112. package/lib/tools/auth0/handlers/connections.js +1 -1
  113. package/lib/tools/auth0/handlers/default.js +9 -2
  114. package/lib/tools/auth0/index.js +5 -2
  115. package/lib/tools/utils.d.ts +9 -0
  116. package/lib/tools/utils.js +33 -1
  117. package/lib/types.d.ts +37 -29
  118. package/lib/utils.d.ts +34 -29
  119. package/lib/utils.js +1 -1
  120. package/package.json +7 -4
@@ -11,17 +11,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  function parse(context) {
13
13
  return __awaiter(this, void 0, void 0, function* () {
14
- // nothing to do, set default if empty
14
+ const { rulesConfigs } = context.assets;
15
+ if (!rulesConfigs)
16
+ return { rulesConfigs: null };
15
17
  return {
16
- rulesConfigs: context.assets.rulesConfigs,
18
+ rulesConfigs,
17
19
  };
18
20
  });
19
21
  }
20
- function dump(_context) {
22
+ function dump(context) {
21
23
  return __awaiter(this, void 0, void 0, function* () {
22
- // do not export rulesConfigs as its values cannot be extracted
24
+ const { rulesConfigs } = context.assets;
25
+ if (!rulesConfigs)
26
+ return { rulesConfigs: null };
23
27
  return {
24
- rulesConfigs: [],
28
+ rulesConfigs: [], // even if they exist, do not export rulesConfigs as its values cannot be extracted
25
29
  };
26
30
  });
27
31
  }
@@ -1,6 +1,5 @@
1
1
  import { YAMLHandler } from '.';
2
- declare type ParsedTenant = {
3
- tenant: unknown[];
4
- } | {};
2
+ import { Asset, ParsedAsset } from '../../../types';
3
+ declare type ParsedTenant = ParsedAsset<'tenant', Asset>;
5
4
  declare const tenantHandler: YAMLHandler<ParsedTenant>;
6
5
  export default tenantHandler;
@@ -24,9 +24,8 @@ const utils_1 = require("../../../utils");
24
24
  const sessionDurationsToMinutes_1 = require("../../../sessionDurationsToMinutes");
25
25
  function parse(context) {
26
26
  return __awaiter(this, void 0, void 0, function* () {
27
- // Nothing to do
28
27
  if (!context.assets.tenant)
29
- return {};
28
+ return { tenant: null };
30
29
  /* eslint-disable camelcase */
31
30
  const _a = context.assets.tenant, { session_lifetime, idle_session_lifetime } = _a, tenant = __rest(_a, ["session_lifetime", "idle_session_lifetime"]);
32
31
  (0, utils_1.clearTenantFlags)(tenant);
@@ -38,7 +37,9 @@ function parse(context) {
38
37
  }
39
38
  function dump(context) {
40
39
  return __awaiter(this, void 0, void 0, function* () {
41
- const tenant = Object.assign({}, (context.assets.tenant || {}));
40
+ const tenant = context.assets.tenant;
41
+ if (!tenant)
42
+ return { tenant: null };
42
43
  (0, utils_1.clearTenantFlags)(tenant);
43
44
  return { tenant };
44
45
  });
@@ -1,6 +1,5 @@
1
1
  import { YAMLHandler } from '.';
2
- declare type ParsedTriggers = {
3
- triggers: unknown[];
4
- } | {};
2
+ import { Asset, ParsedAsset } from '../../../types';
3
+ declare type ParsedTriggers = ParsedAsset<'triggers', Asset[]>;
5
4
  declare const triggersHandler: YAMLHandler<ParsedTriggers>;
6
5
  export default triggersHandler;
@@ -13,7 +13,7 @@ function parse(context) {
13
13
  return __awaiter(this, void 0, void 0, function* () {
14
14
  // Load the script file for each action
15
15
  if (!context.assets.triggers)
16
- return {};
16
+ return { triggers: null };
17
17
  return {
18
18
  triggers: context.assets.triggers,
19
19
  };
@@ -24,7 +24,7 @@ function dump(context) {
24
24
  const { triggers } = context.assets;
25
25
  // Nothing to do
26
26
  if (!triggers)
27
- return {};
27
+ return { triggers: null };
28
28
  return {
29
29
  triggers: triggers,
30
30
  };
@@ -111,7 +111,8 @@ class YAMLContext {
111
111
  try {
112
112
  const data = yield handler.dump(this);
113
113
  if (data) {
114
- logger_1.default.info(`Exporting ${name}`);
114
+ if (data[name] !== null)
115
+ logger_1.default.info(`Exporting ${name}`);
115
116
  Object.entries(data).forEach(([k, v]) => {
116
117
  this.assets[k] = Array.isArray(v)
117
118
  ? v.map(utils_1.formatResults).sort(utils_1.recordsSorter)
@@ -211,12 +211,12 @@ class ActionHandler extends default_1.default {
211
211
  return this.existing;
212
212
  }
213
213
  catch (err) {
214
- if (err.statusCode === 403 || err.statusCode === 404 || err.statusCode === 501) {
215
- return [];
214
+ if (err.statusCode === 404 || err.statusCode === 501) {
215
+ return null;
216
216
  }
217
217
  if (isActionsDisabled(err)) {
218
218
  logger_1.default.info('Skipping actions because it is not enabled.');
219
- return [];
219
+ return null;
220
220
  }
221
221
  throw err;
222
222
  }
@@ -1,5 +1,5 @@
1
1
  import DefaultHandler from './default';
2
- import { Asset } from '../../../types';
2
+ import { Asset, Assets } from '../../../types';
3
3
  export declare const schema: {
4
4
  type: string;
5
5
  properties: {
@@ -23,5 +23,5 @@ export default class BrandingHandler extends DefaultHandler {
23
23
  existing: Asset;
24
24
  constructor(options: DefaultHandler);
25
25
  getType(): Promise<Asset>;
26
- processChanges(assets: any): Promise<void>;
26
+ processChanges(assets: Assets): Promise<void>;
27
27
  }
@@ -93,7 +93,7 @@ class ClientGrantsHandler extends default_1.default {
93
93
  const excludedClientsByNames = (assets.exclude && assets.exclude.clients) || [];
94
94
  const excludedClients = (0, utils_1.convertClientNamesToIds)(excludedClientsByNames, clients);
95
95
  // Convert clients by name to the id
96
- const formatted = assets.clientGrants.map((clientGrant) => {
96
+ const formatted = clientGrants.map((clientGrant) => {
97
97
  const grant = Object.assign({}, clientGrant);
98
98
  const found = clients.find((c) => c.name === grant.client_id);
99
99
  if (found)
@@ -145,7 +145,7 @@ class ConnectionsHandler extends default_1.default {
145
145
  paginate: true,
146
146
  include_totals: true,
147
147
  });
148
- const formatted = assets.connections.map((connection) => (Object.assign(Object.assign(Object.assign({}, connection), this.getFormattedOptions(connection, clients)), { enabled_clients: (0, utils_1.getEnabledClients)(assets, connection, existingConnections, clients) })));
148
+ const formatted = connections.map((connection) => (Object.assign(Object.assign(Object.assign({}, connection), this.getFormattedOptions(connection, clients)), { enabled_clients: (0, utils_1.getEnabledClients)(assets, connection, existingConnections, clients) })));
149
149
  const proposedChanges = yield _super.calcChanges.call(this, Object.assign(Object.assign({}, assets), { connections: formatted }));
150
150
  const proposedChangesWithExcludedProperties = (0, exports.addExcludedConnectionPropertiesToChanges)({
151
151
  proposedChanges,
@@ -69,8 +69,15 @@ class APIHandler {
69
69
  load() {
70
70
  return __awaiter(this, void 0, void 0, function* () {
71
71
  // Load Asset from Tenant
72
- logger_1.default.info(`Retrieving ${this.type} data from Auth0`);
73
- const data = yield this.getType();
72
+ const data = yield (() => __awaiter(this, void 0, void 0, function* () {
73
+ const { data, hadSufficientScopes, requiredScopes } = yield (0, utils_1.detectInsufficientScopeError)(this.getType.bind(this));
74
+ if (!hadSufficientScopes) {
75
+ logger_1.default.warn(`Cannot retrieve ${this.type} due to missing scopes: ${requiredScopes}`);
76
+ return null;
77
+ }
78
+ logger_1.default.info(`Retrieving ${this.type} data from Auth0`);
79
+ return data;
80
+ }))();
74
81
  this.existing = (0, utils_1.obfuscateSensitiveValues)(data, this.sensitiveFieldsToObfuscate);
75
82
  return { [this.type]: this.existing };
76
83
  });
@@ -62,8 +62,11 @@ class Auth0 {
62
62
  }
63
63
  validate() {
64
64
  return __awaiter(this, void 0, void 0, function* () {
65
- const ajv = new ajv_1.default({ useDefaults: true });
66
- const valid = ajv.validate(schema_1.default, this.assets);
65
+ const ajv = new ajv_1.default({ useDefaults: true, nullable: true });
66
+ const nonNullAssets = Object.keys(this.assets)
67
+ .filter((k) => this.assets[k] != null)
68
+ .reduce((a, k) => (Object.assign(Object.assign({}, a), { [k]: this.assets[k] })), {});
69
+ const valid = ajv.validate(schema_1.default, nonNullAssets);
67
70
  if (!valid) {
68
71
  throw new Error(`Schema validation failed loading ${JSON.stringify(ajv.errors, null, 4)}`);
69
72
  }
@@ -16,3 +16,12 @@ export declare function filterExcluded(changes: CalculatedChanges, exclude: stri
16
16
  export declare function areArraysEquals(x: any[], y: any[]): boolean;
17
17
  export declare const obfuscateSensitiveValues: (data: Asset | Asset[] | null, sensitiveFieldsToObfuscate: string[]) => Asset | Asset[] | null;
18
18
  export declare const stripObfuscatedFieldsFromPayload: (data: Asset | Asset[] | null, obfuscatedFields: string[]) => Asset | Asset[] | null;
19
+ export declare const detectInsufficientScopeError: <T>(fn: Function) => Promise<{
20
+ hadSufficientScopes: true;
21
+ data: T;
22
+ requiredScopes: [];
23
+ } | {
24
+ hadSufficientScopes: false;
25
+ requiredScopes: string[];
26
+ data: null;
27
+ }>;
@@ -22,11 +22,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
25
34
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
36
  };
28
37
  Object.defineProperty(exports, "__esModule", { value: true });
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;
38
+ exports.detectInsufficientScopeError = 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;
30
39
  const path_1 = __importDefault(require("path"));
31
40
  const fs_1 = __importStar(require("fs"));
32
41
  const dot_prop_1 = __importDefault(require("dot-prop"));
@@ -208,3 +217,26 @@ const stripObfuscatedFieldsFromPayload = (data, obfuscatedFields) => {
208
217
  return newAsset;
209
218
  };
210
219
  exports.stripObfuscatedFieldsFromPayload = stripObfuscatedFieldsFromPayload;
220
+ const detectInsufficientScopeError = (fn) => __awaiter(void 0, void 0, void 0, function* () {
221
+ var _a, _b;
222
+ try {
223
+ const data = yield fn();
224
+ return {
225
+ hadSufficientScopes: true,
226
+ data,
227
+ requiredScopes: [],
228
+ };
229
+ }
230
+ catch (err) {
231
+ if (err.statusCode === 403 && err.message.includes('Insufficient scope')) {
232
+ const requiredScopes = (_b = (_a = err.message) === null || _a === void 0 ? void 0 : _a.split('Insufficient scope, expected any of: ')) === null || _b === void 0 ? void 0 : _b.slice(1);
233
+ return {
234
+ hadSufficientScopes: false,
235
+ requiredScopes,
236
+ data: null,
237
+ };
238
+ }
239
+ throw err;
240
+ }
241
+ });
242
+ exports.detectInsufficientScopeError = detectInsufficientScopeError;
package/lib/types.d.ts CHANGED
@@ -208,42 +208,47 @@ export declare type Config = {
208
208
  export declare type Asset = {
209
209
  [key: string]: any;
210
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[];
211
+ export declare type Assets = Partial<{
212
+ actions: Asset[] | null;
213
+ attackProtection: Asset | null;
214
+ branding: {
215
+ templates?: {
216
+ template: string;
217
+ body: string;
218
+ }[] | null;
219
+ } | null;
220
+ clients: Asset[] | null;
221
+ clientGrants: Asset[] | null;
222
+ connections: Asset[] | null;
223
+ databases: Asset[] | null;
224
+ emailProvider: Asset | null;
225
+ emailTemplates: Asset[] | null;
226
+ guardianFactorProviders: Asset[] | null;
227
+ guardianFactors: Asset[] | null;
228
+ guardianFactorTemplates: Asset[] | null;
224
229
  guardianPhoneFactorMessageTypes: {
225
230
  message_types: Asset[];
226
- };
227
- guardianPhoneFactorSelectedProvider: Asset;
231
+ } | null;
232
+ guardianPhoneFactorSelectedProvider: Asset | null;
228
233
  guardianPolicies: {
229
234
  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[];
235
+ } | null;
236
+ hooks: Asset[] | null;
237
+ logStreams: Asset[] | null;
238
+ migrations: Asset[] | null;
239
+ organizations: Asset[] | null;
240
+ pages: Asset[] | null;
241
+ resourceServers: Asset[] | null;
242
+ roles: Asset[] | null;
243
+ rules: Asset[] | null;
244
+ rulesConfigs: Asset[] | null;
245
+ tenant: Asset | null;
246
+ triggers: Asset[] | null;
242
247
  exclude?: {
243
248
  [key: string]: string[];
244
249
  };
245
- clientsOrig: Asset[];
246
- };
250
+ clientsOrig: Asset[] | null;
251
+ }>;
247
252
  export declare type CalculatedChanges = {
248
253
  del: Asset[];
249
254
  update: Asset[];
@@ -254,4 +259,7 @@ export declare type AssetTypes = 'rules' | 'rulesConfigs' | 'hooks' | 'pages' |
254
259
  export declare type KeywordMappings = {
255
260
  [key: string]: (string | number)[] | string | number;
256
261
  };
262
+ export declare type ParsedAsset<Key extends AssetTypes, T> = {
263
+ [key in Key]: T | null;
264
+ };
257
265
  export {};
package/lib/utils.d.ts CHANGED
@@ -10,40 +10,45 @@ export declare function dumpJSON(file: string, mappings: {
10
10
  export declare function existsMustBeDir(folder: string): boolean;
11
11
  export declare function toConfigFn(data: Config): (arg0: keyof Config) => any;
12
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: {
13
+ actions?: Asset[] | null | undefined;
14
+ attackProtection?: Asset | null | undefined;
15
+ branding?: {
16
+ templates?: {
17
+ template: string;
18
+ body: string;
19
+ }[] | null | undefined;
20
+ } | null | undefined;
21
+ clients?: Asset[] | null | undefined;
22
+ clientGrants?: Asset[] | null | undefined;
23
+ connections?: Asset[] | null | undefined;
24
+ databases?: Asset[] | null | undefined;
25
+ emailProvider?: Asset | null | undefined;
26
+ emailTemplates?: Asset[] | null | undefined;
27
+ guardianFactorProviders?: Asset[] | null | undefined;
28
+ guardianFactors?: Asset[] | null | undefined;
29
+ guardianFactorTemplates?: Asset[] | null | undefined;
30
+ guardianPhoneFactorMessageTypes?: {
26
31
  message_types: Asset[];
27
- };
28
- guardianPhoneFactorSelectedProvider: Asset;
29
- guardianPolicies: {
32
+ } | null | undefined;
33
+ guardianPhoneFactorSelectedProvider?: Asset | null | undefined;
34
+ guardianPolicies?: {
30
35
  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[];
36
+ } | null | undefined;
37
+ hooks?: Asset[] | null | undefined;
38
+ logStreams?: Asset[] | null | undefined;
39
+ migrations?: Asset[] | null | undefined;
40
+ organizations?: Asset[] | null | undefined;
41
+ pages?: Asset[] | null | undefined;
42
+ resourceServers?: Asset[] | null | undefined;
43
+ roles?: Asset[] | null | undefined;
44
+ rules?: Asset[] | null | undefined;
45
+ rulesConfigs?: Asset[] | null | undefined;
46
+ tenant?: Asset | null | undefined;
47
+ triggers?: Asset[] | null | undefined;
43
48
  exclude?: {
44
49
  [key: string]: string[];
45
50
  } | undefined;
46
- clientsOrig: Asset[];
51
+ clientsOrig?: Asset[] | null | undefined;
47
52
  };
48
53
  export declare function sanitize(str: string): string;
49
54
  declare type ImportantFields = {
package/lib/utils.js CHANGED
@@ -107,7 +107,7 @@ function sanitize(str) {
107
107
  }
108
108
  exports.sanitize = sanitize;
109
109
  function formatResults(item) {
110
- if (typeof item !== 'object') {
110
+ if (!item || typeof item !== 'object') {
111
111
  return item;
112
112
  }
113
113
  const importantFields = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auth0-deploy-cli",
3
- "version": "7.10.0",
3
+ "version": "7.11.0",
4
4
  "description": "A command line tool for deploying updates to your Auth0 tenant",
5
5
  "main": "lib/index.js",
6
6
  "bin": {
@@ -41,12 +41,12 @@
41
41
  "js-yaml": "^4.1.0",
42
42
  "lodash": "^4.17.20",
43
43
  "mkdirp": "^0.5.6",
44
- "nconf": "^0.11.4",
44
+ "nconf": "^0.12.0",
45
45
  "promise-pool-executor": "^1.1.1",
46
46
  "sanitize-filename": "^1.6.1",
47
47
  "sinon": "^13.0.1",
48
48
  "sinon-chai": "^3.7.0",
49
- "winston": "^3.6.0",
49
+ "winston": "^3.7.2",
50
50
  "yargs": "^15.3.1"
51
51
  },
52
52
  "devDependencies": {
@@ -59,7 +59,7 @@
59
59
  "eslint": "^7.28.0",
60
60
  "eslint-config-airbnb-base": "^14.2.1",
61
61
  "eslint-config-prettier": "^8.5.0",
62
- "eslint-plugin-import": "^2.25.4",
62
+ "eslint-plugin-import": "^2.26.0",
63
63
  "husky": "^7.0.4",
64
64
  "kacl": "^1.1.1",
65
65
  "mocha": "^9.2.2",
@@ -70,5 +70,8 @@
70
70
  "rmdir-sync": "^1.0.1",
71
71
  "ts-mocha": "^9.0.2",
72
72
  "typescript": "^4.6.3"
73
+ },
74
+ "overrides": {
75
+ "istanbul-reports": "3.1.4"
73
76
  }
74
77
  }