@punks/backend-entity-manager 0.0.61 → 0.0.62

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 (68) hide show
  1. package/dist/cjs/index.js +84 -7
  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/integrations/typeorm/index.d.ts +1 -0
  25. package/dist/cjs/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
  26. package/dist/cjs/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
  27. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  28. package/dist/cjs/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
  29. package/dist/cjs/types/platforms/nest/services/manager/index.d.ts +2 -2
  30. package/dist/cjs/types/providers/services.d.ts +16 -16
  31. package/dist/cjs/types/queries/search.d.ts +2 -2
  32. package/dist/cjs/types/reflection/decorators/index.d.ts +1 -1
  33. package/dist/cjs/types/templates/queryBuilder.d.ts +2 -2
  34. package/dist/esm/index.js +82 -8
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/types/abstractions/actions.d.ts +3 -2
  37. package/dist/esm/types/abstractions/configuration.d.ts +2 -2
  38. package/dist/esm/types/abstractions/index.d.ts +1 -1
  39. package/dist/esm/types/abstractions/manager.d.ts +2 -2
  40. package/dist/esm/types/abstractions/queries.d.ts +8 -2
  41. package/dist/esm/types/abstractions/seed.d.ts +8 -0
  42. package/dist/esm/types/actions/search.d.ts +2 -1
  43. package/dist/esm/types/base/index.d.ts +1 -0
  44. package/dist/esm/types/base/seed.d.ts +9 -0
  45. package/dist/esm/types/concrete/index.d.ts +3 -3
  46. package/dist/esm/types/index.d.ts +1 -0
  47. package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +2 -2
  48. package/dist/esm/types/integrations/repository/typeorm/repository.d.ts +1 -0
  49. package/dist/esm/types/integrations/repository/typeorm/seed.d.ts +7 -0
  50. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/seeder.d.ts +9 -0
  51. package/dist/esm/types/platforms/nest/__test__/tests/base/test_seeder.test.d.ts +1 -0
  52. package/dist/esm/types/platforms/nest/base/entityActions.d.ts +2 -2
  53. package/dist/esm/types/platforms/nest/base/entityManager.d.ts +2 -2
  54. package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
  55. package/dist/esm/types/platforms/nest/decorators/seed.d.ts +5 -0
  56. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
  57. package/dist/esm/types/platforms/nest/integrations/typeorm/index.d.ts +1 -0
  58. package/dist/esm/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
  59. package/dist/esm/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
  60. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  61. package/dist/esm/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
  62. package/dist/esm/types/platforms/nest/services/manager/index.d.ts +2 -2
  63. package/dist/esm/types/providers/services.d.ts +16 -16
  64. package/dist/esm/types/queries/search.d.ts +2 -2
  65. package/dist/esm/types/reflection/decorators/index.d.ts +1 -1
  66. package/dist/esm/types/templates/queryBuilder.d.ts +2 -2
  67. package/dist/index.d.ts +96 -47
  68. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -2,10 +2,10 @@
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');
6
7
  var async_hooks = require('async_hooks');
7
8
  var bcrypt = require('bcrypt');
8
- var backendCore = require('@punks/backend-core');
9
9
  var constants = require('@nestjs/common/constants');
10
10
  var constants$1 = require('@nestjs/core/injector/constants');
11
11
  var metadataScanner = require('@nestjs/core/metadata-scanner');
@@ -87,6 +87,25 @@ exports.SortDirection = void 0;
87
87
  SortDirection["Desc"] = "desc";
88
88
  })(exports.SortDirection || (exports.SortDirection = {}));
89
89
 
90
+ class EntitySeeder {
91
+ constructor() {
92
+ this.logger = backendCore.Log.getLogger(EntitySeeder.name);
93
+ }
94
+ async execute() {
95
+ const items = await this.getEntries();
96
+ for (const item of items) {
97
+ const exists = await this.exists(item.identifier);
98
+ if (!exists) {
99
+ const data = item.data();
100
+ await this.create(data);
101
+ this.logger.info(`Entity created`, {
102
+ data,
103
+ });
104
+ }
105
+ }
106
+ }
107
+ }
108
+
90
109
  const PLATFORM_EVENT_NAMESPACE = "platform";
91
110
  const PlatformEvents = {
92
111
  Messaging: {
@@ -138,6 +157,7 @@ const EntityManagerSymbols = {
138
157
  EntityConverter: Symbol.for("WP:ENTITY_CONVERTER"),
139
158
  EntityManager: Symbol.for("WP:ENTITY_MANAGER"),
140
159
  EntityQueryBuilder: Symbol.for("WP:ENTITY_QUERY_BUILDER"),
160
+ EntitySeeder: Symbol.for("WP:ENTITY_SEEDER"),
141
161
  EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
142
162
  EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
143
163
  };
@@ -196,6 +216,11 @@ const WpEntityQueryBuilder = (entityName, props = {}) => common.applyDecorators(
196
216
  ...props,
197
217
  }));
198
218
 
219
+ const WpEntitySeeder = (entityName, props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EntitySeeder, {
220
+ entityName,
221
+ ...props,
222
+ }));
223
+
199
224
  const WpEventsTracker = (props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EventsTracker, {
200
225
  ...props,
201
226
  }));
@@ -19587,6 +19612,10 @@ class EmailTemplatesCollection {
19587
19612
  }
19588
19613
  }
19589
19614
 
19615
+ const orderByPriority = (items, priorityFieldSelector, nameFieldSelector) => {
19616
+ return backendCore.sort(items, backendCore.byField((x) => priorityFieldSelector(x) ?? Number.MAX_VALUE), backendCore.byField((x) => nameFieldSelector(x)));
19617
+ };
19618
+
19590
19619
  var EntityManagerInitializer_1;
19591
19620
  exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerInitializer {
19592
19621
  constructor(discover, registry, eventEmitter) {
@@ -19612,6 +19641,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19612
19641
  await this.registerEmailProviders();
19613
19642
  await this.registerEventTrackingProviders();
19614
19643
  await this.executeInitializers(app);
19644
+ await this.executeSeeders();
19615
19645
  this.logger.log("Entity manager initialization completed 🚀");
19616
19646
  }
19617
19647
  async registerAuthentication(authenticationProvider) {
@@ -19659,12 +19689,20 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19659
19689
  }
19660
19690
  async executeInitializers(app) {
19661
19691
  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));
19692
+ const sortedInitializers = orderByPriority(initializers, (x) => x.meta.priority, (x) => x.discoveredClass.name);
19663
19693
  for (const initializer of sortedInitializers) {
19664
19694
  await initializer.discoveredClass.instance.initialize(app);
19665
19695
  this.logger.log(`Entity manager app initializer ${initializer.discoveredClass.name} initialized 💪`);
19666
19696
  }
19667
19697
  }
19698
+ async executeSeeders() {
19699
+ const seders = await this.discoverEntitySeeders();
19700
+ const sortedSeeder = orderByPriority(seders, (x) => x.meta.priority, (x) => x.discoveredClass.name);
19701
+ for (const initializer of sortedSeeder) {
19702
+ await initializer.discoveredClass.instance.execute();
19703
+ this.logger.log(`Entity seeder initializer ${initializer.discoveredClass.name} initialized 💪`);
19704
+ }
19705
+ }
19668
19706
  async registerEventTrackingProviders() {
19669
19707
  const providers = await this.discoverEventTrackingProviders();
19670
19708
  if (!providers.length) {
@@ -19726,6 +19764,9 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19726
19764
  async discoverAppInitializers() {
19727
19765
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.AppInitializer);
19728
19766
  }
19767
+ async discoverEntitySeeders() {
19768
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntitySeeder);
19769
+ }
19729
19770
  async discoverEmailTemplates() {
19730
19771
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailTemplate);
19731
19772
  }
@@ -19912,6 +19953,9 @@ class TypeOrmRepository {
19912
19953
  constructor(innerRepository) {
19913
19954
  this.innerRepository = innerRepository;
19914
19955
  }
19956
+ getInnerRepository() {
19957
+ return this.innerRepository;
19958
+ }
19915
19959
  async exists(id) {
19916
19960
  if (typeof id === "undefined") {
19917
19961
  throw new Error("Invalid 'id' parameter.");
@@ -20006,6 +20050,41 @@ class NestTypeOrmRepository extends TypeOrmRepository {
20006
20050
  }
20007
20051
  }
20008
20052
 
20053
+ class TypeOrmEntitySeeder extends EntitySeeder {
20054
+ async exists(condition) {
20055
+ const count = await this.getRepository().count(condition);
20056
+ return count > 0;
20057
+ }
20058
+ async create(entity) {
20059
+ await this.getRepository().insert(entity);
20060
+ }
20061
+ }
20062
+
20063
+ const getInstanceDecoratorData = (metadataKey, instance) => {
20064
+ const reflector = new core.Reflector();
20065
+ return reflector.get(metadataKey, instance.constructor);
20066
+ };
20067
+
20068
+ const resolveTypeormRepository = (entityName, registry) => {
20069
+ const repository = registry
20070
+ .resolveEntityServicesCollection(entityName)
20071
+ .resolveRepository();
20072
+ return repository.getInnerRepository();
20073
+ };
20074
+ class NestTypeOrmEntitySeeder extends TypeOrmEntitySeeder {
20075
+ constructor(registry) {
20076
+ super();
20077
+ this.registry = registry;
20078
+ this.metadata = getInstanceDecoratorData(EntityManagerSymbols.EntitySeeder, this);
20079
+ }
20080
+ get priority() {
20081
+ return this.metadata.priority;
20082
+ }
20083
+ getRepository() {
20084
+ return resolveTypeormRepository(this.metadata.entityName, this.registry);
20085
+ }
20086
+ }
20087
+
20009
20088
  class AppExceptionsFilterBase {
20010
20089
  catch(exception, host) {
20011
20090
  const ctx = host.switchToHttp();
@@ -20047,11 +20126,6 @@ const AwsSesModuleSymbols = {
20047
20126
  EmailTemplate: Symbol.for("WP.PLG:AWS_SES.EMAIL_TEMPLATE"),
20048
20127
  };
20049
20128
 
20050
- const getInstanceDecoratorData = (metadataKey, instance) => {
20051
- const reflector = new core.Reflector();
20052
- return reflector.get(metadataKey, instance.constructor);
20053
- };
20054
-
20055
20129
  class AwsSesEmailTemplate {
20056
20130
  async processPayload(payload) {
20057
20131
  return payload;
@@ -25313,11 +25387,13 @@ exports.EntityManagerSymbols = EntityManagerSymbols;
25313
25387
  exports.EntityManagerUnauthorizedException = EntityManagerUnauthorizedException;
25314
25388
  exports.EntityNotFoundException = EntityNotFoundException;
25315
25389
  exports.EntityOperationUnauthorizedException = EntityOperationUnauthorizedException;
25390
+ exports.EntitySeeder = EntitySeeder;
25316
25391
  exports.InvalidCredentialsError = InvalidCredentialsError;
25317
25392
  exports.MultipleEntitiesFoundException = MultipleEntitiesFoundException;
25318
25393
  exports.NestEntityActions = NestEntityActions;
25319
25394
  exports.NestEntityAuthorizationMiddleware = NestEntityAuthorizationMiddleware;
25320
25395
  exports.NestEntityManager = NestEntityManager;
25396
+ exports.NestTypeOrmEntitySeeder = NestTypeOrmEntitySeeder;
25321
25397
  exports.NestTypeOrmQueryBuilder = NestTypeOrmQueryBuilder;
25322
25398
  exports.NestTypeOrmRepository = NestTypeOrmRepository;
25323
25399
  exports.OperationTokenMismatchError = OperationTokenMismatchError;
@@ -25337,6 +25413,7 @@ exports.WpEntityConverter = WpEntityConverter;
25337
25413
  exports.WpEntityManager = WpEntityManager;
25338
25414
  exports.WpEntityQueryBuilder = WpEntityQueryBuilder;
25339
25415
  exports.WpEntityRepository = WpEntityRepository;
25416
+ exports.WpEntitySeeder = WpEntitySeeder;
25340
25417
  exports.WpEventsTracker = WpEventsTracker;
25341
25418
  exports.WpSendgridEmailTemplate = WpSendgridEmailTemplate;
25342
25419
  exports.WpUserService = WpUserService;