@ontrails/core 0.2.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/CHANGELOG.md +849 -0
- package/README.md +190 -0
- package/package.json +36 -0
- package/src/activation-provenance.ts +116 -0
- package/src/activation-source-compatibility.ts +430 -0
- package/src/activation-source-derivation.ts +227 -0
- package/src/activation-source.ts +93 -0
- package/src/blob-ref.ts +90 -0
- package/src/branded.ts +135 -0
- package/src/collections.ts +99 -0
- package/src/compose-batch.ts +69 -0
- package/src/compose-schema.ts +36 -0
- package/src/context.ts +66 -0
- package/src/derive.ts +485 -0
- package/src/detours.ts +8 -0
- package/src/diagnostics.ts +21 -0
- package/src/draft.ts +350 -0
- package/src/entity.ts +346 -0
- package/src/error-rendering.ts +87 -0
- package/src/errors.ts +483 -0
- package/src/execute.ts +1577 -0
- package/src/fetch.ts +138 -0
- package/src/fire.ts +1172 -0
- package/src/glob.ts +81 -0
- package/src/guards.ts +37 -0
- package/src/index.ts +704 -0
- package/src/internal/fork-ctx.ts +69 -0
- package/src/layer-field-rendering.ts +193 -0
- package/src/layer.ts +81 -0
- package/src/observe.ts +361 -0
- package/src/path-scope.ts +66 -0
- package/src/path-security.ts +98 -0
- package/src/patterns/bulk.ts +16 -0
- package/src/patterns/change.ts +12 -0
- package/src/patterns/date-range.ts +12 -0
- package/src/patterns/index.ts +8 -0
- package/src/patterns/pagination.ts +22 -0
- package/src/patterns/progress.ts +13 -0
- package/src/patterns/sorting.ts +14 -0
- package/src/patterns/status.ts +11 -0
- package/src/patterns/timestamps.ts +12 -0
- package/src/permits.ts +12 -0
- package/src/queue.ts +163 -0
- package/src/redaction/index.ts +3 -0
- package/src/redaction/patterns.ts +50 -0
- package/src/redaction/redactor.ts +178 -0
- package/src/resilience.ts +234 -0
- package/src/resource-config.ts +804 -0
- package/src/resource.ts +194 -0
- package/src/result.ts +212 -0
- package/src/run.ts +76 -0
- package/src/runtime-builtins.ts +69 -0
- package/src/schedule-runtime.ts +689 -0
- package/src/schedule.ts +326 -0
- package/src/serialization.ts +265 -0
- package/src/sha256.ts +136 -0
- package/src/signal-diagnostics.ts +633 -0
- package/src/signal-ref.ts +111 -0
- package/src/signal.ts +104 -0
- package/src/store/accessor-protocol.ts +56 -0
- package/src/store/index.ts +4 -0
- package/src/structured-examples.ts +248 -0
- package/src/surface-derivation.ts +91 -0
- package/src/surface-filter.ts +101 -0
- package/src/surface-overlay.ts +694 -0
- package/src/surface-versioning.ts +42 -0
- package/src/topo.ts +835 -0
- package/src/tracing.ts +346 -0
- package/src/trail-id-glob.ts +15 -0
- package/src/trail.ts +1351 -0
- package/src/trails/derive-trail.ts +835 -0
- package/src/trails/index.ts +9 -0
- package/src/trails/ingest.ts +152 -0
- package/src/trails-db.ts +212 -0
- package/src/transport-error-map.ts +163 -0
- package/src/type-utils.ts +87 -0
- package/src/types.ts +300 -0
- package/src/validate-established-topo.ts +73 -0
- package/src/validate-topo.ts +725 -0
- package/src/validation.ts +330 -0
- package/src/version-marker.ts +716 -0
- package/src/version-resolution.ts +308 -0
- package/src/version-runtime.ts +120 -0
- package/src/webhook.ts +461 -0
- package/src/workspace.ts +244 -0
- package/src/zod-wrappers.ts +72 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Zod wrapper helpers.
|
|
3
|
+
*
|
|
4
|
+
* These helpers walk the wrapper layers of a Zod schema (default, optional,
|
|
5
|
+
* nullable) and rebuild the schema without any default wrappers so that
|
|
6
|
+
* downstream `.partial()` calls do not silently re-materialize defaults during
|
|
7
|
+
* validation. Both `@ontrails/core/trails/derive-trail.ts` and
|
|
8
|
+
* `@ontrails/store/src/store.ts` previously shipped near-identical copies of
|
|
9
|
+
* this walk — extracting them here keeps the wrapper semantics authored in one
|
|
10
|
+
* place so the two call sites cannot drift.
|
|
11
|
+
*
|
|
12
|
+
* Canonical behavior: `optional` wrappers are intentionally dropped. Every
|
|
13
|
+
* current call site applies `.partial()` to the stripped schema, which
|
|
14
|
+
* re-introduces `optional` across the whole shape. Preserving `optional` here
|
|
15
|
+
* would be redundant at best and would produce an `OptionalOptional<T>` shape
|
|
16
|
+
* in edge cases at worst. `nullable` wrappers are preserved because nullability
|
|
17
|
+
* is a semantic constraint that `.partial()` does not reintroduce.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import type { z } from 'zod';
|
|
21
|
+
|
|
22
|
+
const isWrapperType = (
|
|
23
|
+
type: string
|
|
24
|
+
): type is 'default' | 'nullable' | 'optional' =>
|
|
25
|
+
type === 'default' || type === 'nullable' || type === 'optional';
|
|
26
|
+
|
|
27
|
+
const readInnerType = (schema: z.ZodType): z.ZodType =>
|
|
28
|
+
(schema.def as unknown as { innerType: z.ZodType }).innerType;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Strip `default` wrappers from a Zod type so that partial update schemas do
|
|
32
|
+
* not silently re-materialize defaults. Walks through all wrapper layers
|
|
33
|
+
* (`default`, `optional`, `nullable`), drops defaults, drops `optional` (the
|
|
34
|
+
* downstream `.partial()` reintroduces it across the whole shape), and
|
|
35
|
+
* preserves `nullable` so explicit nullability survives.
|
|
36
|
+
*/
|
|
37
|
+
export const stripDefaultWrappers = (schema: z.ZodType): z.ZodType => {
|
|
38
|
+
let current = schema;
|
|
39
|
+
let isNullable = false;
|
|
40
|
+
|
|
41
|
+
while (isWrapperType(current.def.type)) {
|
|
42
|
+
if (current.def.type === 'nullable') {
|
|
43
|
+
isNullable = true;
|
|
44
|
+
}
|
|
45
|
+
current = readInnerType(current);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return isNullable ? current.nullable() : current;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
type AnyObjectSchema = z.ZodObject<Record<string, z.ZodType>>;
|
|
52
|
+
|
|
53
|
+
const asObjectSchema = (schema: z.ZodType): AnyObjectSchema =>
|
|
54
|
+
schema as unknown as AnyObjectSchema;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Apply {@link stripDefaultWrappers} to every field in a Zod object shape and
|
|
58
|
+
* return the resulting shape record. Callers typically feed the result to
|
|
59
|
+
* `.extend()` + `.partial()`.
|
|
60
|
+
*/
|
|
61
|
+
export const stripDefaultsFromShape = (
|
|
62
|
+
schema: z.ZodType
|
|
63
|
+
): Record<string, z.ZodType> => {
|
|
64
|
+
const stripped: Record<string, z.ZodType> = {};
|
|
65
|
+
const objectSchema = asObjectSchema(schema);
|
|
66
|
+
|
|
67
|
+
for (const [field, value] of Object.entries(objectSchema.shape)) {
|
|
68
|
+
stripped[field] = stripDefaultWrappers(value);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return stripped;
|
|
72
|
+
};
|