@punks/backend-entity-manager 0.0.61 → 0.0.63

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 (74) hide show
  1. package/dist/cjs/index.js +150 -38
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/actions.d.ts +3 -2
  4. package/dist/cjs/types/abstractions/configuration.d.ts +2 -2
  5. package/dist/cjs/types/abstractions/index.d.ts +1 -1
  6. package/dist/cjs/types/abstractions/manager.d.ts +2 -2
  7. package/dist/cjs/types/abstractions/queries.d.ts +8 -2
  8. package/dist/cjs/types/abstractions/seed.d.ts +8 -0
  9. package/dist/cjs/types/actions/search.d.ts +2 -1
  10. package/dist/cjs/types/base/index.d.ts +1 -0
  11. package/dist/cjs/types/base/seed.d.ts +9 -0
  12. package/dist/cjs/types/concrete/index.d.ts +3 -3
  13. package/dist/cjs/types/index.d.ts +1 -0
  14. package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +2 -2
  15. package/dist/cjs/types/integrations/repository/typeorm/repository.d.ts +1 -0
  16. package/dist/cjs/types/integrations/repository/typeorm/seed.d.ts +7 -0
  17. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/seeder.d.ts +9 -0
  18. package/dist/cjs/types/platforms/nest/__test__/tests/base/test_seeder.test.d.ts +1 -0
  19. package/dist/cjs/types/platforms/nest/base/entityActions.d.ts +2 -2
  20. package/dist/cjs/types/platforms/nest/base/entityManager.d.ts +2 -2
  21. package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
  22. package/dist/cjs/types/platforms/nest/decorators/seed.d.ts +5 -0
  23. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
  24. package/dist/cjs/types/platforms/nest/dto/facets.d.ts +13 -0
  25. package/dist/cjs/types/platforms/nest/dto/index.d.ts +1 -0
  26. package/dist/cjs/types/platforms/nest/index.d.ts +1 -0
  27. package/dist/cjs/types/platforms/nest/integrations/typeorm/index.d.ts +1 -0
  28. package/dist/cjs/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
  29. package/dist/cjs/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
  30. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  31. package/dist/cjs/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
  32. package/dist/cjs/types/platforms/nest/services/manager/index.d.ts +2 -2
  33. package/dist/cjs/types/providers/services.d.ts +16 -16
  34. package/dist/cjs/types/queries/search.d.ts +2 -2
  35. package/dist/cjs/types/reflection/decorators/index.d.ts +1 -1
  36. package/dist/cjs/types/templates/queryBuilder.d.ts +2 -2
  37. package/dist/esm/index.js +145 -39
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/types/abstractions/actions.d.ts +3 -2
  40. package/dist/esm/types/abstractions/configuration.d.ts +2 -2
  41. package/dist/esm/types/abstractions/index.d.ts +1 -1
  42. package/dist/esm/types/abstractions/manager.d.ts +2 -2
  43. package/dist/esm/types/abstractions/queries.d.ts +8 -2
  44. package/dist/esm/types/abstractions/seed.d.ts +8 -0
  45. package/dist/esm/types/actions/search.d.ts +2 -1
  46. package/dist/esm/types/base/index.d.ts +1 -0
  47. package/dist/esm/types/base/seed.d.ts +9 -0
  48. package/dist/esm/types/concrete/index.d.ts +3 -3
  49. package/dist/esm/types/index.d.ts +1 -0
  50. package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +2 -2
  51. package/dist/esm/types/integrations/repository/typeorm/repository.d.ts +1 -0
  52. package/dist/esm/types/integrations/repository/typeorm/seed.d.ts +7 -0
  53. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/seeder.d.ts +9 -0
  54. package/dist/esm/types/platforms/nest/__test__/tests/base/test_seeder.test.d.ts +1 -0
  55. package/dist/esm/types/platforms/nest/base/entityActions.d.ts +2 -2
  56. package/dist/esm/types/platforms/nest/base/entityManager.d.ts +2 -2
  57. package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
  58. package/dist/esm/types/platforms/nest/decorators/seed.d.ts +5 -0
  59. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
  60. package/dist/esm/types/platforms/nest/dto/facets.d.ts +13 -0
  61. package/dist/esm/types/platforms/nest/dto/index.d.ts +1 -0
  62. package/dist/esm/types/platforms/nest/index.d.ts +1 -0
  63. package/dist/esm/types/platforms/nest/integrations/typeorm/index.d.ts +1 -0
  64. package/dist/esm/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
  65. package/dist/esm/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
  66. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  67. package/dist/esm/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
  68. package/dist/esm/types/platforms/nest/services/manager/index.d.ts +2 -2
  69. package/dist/esm/types/providers/services.d.ts +16 -16
  70. package/dist/esm/types/queries/search.d.ts +2 -2
  71. package/dist/esm/types/reflection/decorators/index.d.ts +1 -1
  72. package/dist/esm/types/templates/queryBuilder.d.ts +2 -2
  73. package/dist/index.d.ts +109 -47
  74. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var backendCore = require('@punks/backend-core');
5
6
  var common = require('@nestjs/common');
7
+ var swagger = require('@nestjs/swagger');
6
8
  var async_hooks = require('async_hooks');
7
9
  var bcrypt = require('bcrypt');
8
- var backendCore = require('@punks/backend-core');
9
10
  var constants = require('@nestjs/common/constants');
10
11
  var constants$1 = require('@nestjs/core/injector/constants');
11
12
  var metadataScanner = require('@nestjs/core/metadata-scanner');
@@ -87,6 +88,25 @@ exports.SortDirection = void 0;
87
88
  SortDirection["Desc"] = "desc";
88
89
  })(exports.SortDirection || (exports.SortDirection = {}));
89
90
 
91
+ class EntitySeeder {
92
+ constructor() {
93
+ this.logger = backendCore.Log.getLogger(EntitySeeder.name);
94
+ }
95
+ async execute() {
96
+ const items = await this.getEntries();
97
+ for (const item of items) {
98
+ const exists = await this.exists(item.identifier);
99
+ if (!exists) {
100
+ const data = item.data();
101
+ await this.create(data);
102
+ this.logger.info(`Entity created`, {
103
+ data,
104
+ });
105
+ }
106
+ }
107
+ }
108
+ }
109
+
90
110
  const PLATFORM_EVENT_NAMESPACE = "platform";
91
111
  const PlatformEvents = {
92
112
  Messaging: {
@@ -138,6 +158,7 @@ const EntityManagerSymbols = {
138
158
  EntityConverter: Symbol.for("WP:ENTITY_CONVERTER"),
139
159
  EntityManager: Symbol.for("WP:ENTITY_MANAGER"),
140
160
  EntityQueryBuilder: Symbol.for("WP:ENTITY_QUERY_BUILDER"),
161
+ EntitySeeder: Symbol.for("WP:ENTITY_SEEDER"),
141
162
  EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
142
163
  EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
143
164
  };
@@ -196,10 +217,77 @@ const WpEntityQueryBuilder = (entityName, props = {}) => common.applyDecorators(
196
217
  ...props,
197
218
  }));
198
219
 
220
+ const WpEntitySeeder = (entityName, props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EntitySeeder, {
221
+ entityName,
222
+ ...props,
223
+ }));
224
+
199
225
  const WpEventsTracker = (props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EventsTracker, {
200
226
  ...props,
201
227
  }));
202
228
 
229
+ /******************************************************************************
230
+ Copyright (c) Microsoft Corporation.
231
+
232
+ Permission to use, copy, modify, and/or distribute this software for any
233
+ purpose with or without fee is hereby granted.
234
+
235
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
236
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
237
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
238
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
239
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
240
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
241
+ PERFORMANCE OF THIS SOFTWARE.
242
+ ***************************************************************************** */
243
+
244
+ function __decorate(decorators, target, key, desc) {
245
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
246
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
247
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
248
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
249
+ }
250
+
251
+ function __metadata(metadataKey, metadataValue) {
252
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
253
+ }
254
+
255
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
256
+ var e = new Error(message);
257
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
258
+ };
259
+
260
+ class StringFacet {
261
+ }
262
+ __decorate([
263
+ swagger.ApiProperty(),
264
+ __metadata("design:type", String)
265
+ ], StringFacet.prototype, "value", void 0);
266
+ __decorate([
267
+ swagger.ApiProperty({ nullable: true }),
268
+ __metadata("design:type", String)
269
+ ], StringFacet.prototype, "name", void 0);
270
+ class NumericFacet {
271
+ }
272
+ __decorate([
273
+ swagger.ApiProperty(),
274
+ __metadata("design:type", Number)
275
+ ], NumericFacet.prototype, "value", void 0);
276
+ __decorate([
277
+ swagger.ApiProperty({ nullable: true }),
278
+ __metadata("design:type", String)
279
+ ], NumericFacet.prototype, "name", void 0);
280
+ class BooleanFacet {
281
+ }
282
+ __decorate([
283
+ swagger.ApiProperty(),
284
+ __metadata("design:type", Boolean)
285
+ ], BooleanFacet.prototype, "value", void 0);
286
+ __decorate([
287
+ swagger.ApiProperty({ nullable: true }),
288
+ __metadata("design:type", String)
289
+ ], BooleanFacet.prototype, "name", void 0);
290
+
203
291
  const AuthenticationExtensionSymbols = {
204
292
  UserService: Symbol.for("WP.EXT:AUTHENTICATION.USER_SERVICE"),
205
293
  };
@@ -240,37 +328,6 @@ const AuthenticationEvents = {
240
328
  UserPasswordResetCompleted: `${AUTHENTICATION_EVENTS_NAMESPACE}:user.passwordResetCompleted`,
241
329
  };
242
330
 
243
- /******************************************************************************
244
- Copyright (c) Microsoft Corporation.
245
-
246
- Permission to use, copy, modify, and/or distribute this software for any
247
- purpose with or without fee is hereby granted.
248
-
249
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
250
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
251
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
252
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
253
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
254
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
255
- PERFORMANCE OF THIS SOFTWARE.
256
- ***************************************************************************** */
257
-
258
- function __decorate(decorators, target, key, desc) {
259
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
260
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
261
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
262
- return c > 3 && r && Object.defineProperty(target, key, r), r;
263
- }
264
-
265
- function __metadata(metadataKey, metadataValue) {
266
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
267
- }
268
-
269
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
270
- var e = new Error(message);
271
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
272
- };
273
-
274
331
  const asyncLocalStorage = new async_hooks.AsyncLocalStorage();
275
332
 
276
333
  exports.AppSessionService = class AppSessionService {
@@ -19587,6 +19644,10 @@ class EmailTemplatesCollection {
19587
19644
  }
19588
19645
  }
19589
19646
 
19647
+ const orderByPriority = (items, priorityFieldSelector, nameFieldSelector) => {
19648
+ return backendCore.sort(items, backendCore.byField((x) => priorityFieldSelector(x) ?? Number.MAX_VALUE), backendCore.byField((x) => nameFieldSelector(x)));
19649
+ };
19650
+
19590
19651
  var EntityManagerInitializer_1;
19591
19652
  exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerInitializer {
19592
19653
  constructor(discover, registry, eventEmitter) {
@@ -19612,6 +19673,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19612
19673
  await this.registerEmailProviders();
19613
19674
  await this.registerEventTrackingProviders();
19614
19675
  await this.executeInitializers(app);
19676
+ await this.executeSeeders();
19615
19677
  this.logger.log("Entity manager initialization completed 🚀");
19616
19678
  }
19617
19679
  async registerAuthentication(authenticationProvider) {
@@ -19659,12 +19721,20 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19659
19721
  }
19660
19722
  async executeInitializers(app) {
19661
19723
  const initializers = await this.discoverAppInitializers();
19662
- const sortedInitializers = backendCore.sort(initializers, backendCore.byField((x) => x.meta.priority ?? Number.MAX_VALUE), backendCore.byField((x) => x.discoveredClass.name));
19724
+ const sortedInitializers = orderByPriority(initializers, (x) => x.meta.priority, (x) => x.discoveredClass.name);
19663
19725
  for (const initializer of sortedInitializers) {
19664
19726
  await initializer.discoveredClass.instance.initialize(app);
19665
19727
  this.logger.log(`Entity manager app initializer ${initializer.discoveredClass.name} initialized 💪`);
19666
19728
  }
19667
19729
  }
19730
+ async executeSeeders() {
19731
+ const seders = await this.discoverEntitySeeders();
19732
+ const sortedSeeder = orderByPriority(seders, (x) => x.meta.priority, (x) => x.discoveredClass.name);
19733
+ for (const initializer of sortedSeeder) {
19734
+ await initializer.discoveredClass.instance.execute();
19735
+ this.logger.log(`Entity seeder initializer ${initializer.discoveredClass.name} initialized 💪`);
19736
+ }
19737
+ }
19668
19738
  async registerEventTrackingProviders() {
19669
19739
  const providers = await this.discoverEventTrackingProviders();
19670
19740
  if (!providers.length) {
@@ -19726,6 +19796,9 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19726
19796
  async discoverAppInitializers() {
19727
19797
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.AppInitializer);
19728
19798
  }
19799
+ async discoverEntitySeeders() {
19800
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntitySeeder);
19801
+ }
19729
19802
  async discoverEmailTemplates() {
19730
19803
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailTemplate);
19731
19804
  }
@@ -19912,6 +19985,9 @@ class TypeOrmRepository {
19912
19985
  constructor(innerRepository) {
19913
19986
  this.innerRepository = innerRepository;
19914
19987
  }
19988
+ getInnerRepository() {
19989
+ return this.innerRepository;
19990
+ }
19915
19991
  async exists(id) {
19916
19992
  if (typeof id === "undefined") {
19917
19993
  throw new Error("Invalid 'id' parameter.");
@@ -20006,6 +20082,41 @@ class NestTypeOrmRepository extends TypeOrmRepository {
20006
20082
  }
20007
20083
  }
20008
20084
 
20085
+ class TypeOrmEntitySeeder extends EntitySeeder {
20086
+ async exists(condition) {
20087
+ const count = await this.getRepository().count(condition);
20088
+ return count > 0;
20089
+ }
20090
+ async create(entity) {
20091
+ await this.getRepository().insert(entity);
20092
+ }
20093
+ }
20094
+
20095
+ const getInstanceDecoratorData = (metadataKey, instance) => {
20096
+ const reflector = new core.Reflector();
20097
+ return reflector.get(metadataKey, instance.constructor);
20098
+ };
20099
+
20100
+ const resolveTypeormRepository = (entityName, registry) => {
20101
+ const repository = registry
20102
+ .resolveEntityServicesCollection(entityName)
20103
+ .resolveRepository();
20104
+ return repository.getInnerRepository();
20105
+ };
20106
+ class NestTypeOrmEntitySeeder extends TypeOrmEntitySeeder {
20107
+ constructor(registry) {
20108
+ super();
20109
+ this.registry = registry;
20110
+ this.metadata = getInstanceDecoratorData(EntityManagerSymbols.EntitySeeder, this);
20111
+ }
20112
+ get priority() {
20113
+ return this.metadata.priority;
20114
+ }
20115
+ getRepository() {
20116
+ return resolveTypeormRepository(this.metadata.entityName, this.registry);
20117
+ }
20118
+ }
20119
+
20009
20120
  class AppExceptionsFilterBase {
20010
20121
  catch(exception, host) {
20011
20122
  const ctx = host.switchToHttp();
@@ -20047,11 +20158,6 @@ const AwsSesModuleSymbols = {
20047
20158
  EmailTemplate: Symbol.for("WP.PLG:AWS_SES.EMAIL_TEMPLATE"),
20048
20159
  };
20049
20160
 
20050
- const getInstanceDecoratorData = (metadataKey, instance) => {
20051
- const reflector = new core.Reflector();
20052
- return reflector.get(metadataKey, instance.constructor);
20053
- };
20054
-
20055
20161
  class AwsSesEmailTemplate {
20056
20162
  async processPayload(payload) {
20057
20163
  return payload;
@@ -25307,24 +25413,29 @@ exports.AuthenticationError = AuthenticationError;
25307
25413
  exports.AuthenticationEvents = AuthenticationEvents;
25308
25414
  exports.AuthenticationExtensionSymbols = AuthenticationExtensionSymbols;
25309
25415
  exports.AwsSesEmailTemplate = AwsSesEmailTemplate;
25416
+ exports.BooleanFacet = BooleanFacet;
25310
25417
  exports.EntityManagerConfigurationError = EntityManagerConfigurationError;
25311
25418
  exports.EntityManagerException = EntityManagerException;
25312
25419
  exports.EntityManagerSymbols = EntityManagerSymbols;
25313
25420
  exports.EntityManagerUnauthorizedException = EntityManagerUnauthorizedException;
25314
25421
  exports.EntityNotFoundException = EntityNotFoundException;
25315
25422
  exports.EntityOperationUnauthorizedException = EntityOperationUnauthorizedException;
25423
+ exports.EntitySeeder = EntitySeeder;
25316
25424
  exports.InvalidCredentialsError = InvalidCredentialsError;
25317
25425
  exports.MultipleEntitiesFoundException = MultipleEntitiesFoundException;
25318
25426
  exports.NestEntityActions = NestEntityActions;
25319
25427
  exports.NestEntityAuthorizationMiddleware = NestEntityAuthorizationMiddleware;
25320
25428
  exports.NestEntityManager = NestEntityManager;
25429
+ exports.NestTypeOrmEntitySeeder = NestTypeOrmEntitySeeder;
25321
25430
  exports.NestTypeOrmQueryBuilder = NestTypeOrmQueryBuilder;
25322
25431
  exports.NestTypeOrmRepository = NestTypeOrmRepository;
25432
+ exports.NumericFacet = NumericFacet;
25323
25433
  exports.OperationTokenMismatchError = OperationTokenMismatchError;
25324
25434
  exports.PLATFORM_EVENT_NAMESPACE = PLATFORM_EVENT_NAMESPACE;
25325
25435
  exports.PlatformEvents = PlatformEvents;
25326
25436
  exports.QueryBuilderBase = QueryBuilderBase;
25327
25437
  exports.SendgridEmailTemplate = SendgridEmailTemplate;
25438
+ exports.StringFacet = StringFacet;
25328
25439
  exports.WpAppInitializer = WpAppInitializer;
25329
25440
  exports.WpAwsSesEmailTemplate = WpAwsSesEmailTemplate;
25330
25441
  exports.WpEmailTemplate = WpEmailTemplate;
@@ -25337,6 +25448,7 @@ exports.WpEntityConverter = WpEntityConverter;
25337
25448
  exports.WpEntityManager = WpEntityManager;
25338
25449
  exports.WpEntityQueryBuilder = WpEntityQueryBuilder;
25339
25450
  exports.WpEntityRepository = WpEntityRepository;
25451
+ exports.WpEntitySeeder = WpEntitySeeder;
25340
25452
  exports.WpEventsTracker = WpEventsTracker;
25341
25453
  exports.WpSendgridEmailTemplate = WpSendgridEmailTemplate;
25342
25454
  exports.WpUserService = WpUserService;