@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.
- package/dist/cjs/index.js +90 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/abstractions/actions.d.ts +3 -2
- package/dist/cjs/types/abstractions/configuration.d.ts +2 -2
- package/dist/cjs/types/abstractions/index.d.ts +1 -1
- package/dist/cjs/types/abstractions/manager.d.ts +2 -2
- package/dist/cjs/types/abstractions/queries.d.ts +8 -2
- package/dist/cjs/types/abstractions/seed.d.ts +8 -0
- package/dist/cjs/types/actions/search.d.ts +2 -1
- package/dist/cjs/types/base/index.d.ts +1 -0
- package/dist/cjs/types/base/seed.d.ts +9 -0
- package/dist/cjs/types/concrete/index.d.ts +3 -3
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +2 -2
- package/dist/cjs/types/integrations/repository/typeorm/repository.d.ts +1 -0
- package/dist/cjs/types/integrations/repository/typeorm/seed.d.ts +7 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/seeder.d.ts +9 -0
- package/dist/cjs/types/platforms/nest/__test__/tests/base/test_seeder.test.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/base/entityActions.d.ts +2 -2
- package/dist/cjs/types/platforms/nest/base/entityManager.d.ts +2 -2
- package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/seed.d.ts +5 -0
- package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-register/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/integrations/typeorm/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
- package/dist/cjs/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
- package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -2
- package/dist/cjs/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/services/manager/index.d.ts +2 -2
- package/dist/cjs/types/providers/services.d.ts +16 -16
- package/dist/cjs/types/queries/search.d.ts +2 -2
- package/dist/cjs/types/reflection/decorators/index.d.ts +1 -1
- package/dist/cjs/types/templates/queryBuilder.d.ts +2 -2
- package/dist/esm/index.js +88 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/abstractions/actions.d.ts +3 -2
- package/dist/esm/types/abstractions/configuration.d.ts +2 -2
- package/dist/esm/types/abstractions/index.d.ts +1 -1
- package/dist/esm/types/abstractions/manager.d.ts +2 -2
- package/dist/esm/types/abstractions/queries.d.ts +8 -2
- package/dist/esm/types/abstractions/seed.d.ts +8 -0
- package/dist/esm/types/actions/search.d.ts +2 -1
- package/dist/esm/types/base/index.d.ts +1 -0
- package/dist/esm/types/base/seed.d.ts +9 -0
- package/dist/esm/types/concrete/index.d.ts +3 -3
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +2 -2
- package/dist/esm/types/integrations/repository/typeorm/repository.d.ts +1 -0
- package/dist/esm/types/integrations/repository/typeorm/seed.d.ts +7 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/foo/seeder.d.ts +9 -0
- package/dist/esm/types/platforms/nest/__test__/tests/base/test_seeder.test.d.ts +1 -0
- package/dist/esm/types/platforms/nest/base/entityActions.d.ts +2 -2
- package/dist/esm/types/platforms/nest/base/entityManager.d.ts +2 -2
- package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/seed.d.ts +5 -0
- package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
- package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-register/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/integrations/typeorm/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +2 -2
- package/dist/esm/types/platforms/nest/integrations/typeorm/seed.d.ts +11 -0
- package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -2
- package/dist/esm/types/platforms/nest/processors/initializer/utils.d.ts +1 -0
- package/dist/esm/types/platforms/nest/services/manager/index.d.ts +2 -2
- package/dist/esm/types/providers/services.d.ts +16 -16
- package/dist/esm/types/queries/search.d.ts +2 -2
- package/dist/esm/types/reflection/decorators/index.d.ts +1 -1
- package/dist/esm/types/templates/queryBuilder.d.ts +2 -2
- package/dist/index.d.ts +97 -48
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Log, sort, byField, toDict, newUuid as newUuid$1, removeUndefinedProps } from '@punks/backend-core';
|
|
1
2
|
import { applyDecorators, Injectable, SetMetadata, Global, Module, Scope, Logger, HttpStatus, HttpException } from '@nestjs/common';
|
|
2
3
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
3
4
|
import { hash } from 'bcrypt';
|
|
4
|
-
import { Log, toDict, sort, byField, newUuid as newUuid$1, removeUndefinedProps } from '@punks/backend-core';
|
|
5
5
|
import { PATH_METADATA } from '@nestjs/common/constants';
|
|
6
6
|
import { STATIC_CONTEXT } from '@nestjs/core/injector/constants';
|
|
7
7
|
import { MetadataScanner } from '@nestjs/core/metadata-scanner';
|
|
@@ -79,6 +79,25 @@ var SortDirection;
|
|
|
79
79
|
SortDirection["Desc"] = "desc";
|
|
80
80
|
})(SortDirection || (SortDirection = {}));
|
|
81
81
|
|
|
82
|
+
class EntitySeeder {
|
|
83
|
+
constructor() {
|
|
84
|
+
this.logger = Log.getLogger(EntitySeeder.name);
|
|
85
|
+
}
|
|
86
|
+
async execute() {
|
|
87
|
+
const items = await this.getEntries();
|
|
88
|
+
for (const item of items) {
|
|
89
|
+
const exists = await this.exists(item.identifier);
|
|
90
|
+
if (!exists) {
|
|
91
|
+
const data = item.data();
|
|
92
|
+
await this.create(data);
|
|
93
|
+
this.logger.info(`Entity created`, {
|
|
94
|
+
data,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
82
101
|
const PLATFORM_EVENT_NAMESPACE = "platform";
|
|
83
102
|
const PlatformEvents = {
|
|
84
103
|
Messaging: {
|
|
@@ -130,6 +149,7 @@ const EntityManagerSymbols = {
|
|
|
130
149
|
EntityConverter: Symbol.for("WP:ENTITY_CONVERTER"),
|
|
131
150
|
EntityManager: Symbol.for("WP:ENTITY_MANAGER"),
|
|
132
151
|
EntityQueryBuilder: Symbol.for("WP:ENTITY_QUERY_BUILDER"),
|
|
152
|
+
EntitySeeder: Symbol.for("WP:ENTITY_SEEDER"),
|
|
133
153
|
EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
|
|
134
154
|
EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
|
|
135
155
|
};
|
|
@@ -188,6 +208,11 @@ const WpEntityQueryBuilder = (entityName, props = {}) => applyDecorators(Injecta
|
|
|
188
208
|
...props,
|
|
189
209
|
}));
|
|
190
210
|
|
|
211
|
+
const WpEntitySeeder = (entityName, props = {}) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EntitySeeder, {
|
|
212
|
+
entityName,
|
|
213
|
+
...props,
|
|
214
|
+
}));
|
|
215
|
+
|
|
191
216
|
const WpEventsTracker = (props = {}) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EventsTracker, {
|
|
192
217
|
...props,
|
|
193
218
|
}));
|
|
@@ -19078,11 +19103,13 @@ let UserRegistrationHandler = class UserRegistrationHandler {
|
|
|
19078
19103
|
this.passwordHashingProvider = passwordHashingProvider;
|
|
19079
19104
|
this.emailService = emailService;
|
|
19080
19105
|
this.jwtProvider = jwtProvider;
|
|
19106
|
+
this.logger = Log.getLogger("UserRegistration");
|
|
19081
19107
|
}
|
|
19082
19108
|
async execute(input) {
|
|
19083
19109
|
const user = (await this.resolveUser(input.email, input.context)) ??
|
|
19084
19110
|
(await this.resolveUser(input.userName, input.context));
|
|
19085
19111
|
if (user && user.verified) {
|
|
19112
|
+
this.logger.debug(`User already exists: ${input.email} - ${input.userName}`, { user });
|
|
19086
19113
|
return {
|
|
19087
19114
|
success: false,
|
|
19088
19115
|
error: UserRegistrationError.UserAlreadyExists,
|
|
@@ -19095,6 +19122,7 @@ let UserRegistrationHandler = class UserRegistrationHandler {
|
|
|
19095
19122
|
passwordUpdateTimestamp: new Date(),
|
|
19096
19123
|
});
|
|
19097
19124
|
await this.sendRegistrationEmail(user, input.callback, input.languageId);
|
|
19125
|
+
this.logger.debug(`User already exists but not verified. Sending new verification email: ${input.email} - ${input.userName}`, { user });
|
|
19098
19126
|
return {
|
|
19099
19127
|
success: true,
|
|
19100
19128
|
};
|
|
@@ -19106,6 +19134,9 @@ let UserRegistrationHandler = class UserRegistrationHandler {
|
|
|
19106
19134
|
passwordUpdateTimestamp: new Date(),
|
|
19107
19135
|
});
|
|
19108
19136
|
await this.sendRegistrationEmail(newUser, input.callback, input.languageId);
|
|
19137
|
+
this.logger.debug(`New user created: ${input.email} - ${input.userName}`, {
|
|
19138
|
+
user: newUser,
|
|
19139
|
+
});
|
|
19109
19140
|
return {
|
|
19110
19141
|
success: true,
|
|
19111
19142
|
};
|
|
@@ -19546,9 +19577,6 @@ let NestEventEmitter = class NestEventEmitter {
|
|
|
19546
19577
|
constructor(eventEmitter) {
|
|
19547
19578
|
this.eventEmitter = eventEmitter;
|
|
19548
19579
|
}
|
|
19549
|
-
// setEmitter(eventEmitter: EventEmitter2) {
|
|
19550
|
-
// this.eventEmitter = eventEmitter
|
|
19551
|
-
// }
|
|
19552
19580
|
async emit(event, ...args) {
|
|
19553
19581
|
await this.eventEmitter.emitAsync(event, ...args);
|
|
19554
19582
|
}
|
|
@@ -19576,6 +19604,10 @@ class EmailTemplatesCollection {
|
|
|
19576
19604
|
}
|
|
19577
19605
|
}
|
|
19578
19606
|
|
|
19607
|
+
const orderByPriority = (items, priorityFieldSelector, nameFieldSelector) => {
|
|
19608
|
+
return sort(items, byField((x) => priorityFieldSelector(x) ?? Number.MAX_VALUE), byField((x) => nameFieldSelector(x)));
|
|
19609
|
+
};
|
|
19610
|
+
|
|
19579
19611
|
var EntityManagerInitializer_1;
|
|
19580
19612
|
let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerInitializer {
|
|
19581
19613
|
constructor(discover, registry, eventEmitter) {
|
|
@@ -19601,6 +19633,7 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
19601
19633
|
await this.registerEmailProviders();
|
|
19602
19634
|
await this.registerEventTrackingProviders();
|
|
19603
19635
|
await this.executeInitializers(app);
|
|
19636
|
+
await this.executeSeeders();
|
|
19604
19637
|
this.logger.log("Entity manager initialization completed 🚀");
|
|
19605
19638
|
}
|
|
19606
19639
|
async registerAuthentication(authenticationProvider) {
|
|
@@ -19648,12 +19681,20 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
19648
19681
|
}
|
|
19649
19682
|
async executeInitializers(app) {
|
|
19650
19683
|
const initializers = await this.discoverAppInitializers();
|
|
19651
|
-
const sortedInitializers =
|
|
19684
|
+
const sortedInitializers = orderByPriority(initializers, (x) => x.meta.priority, (x) => x.discoveredClass.name);
|
|
19652
19685
|
for (const initializer of sortedInitializers) {
|
|
19653
19686
|
await initializer.discoveredClass.instance.initialize(app);
|
|
19654
19687
|
this.logger.log(`Entity manager app initializer ${initializer.discoveredClass.name} initialized 💪`);
|
|
19655
19688
|
}
|
|
19656
19689
|
}
|
|
19690
|
+
async executeSeeders() {
|
|
19691
|
+
const seders = await this.discoverEntitySeeders();
|
|
19692
|
+
const sortedSeeder = orderByPriority(seders, (x) => x.meta.priority, (x) => x.discoveredClass.name);
|
|
19693
|
+
for (const initializer of sortedSeeder) {
|
|
19694
|
+
await initializer.discoveredClass.instance.execute();
|
|
19695
|
+
this.logger.log(`Entity seeder initializer ${initializer.discoveredClass.name} initialized 💪`);
|
|
19696
|
+
}
|
|
19697
|
+
}
|
|
19657
19698
|
async registerEventTrackingProviders() {
|
|
19658
19699
|
const providers = await this.discoverEventTrackingProviders();
|
|
19659
19700
|
if (!providers.length) {
|
|
@@ -19696,7 +19737,6 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
19696
19737
|
app
|
|
19697
19738
|
.get(ModulesContainerProvider)
|
|
19698
19739
|
.setModulesContainer(staticProviders.modulesContainer);
|
|
19699
|
-
// app.get(NestEventEmitter).setEmitter(staticProviders.eventEmitter)
|
|
19700
19740
|
}
|
|
19701
19741
|
async discoverRepositories() {
|
|
19702
19742
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityRepository);
|
|
@@ -19716,6 +19756,9 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
19716
19756
|
async discoverAppInitializers() {
|
|
19717
19757
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.AppInitializer);
|
|
19718
19758
|
}
|
|
19759
|
+
async discoverEntitySeeders() {
|
|
19760
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntitySeeder);
|
|
19761
|
+
}
|
|
19719
19762
|
async discoverEmailTemplates() {
|
|
19720
19763
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailTemplate);
|
|
19721
19764
|
}
|
|
@@ -19902,6 +19945,9 @@ class TypeOrmRepository {
|
|
|
19902
19945
|
constructor(innerRepository) {
|
|
19903
19946
|
this.innerRepository = innerRepository;
|
|
19904
19947
|
}
|
|
19948
|
+
getInnerRepository() {
|
|
19949
|
+
return this.innerRepository;
|
|
19950
|
+
}
|
|
19905
19951
|
async exists(id) {
|
|
19906
19952
|
if (typeof id === "undefined") {
|
|
19907
19953
|
throw new Error("Invalid 'id' parameter.");
|
|
@@ -19996,6 +20042,41 @@ class NestTypeOrmRepository extends TypeOrmRepository {
|
|
|
19996
20042
|
}
|
|
19997
20043
|
}
|
|
19998
20044
|
|
|
20045
|
+
class TypeOrmEntitySeeder extends EntitySeeder {
|
|
20046
|
+
async exists(condition) {
|
|
20047
|
+
const count = await this.getRepository().count(condition);
|
|
20048
|
+
return count > 0;
|
|
20049
|
+
}
|
|
20050
|
+
async create(entity) {
|
|
20051
|
+
await this.getRepository().insert(entity);
|
|
20052
|
+
}
|
|
20053
|
+
}
|
|
20054
|
+
|
|
20055
|
+
const getInstanceDecoratorData = (metadataKey, instance) => {
|
|
20056
|
+
const reflector = new Reflector();
|
|
20057
|
+
return reflector.get(metadataKey, instance.constructor);
|
|
20058
|
+
};
|
|
20059
|
+
|
|
20060
|
+
const resolveTypeormRepository = (entityName, registry) => {
|
|
20061
|
+
const repository = registry
|
|
20062
|
+
.resolveEntityServicesCollection(entityName)
|
|
20063
|
+
.resolveRepository();
|
|
20064
|
+
return repository.getInnerRepository();
|
|
20065
|
+
};
|
|
20066
|
+
class NestTypeOrmEntitySeeder extends TypeOrmEntitySeeder {
|
|
20067
|
+
constructor(registry) {
|
|
20068
|
+
super();
|
|
20069
|
+
this.registry = registry;
|
|
20070
|
+
this.metadata = getInstanceDecoratorData(EntityManagerSymbols.EntitySeeder, this);
|
|
20071
|
+
}
|
|
20072
|
+
get priority() {
|
|
20073
|
+
return this.metadata.priority;
|
|
20074
|
+
}
|
|
20075
|
+
getRepository() {
|
|
20076
|
+
return resolveTypeormRepository(this.metadata.entityName, this.registry);
|
|
20077
|
+
}
|
|
20078
|
+
}
|
|
20079
|
+
|
|
19999
20080
|
class AppExceptionsFilterBase {
|
|
20000
20081
|
catch(exception, host) {
|
|
20001
20082
|
const ctx = host.switchToHttp();
|
|
@@ -20037,11 +20118,6 @@ const AwsSesModuleSymbols = {
|
|
|
20037
20118
|
EmailTemplate: Symbol.for("WP.PLG:AWS_SES.EMAIL_TEMPLATE"),
|
|
20038
20119
|
};
|
|
20039
20120
|
|
|
20040
|
-
const getInstanceDecoratorData = (metadataKey, instance) => {
|
|
20041
|
-
const reflector = new Reflector();
|
|
20042
|
-
return reflector.get(metadataKey, instance.constructor);
|
|
20043
|
-
};
|
|
20044
|
-
|
|
20045
20121
|
class AwsSesEmailTemplate {
|
|
20046
20122
|
async processPayload(payload) {
|
|
20047
20123
|
return payload;
|
|
@@ -25289,5 +25365,5 @@ AppSessionMiddleware = __decorate([
|
|
|
25289
25365
|
Injectable()
|
|
25290
25366
|
], AppSessionMiddleware);
|
|
25291
25367
|
|
|
25292
|
-
export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsEmailModule, AwsSesEmailTemplate, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EventsService, InvalidCredentialsError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PlatformEvents, QueryBuilderBase, ReplicationMode, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEventsTracker, WpSendgridEmailTemplate, WpUserService, getLocalizedText, newUuid, renderHandlebarsTemplate };
|
|
25368
|
+
export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsEmailModule, AwsSesEmailTemplate, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EventsService, InvalidCredentialsError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PlatformEvents, QueryBuilderBase, ReplicationMode, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEventsTracker, WpSendgridEmailTemplate, WpUserService, getLocalizedText, newUuid, renderHandlebarsTemplate };
|
|
25293
25369
|
//# sourceMappingURL=index.js.map
|