@solidstarters/solid-core 1.2.152 → 1.2.153
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/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts +2 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +13 -5
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +34 -16
package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts
CHANGED
|
@@ -3,8 +3,9 @@ import { ComputedFieldMetadata } from 'src/helpers/solid-registry';
|
|
|
3
3
|
import { IEntityPreComputeFieldProvider } from 'src/interfaces';
|
|
4
4
|
import { EntityManager } from 'typeorm';
|
|
5
5
|
export interface AlphaNumExternalIdContext {
|
|
6
|
-
prefix
|
|
6
|
+
prefix?: string;
|
|
7
7
|
length?: number;
|
|
8
|
+
dynamicFieldPrefix?: string;
|
|
8
9
|
}
|
|
9
10
|
export declare class AlphaNumExternalIdComputationProvider<T extends CommonEntity> implements IEntityPreComputeFieldProvider<T, AlphaNumExternalIdContext> {
|
|
10
11
|
private readonly entityManager;
|
package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha-num-external-id-computed-field-provider.d.ts","sourceRoot":"","sources":["../../../../src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"alpha-num-external-id-computed-field-provider.d.ts","sourceRoot":"","sources":["../../../../src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAEa,qCAAqC,CAAC,CAAC,SAAS,YAAY,CAAE,YAAW,8BAA8B,CAAC,CAAC,EAAE,yBAAyB,CAAC;IAI9I,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAG/C,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,MAAM;IAIR,eAAe,CAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,yBAAyB,CAAC;IAqBhH,OAAO,CAAC,kBAAkB;YASZ,kBAAkB;YASlB,wBAAwB;CAevC"}
|
package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js
CHANGED
|
@@ -17,6 +17,7 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
18
|
const computed_field_provider_decorator_1 = require("../../../decorators/computed-field-provider.decorator");
|
|
19
19
|
const typeorm_2 = require("typeorm");
|
|
20
|
+
const lodash_1 = require("lodash");
|
|
20
21
|
let AlphaNumExternalIdComputationProvider = class AlphaNumExternalIdComputationProvider {
|
|
21
22
|
constructor(entityManager) {
|
|
22
23
|
this.entityManager = entityManager;
|
|
@@ -25,13 +26,20 @@ let AlphaNumExternalIdComputationProvider = class AlphaNumExternalIdComputationP
|
|
|
25
26
|
return this.constructor.name;
|
|
26
27
|
}
|
|
27
28
|
help() {
|
|
28
|
-
return 'Provider used to compute external ID for a CommonEntity.';
|
|
29
|
+
return 'Provider used to compute external ID for a CommonEntity with support for static or dynamic prefix.';
|
|
29
30
|
}
|
|
30
31
|
async preComputeValue(triggerEntity, computedFieldMetadata) {
|
|
31
|
-
const prefix = computedFieldMetadata.computedFieldValueProviderCtxt
|
|
32
|
-
const codeLength =
|
|
32
|
+
const { prefix, length, dynamicFieldPrefix } = computedFieldMetadata.computedFieldValueProviderCtxt;
|
|
33
|
+
const codeLength = length || 5;
|
|
34
|
+
let resolvedPrefix = prefix || '';
|
|
35
|
+
if (dynamicFieldPrefix) {
|
|
36
|
+
const dynamicValue = (0, lodash_1.get)(triggerEntity, dynamicFieldPrefix);
|
|
37
|
+
if (dynamicValue) {
|
|
38
|
+
resolvedPrefix = String(dynamicValue).trim().toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9\-]/g, '');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
33
41
|
const uniqueCode = await this.generateUniqueExternalId(codeLength, triggerEntity, computedFieldMetadata.fieldName);
|
|
34
|
-
triggerEntity[computedFieldMetadata.fieldName] = `${
|
|
42
|
+
triggerEntity[computedFieldMetadata.fieldName] = resolvedPrefix ? `${resolvedPrefix}-${uniqueCode}` : uniqueCode;
|
|
35
43
|
}
|
|
36
44
|
generateRandomCode(length = 5) {
|
|
37
45
|
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
@@ -42,7 +50,7 @@ let AlphaNumExternalIdComputationProvider = class AlphaNumExternalIdComputationP
|
|
|
42
50
|
return result;
|
|
43
51
|
}
|
|
44
52
|
async isExternalIdUnique(externalId, triggerEntity, fieldName) {
|
|
45
|
-
const count = await this.entityManager.count(triggerEntity.constructor
|
|
53
|
+
const count = await this.entityManager.count(triggerEntity.constructor, {
|
|
46
54
|
where: { [fieldName]: externalId },
|
|
47
55
|
});
|
|
48
56
|
return count === 0;
|
package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha-num-external-id-computed-field-provider.js","sourceRoot":"","sources":["../../../../src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAsD;AACtD,6GAAyF;AAIzF,qCAAwC;
|
|
1
|
+
{"version":3,"file":"alpha-num-external-id-computed-field-provider.js","sourceRoot":"","sources":["../../../../src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { InjectEntityManager } from '@nestjs/typeorm';\nimport { ComputedFieldProvider } from 'src/decorators/computed-field-provider.decorator';\nimport { CommonEntity } from 'src/entities/common.entity';\nimport { ComputedFieldMetadata } from 'src/helpers/solid-registry';\nimport { IEntityPreComputeFieldProvider } from 'src/interfaces';\nimport { EntityManager } from 'typeorm';\nimport { get } from \"lodash\";\nexport interface AlphaNumExternalIdContext {\n prefix?: string; // alias -> staticPrefix\n length?: number; // Optional: length of the unique code to generate, default is 5\n dynamicFieldPrefix?: string; // NEW: field name on the entity\n}\n\n@ComputedFieldProvider()\n@Injectable()\nexport class AlphaNumExternalIdComputationProvider<T extends CommonEntity> implements IEntityPreComputeFieldProvider<T, AlphaNumExternalIdContext>\n{\n constructor(\n @InjectEntityManager()\n private readonly entityManager: EntityManager\n ) { }\n\n name(): string {\n return this.constructor.name;\n }\n\n help(): string {\n return 'Provider used to compute external ID for a CommonEntity with support for static or dynamic prefix.';\n }\n\n async preComputeValue( triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<AlphaNumExternalIdContext>\n ) {\n const { prefix, length, dynamicFieldPrefix } =\n computedFieldMetadata.computedFieldValueProviderCtxt;\n\n const codeLength = length || 5;\n\n // Determine prefix\n let resolvedPrefix = prefix || '';\n\n if (dynamicFieldPrefix) {\n const dynamicValue = get(triggerEntity as any, dynamicFieldPrefix);\n if (dynamicValue) {\n resolvedPrefix = String(dynamicValue).trim().toLowerCase().replace(/\\s+/g, '-').replace(/[^a-z0-9\\-]/g, '');\n }\n }\n\n const uniqueCode = await this.generateUniqueExternalId( codeLength, triggerEntity, computedFieldMetadata.fieldName );\n triggerEntity[computedFieldMetadata.fieldName] = resolvedPrefix ? `${resolvedPrefix}-${uniqueCode}` : uniqueCode;\n }\n\n private generateRandomCode(length = 5): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n }\n\n private async isExternalIdUnique( externalId: string, triggerEntity: T, fieldName: string ): Promise<boolean> {\n const count = await this.entityManager.count(triggerEntity.constructor as any,\n {\n where: { [fieldName]: externalId },\n }\n );\n return count === 0;\n }\n\n private async generateUniqueExternalId(codeLength: number, triggerEntity: T, fieldName: string): Promise<string> {\n const maxAttempts = 10;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const newId = this.generateRandomCode(codeLength);\n\n const isUnique = await this.isExternalIdUnique(newId,triggerEntity,fieldName);\n\n if (isUnique) {\n return newId;\n }\n }\n\n throw new Error('Failed to generate a unique external ID after multiple attempts');\n }\n}\n"]}
|