@rtpaulino/entity 0.19.0 → 0.21.0

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/index.d.ts CHANGED
@@ -4,7 +4,6 @@ export * from './lib/entity-utils.js';
4
4
  export * from './lib/entity-di.js';
5
5
  export * from './lib/types.js';
6
6
  export * from './lib/property.js';
7
- export * from './lib/collection-property.js';
8
7
  export * from './lib/validation-error.js';
9
8
  export * from './lib/problem.js';
10
9
  export * from './lib/validation-utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,6 @@ export * from './lib/entity-utils.js';
4
4
  export * from './lib/entity-di.js';
5
5
  export * from './lib/types.js';
6
6
  export * from './lib/property.js';
7
- export * from './lib/collection-property.js';
8
7
  export * from './lib/validation-error.js';
9
8
  export * from './lib/problem.js';
10
9
  export * from './lib/validation-utils.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import 'reflect-metadata';\n\nexport * from './lib/entity.js';\nexport * from './lib/entity-utils.js';\nexport * from './lib/entity-di.js';\nexport * from './lib/types.js';\nexport * from './lib/property.js';\nexport * from './lib/collection-property.js';\nexport * from './lib/validation-error.js';\nexport * from './lib/problem.js';\nexport * from './lib/validation-utils.js';\nexport * from './lib/primitive-deserializers.js';\nexport * from './lib/validators.js';\nexport * from './lib/zod-property.js';\nexport * from './lib/injected-property.js';\n"],"names":[],"mappings":"AAAA,OAAO,mBAAmB;AAE1B,cAAc,kBAAkB;AAChC,cAAc,wBAAwB;AACtC,cAAc,qBAAqB;AACnC,cAAc,iBAAiB;AAC/B,cAAc,oBAAoB;AAClC,cAAc,+BAA+B;AAC7C,cAAc,4BAA4B;AAC1C,cAAc,mBAAmB;AACjC,cAAc,4BAA4B;AAC1C,cAAc,mCAAmC;AACjD,cAAc,sBAAsB;AACpC,cAAc,wBAAwB;AACtC,cAAc,6BAA6B"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import 'reflect-metadata';\n\nexport * from './lib/entity.js';\nexport * from './lib/entity-utils.js';\nexport * from './lib/entity-di.js';\nexport * from './lib/types.js';\nexport * from './lib/property.js';\nexport * from './lib/validation-error.js';\nexport * from './lib/problem.js';\nexport * from './lib/validation-utils.js';\nexport * from './lib/primitive-deserializers.js';\nexport * from './lib/validators.js';\nexport * from './lib/zod-property.js';\nexport * from './lib/injected-property.js';\n"],"names":[],"mappings":"AAAA,OAAO,mBAAmB;AAE1B,cAAc,kBAAkB;AAChC,cAAc,wBAAwB;AACtC,cAAc,qBAAqB;AACnC,cAAc,iBAAiB;AAC/B,cAAc,oBAAoB;AAClC,cAAc,4BAA4B;AAC1C,cAAc,mBAAmB;AACjC,cAAc,4BAA4B;AAC1C,cAAc,mCAAmC;AACjD,cAAc,sBAAsB;AACpC,cAAc,wBAAwB;AACtC,cAAc,6BAA6B"}
@@ -22,6 +22,34 @@ export declare class EntityUtils {
22
22
  * ```
23
23
  */
24
24
  static isEntity(obj: unknown): obj is object;
25
+ /**
26
+ * Gets the entity options for a given constructor
27
+ *
28
+ * @param entityOrClass - The entity class constructor or instance
29
+ * @returns EntityOptions object (empty object if no options are defined)
30
+ * @private
31
+ */
32
+ private static getEntityOptions;
33
+ /**
34
+ * Checks if a given entity is marked as a collection entity
35
+ *
36
+ * @param entityOrClass - The entity instance or class to check
37
+ * @returns true if the entity is a collection entity, false otherwise
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * @CollectionEntity()
42
+ * class Tags {
43
+ * @ArrayProperty(() => String)
44
+ * collection: string[];
45
+ * }
46
+ *
47
+ * const tags = new Tags({ collection: ['a', 'b'] });
48
+ * console.log(EntityUtils.isCollectionEntity(tags)); // true
49
+ * console.log(EntityUtils.isCollectionEntity(Tags)); // true
50
+ * ```
51
+ */
52
+ static isCollectionEntity(entityOrClass: unknown): boolean;
25
53
  static sameEntity(a: object, b: object): boolean;
26
54
  static getPropertyKeys(target: object): string[];
27
55
  static getPropertyOptions(target: object, propertyKey: string): PropertyOptions | undefined;
@@ -36,7 +64,7 @@ export declare class EntityUtils {
36
64
  * Serializes an entity to a plain object, converting only properties decorated with @Property()
37
65
  *
38
66
  * @param entity - The entity instance to serialize
39
- * @returns A plain object containing only the serialized decorated properties
67
+ * @returns A plain object containing only the serialized decorated properties, or an array for collection entities
40
68
  *
41
69
  * @remarks
42
70
  * Serialization rules:
@@ -49,6 +77,7 @@ export declare class EntityUtils {
49
77
  * - undefined values are excluded from the output
50
78
  * - null values are included in the output
51
79
  * - Circular references are not supported (will cause stack overflow)
80
+ * - Collection entities (@CollectionEntity) are unwrapped to just their array
52
81
  *
53
82
  * @example
54
83
  * ```typescript
@@ -80,14 +109,29 @@ export declare class EntityUtils {
80
109
  * // address: { street: '123 Main St', city: 'Boston' },
81
110
  * // createdAt: '2024-01-01T00:00:00.000Z'
82
111
  * // }
112
+ *
113
+ * @CollectionEntity()
114
+ * class Tags {
115
+ * @ArrayProperty(() => String)
116
+ * collection: string[];
117
+ * }
118
+ *
119
+ * const tags = new Tags({ collection: ['a', 'b'] });
120
+ * const json = EntityUtils.toJSON(tags);
121
+ * // ['a', 'b'] - unwrapped to array
83
122
  * ```
84
123
  */
85
- static toJSON<T extends object>(entity: T): Record<string, unknown>;
124
+ static toJSON<T extends object>(entity: T): unknown;
86
125
  /**
87
126
  * Serializes a single value according to the toJSON rules
88
127
  * @private
89
128
  */
90
129
  private static serializeValue;
130
+ /**
131
+ * Internal parse implementation with extended options
132
+ * @private
133
+ */
134
+ private static _parseInternal;
91
135
  /**
92
136
  * Deserializes a plain object to an entity instance
93
137
  *
@@ -132,7 +176,7 @@ export declare class EntityUtils {
132
176
  * const userStrict = await EntityUtils.parse(User, json, { strict: true });
133
177
  * ```
134
178
  */
135
- static parse<T extends object>(entityClass: new (data: any) => T, plainObject: unknown, parseOptions?: ParseOptions, knownProblems?: Problem[]): Promise<T>;
179
+ static parse<T extends object>(entityClass: new (data: any) => T, plainObject: unknown, parseOptions?: ParseOptions): Promise<T>;
136
180
  /**
137
181
  * Safely deserializes a plain object to an entity instance without throwing errors
138
182
  *
@@ -172,6 +216,87 @@ export declare class EntityUtils {
172
216
  * ```
173
217
  */
174
218
  static safeParse<T extends object>(entityClass: new (data: any) => T, plainObject: unknown, parseOptions?: ParseOptions): SafeOperationResult<T>;
219
+ /**
220
+ * Partially deserializes a plain object, returning a plain object with only present properties
221
+ *
222
+ * @param entityClass - The entity class constructor
223
+ * @param plainObject - The plain object to deserialize
224
+ * @param options - Options with strict mode
225
+ * @returns Promise resolving to a plain object with deserialized properties (Partial<T>)
226
+ *
227
+ * @remarks
228
+ * Differences from parse():
229
+ * - Returns a plain object, not an entity instance
230
+ * - Ignores missing properties (does not include them in result)
231
+ * - Does NOT apply default values to missing properties
232
+ * - When strict: false (default), properties with HARD problems are excluded from result but problems are tracked
233
+ * - When strict: true, any HARD problem throws ValidationError
234
+ * - Nested entities/arrays are still fully deserialized and validated as normal
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * @Entity()
239
+ * class User {
240
+ * @Property({ type: () => String }) name!: string;
241
+ * @Property({ type: () => Number, default: 0 }) age!: number;
242
+ *
243
+ * constructor(data: Partial<User>) {
244
+ * Object.assign(this, data);
245
+ * }
246
+ * }
247
+ *
248
+ * const partial = await EntityUtils.partialParse(User, { name: 'John' });
249
+ * // partial = { name: 'John' } (age is not included, default not applied)
250
+ *
251
+ * const partialWithError = await EntityUtils.partialParse(User, { name: 'John', age: 'invalid' });
252
+ * // partialWithError = { name: 'John' } (age excluded due to HARD problem)
253
+ * // Access problems via second return value
254
+ * ```
255
+ */
256
+ static partialParse<T extends object>(entityClass: new (data: any) => T, plainObject: unknown, options?: {
257
+ strict?: boolean;
258
+ }): Promise<Partial<T>>;
259
+ /**
260
+ * Safely performs partial deserialization without throwing errors
261
+ *
262
+ * @param entityClass - The entity class constructor
263
+ * @param plainObject - The plain object to deserialize
264
+ * @param options - Options with strict mode
265
+ * @returns Promise resolving to a result object with success flag, partial data, and problems
266
+ *
267
+ * @remarks
268
+ * Similar to partialParse() but returns a result object instead of throwing errors:
269
+ * - On success with strict: true - returns { success: true, data: Partial<T>, problems: [] }
270
+ * - On success with strict: false - returns { success: true, data: Partial<T>, problems: [...] } (includes hard problems for excluded properties)
271
+ * - On failure (strict mode only) - returns { success: false, data: undefined, problems: [...] }
272
+ *
273
+ * All partial deserialization rules from partialParse() apply.
274
+ * See partialParse() documentation for detailed behavior.
275
+ *
276
+ * @example
277
+ * ```typescript
278
+ * @Entity()
279
+ * class User {
280
+ * @Property({ type: () => String }) name!: string;
281
+ * @Property({ type: () => Number }) age!: number;
282
+ *
283
+ * constructor(data: Partial<User>) {
284
+ * Object.assign(this, data);
285
+ * }
286
+ * }
287
+ *
288
+ * const result = await EntityUtils.safePartialParse(User, { name: 'John', age: 'invalid' });
289
+ * if (result.success) {
290
+ * console.log(result.data); // { name: 'John' }
291
+ * console.log(result.problems); // [Problem for age property]
292
+ * } else {
293
+ * console.log(result.problems); // Hard problems (only in strict mode)
294
+ * }
295
+ * ```
296
+ */
297
+ static safePartialParse<T extends object>(entityClass: new (data: any) => T, plainObject: unknown, options?: {
298
+ strict?: boolean;
299
+ }): Promise<SafeOperationResult<Partial<T>>>;
175
300
  /**
176
301
  * Updates an entity instance with new values, respecting preventUpdates flags on properties
177
302
  *
@@ -273,6 +398,11 @@ export declare class EntityUtils {
273
398
  * @private
274
399
  */
275
400
  private static runPropertyValidators;
401
+ /**
402
+ * Validates all properties on an object (entity instance or plain object)
403
+ * @private
404
+ */
405
+ private static validateProperties;
276
406
  private static addInjectedDependencies;
277
407
  /**
278
408
  * Validates an entity instance by running all property and entity validators
@@ -292,7 +422,7 @@ export declare class EntityUtils {
292
422
  * console.log(problems); // [Problem, Problem, ...]
293
423
  * ```
294
424
  */
295
- static validate<T extends object>(instance: T, knownProblems?: Problem[]): Promise<Problem[]>;
425
+ static validate<T extends object>(instance: T): Promise<Problem[]>;
296
426
  /**
297
427
  * Gets the validation problems for an entity instance
298
428
  *
@@ -1 +1 @@
1
- {"version":3,"file":"entity-utils.d.ts","sourceRoot":"","sources":["../../src/lib/entity-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-utils.d.ts","sourceRoot":"","sources":["../../src/lib/entity-utils.ts"],"names":[],"mappings":"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"}