@punks/backend-entity-manager 0.0.60 → 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 (70) hide show
  1. package/dist/cjs/index.js +90 -11
  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/extensions/authentication/handlers/user-register/index.d.ts +1 -0
  25. package/dist/cjs/types/platforms/nest/integrations/typeorm/index.d.ts +1 -0
  26. package/dist/cjs/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
  27. package/dist/cjs/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
  28. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -2
  29. package/dist/cjs/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
  30. package/dist/cjs/types/platforms/nest/services/manager/index.d.ts +2 -2
  31. package/dist/cjs/types/providers/services.d.ts +16 -16
  32. package/dist/cjs/types/queries/search.d.ts +2 -2
  33. package/dist/cjs/types/reflection/decorators/index.d.ts +1 -1
  34. package/dist/cjs/types/templates/queryBuilder.d.ts +2 -2
  35. package/dist/esm/index.js +88 -12
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/types/abstractions/actions.d.ts +3 -2
  38. package/dist/esm/types/abstractions/configuration.d.ts +2 -2
  39. package/dist/esm/types/abstractions/index.d.ts +1 -1
  40. package/dist/esm/types/abstractions/manager.d.ts +2 -2
  41. package/dist/esm/types/abstractions/queries.d.ts +8 -2
  42. package/dist/esm/types/abstractions/seed.d.ts +8 -0
  43. package/dist/esm/types/actions/search.d.ts +2 -1
  44. package/dist/esm/types/base/index.d.ts +1 -0
  45. package/dist/esm/types/base/seed.d.ts +9 -0
  46. package/dist/esm/types/concrete/index.d.ts +3 -3
  47. package/dist/esm/types/index.d.ts +1 -0
  48. package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +2 -2
  49. package/dist/esm/types/integrations/repository/typeorm/repository.d.ts +1 -0
  50. package/dist/esm/types/integrations/repository/typeorm/seed.d.ts +7 -0
  51. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/seeder.d.ts +9 -0
  52. package/dist/esm/types/platforms/nest/__test__/tests/base/test_seeder.test.d.ts +1 -0
  53. package/dist/esm/types/platforms/nest/base/entityActions.d.ts +2 -2
  54. package/dist/esm/types/platforms/nest/base/entityManager.d.ts +2 -2
  55. package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
  56. package/dist/esm/types/platforms/nest/decorators/seed.d.ts +5 -0
  57. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
  58. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-register/index.d.ts +1 -0
  59. package/dist/esm/types/platforms/nest/integrations/typeorm/index.d.ts +1 -0
  60. package/dist/esm/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
  61. package/dist/esm/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
  62. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -2
  63. package/dist/esm/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
  64. package/dist/esm/types/platforms/nest/services/manager/index.d.ts +2 -2
  65. package/dist/esm/types/providers/services.d.ts +16 -16
  66. package/dist/esm/types/queries/search.d.ts +2 -2
  67. package/dist/esm/types/reflection/decorators/index.d.ts +1 -1
  68. package/dist/esm/types/templates/queryBuilder.d.ts +2 -2
  69. package/dist/index.d.ts +97 -48
  70. 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
  }));
@@ -19086,11 +19111,13 @@ let UserRegistrationHandler = class UserRegistrationHandler {
19086
19111
  this.passwordHashingProvider = passwordHashingProvider;
19087
19112
  this.emailService = emailService;
19088
19113
  this.jwtProvider = jwtProvider;
19114
+ this.logger = backendCore.Log.getLogger("UserRegistration");
19089
19115
  }
19090
19116
  async execute(input) {
19091
19117
  const user = (await this.resolveUser(input.email, input.context)) ??
19092
19118
  (await this.resolveUser(input.userName, input.context));
19093
19119
  if (user && user.verified) {
19120
+ this.logger.debug(`User already exists: ${input.email} - ${input.userName}`, { user });
19094
19121
  return {
19095
19122
  success: false,
19096
19123
  error: exports.UserRegistrationError.UserAlreadyExists,
@@ -19103,6 +19130,7 @@ let UserRegistrationHandler = class UserRegistrationHandler {
19103
19130
  passwordUpdateTimestamp: new Date(),
19104
19131
  });
19105
19132
  await this.sendRegistrationEmail(user, input.callback, input.languageId);
19133
+ this.logger.debug(`User already exists but not verified. Sending new verification email: ${input.email} - ${input.userName}`, { user });
19106
19134
  return {
19107
19135
  success: true,
19108
19136
  };
@@ -19114,6 +19142,9 @@ let UserRegistrationHandler = class UserRegistrationHandler {
19114
19142
  passwordUpdateTimestamp: new Date(),
19115
19143
  });
19116
19144
  await this.sendRegistrationEmail(newUser, input.callback, input.languageId);
19145
+ this.logger.debug(`New user created: ${input.email} - ${input.userName}`, {
19146
+ user: newUser,
19147
+ });
19117
19148
  return {
19118
19149
  success: true,
19119
19150
  };
@@ -19554,9 +19585,6 @@ let NestEventEmitter = class NestEventEmitter {
19554
19585
  constructor(eventEmitter) {
19555
19586
  this.eventEmitter = eventEmitter;
19556
19587
  }
19557
- // setEmitter(eventEmitter: EventEmitter2) {
19558
- // this.eventEmitter = eventEmitter
19559
- // }
19560
19588
  async emit(event, ...args) {
19561
19589
  await this.eventEmitter.emitAsync(event, ...args);
19562
19590
  }
@@ -19584,6 +19612,10 @@ class EmailTemplatesCollection {
19584
19612
  }
19585
19613
  }
19586
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
+
19587
19619
  var EntityManagerInitializer_1;
19588
19620
  exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerInitializer {
19589
19621
  constructor(discover, registry, eventEmitter) {
@@ -19609,6 +19641,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19609
19641
  await this.registerEmailProviders();
19610
19642
  await this.registerEventTrackingProviders();
19611
19643
  await this.executeInitializers(app);
19644
+ await this.executeSeeders();
19612
19645
  this.logger.log("Entity manager initialization completed 🚀");
19613
19646
  }
19614
19647
  async registerAuthentication(authenticationProvider) {
@@ -19656,12 +19689,20 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19656
19689
  }
19657
19690
  async executeInitializers(app) {
19658
19691
  const initializers = await this.discoverAppInitializers();
19659
- 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);
19660
19693
  for (const initializer of sortedInitializers) {
19661
19694
  await initializer.discoveredClass.instance.initialize(app);
19662
19695
  this.logger.log(`Entity manager app initializer ${initializer.discoveredClass.name} initialized 💪`);
19663
19696
  }
19664
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
+ }
19665
19706
  async registerEventTrackingProviders() {
19666
19707
  const providers = await this.discoverEventTrackingProviders();
19667
19708
  if (!providers.length) {
@@ -19704,7 +19745,6 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19704
19745
  app
19705
19746
  .get(exports.ModulesContainerProvider)
19706
19747
  .setModulesContainer(staticProviders.modulesContainer);
19707
- // app.get(NestEventEmitter).setEmitter(staticProviders.eventEmitter)
19708
19748
  }
19709
19749
  async discoverRepositories() {
19710
19750
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityRepository);
@@ -19724,6 +19764,9 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
19724
19764
  async discoverAppInitializers() {
19725
19765
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.AppInitializer);
19726
19766
  }
19767
+ async discoverEntitySeeders() {
19768
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntitySeeder);
19769
+ }
19727
19770
  async discoverEmailTemplates() {
19728
19771
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailTemplate);
19729
19772
  }
@@ -19910,6 +19953,9 @@ class TypeOrmRepository {
19910
19953
  constructor(innerRepository) {
19911
19954
  this.innerRepository = innerRepository;
19912
19955
  }
19956
+ getInnerRepository() {
19957
+ return this.innerRepository;
19958
+ }
19913
19959
  async exists(id) {
19914
19960
  if (typeof id === "undefined") {
19915
19961
  throw new Error("Invalid 'id' parameter.");
@@ -20004,6 +20050,41 @@ class NestTypeOrmRepository extends TypeOrmRepository {
20004
20050
  }
20005
20051
  }
20006
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
+
20007
20088
  class AppExceptionsFilterBase {
20008
20089
  catch(exception, host) {
20009
20090
  const ctx = host.switchToHttp();
@@ -20045,11 +20126,6 @@ const AwsSesModuleSymbols = {
20045
20126
  EmailTemplate: Symbol.for("WP.PLG:AWS_SES.EMAIL_TEMPLATE"),
20046
20127
  };
20047
20128
 
20048
- const getInstanceDecoratorData = (metadataKey, instance) => {
20049
- const reflector = new core.Reflector();
20050
- return reflector.get(metadataKey, instance.constructor);
20051
- };
20052
-
20053
20129
  class AwsSesEmailTemplate {
20054
20130
  async processPayload(payload) {
20055
20131
  return payload;
@@ -25311,11 +25387,13 @@ exports.EntityManagerSymbols = EntityManagerSymbols;
25311
25387
  exports.EntityManagerUnauthorizedException = EntityManagerUnauthorizedException;
25312
25388
  exports.EntityNotFoundException = EntityNotFoundException;
25313
25389
  exports.EntityOperationUnauthorizedException = EntityOperationUnauthorizedException;
25390
+ exports.EntitySeeder = EntitySeeder;
25314
25391
  exports.InvalidCredentialsError = InvalidCredentialsError;
25315
25392
  exports.MultipleEntitiesFoundException = MultipleEntitiesFoundException;
25316
25393
  exports.NestEntityActions = NestEntityActions;
25317
25394
  exports.NestEntityAuthorizationMiddleware = NestEntityAuthorizationMiddleware;
25318
25395
  exports.NestEntityManager = NestEntityManager;
25396
+ exports.NestTypeOrmEntitySeeder = NestTypeOrmEntitySeeder;
25319
25397
  exports.NestTypeOrmQueryBuilder = NestTypeOrmQueryBuilder;
25320
25398
  exports.NestTypeOrmRepository = NestTypeOrmRepository;
25321
25399
  exports.OperationTokenMismatchError = OperationTokenMismatchError;
@@ -25335,6 +25413,7 @@ exports.WpEntityConverter = WpEntityConverter;
25335
25413
  exports.WpEntityManager = WpEntityManager;
25336
25414
  exports.WpEntityQueryBuilder = WpEntityQueryBuilder;
25337
25415
  exports.WpEntityRepository = WpEntityRepository;
25416
+ exports.WpEntitySeeder = WpEntitySeeder;
25338
25417
  exports.WpEventsTracker = WpEventsTracker;
25339
25418
  exports.WpSendgridEmailTemplate = WpSendgridEmailTemplate;
25340
25419
  exports.WpUserService = WpUserService;