@aklinker1/zero-factory 0.1.4 → 1.0.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/README.md CHANGED
@@ -95,6 +95,23 @@ const user = userFactory({
95
95
  // }
96
96
  ```
97
97
 
98
+ > [!IMPORTANT]
99
+ > Arrays are not deeply merged. If a property is an array, overrides will fully replace it, like any other value.
100
+
101
+ #### Many
102
+
103
+ You can generate multiple objects using `factory.many(...)`. This method will return an array of objects.
104
+
105
+ ```ts
106
+ userFactory.many(2, { username: "override" })
107
+ // [
108
+ // { usenrame: "override", ... }
109
+ // { usenrame: "override", ... }
110
+ // ]
111
+ ````
112
+
113
+ Overridden fields apply to all the returned objects.
114
+
98
115
  #### Traits
99
116
 
100
117
  If there are common variants or "traits" of an object you want to be able to generate, use `factory.trait(...)`:
@@ -229,16 +246,6 @@ intSequence(); // "prefix-2"
229
246
 
230
247
  May or may not implement these.
231
248
 
232
- - Generate multiple items:
233
- ```ts
234
- userFactory.many(4, { username: "override" });
235
- // [
236
- // { id: "user-0", username: "override", ... },
237
- // { id: "user-1", username: "override", ... },
238
- // { id: "user-2", username: "override", ... },
239
- // { id: "user-3", username: "override", ... },
240
- // ]
241
- ```
242
249
  - Associations:
243
250
 
244
251
  ```ts
package/dist/utils.d.ts CHANGED
@@ -8,7 +8,7 @@ export type DeepPartial<T> = T extends Array<any> ? T : T extends Record<string,
8
8
  * Deep merge objects, not arrays. Only override values with `null`, `undefined` does not override the base value.
9
9
  */
10
10
  export declare function deepMerge<T>(base: T, overrides: DeepPartial<T>): T;
11
- export type FactoryDefaults<T> = T extends Array<any> ? T | (() => T) : T extends Record<string, any> ? {
12
- [key in keyof T]: FactoryDefaults<T[key]>;
13
- } : T extends Function ? never : T | (() => T);
11
+ export type FactoryDefaults<T extends Record<string, any>> = {
12
+ [Key in keyof T]: T[Key] extends Array<any> ? T[Key] | (() => T[Key]) : T[Key] extends Record<string, any> ? FactoryDefaults<T[Key]> : T[Key] extends Function ? never : T[Key] | (() => T[Key]);
13
+ };
14
14
  export declare function resolveDefaults<T extends Record<string, any>>(val: FactoryDefaults<T>): T;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aklinker1/zero-factory",
3
3
  "description": "Zero dependency object factory generator for testing",
4
- "version": "0.1.4",
4
+ "version": "1.0.0",
5
5
  "packageManager": "bun@1.2.20",
6
6
  "type": "module",
7
7
  "license": "MIT",