auth0-deploy-cli 8.23.0 → 8.23.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/CHANGELOG.md CHANGED
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [8.23.1] - 2025-12-18
11
+
12
+ ### Fixed
13
+
14
+ - Fix resolve race conditions in processChanges for handlers. [#1240]
15
+ - Fix client grants pagination to use checkpoint. [#1239]
16
+
10
17
  ## [8.23.0] - 2025-12-16
11
18
 
12
19
  ### Added
@@ -1568,7 +1575,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1568
1575
  [#1229]: https://github.com/auth0/auth0-deploy-cli/issues/1229
1569
1576
  [#1231]: https://github.com/auth0/auth0-deploy-cli/issues/1231
1570
1577
  [#1232]: https://github.com/auth0/auth0-deploy-cli/issues/1232
1571
- [Unreleased]: https://github.com/auth0/auth0-deploy-cli/compare/v8.23.0...HEAD
1578
+ [#1239]: https://github.com/auth0/auth0-deploy-cli/issues/1239
1579
+ [#1240]: https://github.com/auth0/auth0-deploy-cli/issues/1240
1580
+ [Unreleased]: https://github.com/auth0/auth0-deploy-cli/compare/v8.23.1...HEAD
1581
+ [8.23.1]: https://github.com/auth0/auth0-deploy-cli/compare/v8.23.0...v8.23.1
1572
1582
  [8.23.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.22.0...v8.23.0
1573
1583
  [8.22.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.21.0...v8.22.0
1574
1584
  [8.21.0]: https://github.com/auth0/auth0-deploy-cli/compare/v8.20.4-beta.0...v8.21.0
@@ -95,7 +95,7 @@ class ClientGrantsHandler extends default_1.default {
95
95
  return this.existing;
96
96
  }
97
97
  const clientGrants = await (0, client_1.paginate)(this.client.clientGrants.list, {
98
- paginate: true,
98
+ checkpoint: true,
99
99
  });
100
100
  this.existing = clientGrants;
101
101
  // Always filter out the client we are using to access Auth0 Management API
@@ -100,23 +100,15 @@ class FlowVaultHandler extends default_1.default {
100
100
  return;
101
101
  const { del, update, create } = await this.calcChanges(assets);
102
102
  logger_1.default.debug(`Start processChanges for flow vault connections [delete:${del.length}] [update:${update.length}], [create:${create.length}]`);
103
- const changes = [{ del: del }, { create: create }, { update: update }];
104
- await Promise.all(changes.map(async (change) => {
105
- switch (true) {
106
- case change.del && change.del.length > 0:
107
- await this.deleteVaultConnections(change.del || []);
108
- break;
109
- case change.create && change.create.length > 0:
110
- await this.createVaultConnections(change.create);
111
- break;
112
- case change.update && change.update.length > 0:
113
- if (change.update)
114
- await this.updateVaultConnections(change.update);
115
- break;
116
- default:
117
- break;
118
- }
119
- }));
103
+ if (del.length > 0) {
104
+ await this.deleteVaultConnections(del);
105
+ }
106
+ if (create.length > 0) {
107
+ await this.createVaultConnections(create);
108
+ }
109
+ if (update.length > 0) {
110
+ await this.updateVaultConnections(update);
111
+ }
120
112
  }
121
113
  async createVaultConnection(conn) {
122
114
  if ('ready' in conn) {
@@ -403,27 +403,15 @@ class OrganizationsHandler extends default_1.default {
403
403
  allowDelete: !!this.config('AUTH0_ALLOW_DELETE'),
404
404
  });
405
405
  logger_1.default.debug(`Start processChanges for organizations [delete:${changes.del.length}] [update:${changes.update.length}], [create:${changes.create.length}]`);
406
- const myChanges = [
407
- { del: changes.del },
408
- { create: changes.create },
409
- { update: changes.update },
410
- ];
411
- await Promise.all(myChanges.map(async (change) => {
412
- switch (true) {
413
- case change.del && change.del.length > 0:
414
- await this.deleteOrganizations(change.del || []);
415
- break;
416
- case change.create && change.create.length > 0:
417
- await this.createOrganizations(changes.create);
418
- break;
419
- case change.update && change.update.length > 0:
420
- if (change.update)
421
- await this.updateOrganizations(change.update, existing);
422
- break;
423
- default:
424
- break;
425
- }
426
- }));
406
+ if (changes.del.length > 0) {
407
+ await this.deleteOrganizations(changes.del);
408
+ }
409
+ if (changes.create.length > 0) {
410
+ await this.createOrganizations(changes.create);
411
+ }
412
+ if (changes.update.length > 0) {
413
+ await this.updateOrganizations(changes.update, existing);
414
+ }
427
415
  }
428
416
  async getOrganizationEnabledConnections(organizationId) {
429
417
  const allOrganizationConnections = [];
@@ -118,23 +118,15 @@ class PhoneTemplatesHandler extends default_1.default {
118
118
  return;
119
119
  const { del, update, create } = await this.calcChanges(assets);
120
120
  logger_1.default.debug(`Start processChanges for phone templates [delete:${del.length}] [update:${update.length}], [create:${create.length}]`);
121
- const changes = [{ del: del }, { create: create }, { update: update }];
122
- await Promise.all(changes.map(async (change) => {
123
- switch (true) {
124
- case change.del && change.del.length > 0:
125
- await this.deletePhoneTemplates(change.del || []);
126
- break;
127
- case change.create && change.create.length > 0:
128
- await this.createPhoneTemplates(change.create);
129
- break;
130
- case change.update && change.update.length > 0:
131
- if (change.update)
132
- await this.updatePhoneTemplates(change.update);
133
- break;
134
- default:
135
- break;
136
- }
137
- }));
121
+ if (del.length > 0) {
122
+ await this.deletePhoneTemplates(del);
123
+ }
124
+ if (create.length > 0) {
125
+ await this.createPhoneTemplates(create);
126
+ }
127
+ if (update.length > 0) {
128
+ await this.updatePhoneTemplates(update);
129
+ }
138
130
  }
139
131
  async createPhoneTemplate(template) {
140
132
  const created = await this.client.branding.phone.templates.create(template);
@@ -230,28 +230,15 @@ class RolesHandler extends default_1.default {
230
230
  allowDelete: !!this.config('AUTH0_ALLOW_DELETE'),
231
231
  });
232
232
  logger_1.default.debug(`Start processChanges for roles [delete:${changes.del.length}] [update:${changes.update.length}], [create:${changes.create.length}]`);
233
- const myChanges = [
234
- { del: changes.del },
235
- { create: changes.create },
236
- { update: changes.update },
237
- ];
238
- await Promise.all(myChanges.map(async (change) => {
239
- switch (true) {
240
- case change.del && change.del.length > 0:
241
- if (change.del)
242
- await this.deleteRoles(change.del);
243
- break;
244
- case change.create && change.create.length > 0:
245
- await this.createRoles(changes.create);
246
- break;
247
- case change.update && change.update.length > 0:
248
- if (change.update)
249
- await this.updateRoles(change.update, existing);
250
- break;
251
- default:
252
- break;
253
- }
254
- }));
233
+ if (changes.del.length > 0) {
234
+ await this.deleteRoles(changes.del);
235
+ }
236
+ if (changes.create.length > 0) {
237
+ await this.createRoles(changes.create);
238
+ }
239
+ if (changes.update.length > 0) {
240
+ await this.updateRoles(changes.update, existing);
241
+ }
255
242
  }
256
243
  }
257
244
  exports.default = RolesHandler;
@@ -176,23 +176,15 @@ class TokenExchangeProfilesHandler extends default_1.default {
176
176
  const { del, update, create, conflicts } = await this.calcChanges(modifiedAssets);
177
177
  logger_1.default.debug(`Start processChanges for tokenExchangeProfiles [delete:${del.length}] [update:${update.length}], [create:${create.length}], [conflicts:${conflicts.length}]`);
178
178
  // Process changes in order: delete, create, update
179
- const changes = [{ del }, { create }, { update }];
180
- await Promise.all(changes.map(async (change) => {
181
- switch (true) {
182
- case change.del && change.del.length > 0:
183
- await this.deleteTokenExchangeProfiles(change.del || []);
184
- break;
185
- case change.create && change.create.length > 0:
186
- await this.createTokenExchangeProfiles(change.create);
187
- break;
188
- case change.update && change.update.length > 0:
189
- if (change.update)
190
- await this.updateTokenExchangeProfiles(change.update);
191
- break;
192
- default:
193
- break;
194
- }
195
- }));
179
+ if (del.length > 0) {
180
+ await this.deleteTokenExchangeProfiles(del);
181
+ }
182
+ if (create.length > 0) {
183
+ await this.createTokenExchangeProfiles(create);
184
+ }
185
+ if (update.length > 0) {
186
+ await this.updateTokenExchangeProfiles(update);
187
+ }
196
188
  }
197
189
  async createTokenExchangeProfile(profile) {
198
190
  const { id, created_at, updated_at, ...createParams } = profile;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auth0-deploy-cli",
3
- "version": "8.23.0",
3
+ "version": "8.23.1",
4
4
  "description": "A command line tool for deploying updates to your Auth0 tenant",
5
5
  "main": "lib/index.js",
6
6
  "bin": {