@sanoma-ai/workflows 0.11.14 → 0.11.15

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/fill.d.ts CHANGED
@@ -1,7 +1,11 @@
1
1
  import { z } from "zod";
2
2
  /** Seeds the generator from a name, so one name always makes up the same values. */
3
3
  export declare const seedFrom: (name: string) => void;
4
- /** The schema's value with every field `given` does not set made up, parsed by the schema. */
4
+ /**
5
+ * The schema's value with every required field `given` does not set made up, parsed by the schema.
6
+ * Optional fields are left out, as a caller may leave them: made up, they could break a rule
7
+ * between fields (one of two ids, not both).
8
+ */
5
9
  export declare function fill(schema: z.ZodType, given: Record<string, unknown>): unknown;
6
10
  /** An object schema's fields by name; none for any other schema. */
7
11
  export declare const shapeOf: (schema: z.ZodType) => Record<string, z.ZodType>;
package/dist/fill.js CHANGED
@@ -6,9 +6,18 @@ import { z } from "zod";
6
6
  setFaker(faker);
7
7
  /** Seeds the generator from a name, so one name always makes up the same values. */
8
8
  export const seedFrom = (name) => seed(createHash("sha256").update(name).digest().readUInt32BE(0));
9
- /** The schema's value with every field `given` does not set made up, parsed by the schema. */
9
+ /**
10
+ * The schema's value with every required field `given` does not set made up, parsed by the schema.
11
+ * Optional fields are left out, as a caller may leave them: made up, they could break a rule
12
+ * between fields (one of two ids, not both).
13
+ */
10
14
  export function fill(schema, given) {
11
- return schema.parse({ ...fake(schema), ...given });
15
+ const made = fake(schema);
16
+ for (const [name, field] of Object.entries(shapeOf(schema))) {
17
+ if (field.safeParse(undefined).success)
18
+ delete made[name];
19
+ }
20
+ return schema.parse({ ...made, ...given });
12
21
  }
13
22
  /** An object schema's fields by name; none for any other schema. */
14
23
  export const shapeOf = (schema) => schema instanceof z.ZodObject ? schema.shape : {};
package/dist/fill.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fill.js","sourceRoot":"","sources":["../src/fill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+DAA+D;AAE/D,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEhB,oFAAoF;AACpF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3G,8FAA8F;AAC9F,MAAM,UAAU,IAAI,CAAC,MAAiB,EAAE,KAA8B;IACpE,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,GAAI,IAAI,CAAC,MAAM,CAAY,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAiB,EAA6B,EAAE,CACtE,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAEpD,sHAAsH;AACtH,MAAM,UAAU,MAAM,CAAC,MAAiB;IACtC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,MAAM,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,OAAO,IAAI,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,WAAW,CAAC,MAAiB;IAC3C,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,OAAO,KAAK,YAAY,CAAC,CAAC,WAAW,IAAI,KAAK,YAAY,CAAC,CAAC,WAAW,IAAI,KAAK,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;QACzG,KAAK,GAAG,KAAK,CAAC,MAAM,EAAe,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,gHAAgH;AAChH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAY,EAAE,EAAE,CACpC,GAAG,YAAY,SAAS,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,YAAY,cAAc,CAAC"}
1
+ {"version":3,"file":"fill.js","sourceRoot":"","sources":["../src/fill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+DAA+D;AAE/D,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEhB,oFAAoF;AACpF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3G;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,MAAiB,EAAE,KAA8B;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAA4B,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC5D,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAiB,EAA6B,EAAE,CACtE,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAEpD,sHAAsH;AACtH,MAAM,UAAU,MAAM,CAAC,MAAiB;IACtC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,MAAM,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,OAAO,IAAI,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,WAAW,CAAC,MAAiB;IAC3C,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,OAAO,KAAK,YAAY,CAAC,CAAC,WAAW,IAAI,KAAK,YAAY,CAAC,CAAC,WAAW,IAAI,KAAK,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;QACzG,KAAK,GAAG,KAAK,CAAC,MAAM,EAAe,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,gHAAgH;AAChH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAY,EAAE,EAAE,CACpC,GAAG,YAAY,SAAS,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,YAAY,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanoma-ai/workflows",
3
- "version": "0.11.14",
3
+ "version": "0.11.15",
4
4
  "description": "Business processes as TypeScript functions, run durably on DBOS",
5
5
  "keywords": [
6
6
  "approvals",
package/src/fill.ts CHANGED
@@ -10,9 +10,17 @@ setFaker(faker);
10
10
  /** Seeds the generator from a name, so one name always makes up the same values. */
11
11
  export const seedFrom = (name: string) => seed(createHash("sha256").update(name).digest().readUInt32BE(0));
12
12
 
13
- /** The schema's value with every field `given` does not set made up, parsed by the schema. */
13
+ /**
14
+ * The schema's value with every required field `given` does not set made up, parsed by the schema.
15
+ * Optional fields are left out, as a caller may leave them: made up, they could break a rule
16
+ * between fields (one of two ids, not both).
17
+ */
14
18
  export function fill(schema: z.ZodType, given: Record<string, unknown>): unknown {
15
- return schema.parse({ ...(fake(schema) as object), ...given });
19
+ const made = fake(schema) as Record<string, unknown>;
20
+ for (const [name, field] of Object.entries(shapeOf(schema))) {
21
+ if (field.safeParse(undefined).success) delete made[name];
22
+ }
23
+ return schema.parse({ ...made, ...given });
16
24
  }
17
25
 
18
26
  /** An object schema's fields by name; none for any other schema. */