auth0-deploy-cli 7.1.1 → 7.3.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.
- package/.eslintrc +4 -0
- package/.nyc_output/04420105-57dc-45d4-8ebe-d4d2b384e738.json +1 -0
- package/.nyc_output/processinfo/{0ca7d863-9a78-41d8-98bd-3978ff7e6a8e.json → 04420105-57dc-45d4-8ebe-d4d2b384e738.json} +1 -1
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +41 -2
- package/lib/context/directory/handlers/actions.js +1 -0
- package/lib/context/directory/handlers/databases.js +11 -11
- package/lib/context/directory/handlers/organizations.js +13 -0
- package/lib/context/index.js +1 -1
- package/lib/context/yaml/handlers/actions.js +1 -0
- package/lib/context/yaml/index.js +1 -1
- package/lib/tools/auth0/handlers/actions.js +7 -0
- package/lib/tools/auth0/handlers/clients.js +1 -0
- package/lib/tools/auth0/handlers/default.js +2 -1
- package/lib/tools/auth0/handlers/organizations.js +1 -1
- package/lib/tools/auth0/handlers/resourceServers.js +1 -1
- package/lib/tools/auth0/handlers/roles.js +1 -1
- package/lib/tools/auth0/handlers/rules.js +1 -1
- package/lib/tools/utils.js +31 -2
- package/package.json +5 -5
- package/.nyc_output/0ca7d863-9a78-41d8-98bd-3978ff7e6a8e.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"parent":null,"pid":
|
|
1
|
+
{"parent":null,"pid":217,"argv":["/usr/local/bin/node","/home/circleci/repo/node_modules/.bin/mocha","--recursive","--require","@babel/register","test"],"execArgv":[],"cwd":"/home/circleci/repo","time":1632256314543,"ppid":206,"coverageFilename":"/home/circleci/repo/.nyc_output/04420105-57dc-45d4-8ebe-d4d2b384e738.json","externalId":"","uuid":"04420105-57dc-45d4-8ebe-d4d2b384e738","files":["/home/circleci/repo/src/context/index.js","/home/circleci/repo/src/context/yaml/index.js","/home/circleci/repo/src/tools/index.js","/home/circleci/repo/src/tools/constants.js","/home/circleci/repo/src/tools/deploy.js","/home/circleci/repo/src/tools/auth0/index.js","/home/circleci/repo/src/tools/auth0/client.js","/home/circleci/repo/src/tools/utils.js","/home/circleci/repo/src/tools/logger.js","/home/circleci/repo/src/tools/auth0/schema.js","/home/circleci/repo/src/tools/auth0/handlers/index.js","/home/circleci/repo/src/tools/auth0/handlers/rules.js","/home/circleci/repo/src/tools/ValidationError.js","/home/circleci/repo/src/tools/auth0/handlers/default.js","/home/circleci/repo/src/tools/auth0/handlers/rulesConfigs.js","/home/circleci/repo/src/tools/auth0/handlers/hooks.js","/home/circleci/repo/src/tools/auth0/handlers/pages.js","/home/circleci/repo/src/tools/auth0/handlers/resourceServers.js","/home/circleci/repo/src/tools/auth0/handlers/databases.js","/home/circleci/repo/src/tools/auth0/handlers/connections.js","/home/circleci/repo/src/tools/auth0/handlers/clients.js","/home/circleci/repo/src/tools/auth0/handlers/tenant.js","/home/circleci/repo/src/tools/auth0/handlers/emailProvider.js","/home/circleci/repo/src/tools/auth0/handlers/emailTemplates.js","/home/circleci/repo/src/tools/auth0/handlers/clientGrants.js","/home/circleci/repo/src/tools/auth0/handlers/guardianFactors.js","/home/circleci/repo/src/tools/auth0/handlers/guardianFactorProviders.js","/home/circleci/repo/src/tools/auth0/handlers/guardianFactorTemplates.js","/home/circleci/repo/src/tools/auth0/handlers/guardianPolicies.js","/home/circleci/repo/src/tools/auth0/handlers/guardianPhoneFactorSelectedProvider.js","/home/circleci/repo/src/tools/auth0/handlers/guardianPhoneFactorMessageTypes.js","/home/circleci/repo/src/tools/auth0/handlers/roles.js","/home/circleci/repo/src/tools/auth0/handlers/branding.js","/home/circleci/repo/src/tools/auth0/handlers/prompts.js","/home/circleci/repo/src/tools/auth0/handlers/migrations.js","/home/circleci/repo/src/tools/auth0/handlers/actions.js","/home/circleci/repo/src/tools/auth0/handlers/triggers.js","/home/circleci/repo/src/tools/auth0/handlers/organizations.js","/home/circleci/repo/src/logger.js","/home/circleci/repo/src/utils.js","/home/circleci/repo/src/context/yaml/handlers/index.js","/home/circleci/repo/src/context/yaml/handlers/pages.js","/home/circleci/repo/src/context/yaml/handlers/rules.js","/home/circleci/repo/src/context/yaml/handlers/hooks.js","/home/circleci/repo/src/context/yaml/handlers/clients.js","/home/circleci/repo/src/context/yaml/handlers/tenant.js","/home/circleci/repo/src/context/yaml/handlers/emailProvider.js","/home/circleci/repo/src/context/defaults.js","/home/circleci/repo/src/context/yaml/handlers/connections.js","/home/circleci/repo/src/context/yaml/handlers/databases.js","/home/circleci/repo/src/context/yaml/handlers/emailTemplates.js","/home/circleci/repo/src/context/yaml/handlers/clientGrants.js","/home/circleci/repo/src/context/yaml/handlers/rulesConfigs.js","/home/circleci/repo/src/context/yaml/handlers/resourceServers.js","/home/circleci/repo/src/context/yaml/handlers/guardianFactors.js","/home/circleci/repo/src/context/yaml/handlers/guardianFactorProviders.js","/home/circleci/repo/src/context/yaml/handlers/guardianFactorTemplates.js","/home/circleci/repo/src/context/yaml/handlers/guardianPhoneFactorMessageTypes.js","/home/circleci/repo/src/context/yaml/handlers/guardianPhoneFactorSelectedProvider.js","/home/circleci/repo/src/context/yaml/handlers/guardianPolicies.js","/home/circleci/repo/src/context/yaml/handlers/roles.js","/home/circleci/repo/src/context/yaml/handlers/organizations.js","/home/circleci/repo/src/context/yaml/handlers/migrations.js","/home/circleci/repo/src/context/yaml/handlers/actions.js","/home/circleci/repo/src/context/yaml/handlers/triggers.js","/home/circleci/repo/src/readonly.js","/home/circleci/repo/src/context/directory/index.js","/home/circleci/repo/src/context/directory/handlers/index.js","/home/circleci/repo/src/context/directory/handlers/pages.js","/home/circleci/repo/src/context/directory/handlers/rules.js","/home/circleci/repo/src/context/directory/handlers/hooks.js","/home/circleci/repo/src/context/directory/handlers/clients.js","/home/circleci/repo/src/context/directory/handlers/tenant.js","/home/circleci/repo/src/context/directory/handlers/emailProvider.js","/home/circleci/repo/src/context/directory/handlers/connections.js","/home/circleci/repo/src/context/directory/handlers/databases.js","/home/circleci/repo/src/context/directory/handlers/emailTemplates.js","/home/circleci/repo/src/context/directory/handlers/clientGrants.js","/home/circleci/repo/src/context/directory/handlers/rulesConfigs.js","/home/circleci/repo/src/context/directory/handlers/resourceServers.js","/home/circleci/repo/src/context/directory/handlers/guardianFactors.js","/home/circleci/repo/src/context/directory/handlers/guardianFactorProviders.js","/home/circleci/repo/src/context/directory/handlers/guardianFactorTemplates.js","/home/circleci/repo/src/context/directory/handlers/guardianPhoneFactorMessageTypes.js","/home/circleci/repo/src/context/directory/handlers/guardianPhoneFactorSelectedProvider.js","/home/circleci/repo/src/context/directory/handlers/guardianPolicies.js","/home/circleci/repo/src/context/directory/handlers/roles.js","/home/circleci/repo/src/context/directory/handlers/migrations.js","/home/circleci/repo/src/context/directory/handlers/actions.js","/home/circleci/repo/src/context/directory/handlers/organizations.js","/home/circleci/repo/src/context/directory/handlers/triggers.js","/home/circleci/repo/src/index.js","/home/circleci/repo/src/args.js","/home/circleci/repo/src/commands/index.js","/home/circleci/repo/src/commands/import.js","/home/circleci/repo/src/configFactory.js","/home/circleci/repo/src/commands/export.js"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"processes":{"
|
|
1
|
+
{"processes":{"04420105-57dc-45d4-8ebe-d4d2b384e738":{"parent":null,"children":[]}},"files":{"/home/circleci/repo/src/context/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/constants.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/deploy.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/client.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/utils.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/logger.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/schema.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/rules.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/ValidationError.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/default.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/rulesConfigs.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/hooks.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/pages.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/resourceServers.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/databases.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/connections.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/clients.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/tenant.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/emailProvider.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/emailTemplates.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/clientGrants.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/guardianFactors.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/guardianFactorProviders.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/guardianFactorTemplates.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/guardianPolicies.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/guardianPhoneFactorSelectedProvider.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/guardianPhoneFactorMessageTypes.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/roles.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/branding.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/prompts.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/migrations.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/actions.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/triggers.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/tools/auth0/handlers/organizations.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/logger.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/utils.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/pages.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/rules.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/hooks.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/clients.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/tenant.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/emailProvider.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/defaults.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/connections.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/databases.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/emailTemplates.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/clientGrants.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/rulesConfigs.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/resourceServers.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/guardianFactors.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/guardianFactorProviders.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/guardianFactorTemplates.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/guardianPhoneFactorMessageTypes.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/guardianPhoneFactorSelectedProvider.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/guardianPolicies.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/roles.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/organizations.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/migrations.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/actions.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/yaml/handlers/triggers.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/readonly.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/pages.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/rules.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/hooks.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/clients.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/tenant.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/emailProvider.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/connections.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/databases.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/emailTemplates.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/clientGrants.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/rulesConfigs.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/resourceServers.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/guardianFactors.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/guardianFactorProviders.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/guardianFactorTemplates.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/guardianPhoneFactorMessageTypes.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/guardianPhoneFactorSelectedProvider.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/guardianPolicies.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/roles.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/migrations.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/actions.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/organizations.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/context/directory/handlers/triggers.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/args.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/commands/index.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/commands/import.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/configFactory.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"],"/home/circleci/repo/src/commands/export.js":["04420105-57dc-45d4-8ebe-d4d2b384e738"]},"externalIds":{}}
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [7.3.1] - 2021-09-21
|
|
11
|
+
### Fixed
|
|
12
|
+
- Error when authenticating with AUTH0_CLIENT_ID and AUTH0_CLIENT_SECRET with Node.js prior to v14
|
|
13
|
+
|
|
14
|
+
## [7.3.0] - 2021-09-20
|
|
15
|
+
### Added
|
|
16
|
+
- Allow set of AUTH0_AUDIENCE for custom domain [#379] (credit @AliBazzi)
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Load file configured in customScripts for DB Connections [#367] (credit @skukx)
|
|
20
|
+
|
|
21
|
+
### Security
|
|
22
|
+
- Security fixes from dependencies
|
|
23
|
+
|
|
24
|
+
## [7.2.1] - 2021-08-23
|
|
25
|
+
### Fixed
|
|
26
|
+
- [IDS-3074] Updated structure when dumping orgs (#369)
|
|
27
|
+
|
|
28
|
+
Fixes an issue when exporting organizations as a directory, connections are not structured in the right way, causing the import to remove any connection on the organizations.
|
|
29
|
+
- [DXEX-1721] Fix client metadata property deletion
|
|
30
|
+
|
|
31
|
+
Fixes an inconsistency between how we calculate changes on deep metadata-like objects and with how APIv2 expects such changes to be expressed when a property is deleted.
|
|
32
|
+
- Bump js-yaml from 3.x to 4.x and move to kacl (#371)
|
|
33
|
+
|
|
34
|
+
This PR bumps js-yaml from 3.x to 4.x in accordance with its migration guide. This bump means that we're able to use the default safe behaviour for both exports and imports.
|
|
35
|
+
|
|
36
|
+
Notably, this means that we won't end up with values like !<tag:yaml.org,2002:js/undefined> '' that are not at all human friendly and were problematic when we used the .safeLoad functionality.
|
|
37
|
+
|
|
38
|
+
## [7.2.0] - 2021-07-14
|
|
39
|
+
### Added
|
|
40
|
+
- Add runtime property for actions [#364]
|
|
41
|
+
|
|
10
42
|
## [7.1.1] - 2021-06-23
|
|
11
43
|
### Added
|
|
12
44
|
- Export tools module
|
|
@@ -353,8 +385,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
353
385
|
[#309]: https://github.com/auth0/auth0-deploy-cli/issues/309
|
|
354
386
|
[#356]: https://github.com/auth0/auth0-deploy-cli/issues/356
|
|
355
387
|
[#361]: https://github.com/auth0/auth0-deploy-cli/issues/361
|
|
356
|
-
|
|
357
|
-
[
|
|
388
|
+
[#364]: https://github.com/auth0/auth0-deploy-cli/issues/364
|
|
389
|
+
[#367]: https://github.com/auth0/auth0-deploy-cli/issues/367
|
|
390
|
+
[#379]: https://github.com/auth0/auth0-deploy-cli/issues/379
|
|
391
|
+
|
|
392
|
+
[Unreleased]: https://github.com/auth0/auth0-deploy-cli/compare/v7.3.1...HEAD
|
|
393
|
+
[7.3.1]: https://github.com/auth0/auth0-deploy-cli/compare/v7.3.0...v7.3.1
|
|
394
|
+
[7.3.0]: https://github.com/auth0/auth0-deploy-cli/compare/v7.2.1...v7.3.0
|
|
395
|
+
[7.2.1]: https://github.com/auth0/auth0-deploy-cli/compare/v7.2.0...v7.2.1
|
|
396
|
+
[7.2.0]: https://github.com/auth0/auth0-deploy-cli/compare/v7.1.1...v7.2.0
|
|
358
397
|
[7.1.1]: https://github.com/auth0/auth0-deploy-cli/compare/v7.1.0...v7.1.1
|
|
359
398
|
[7.1.0]: https://github.com/auth0/auth0-deploy-cli/compare/v7.0.0...v7.1.0
|
|
360
399
|
[7.0.0]: https://github.com/auth0/auth0-deploy-cli/compare/v6.0.0...v7.0.0
|
|
@@ -48,17 +48,17 @@ function getDatabase(folder, mappings) {
|
|
|
48
48
|
})
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
|
|
52
|
+
if (database.options.customScripts) {
|
|
53
|
+
Object.entries(database.options.customScripts).forEach(([name, script]) => {
|
|
54
|
+
if (!_tools.constants.DATABASE_SCRIPTS.includes(name)) {
|
|
55
|
+
_logger2.default.warn('Skipping invalid database configuration: ' + name);
|
|
56
|
+
} else {
|
|
57
|
+
database.options.customScripts[name] = (0, _tools.loadFile)(_path2.default.join(folder, script), mappings);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
62
|
return database;
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -52,6 +52,19 @@ async function dump(context) {
|
|
|
52
52
|
|
|
53
53
|
_logger2.default.info(`Writing ${organizationFile}`);
|
|
54
54
|
|
|
55
|
+
if (organization.connections.length > 0) {
|
|
56
|
+
organization.connections = organization.connections.map(c => {
|
|
57
|
+
const name = c.connection && c.connection.name;
|
|
58
|
+
const conn = {
|
|
59
|
+
name,
|
|
60
|
+
...c
|
|
61
|
+
};
|
|
62
|
+
delete conn.connection_id;
|
|
63
|
+
delete conn.connection;
|
|
64
|
+
return conn;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
55
68
|
(0, _utils.dumpJSON)(organizationFile, organization);
|
|
56
69
|
});
|
|
57
70
|
}
|
package/lib/context/index.js
CHANGED
|
@@ -26,7 +26,7 @@ exports.default = async function (config) {
|
|
|
26
26
|
clientSecret: config.AUTH0_CLIENT_SECRET
|
|
27
27
|
});
|
|
28
28
|
const clientCredentials = await authClient.clientCredentialsGrant({
|
|
29
|
-
audience: `https://${config.AUTH0_DOMAIN}/api/v2/`
|
|
29
|
+
audience: config.AUTH0_AUDIENCE ? config.AUTH0_AUDIENCE : `https://${config.AUTH0_DOMAIN}/api/v2/`
|
|
30
30
|
});
|
|
31
31
|
accessToken = clientCredentials.access_token;
|
|
32
32
|
}
|
|
@@ -83,6 +83,7 @@ async function dump(context) {
|
|
|
83
83
|
name: action.name,
|
|
84
84
|
deployed: action.deployed || action.all_changes_deployed,
|
|
85
85
|
code: mapActionCode(context.basePath, action),
|
|
86
|
+
runtime: action.runtime,
|
|
86
87
|
dependencies: action.dependencies || [],
|
|
87
88
|
status: action.status,
|
|
88
89
|
secrets: mapSecrets(action.secrets),
|
|
@@ -76,7 +76,7 @@ exports.default = class {
|
|
|
76
76
|
|
|
77
77
|
_logger2.default.debug(`Loading YAML from ${fPath}`);
|
|
78
78
|
|
|
79
|
-
Object.assign(this.assets, _jsYaml2.default.
|
|
79
|
+
Object.assign(this.assets, _jsYaml2.default.load((0, _tools.keywordReplace)(_fsExtra2.default.readFileSync(fPath, 'utf8'), this.mappings)) || {});
|
|
80
80
|
} catch (err) {
|
|
81
81
|
_logger2.default.debug(err.stack);
|
|
82
82
|
|
|
@@ -37,6 +37,9 @@ const schema = exports.schema = {
|
|
|
37
37
|
type: 'string',
|
|
38
38
|
default: ''
|
|
39
39
|
},
|
|
40
|
+
runtime: {
|
|
41
|
+
type: 'string'
|
|
42
|
+
},
|
|
40
43
|
dependencies: {
|
|
41
44
|
type: 'array',
|
|
42
45
|
items: {
|
|
@@ -197,6 +200,10 @@ let ActionHandler = (_dec = (0, _default.order)('60'), (_class = class ActionHan
|
|
|
197
200
|
actionChanges.code = action.code;
|
|
198
201
|
}
|
|
199
202
|
|
|
203
|
+
if (action.runtime !== found.runtime) {
|
|
204
|
+
actionChanges.runtime = action.runtime;
|
|
205
|
+
}
|
|
206
|
+
|
|
200
207
|
if (!(0, _utils.areArraysEquals)(action.dependencies, found.dependencies)) {
|
|
201
208
|
actionChanges.dependencies = action.dependencies;
|
|
202
209
|
}
|
|
@@ -32,6 +32,7 @@ class ClientHandler extends _default2.default {
|
|
|
32
32
|
type: 'clients',
|
|
33
33
|
id: 'client_id',
|
|
34
34
|
identifiers: ['client_id', 'name'],
|
|
35
|
+
objectFields: ['client_metadata'],
|
|
35
36
|
stripUpdateFields: ['callback_url_template', 'signing_keys', 'global', 'tenant', 'jwt_configuration.secret_encoded']
|
|
36
37
|
});
|
|
37
38
|
}
|
|
@@ -32,6 +32,7 @@ class DefaultHandler {
|
|
|
32
32
|
this.client = options.client;
|
|
33
33
|
this.existing = null;
|
|
34
34
|
this.identifiers = options.identifiers || ['id', 'name'];
|
|
35
|
+
this.objectFields = options.objectFields || [];
|
|
35
36
|
this.stripUpdateFields = [...(options.stripUpdateFields || []), this.id];
|
|
36
37
|
this.functions = {
|
|
37
38
|
getAll: 'getAll',
|
|
@@ -87,7 +88,7 @@ class DefaultHandler {
|
|
|
87
88
|
const typeAssets = assets[this.type];
|
|
88
89
|
if (!typeAssets) return {};
|
|
89
90
|
const existing = await this.getType();
|
|
90
|
-
return (0, _utils.calcChanges)(typeAssets, existing, this.identifiers);
|
|
91
|
+
return (0, _utils.calcChanges)(this, typeAssets, existing, this.identifiers, this.objectFields);
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
async validate(assets) {
|
|
@@ -222,7 +222,7 @@ let OrganizationsHandler = (_dec = (0, _default.order)('70'), (_class = class Or
|
|
|
222
222
|
};
|
|
223
223
|
}).filter(connection => !!connection.connection_id);
|
|
224
224
|
});
|
|
225
|
-
const changes = (0, _utils.calcChanges)(organizations, existing, ['id', 'name']);
|
|
225
|
+
const changes = (0, _utils.calcChanges)(this, organizations, existing, ['id', 'name']);
|
|
226
226
|
|
|
227
227
|
_logger2.default.debug(`Start processChanges for organizations [delete:${changes.del.length}] [update:${changes.update.length}], [create:${changes.create.length}]`);
|
|
228
228
|
|
|
@@ -96,7 +96,7 @@ class ResourceServersHandler extends _default2.default {
|
|
|
96
96
|
let existing = await this.getType();
|
|
97
97
|
resourceServers = resourceServers.filter(r => !excluded.includes(r.name));
|
|
98
98
|
existing = existing.filter(r => !excluded.includes(r.name));
|
|
99
|
-
return (0, _utils.calcChanges)(resourceServers, existing, ['id', 'identifier']);
|
|
99
|
+
return (0, _utils.calcChanges)(this, resourceServers, existing, ['id', 'identifier']);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
async validate(assets) {
|
|
@@ -197,7 +197,7 @@ let RoleHandler = (_dec = (0, _default.order)('60'), (_class = class RoleHandler
|
|
|
197
197
|
} = assets;
|
|
198
198
|
if (!roles) return;
|
|
199
199
|
const existing = await this.getType();
|
|
200
|
-
const changes = (0, _utils.calcChanges)(roles, existing, ['id', 'name']);
|
|
200
|
+
const changes = (0, _utils.calcChanges)(this, roles, existing, ['id', 'name']);
|
|
201
201
|
|
|
202
202
|
_logger2.default.debug(`Start processChanges for roles [delete:${changes.del.length}] [update:${changes.update.length}], [create:${changes.create.length}]`);
|
|
203
203
|
|
|
@@ -105,7 +105,7 @@ class RulesHandler extends _default2.default {
|
|
|
105
105
|
update,
|
|
106
106
|
create,
|
|
107
107
|
conflicts
|
|
108
|
-
} = (0, _utils.calcChanges)(rules, existing, ['id', 'name']);
|
|
108
|
+
} = (0, _utils.calcChanges)(this, rules, existing, ['id', 'name']);
|
|
109
109
|
const futureRules = [...create, ...update];
|
|
110
110
|
const futureMaxOrder = Math.max(...futureRules.map(r => r.order));
|
|
111
111
|
const existingMaxOrder = Math.max(...existing.map(r => r.order));
|
package/lib/tools/utils.js
CHANGED
|
@@ -100,7 +100,36 @@ function dumpJSON(obj, spacing = 0) {
|
|
|
100
100
|
return JSON.stringify(obj, null, spacing);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
function
|
|
103
|
+
function processChangedObjectFields(handler, desiredAssetState, currentAssetState, objectFields = [], allowDelete = false) {
|
|
104
|
+
const desiredAssetStateWithChanges = { ...desiredAssetState
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
for (const fieldName of objectFields) {
|
|
108
|
+
if (desiredAssetState[fieldName] && Object.keys(desiredAssetState[fieldName]).length) {
|
|
109
|
+
if (currentAssetState[fieldName]) {
|
|
110
|
+
for (const currentObjectFieldPropertyName of Object.keys(currentAssetState[fieldName])) {
|
|
111
|
+
if (desiredAssetState[fieldName][currentObjectFieldPropertyName] === undefined) {
|
|
112
|
+
if (allowDelete) {
|
|
113
|
+
desiredAssetStateWithChanges[fieldName][currentObjectFieldPropertyName] = null;
|
|
114
|
+
} else {
|
|
115
|
+
_logger2.default.warn(`Detected that the ${fieldName} of the following ${handler.name} should be deleted. Doing so may be destructive.\nYou can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config\n${handler.objString(currentAssetState)}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
} else if (allowDelete) {
|
|
121
|
+
desiredAssetStateWithChanges[fieldName] = {};
|
|
122
|
+
} else {
|
|
123
|
+
delete desiredAssetStateWithChanges[fieldName];
|
|
124
|
+
|
|
125
|
+
_logger2.default.warn(`Detected that the ${fieldName} of the following ${handler.name} should be emptied. Doing so may be destructive.\nYou can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config\n${handler.objString(currentAssetState)}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return desiredAssetStateWithChanges;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function calcChanges(handler, assets, existing, identifiers = ['id', 'name'], objectFields = [], allowDelete = false) {
|
|
104
133
|
const update = [];
|
|
105
134
|
let del = [...existing];
|
|
106
135
|
let create = [...assets];
|
|
@@ -144,7 +173,7 @@ function calcChanges(assets, existing, identifiers = ['id', 'name']) {
|
|
|
144
173
|
if (found[i]) obj[i] = found[i];
|
|
145
174
|
return obj;
|
|
146
175
|
}, {}),
|
|
147
|
-
...asset
|
|
176
|
+
...(objectFields.length ? processChangedObjectFields(handler, asset, found, objectFields, allowDelete) : asset)
|
|
148
177
|
});
|
|
149
178
|
}
|
|
150
179
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auth0-deploy-cli",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.3.1",
|
|
4
4
|
"description": "A command line tool for deploying updates to your Auth0 tenant",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
"homepage": "https://github.com/auth0/auth0-deploy-cli#readme",
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"ajv": "^6.12.6",
|
|
32
|
-
"auth0": "^2.
|
|
32
|
+
"auth0": "^2.36.2",
|
|
33
33
|
"dot-prop": "^5.2.0",
|
|
34
34
|
"fs-extra": "^7.0.0",
|
|
35
35
|
"global-agent": "^2.1.12",
|
|
36
|
-
"js-yaml": "^
|
|
36
|
+
"js-yaml": "^4.1.0",
|
|
37
37
|
"lodash": "^4.17.20",
|
|
38
38
|
"mkdirp": "^0.5.1",
|
|
39
|
-
"nconf": "^0.
|
|
39
|
+
"nconf": "^0.11.0",
|
|
40
40
|
"promise-pool-executor": "^1.1.1",
|
|
41
41
|
"sanitize-filename": "^1.6.1",
|
|
42
42
|
"winston": "^2.3.0",
|
|
@@ -49,7 +49,6 @@
|
|
|
49
49
|
"@babel/plugin-proposal-decorators": "^7.8.3",
|
|
50
50
|
"@babel/preset-env": "^7.9.6",
|
|
51
51
|
"@babel/register": "^7.9.0",
|
|
52
|
-
"@brightcove/kacl": "^0.1.11",
|
|
53
52
|
"babel-eslint": "^10.0.0",
|
|
54
53
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
55
54
|
"babel-plugin-module-resolver": "^4.0.0",
|
|
@@ -61,6 +60,7 @@
|
|
|
61
60
|
"eslint-config-airbnb-base": "^14.2.1",
|
|
62
61
|
"eslint-import-resolver-babel-module": "^5.1.2",
|
|
63
62
|
"eslint-plugin-import": "^2.20.2",
|
|
63
|
+
"kacl": "^1.1.1",
|
|
64
64
|
"mocha": "^7.2.0",
|
|
65
65
|
"nyc": "^15.0.1",
|
|
66
66
|
"rimraf": "^3.0.2",
|