@punks/backend-entity-manager 0.0.99 → 0.0.101

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 (84) hide show
  1. package/dist/cjs/index.js +165 -9
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/configuration.d.ts +2 -2
  4. package/dist/cjs/types/abstractions/index.d.ts +1 -0
  5. package/dist/cjs/types/abstractions/settings.d.ts +7 -0
  6. package/dist/cjs/types/abstractions/versioning.d.ts +17 -0
  7. package/dist/cjs/types/commands/create.d.ts +2 -0
  8. package/dist/cjs/types/commands/delete.d.ts +2 -0
  9. package/dist/cjs/types/commands/update.d.ts +2 -0
  10. package/dist/cjs/types/commands/upsert.d.ts +2 -0
  11. package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.actions.d.ts +8 -0
  12. package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.controller.d.ts +13 -0
  13. package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.converter.d.ts +9 -0
  14. package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.dto.d.ts +37 -0
  15. package/dist/cjs/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.module.d.ts +2 -0
  16. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/appEntityVersion.entity.d.ts +11 -0
  17. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities.d.ts +2 -1
  18. package/dist/cjs/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
  19. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/appEntityVersion.repository.d.ts +7 -0
  20. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories.d.ts +2 -1
  21. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.adapter.d.ts +7 -0
  22. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.authentication.d.ts +11 -0
  23. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.manager.d.ts +7 -0
  24. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.models.d.ts +13 -0
  25. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.module.d.ts +2 -0
  26. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.query.d.ts +12 -0
  27. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.serializer.d.ts +6 -0
  28. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.types.d.ts +47 -0
  29. package/dist/cjs/types/platforms/nest/__test__/server/index.d.ts +1 -0
  30. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/versioning/module.d.ts +2 -0
  31. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/versioning/providers/entity-versioning/index.d.ts +8 -0
  32. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/versioning/providers/index.d.ts +2 -0
  33. package/dist/cjs/types/platforms/nest/__test__/tests/versioning/entity-versioning.test.d.ts +1 -0
  34. package/dist/cjs/types/platforms/nest/decorators/entity.d.ts +4 -0
  35. package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
  36. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
  37. package/dist/cjs/types/platforms/nest/decorators/versioning.d.ts +4 -0
  38. package/dist/cjs/types/platforms/nest/ioc/registry/index.d.ts +3 -2
  39. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +3 -0
  40. package/dist/cjs/types/providers/services.d.ts +8 -1
  41. package/dist/cjs/types/symbols/ioc.d.ts +6 -0
  42. package/dist/esm/index.js +165 -10
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/types/abstractions/configuration.d.ts +2 -2
  45. package/dist/esm/types/abstractions/index.d.ts +1 -0
  46. package/dist/esm/types/abstractions/settings.d.ts +7 -0
  47. package/dist/esm/types/abstractions/versioning.d.ts +17 -0
  48. package/dist/esm/types/commands/create.d.ts +2 -0
  49. package/dist/esm/types/commands/delete.d.ts +2 -0
  50. package/dist/esm/types/commands/update.d.ts +2 -0
  51. package/dist/esm/types/commands/upsert.d.ts +2 -0
  52. package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.actions.d.ts +8 -0
  53. package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.controller.d.ts +13 -0
  54. package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.converter.d.ts +9 -0
  55. package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.dto.d.ts +37 -0
  56. package/dist/esm/types/platforms/nest/__test__/server/app/appEntityVersions/appEntityVersion.module.d.ts +2 -0
  57. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/appEntityVersion.entity.d.ts +11 -0
  58. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities.d.ts +2 -1
  59. package/dist/esm/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
  60. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/appEntityVersion.repository.d.ts +7 -0
  61. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories.d.ts +2 -1
  62. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.adapter.d.ts +7 -0
  63. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.authentication.d.ts +11 -0
  64. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.manager.d.ts +7 -0
  65. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.models.d.ts +13 -0
  66. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.module.d.ts +2 -0
  67. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.query.d.ts +12 -0
  68. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.serializer.d.ts +6 -0
  69. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.types.d.ts +47 -0
  70. package/dist/esm/types/platforms/nest/__test__/server/index.d.ts +1 -0
  71. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/versioning/module.d.ts +2 -0
  72. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/versioning/providers/entity-versioning/index.d.ts +8 -0
  73. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/versioning/providers/index.d.ts +2 -0
  74. package/dist/esm/types/platforms/nest/__test__/tests/versioning/entity-versioning.test.d.ts +1 -0
  75. package/dist/esm/types/platforms/nest/decorators/entity.d.ts +4 -0
  76. package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
  77. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
  78. package/dist/esm/types/platforms/nest/decorators/versioning.d.ts +4 -0
  79. package/dist/esm/types/platforms/nest/ioc/registry/index.d.ts +3 -2
  80. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +3 -0
  81. package/dist/esm/types/providers/services.d.ts +8 -1
  82. package/dist/esm/types/symbols/ioc.d.ts +6 -0
  83. package/dist/index.d.ts +52 -7
  84. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -109,6 +109,14 @@ exports.EntitySerializationFormat = void 0;
109
109
  EntitySerializationFormat["Xlsx"] = "xlsx";
110
110
  })(exports.EntitySerializationFormat || (exports.EntitySerializationFormat = {}));
111
111
 
112
+ exports.EntityVersionOperation = void 0;
113
+ (function (EntityVersionOperation) {
114
+ EntityVersionOperation["Create"] = "create";
115
+ EntityVersionOperation["Update"] = "update";
116
+ EntityVersionOperation["Upsert"] = "upsert";
117
+ EntityVersionOperation["Delete"] = "delete";
118
+ })(exports.EntityVersionOperation || (exports.EntityVersionOperation = {}));
119
+
112
120
  class EntitySeeder {
113
121
  constructor() {
114
122
  this.logger = backendCore.Log.getLogger(EntitySeeder.name);
@@ -458,9 +466,11 @@ class EntityCreateCommand {
458
466
  this.services = services;
459
467
  }
460
468
  async execute(input) {
461
- var entity = this.adaptEntity(input);
469
+ const entity = this.adaptEntity(input);
462
470
  await this.authorize(entity);
463
- var createdItem = await this.services.resolveRepository().create(entity);
471
+ const createdItem = await this.services.resolveRepository().create(entity);
472
+ // todo: parametrize id field
473
+ await this.versionEntity(createdItem.id, createdItem);
464
474
  await this.services
465
475
  .resolveEventsManager()
466
476
  .processEntityCreatedEvent(createdItem);
@@ -486,6 +496,27 @@ class EntityCreateCommand {
486
496
  if (!authorizationResult.isAuthorized)
487
497
  throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Create, this.services.getEntityName(), entity);
488
498
  }
499
+ async versionEntity(id, entity) {
500
+ if (!this.isVersioningEnabled()) {
501
+ return;
502
+ }
503
+ const versioning = this.services.resolveVersioningProvider();
504
+ if (!versioning) {
505
+ return;
506
+ }
507
+ const contextService = this.services.resolveAuthenticationContextProvider();
508
+ const context = await contextService?.getContext();
509
+ await versioning.versionEntity({
510
+ operationType: exports.EntityVersionOperation.Create,
511
+ entityId: id,
512
+ entityType: this.services.getEntityName(),
513
+ data: entity,
514
+ modifiedByUserId: context?.userId,
515
+ });
516
+ }
517
+ isVersioningEnabled() {
518
+ return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
519
+ }
489
520
  }
490
521
 
491
522
  class EntityDeleteCommand {
@@ -498,6 +529,7 @@ class EntityDeleteCommand {
498
529
  }
499
530
  await this.authorize(id);
500
531
  await this.services.resolveRepository().delete(id);
532
+ await this.versionEntity(id);
501
533
  await this.services.resolveEventsManager().processEntityDeletedEvent(id);
502
534
  }
503
535
  async authorize(id) {
@@ -518,6 +550,26 @@ class EntityDeleteCommand {
518
550
  if (!authorizationResult.isAuthorized)
519
551
  throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Delete, this.services.getEntityName(), entity);
520
552
  }
553
+ async versionEntity(id) {
554
+ if (!this.isVersioningEnabled()) {
555
+ return;
556
+ }
557
+ const versioning = this.services.resolveVersioningProvider();
558
+ if (!versioning) {
559
+ return;
560
+ }
561
+ const contextService = this.services.resolveAuthenticationContextProvider();
562
+ const context = await contextService?.getContext();
563
+ await versioning.versionEntity({
564
+ operationType: exports.EntityVersionOperation.Delete,
565
+ entityId: id,
566
+ entityType: this.services.getEntityName(),
567
+ modifiedByUserId: context?.userId,
568
+ });
569
+ }
570
+ isVersioningEnabled() {
571
+ return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
572
+ }
521
573
  }
522
574
 
523
575
  class EntitiesDeleteCommand {
@@ -530,6 +582,7 @@ class EntitiesDeleteCommand {
530
582
  const deleteResult = await this.services
531
583
  .resolveQueryBuilder()
532
584
  .delete(params.filters, context);
585
+ // todo: version deleted entities
533
586
  // todo: add entities deleted event
534
587
  return deleteResult;
535
588
  }
@@ -710,6 +763,7 @@ class EntityUpdateCommand {
710
763
  const updatedEntity = await this.services
711
764
  .resolveRepository()
712
765
  .update(id, entity);
766
+ await this.versionEntity(id, updatedEntity);
713
767
  await this.services
714
768
  .resolveEventsManager()
715
769
  .processEntityUpdatedEvent(updatedEntity);
@@ -739,6 +793,27 @@ class EntityUpdateCommand {
739
793
  if (!authorizationResult.isAuthorized)
740
794
  throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Create, this.services.getEntityName(), currentEntity);
741
795
  }
796
+ async versionEntity(id, entity) {
797
+ if (!this.isVersioningEnabled()) {
798
+ return;
799
+ }
800
+ const versioning = this.services.resolveVersioningProvider();
801
+ if (!versioning) {
802
+ return;
803
+ }
804
+ const contextService = this.services.resolveAuthenticationContextProvider();
805
+ const context = await contextService?.getContext();
806
+ await versioning.versionEntity({
807
+ operationType: exports.EntityVersionOperation.Update,
808
+ entityId: id,
809
+ entityType: this.services.getEntityName(),
810
+ data: entity,
811
+ modifiedByUserId: context?.userId,
812
+ });
813
+ }
814
+ isVersioningEnabled() {
815
+ return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
816
+ }
742
817
  }
743
818
 
744
819
  class EntityUpsertCommand {
@@ -749,6 +824,7 @@ class EntityUpsertCommand {
749
824
  const entity = this.adaptEntity(data);
750
825
  await this.authorize(id, entity);
751
826
  const updatedEntity = await this.upsertEntity(id, entity);
827
+ await this.versionEntity(id, updatedEntity);
752
828
  await this.services
753
829
  .resolveEventsManager()
754
830
  .processEntityUpdatedEvent(updatedEntity);
@@ -784,6 +860,27 @@ class EntityUpsertCommand {
784
860
  if (!authorizationResult.isAuthorized)
785
861
  throw new EntityOperationUnauthorizedException(exports.EntityOperationType.Create, this.services.getEntityName(), entity);
786
862
  }
863
+ async versionEntity(id, entity) {
864
+ if (!this.isVersioningEnabled()) {
865
+ return;
866
+ }
867
+ const versioning = this.services.resolveVersioningProvider();
868
+ if (!versioning) {
869
+ return;
870
+ }
871
+ const contextService = this.services.resolveAuthenticationContextProvider();
872
+ const context = await contextService?.getContext();
873
+ await versioning.versionEntity({
874
+ operationType: exports.EntityVersionOperation.Upsert,
875
+ entityId: id,
876
+ entityType: this.services.getEntityName(),
877
+ data: entity,
878
+ modifiedByUserId: context?.userId,
879
+ });
880
+ }
881
+ isVersioningEnabled() {
882
+ return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
883
+ }
787
884
  }
788
885
 
789
886
  class EntityManager {
@@ -969,6 +1066,9 @@ const EntityServices = {
969
1066
  Storage: {
970
1067
  IEntityRepository: "IEntityRepository",
971
1068
  },
1069
+ Settings: {
1070
+ IEntityConfiguration: "IEntityConfiguration",
1071
+ },
972
1072
  };
973
1073
  const GlobalServices = {
974
1074
  Events: {
@@ -986,6 +1086,9 @@ const GlobalServices = {
986
1086
  IEmailTemplatesCollection: "IEmailTemplatesCollection",
987
1087
  IBucketProvider: "IBucketProvider",
988
1088
  },
1089
+ Versioning: {
1090
+ IEntityVersioningProvider: "IEntityVersioningProvider",
1091
+ },
989
1092
  };
990
1093
 
991
1094
  class EntityServiceLocator {
@@ -1011,6 +1114,12 @@ class EntityServiceLocator {
1011
1114
  resolveEventsManager() {
1012
1115
  return this.services.resolveEventsManager(this.entityName);
1013
1116
  }
1117
+ resolveVersioningProvider() {
1118
+ return this.services.resolveEntityVersioningProvider();
1119
+ }
1120
+ resolveEntityConfiguration() {
1121
+ return this.services.resolveEntityConfiguration(this.entityName);
1122
+ }
1014
1123
  resolveReplicaSyncManager() {
1015
1124
  return this.services.resolveReplicaSyncManager(this.entityName);
1016
1125
  }
@@ -1141,6 +1250,12 @@ class EntitiesServiceLocator {
1141
1250
  registerEmailProvider(instance) {
1142
1251
  this.provider.register(GlobalServices.Plugins.IEmailProvider, instance);
1143
1252
  }
1253
+ resolveEntityVersioningProvider() {
1254
+ return this.provider.resolve(GlobalServices.Versioning.IEntityVersioningProvider);
1255
+ }
1256
+ registerEntityVersioningProvider(instance) {
1257
+ this.provider.register(GlobalServices.Versioning.IEntityVersioningProvider, instance);
1258
+ }
1144
1259
  resolveBucketProvider() {
1145
1260
  return this.provider.resolve(GlobalServices.Plugins.IBucketProvider);
1146
1261
  }
@@ -1173,6 +1288,12 @@ class EntitiesServiceLocator {
1173
1288
  registerAuthenticationContextProvider(instance) {
1174
1289
  this.provider.register(GlobalServices.Authentication.IAuthenticationContextProvider, instance);
1175
1290
  }
1291
+ resolveEntityConfiguration(entityName) {
1292
+ return this.provider.resolveEntityService(EntityServices.Settings.IEntityConfiguration, entityName);
1293
+ }
1294
+ registerEntityConfiguration(entityName, instance) {
1295
+ return this.provider.registerEntityService(EntityServices.Settings.IEntityConfiguration, entityName, instance);
1296
+ }
1176
1297
  resolveEntityManager(entityName) {
1177
1298
  return this.provider.resolveEntityService(EntityServices.Services.IEntityManager, entityName);
1178
1299
  }
@@ -1771,11 +1892,13 @@ class EntityManagerServiceRoot {
1771
1892
  addAuthentication({ provider }) {
1772
1893
  this.getEntitiesServicesLocator().registerAuthenticationContextProvider(provider);
1773
1894
  }
1774
- registerEntity(entityName, repository) {
1895
+ registerEntity(entity, repository) {
1896
+ const { name: entityName } = entity;
1775
1897
  const collection = new EntityManagerServiceCollection(entityName, this.getEntitiesServicesLocator());
1776
1898
  const services = this.getEntityServicesLocator(entityName);
1777
1899
  collection.locator.registerEntityManager(entityName, new EntityManager(services));
1778
1900
  collection.locator.registerEntityActions(entityName, new EntityActions(services));
1901
+ collection.locator.registerEntityConfiguration(entityName, entity);
1779
1902
  collection.locator.registerRepository(entityName, repository);
1780
1903
  const replicaManager = new EntityReplicaManager(services);
1781
1904
  collection.locator.registerReplicaSyncManager(entityName, replicaManager);
@@ -1957,6 +2080,7 @@ const EntityManagerSymbols = {
1957
2080
  EntityManager: Symbol.for("WP:ENTITY_MANAGER"),
1958
2081
  EntityQueryBuilder: Symbol.for("WP:ENTITY_QUERY_BUILDER"),
1959
2082
  EntitySeeder: Symbol.for("WP:ENTITY_SEEDER"),
2083
+ EntityVersioningProvider: Symbol.for("WP:ENTITY_VERSIONING_PROVIDER"),
1960
2084
  EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
1961
2085
  EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
1962
2086
  BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
@@ -2040,6 +2164,10 @@ const WpEventsTracker = (props = {}) => common.applyDecorators(common.Injectable
2040
2164
  ...props,
2041
2165
  }));
2042
2166
 
2167
+ const WpEntityVersioningProvider = (props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EntityVersioningProvider, {
2168
+ ...props,
2169
+ }));
2170
+
2043
2171
  /******************************************************************************
2044
2172
  Copyright (c) Microsoft Corporation.
2045
2173
 
@@ -2303,12 +2431,12 @@ exports.EntityManagerRegistry = class EntityManagerRegistry {
2303
2431
  .registerEventEmitter(eventEmitter);
2304
2432
  }
2305
2433
  }
2306
- async registerDiscoveredEntity(app, { adapter, entityName, converter, queryBuilder, repository, authMiddleware, serializer, settings, }) {
2434
+ async registerDiscoveredEntity(app, { adapter, entityName, entity, converter, queryBuilder, repository, authMiddleware, serializer, settings, }) {
2307
2435
  if (!repository.discoveredClass.injectType) {
2308
2436
  throw new Error(`No inject type found for entity repository: ${entityName}`);
2309
2437
  }
2310
2438
  const repositoryInstance = (await app.resolve(repository.discoveredClass.injectType));
2311
- const registration = this.container.registerEntity(entityName, repositoryInstance);
2439
+ const registration = this.container.registerEntity(entity.meta, repositoryInstance);
2312
2440
  if (!serializer?.discoveredClass?.injectType) {
2313
2441
  throw new Error(`No inject type found for entity serializer: ${entityName}`);
2314
2442
  }
@@ -20867,6 +20995,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
20867
20995
  await this.registerEmailTemplates();
20868
20996
  await this.registerEmailProviders();
20869
20997
  await this.registerEventTrackingProviders();
20998
+ await this.registerVersioningProviders();
20870
20999
  await this.registerBucketProviders();
20871
21000
  await this.executeInitializers(app);
20872
21001
  await this.executeSeeders();
@@ -20878,21 +21007,27 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
20878
21007
  });
20879
21008
  }
20880
21009
  async registerEntities(app, staticProviders) {
21010
+ const entities = await this.discoverEntities();
20881
21011
  const repositories = await this.discoverRepositories();
20882
21012
  const queryBuilders = await this.discoverQueryBuilders();
20883
21013
  const converters = await this.discoverConverters();
20884
21014
  const serializers = await this.discoverSerializers();
20885
21015
  const adapters = await this.discoverAdapters();
20886
21016
  const auth = await this.discoverAuthMiddlewares();
21017
+ const repositoriesDict = backendCore.toDict(repositories, (q) => q.meta.entityName);
20887
21018
  const queryBuilderDict = backendCore.toDict(queryBuilders, (q) => q.meta.entityName);
20888
21019
  const converterDict = backendCore.toDict(converters, (c) => c.meta.entityName);
20889
21020
  const serializerDict = backendCore.toDict(serializers, (s) => s.meta.entityName);
20890
21021
  const adapterDict = backendCore.toDict(adapters, (a) => a.meta.entityName);
20891
21022
  const authDict = backendCore.toDict(auth, (a) => a.meta.entityName);
20892
- const sortedRepositories = lodash.exports.orderBy(repositories, (x) => x.meta.entityName);
20893
- this.logger.log(`Discovered repositories: \n${sortedRepositories.join(" \n")}`);
20894
- for (const repository of sortedRepositories) {
20895
- const entityName = repository.meta.entityName;
21023
+ const sortedEntities = lodash.exports.orderBy(entities, (x) => x.meta.name);
21024
+ this.logger.log(`Discovered entities: \n${sortedEntities.join(" \n")}`);
21025
+ for (const entity of sortedEntities) {
21026
+ const entityName = entity.meta.name;
21027
+ const repository = repositoriesDict[entityName];
21028
+ if (!repository) {
21029
+ throw new Error(`No repository found for entity: ${entityName}`);
21030
+ }
20896
21031
  const queryBuilder = queryBuilderDict[entityName];
20897
21032
  if (!queryBuilder) {
20898
21033
  throw new Error(`No query builder found for entity: ${entityName}`);
@@ -20903,6 +21038,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
20903
21038
  const serializer = serializerDict[entityName];
20904
21039
  await this.registry.registerDiscoveredEntity(app, {
20905
21040
  entityName,
21041
+ entity,
20906
21042
  adapter,
20907
21043
  repository,
20908
21044
  queryBuilder,
@@ -20965,6 +21101,19 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
20965
21101
  .registerEventsTracker(providers[0].discoveredClass.instance);
20966
21102
  this.logger.log(`Events tracker ${providers[0].discoveredClass.name} registered 🚜`);
20967
21103
  }
21104
+ async registerVersioningProviders() {
21105
+ const providers = await this.discoverVersioningProviders();
21106
+ if (!providers.length) {
21107
+ return;
21108
+ }
21109
+ for (const provider of providers) {
21110
+ this.registry
21111
+ .getContainer()
21112
+ .getEntitiesServicesLocator()
21113
+ .registerEntityVersioningProvider(provider.discoveredClass.instance);
21114
+ this.logger.log(`Versioning provider ${provider.discoveredClass.name} registered 🚜`);
21115
+ }
21116
+ }
20968
21117
  async registerEmailProviders() {
20969
21118
  const providers = await this.discoverEmailProviders();
20970
21119
  if (!providers.length) {
@@ -21001,9 +21150,15 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
21001
21150
  .get(exports.ModulesContainerProvider)
21002
21151
  .setModulesContainer(staticProviders.modulesContainer);
21003
21152
  }
21153
+ async discoverEntities() {
21154
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.Entity);
21155
+ }
21004
21156
  async discoverRepositories() {
21005
21157
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityRepository);
21006
21158
  }
21159
+ async discoverVersioningProviders() {
21160
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityVersioningProvider);
21161
+ }
21007
21162
  async discoverQueryBuilders() {
21008
21163
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityQueryBuilder);
21009
21164
  }
@@ -27453,6 +27608,7 @@ exports.WpEntityQueryBuilder = WpEntityQueryBuilder;
27453
27608
  exports.WpEntityRepository = WpEntityRepository;
27454
27609
  exports.WpEntitySeeder = WpEntitySeeder;
27455
27610
  exports.WpEntitySerializer = WpEntitySerializer;
27611
+ exports.WpEntityVersioningTracker = WpEntityVersioningProvider;
27456
27612
  exports.WpEventsTracker = WpEventsTracker;
27457
27613
  exports.WpPipeline = WpPipeline;
27458
27614
  exports.WpRolesService = WpRolesService;