@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/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 =
|
|
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;
|