@ontrails/config 1.0.0-beta.14 → 1.0.0-beta.16

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.
Files changed (163) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +20 -28
  3. package/package.json +10 -2
  4. package/src/app-config.ts +23 -12
  5. package/src/compose.ts +16 -22
  6. package/src/{config-provision.ts → config-resource.ts} +5 -5
  7. package/src/define-config.ts +18 -18
  8. package/src/{generate → derive}/env.ts +3 -3
  9. package/src/{generate → derive}/example.ts +1 -1
  10. package/src/{generate → derive}/helpers.ts +1 -1
  11. package/src/derive/index.ts +3 -0
  12. package/src/{generate → derive}/json-schema.ts +1 -1
  13. package/src/{describe.ts → derive-fields.ts} +1 -1
  14. package/src/{explain.ts → derive-provenance.ts} +6 -6
  15. package/src/extensions.ts +1 -1
  16. package/src/index.ts +12 -19
  17. package/src/registry.ts +2 -2
  18. package/src/resolve.ts +17 -15
  19. package/src/trails/config-check.ts +3 -3
  20. package/src/trails/config-describe.ts +5 -5
  21. package/src/trails/config-explain.ts +13 -13
  22. package/src/trails/config-init.ts +10 -10
  23. package/.turbo/turbo-build.log +0 -1
  24. package/.turbo/turbo-lint.log +0 -3
  25. package/.turbo/turbo-typecheck.log +0 -1
  26. package/dist/app-config.d.ts +0 -65
  27. package/dist/app-config.d.ts.map +0 -1
  28. package/dist/app-config.js +0 -172
  29. package/dist/app-config.js.map +0 -1
  30. package/dist/collect.d.ts +0 -11
  31. package/dist/collect.d.ts.map +0 -1
  32. package/dist/collect.js +0 -81
  33. package/dist/collect.js.map +0 -1
  34. package/dist/compose.d.ts +0 -30
  35. package/dist/compose.d.ts.map +0 -1
  36. package/dist/compose.js +0 -21
  37. package/dist/compose.js.map +0 -1
  38. package/dist/config-gate.d.ts +0 -11
  39. package/dist/config-gate.d.ts.map +0 -1
  40. package/dist/config-gate.js +0 -6
  41. package/dist/config-gate.js.map +0 -1
  42. package/dist/config-layer.d.ts +0 -11
  43. package/dist/config-layer.d.ts.map +0 -1
  44. package/dist/config-layer.js +0 -6
  45. package/dist/config-layer.js.map +0 -1
  46. package/dist/config-provision.d.ts +0 -3
  47. package/dist/config-provision.d.ts.map +0 -1
  48. package/dist/config-provision.js +0 -26
  49. package/dist/config-provision.js.map +0 -1
  50. package/dist/config-service.d.ts +0 -3
  51. package/dist/config-service.d.ts.map +0 -1
  52. package/dist/config-service.js +0 -26
  53. package/dist/config-service.js.map +0 -1
  54. package/dist/define-config.d.ts +0 -61
  55. package/dist/define-config.d.ts.map +0 -1
  56. package/dist/define-config.js +0 -90
  57. package/dist/define-config.js.map +0 -1
  58. package/dist/describe.d.ts +0 -25
  59. package/dist/describe.d.ts.map +0 -1
  60. package/dist/describe.js +0 -147
  61. package/dist/describe.js.map +0 -1
  62. package/dist/doctor.d.ts +0 -27
  63. package/dist/doctor.d.ts.map +0 -1
  64. package/dist/doctor.js +0 -131
  65. package/dist/doctor.js.map +0 -1
  66. package/dist/explain.d.ts +0 -30
  67. package/dist/explain.d.ts.map +0 -1
  68. package/dist/explain.js +0 -101
  69. package/dist/explain.js.map +0 -1
  70. package/dist/extensions.d.ts +0 -38
  71. package/dist/extensions.d.ts.map +0 -1
  72. package/dist/extensions.js +0 -35
  73. package/dist/extensions.js.map +0 -1
  74. package/dist/generate/env.d.ts +0 -15
  75. package/dist/generate/env.d.ts.map +0 -1
  76. package/dist/generate/env.js +0 -65
  77. package/dist/generate/env.js.map +0 -1
  78. package/dist/generate/example.d.ts +0 -16
  79. package/dist/generate/example.d.ts.map +0 -1
  80. package/dist/generate/example.js +0 -138
  81. package/dist/generate/example.js.map +0 -1
  82. package/dist/generate/helpers.d.ts +0 -35
  83. package/dist/generate/helpers.d.ts.map +0 -1
  84. package/dist/generate/helpers.js +0 -116
  85. package/dist/generate/helpers.js.map +0 -1
  86. package/dist/generate/index.d.ts +0 -4
  87. package/dist/generate/index.d.ts.map +0 -1
  88. package/dist/generate/index.js +0 -4
  89. package/dist/generate/index.js.map +0 -1
  90. package/dist/generate/json-schema.d.ts +0 -18
  91. package/dist/generate/json-schema.d.ts.map +0 -1
  92. package/dist/generate/json-schema.js +0 -97
  93. package/dist/generate/json-schema.js.map +0 -1
  94. package/dist/index.d.ts +0 -21
  95. package/dist/index.d.ts.map +0 -1
  96. package/dist/index.js +0 -21
  97. package/dist/index.js.map +0 -1
  98. package/dist/merge.d.ts +0 -16
  99. package/dist/merge.d.ts.map +0 -1
  100. package/dist/merge.js +0 -34
  101. package/dist/merge.js.map +0 -1
  102. package/dist/ref.d.ts +0 -29
  103. package/dist/ref.d.ts.map +0 -1
  104. package/dist/ref.js +0 -30
  105. package/dist/ref.js.map +0 -1
  106. package/dist/registry.d.ts +0 -24
  107. package/dist/registry.d.ts.map +0 -1
  108. package/dist/registry.js +0 -12
  109. package/dist/registry.js.map +0 -1
  110. package/dist/resolve.d.ts +0 -21
  111. package/dist/resolve.d.ts.map +0 -1
  112. package/dist/resolve.js +0 -177
  113. package/dist/resolve.js.map +0 -1
  114. package/dist/secret-heuristics.d.ts +0 -10
  115. package/dist/secret-heuristics.d.ts.map +0 -1
  116. package/dist/secret-heuristics.js +0 -11
  117. package/dist/secret-heuristics.js.map +0 -1
  118. package/dist/trails/config-check.d.ts +0 -11
  119. package/dist/trails/config-check.d.ts.map +0 -1
  120. package/dist/trails/config-check.js +0 -53
  121. package/dist/trails/config-check.js.map +0 -1
  122. package/dist/trails/config-describe.d.ts +0 -12
  123. package/dist/trails/config-describe.d.ts.map +0 -1
  124. package/dist/trails/config-describe.js +0 -41
  125. package/dist/trails/config-describe.js.map +0 -1
  126. package/dist/trails/config-explain.d.ts +0 -8
  127. package/dist/trails/config-explain.d.ts.map +0 -1
  128. package/dist/trails/config-explain.js +0 -74
  129. package/dist/trails/config-explain.js.map +0 -1
  130. package/dist/trails/config-init.d.ts +0 -9
  131. package/dist/trails/config-init.d.ts.map +0 -1
  132. package/dist/trails/config-init.js +0 -78
  133. package/dist/trails/config-init.js.map +0 -1
  134. package/dist/workspace.d.ts +0 -9
  135. package/dist/workspace.d.ts.map +0 -1
  136. package/dist/workspace.js +0 -49
  137. package/dist/workspace.js.map +0 -1
  138. package/dist/zod-utils.d.ts +0 -14
  139. package/dist/zod-utils.d.ts.map +0 -1
  140. package/dist/zod-utils.js +0 -41
  141. package/dist/zod-utils.js.map +0 -1
  142. package/src/__tests__/app-config.test.ts +0 -329
  143. package/src/__tests__/compose.test.ts +0 -59
  144. package/src/__tests__/config-check.test.ts +0 -171
  145. package/src/__tests__/config-describe.test.ts +0 -154
  146. package/src/__tests__/config-explain.test.ts +0 -167
  147. package/src/__tests__/config-gate.test.ts +0 -53
  148. package/src/__tests__/config-init.test.ts +0 -210
  149. package/src/__tests__/config-provision.test.ts +0 -87
  150. package/src/__tests__/define-config.test.ts +0 -263
  151. package/src/__tests__/describe.test.ts +0 -158
  152. package/src/__tests__/doctor.test.ts +0 -172
  153. package/src/__tests__/explain.test.ts +0 -139
  154. package/src/__tests__/extensions.test.ts +0 -134
  155. package/src/__tests__/generate.test.ts +0 -269
  156. package/src/__tests__/ref.test.ts +0 -35
  157. package/src/__tests__/resolve.test.ts +0 -246
  158. package/src/__tests__/workspace.test.ts +0 -64
  159. package/src/config-gate.ts +0 -15
  160. package/src/generate/index.ts +0 -3
  161. package/src/workspace.ts +0 -56
  162. package/tsconfig.json +0 -9
  163. package/tsconfig.tsbuildinfo +0 -1
@@ -1,35 +0,0 @@
1
- import type { z } from 'zod';
2
- /** Unwrap `.default()`, `.optional()`, `.nullable()` to reach the inner type. */
3
- export declare const unwrap: (schema: z.ZodType) => z.ZodType;
4
- /** Read the Zod type discriminant from a schema's def. */
5
- export declare const zodTypeName: (schema: z.ZodType) => string;
6
- /** Walk the registry up through wrappers to find a metadata key. */
7
- export declare const walkRegistryKey: (schema: z.ZodType, key: string) => unknown | undefined;
8
- /** Get the description from the global registry for a schema or its inner type. */
9
- export declare const getDescription: (schema: z.ZodType) => string | undefined;
10
- /** Get the deprecation message from the config meta for a field. */
11
- export declare const getDeprecation: (schema: z.ZodType) => string | undefined;
12
- /** Get the default value from a schema if it has one. */
13
- export declare const getDefault: (schema: z.ZodType) => {
14
- has: false;
15
- } | {
16
- has: true;
17
- value: unknown;
18
- };
19
- /** Check whether a schema (or its inner type) is a ZodObject. */
20
- export declare const isObjectType: (schema: z.ZodType) => boolean;
21
- /** Get the shape of a ZodObject, unwrapping wrappers first. */
22
- export declare const getObjectShape: (schema: z.ZodType) => Record<string, z.ZodType> | undefined;
23
- /** Resolve a dot-separated path to the field schema within an object. */
24
- export declare const resolveFieldByPath: (schema: z.ZodObject<Record<string, z.ZodType>>, path: string) => z.ZodType | undefined;
25
- /** Format a value as a quoted string or literal. */
26
- export declare const formatValue: (value: unknown) => string;
27
- /** Get the display value for a field (default or empty placeholder). */
28
- export declare const fieldValue: (schema: z.ZodType) => unknown;
29
- /** Collect comment lines for a field (description + deprecation). */
30
- export declare const fieldComments: (schema: z.ZodType, prefix: string) => readonly string[];
31
- /** Append comment lines to an output array. */
32
- export declare const pushComments: (lines: string[], comments: readonly string[], indent: string) => void;
33
- /** Map a Zod type name to a JSON Schema type. */
34
- export declare const zodTypeToJsonSchema: Record<string, string>;
35
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/generate/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B,iFAAiF;AACjF,eAAO,MAAM,MAAM,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,CAAC,CAAC,OAW5C,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,WAAW,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,MAG/C,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,eAAe,GAC1B,QAAQ,CAAC,CAAC,OAAO,EACjB,KAAK,MAAM,KACV,OAAO,GAAG,SAaZ,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,cAAc,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,MAAM,GAAG,SACE,CAAC;AAE/D,oEAAoE;AACpE,eAAO,MAAM,cAAc,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,MAAM,GAAG,SACS,CAAC;AAEtE,yDAAyD;AACzD,eAAO,MAAM,UAAU,GACrB,QAAQ,CAAC,CAAC,OAAO,KAChB;IAAE,GAAG,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAM9C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,YAAY,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,OAIhD,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,cAAc,GACzB,QAAQ,CAAC,CAAC,OAAO,KAChB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,SAU9B,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAC9C,MAAM,MAAM,KACX,CAAC,CAAC,OAAO,GAAG,SAad,CAAC;AAMF,oDAAoD;AACpD,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAK5C,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,UAAU,GAAI,QAAQ,CAAC,CAAC,OAAO,KAAG,OAG9C,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,aAAa,GACxB,QAAQ,CAAC,CAAC,OAAO,EACjB,QAAQ,MAAM,KACb,SAAS,MAAM,EAWjB,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,YAAY,GACvB,OAAO,MAAM,EAAE,EACf,UAAU,SAAS,MAAM,EAAE,EAC3B,QAAQ,MAAM,KACb,IAIF,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAItD,CAAC"}
@@ -1,116 +0,0 @@
1
- import { globalRegistry } from 'zod';
2
- // ---------------------------------------------------------------------------
3
- // Schema introspection helpers
4
- // ---------------------------------------------------------------------------
5
- /** Unwrap `.default()`, `.optional()`, `.nullable()` to reach the inner type. */
6
- export const unwrap = (schema) => {
7
- let current = schema;
8
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
9
- while (true) {
10
- const def = current.def;
11
- const inner = def['innerType'];
12
- if (!inner) {
13
- return current;
14
- }
15
- current = inner;
16
- }
17
- };
18
- /** Read the Zod type discriminant from a schema's def. */
19
- export const zodTypeName = (schema) => {
20
- const def = schema.def;
21
- return def['type'] ?? 'unknown';
22
- };
23
- /** Walk the registry up through wrappers to find a metadata key. */
24
- export const walkRegistryKey = (schema, key) => {
25
- let current = schema;
26
- while (current) {
27
- const meta = globalRegistry.get(current);
28
- if (meta?.[key] !== undefined) {
29
- return meta[key];
30
- }
31
- const def = current.def;
32
- current = def['innerType'];
33
- }
34
- return undefined;
35
- };
36
- /** Get the description from the global registry for a schema or its inner type. */
37
- export const getDescription = (schema) => walkRegistryKey(schema, 'description');
38
- /** Get the deprecation message from the config meta for a field. */
39
- export const getDeprecation = (schema) => walkRegistryKey(schema, 'deprecationMessage');
40
- /** Get the default value from a schema if it has one. */
41
- export const getDefault = (schema) => {
42
- const def = schema.def;
43
- if (def['type'] === 'default') {
44
- return { has: true, value: def['defaultValue'] };
45
- }
46
- return { has: false };
47
- };
48
- /** Check whether a schema (or its inner type) is a ZodObject. */
49
- export const isObjectType = (schema) => {
50
- const inner = unwrap(schema);
51
- const def = inner.def;
52
- return def['type'] === 'object' && 'shape' in def;
53
- };
54
- /** Get the shape of a ZodObject, unwrapping wrappers first. */
55
- export const getObjectShape = (schema) => {
56
- const inner = unwrap(schema);
57
- const def = inner.def;
58
- if (def['type'] !== 'object' || !('shape' in def)) {
59
- return undefined;
60
- }
61
- return inner.shape;
62
- };
63
- /** Resolve a dot-separated path to the field schema within an object. */
64
- export const resolveFieldByPath = (schema, path) => {
65
- const parts = path.split('.');
66
- let current = schema;
67
- for (const part of parts) {
68
- const shape = getObjectShape(current);
69
- if (!shape?.[part]) {
70
- return undefined;
71
- }
72
- current = shape[part];
73
- }
74
- return current;
75
- };
76
- // ---------------------------------------------------------------------------
77
- // Value formatting helpers
78
- // ---------------------------------------------------------------------------
79
- /** Format a value as a quoted string or literal. */
80
- export const formatValue = (value) => {
81
- if (typeof value === 'string') {
82
- return `"${value}"`;
83
- }
84
- return String(value);
85
- };
86
- /** Get the display value for a field (default or empty placeholder). */
87
- export const fieldValue = (schema) => {
88
- const info = getDefault(schema);
89
- return info.has ? info.value : '';
90
- };
91
- /** Collect comment lines for a field (description + deprecation). */
92
- export const fieldComments = (schema, prefix) => {
93
- const lines = [];
94
- const desc = getDescription(schema);
95
- if (desc) {
96
- lines.push(`${prefix} ${desc}`);
97
- }
98
- const dep = getDeprecation(schema);
99
- if (dep) {
100
- lines.push(`${prefix} DEPRECATED: ${dep}`);
101
- }
102
- return lines;
103
- };
104
- /** Append comment lines to an output array. */
105
- export const pushComments = (lines, comments, indent) => {
106
- for (const c of comments) {
107
- lines.push(`${indent}${c}`);
108
- }
109
- };
110
- /** Map a Zod type name to a JSON Schema type. */
111
- export const zodTypeToJsonSchema = {
112
- boolean: 'boolean',
113
- number: 'number',
114
- string: 'string',
115
- };
116
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/generate/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export { generateEnvExample } from './env.js';
2
- export { generateExample } from './example.js';
3
- export { generateJsonSchema } from './json-schema.js';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,4 +0,0 @@
1
- export { generateEnvExample } from './env.js';
2
- export { generateExample } from './example.js';
3
- export { generateJsonSchema } from './json-schema.js';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,18 +0,0 @@
1
- /**
2
- * JSON Schema generation from Zod object schemas.
3
- *
4
- * Produces JSON Schema Draft 2020-12 with descriptions, defaults,
5
- * deprecated annotations, and constraints.
6
- */
7
- import type { z } from 'zod';
8
- /**
9
- * Generate a JSON Schema from a Zod object schema.
10
- *
11
- * Includes descriptions, defaults, deprecated annotations, and constraints.
12
- * Produces JSON Schema Draft 2020-12.
13
- */
14
- export declare const generateJsonSchema: (schema: z.ZodObject<Record<string, z.ZodType>>, options?: {
15
- readonly description?: string;
16
- readonly title?: string;
17
- }) => Record<string, unknown>;
18
- //# sourceMappingURL=json-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/generate/json-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsG7B;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAC9C,UAAU;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KACnE,MAAM,CAAC,MAAM,EAAE,OAAO,CAmBxB,CAAC"}
@@ -1,97 +0,0 @@
1
- import { getDefault, getDeprecation, getDescription, getObjectShape, isObjectType, unwrap, zodTypeName, zodTypeToJsonSchema, } from './helpers.js';
2
- // ---------------------------------------------------------------------------
3
- // Helpers
4
- // ---------------------------------------------------------------------------
5
- /** Extract the JSON Schema type or enum from a Zod schema. */
6
- const jsonSchemaType = (inner) => {
7
- const typeName = zodTypeName(inner);
8
- if (typeName === 'enum') {
9
- const def = inner.def;
10
- const entries = def['entries'];
11
- return entries ? { enum: Object.keys(entries) } : {};
12
- }
13
- const mapped = zodTypeToJsonSchema[typeName];
14
- return mapped ? { type: mapped } : {};
15
- };
16
- /** Annotation extractors for JSON Schema properties. */
17
- const annotationExtractors = [
18
- (s) => {
19
- const desc = getDescription(s);
20
- return desc ? { description: desc } : {};
21
- },
22
- (s) => {
23
- const info = getDefault(s);
24
- return info.has ? { default: info.value } : {};
25
- },
26
- (s) => {
27
- const dep = getDeprecation(s);
28
- return dep ? { deprecated: true } : {};
29
- },
30
- ];
31
- /** Extract annotations (description, default, deprecated) for JSON Schema. */
32
- const jsonSchemaAnnotations = (fieldSchema) => Object.assign({}, ...annotationExtractors.map((fn) => fn(fieldSchema)));
33
- /** Check if a field is required (no default and not optional). */
34
- const isRequired = (fieldSchema) => {
35
- const def = fieldSchema.def;
36
- return def['type'] !== 'default' && def['type'] !== 'optional';
37
- };
38
- /** Convert a single Zod field schema to a JSON Schema property. */
39
- const fieldToJsonSchema = (fieldSchema) => {
40
- if (isObjectType(fieldSchema)) {
41
- const nestedShape = getObjectShape(fieldSchema);
42
- if (nestedShape) {
43
- // oxlint-disable-next-line no-use-before-define -- mutual recursion with buildSchemaProperties
44
- const { properties, required } = buildSchemaProperties(nestedShape);
45
- return {
46
- properties,
47
- type: 'object',
48
- ...(required.length > 0 ? { required } : {}),
49
- ...jsonSchemaAnnotations(fieldSchema),
50
- };
51
- }
52
- }
53
- return {
54
- ...jsonSchemaType(unwrap(fieldSchema)),
55
- ...jsonSchemaAnnotations(fieldSchema),
56
- };
57
- };
58
- /** Build properties and required arrays from a schema shape. */
59
- const buildSchemaProperties = (shape) => {
60
- const properties = {};
61
- const required = [];
62
- for (const [key, fieldSchema] of Object.entries(shape)) {
63
- properties[key] = fieldToJsonSchema(fieldSchema);
64
- if (isRequired(fieldSchema)) {
65
- required.push(key);
66
- }
67
- }
68
- return { properties, required };
69
- };
70
- // ---------------------------------------------------------------------------
71
- // Public API
72
- // ---------------------------------------------------------------------------
73
- /**
74
- * Generate a JSON Schema from a Zod object schema.
75
- *
76
- * Includes descriptions, defaults, deprecated annotations, and constraints.
77
- * Produces JSON Schema Draft 2020-12.
78
- */
79
- export const generateJsonSchema = (schema, options) => {
80
- const { properties, required } = buildSchemaProperties(schema.shape);
81
- const result = {
82
- $schema: 'https://json-schema.org/draft/2020-12/schema',
83
- properties,
84
- type: 'object',
85
- };
86
- if (options?.title) {
87
- result['title'] = options.title;
88
- }
89
- if (options?.description) {
90
- result['description'] = options.description;
91
- }
92
- if (required.length > 0) {
93
- result['required'] = required;
94
- }
95
- return result;
96
- };
97
- //# sourceMappingURL=json-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../src/generate/json-schema.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,MAAM,EACN,WAAW,EACX,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,8DAA8D;AAC9D,MAAM,cAAc,GAAG,CAAC,KAAgB,EAA2B,EAAE;IACnE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAyC,CAAC;QAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAuC,CAAC;QACrE,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,wDAAwD;AACxD,MAAM,oBAAoB,GAEQ;IAChC,CAAC,CAAC,EAAE,EAAE;QACJ,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,CAAC,CAAC,EAAE,EAAE;QACJ,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,CAAC,CAAC,EAAE,EAAE;QACJ,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,8EAA8E;AAC9E,MAAM,qBAAqB,GAAG,CAC5B,WAAsB,EACG,EAAE,CAC3B,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAE1E,kEAAkE;AAClE,MAAM,UAAU,GAAG,CAAC,WAAsB,EAAW,EAAE;IACrD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAyC,CAAC;IAClE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;AACjE,CAAC,CAAC;AAEF,mEAAmE;AACnE,MAAM,iBAAiB,GAAG,CAAC,WAAsB,EAA2B,EAAE;IAC5E,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YAChB,+FAA+F;YAC/F,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACpE,OAAO;gBACL,UAAU;gBACV,IAAI,EAAE,QAAQ;gBACd,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,GAAG,qBAAqB,CAAC,WAAW,CAAC;aACtC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,GAAG,qBAAqB,CAAC,WAAW,CAAC;KACtC,CAAC;AACJ,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,qBAAqB,GAAG,CAC5B,KAAgC,EAIhC,EAAE;IACF,MAAM,UAAU,GAA4C,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,UAAU,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC,CAAC;AAEF,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAA8C,EAC9C,OAAoE,EAC3C,EAAE;IAC3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CACpD,MAAM,CAAC,KAAkC,CAC1C,CAAC;IACF,MAAM,MAAM,GAA4B;QACtC,OAAO,EAAE,8CAA8C;QACvD,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,CAAC;IACF,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,21 +0,0 @@
1
- export { appConfig, type AppConfig, type AppConfigExplainOptions, type AppConfigOptions, type ConfigFormat, type ResolveOptions, } from './app-config.js';
2
- export { collectConfigMeta } from './collect.js';
3
- export { collectProvisionConfigs, collectServiceConfigs, type ProvisionConfigEntry, type ServiceConfigEntry, } from './compose.js';
4
- export { defineConfig, type DefineConfigOptions } from './define-config.js';
5
- export { describeConfig, type FieldDescription } from './describe.js';
6
- export { checkConfig, type CheckResult, type ConfigDiagnostic, } from './doctor.js';
7
- export { env, secret, deprecated, type ConfigFieldMeta } from './extensions.js';
8
- export { explainConfig, type ExplainConfigOptions, type ProvenanceEntry, } from './explain.js';
9
- export { generateEnvExample, generateExample, generateJsonSchema, } from './generate/index.js';
10
- export { configGate } from './config-gate.js';
11
- export { configProvision } from './config-provision.js';
12
- export { clearConfigState, type ConfigState, getConfigState, registerConfigState, } from './registry.js';
13
- export { deepMerge } from './merge.js';
14
- export { configRef, isConfigRef, type ConfigRef } from './ref.js';
15
- export { resolveConfig, type ResolveConfigOptions } from './resolve.js';
16
- export { configCheck } from './trails/config-check.js';
17
- export { configDescribe } from './trails/config-describe.js';
18
- export { configExplain } from './trails/config-explain.js';
19
- export { configInit } from './trails/config-init.js';
20
- export { ensureWorkspace } from './workspace.js';
21
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,SAAS,EACd,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js DELETED
@@ -1,21 +0,0 @@
1
- export { appConfig, } from './app-config.js';
2
- export { collectConfigMeta } from './collect.js';
3
- export { collectProvisionConfigs, collectServiceConfigs, } from './compose.js';
4
- export { defineConfig } from './define-config.js';
5
- export { describeConfig } from './describe.js';
6
- export { checkConfig, } from './doctor.js';
7
- export { env, secret, deprecated } from './extensions.js';
8
- export { explainConfig, } from './explain.js';
9
- export { generateEnvExample, generateExample, generateJsonSchema, } from './generate/index.js';
10
- export { configGate } from './config-gate.js';
11
- export { configProvision } from './config-provision.js';
12
- export { clearConfigState, getConfigState, registerConfigState, } from './registry.js';
13
- export { deepMerge } from './merge.js';
14
- export { configRef, isConfigRef } from './ref.js';
15
- export { resolveConfig } from './resolve.js';
16
- export { configCheck } from './trails/config-check.js';
17
- export { configDescribe } from './trails/config-describe.js';
18
- export { configExplain } from './trails/config-explain.js';
19
- export { configInit } from './trails/config-init.js';
20
- export { ensureWorkspace } from './workspace.js';
21
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAMV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GAGtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAA4B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAyB,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,aAAa,GAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,gBAAgB,EAEhB,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,aAAa,EAA6B,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/merge.d.ts DELETED
@@ -1,16 +0,0 @@
1
- /**
2
- * Simple recursive deep merge for config objects.
3
- *
4
- * - Objects merge recursively
5
- * - Arrays replace (no concatenation)
6
- * - Primitives replace
7
- * - `undefined` values in source are skipped
8
- */
9
- /**
10
- * Deep-merge `source` into `target`, returning a new object.
11
- *
12
- * Does not mutate either input. Undefined values in source are skipped,
13
- * preserving the target's value at that key.
14
- */
15
- export declare const deepMerge: (target: Record<string, unknown>, source: Record<string, unknown>) => Record<string, unknown>;
16
- //# sourceMappingURL=merge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAiBxB,CAAC"}
package/dist/merge.js DELETED
@@ -1,34 +0,0 @@
1
- /**
2
- * Simple recursive deep merge for config objects.
3
- *
4
- * - Objects merge recursively
5
- * - Arrays replace (no concatenation)
6
- * - Primitives replace
7
- * - `undefined` values in source are skipped
8
- */
9
- /** Check whether a value is a plain object (not array, null, or class instance). */
10
- const isPlainObject = (value) => typeof value === 'object' &&
11
- value !== null &&
12
- !Array.isArray(value) &&
13
- Object.getPrototypeOf(value) === Object.prototype;
14
- /**
15
- * Deep-merge `source` into `target`, returning a new object.
16
- *
17
- * Does not mutate either input. Undefined values in source are skipped,
18
- * preserving the target's value at that key.
19
- */
20
- export const deepMerge = (target, source) => {
21
- const result = { ...target };
22
- for (const [key, sourceValue] of Object.entries(source)) {
23
- if (sourceValue === undefined) {
24
- continue;
25
- }
26
- const targetValue = result[key];
27
- result[key] =
28
- isPlainObject(targetValue) && isPlainObject(sourceValue)
29
- ? deepMerge(targetValue, sourceValue)
30
- : sourceValue;
31
- }
32
- return result;
33
- };
34
- //# sourceMappingURL=merge.js.map
package/dist/merge.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oFAAoF;AACpF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE,CACzE,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACrB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAA+B,EAC/B,MAA+B,EACN,EAAE;IAC3B,MAAM,MAAM,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IAEtD,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,CAAC,GAAG,CAAC;YACT,aAAa,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;gBACrC,CAAC,CAAC,WAAW,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/dist/ref.d.ts DELETED
@@ -1,29 +0,0 @@
1
- /**
2
- * Lazy config reference markers for trail input defaults.
3
- *
4
- * A `ConfigRef` is a marker object that can be embedded as a trail input
5
- * default. When resolution is wired into the execution pipeline, it will
6
- * be replaced with the live config value at the given path.
7
- *
8
- * Note: resolution is not yet wired into the execution pipeline.
9
- * Currently this module provides the marker type and type guard only.
10
- * Trail input defaults using `configRef()` will not be resolved
11
- * automatically until the execution pipeline integration ships.
12
- */
13
- /** Marker object representing a lazy reference to a config field. */
14
- export interface ConfigRef {
15
- readonly __configRef: true;
16
- readonly path: string;
17
- }
18
- /**
19
- * Create a lazy reference to a config field for use as a trail input default.
20
- *
21
- * Note: resolution is not yet automatic. See module-level docs.
22
- *
23
- */
24
- export declare const configRef: (path: string) => ConfigRef;
25
- /**
26
- * Type guard: detect whether an unknown value is a `ConfigRef` marker.
27
- */
28
- export declare const isConfigRef: (value?: unknown) => value is ConfigRef;
29
- //# sourceMappingURL=ref.d.ts.map
package/dist/ref.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,qEAAqE;AACrE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,SAGvC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,OAAO,KAAG,KAAK,IAAI,SAIK,CAAC"}
package/dist/ref.js DELETED
@@ -1,30 +0,0 @@
1
- /**
2
- * Lazy config reference markers for trail input defaults.
3
- *
4
- * A `ConfigRef` is a marker object that can be embedded as a trail input
5
- * default. When resolution is wired into the execution pipeline, it will
6
- * be replaced with the live config value at the given path.
7
- *
8
- * Note: resolution is not yet wired into the execution pipeline.
9
- * Currently this module provides the marker type and type guard only.
10
- * Trail input defaults using `configRef()` will not be resolved
11
- * automatically until the execution pipeline integration ships.
12
- */
13
- /**
14
- * Create a lazy reference to a config field for use as a trail input default.
15
- *
16
- * Note: resolution is not yet automatic. See module-level docs.
17
- *
18
- */
19
- export const configRef = (path) => ({
20
- __configRef: true,
21
- path,
22
- });
23
- /**
24
- * Type guard: detect whether an unknown value is a `ConfigRef` marker.
25
- */
26
- export const isConfigRef = (value) => typeof value === 'object' &&
27
- value !== null &&
28
- '__configRef' in value &&
29
- value['__configRef'] === true;
30
- //# sourceMappingURL=ref.js.map
package/dist/ref.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref.js","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAa,EAAE,CAAC,CAAC;IACrD,WAAW,EAAE,IAAI;IACjB,IAAI;CACL,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAe,EAAsB,EAAE,CACjE,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,aAAa,IAAI,KAAK;IACrB,KAAiC,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Module-level config state registry.
3
- *
4
- * Config is resolved once at bootstrap (two-phase init per ADR-010) and
5
- * registered here so `configProvision` can expose it to trailheads. This is
6
- * a process-level singleton — config resolution is inherently global.
7
- */
8
- import type { z } from 'zod';
9
- /** Resolved config state carrying the schema and all layer values. */
10
- export interface ConfigState {
11
- readonly schema: z.ZodObject<Record<string, z.ZodType>>;
12
- readonly resolved: Record<string, unknown>;
13
- readonly base?: Record<string, unknown>;
14
- readonly loadout?: Record<string, unknown>;
15
- readonly local?: Record<string, unknown>;
16
- readonly env?: Record<string, string | undefined>;
17
- }
18
- /** Register resolved config state at bootstrap. */
19
- export declare const registerConfigState: (state: ConfigState) => void;
20
- /** Read the registered config state. Returns `undefined` before registration. */
21
- export declare const getConfigState: () => ConfigState | undefined;
22
- /** Clear registered state. Primarily useful in tests. */
23
- export declare const clearConfigState: () => void;
24
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD;AAID,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,GAAI,OAAO,WAAW,KAAG,IAExD,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,cAAc,QAAO,WAAW,GAAG,SAAoB,CAAC;AAErE,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,QAAO,IAEnC,CAAC"}
package/dist/registry.js DELETED
@@ -1,12 +0,0 @@
1
- let current;
2
- /** Register resolved config state at bootstrap. */
3
- export const registerConfigState = (state) => {
4
- current = state;
5
- };
6
- /** Read the registered config state. Returns `undefined` before registration. */
7
- export const getConfigState = () => current;
8
- /** Clear registered state. Primarily useful in tests. */
9
- export const clearConfigState = () => {
10
- current = undefined;
11
- };
12
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAmBA,IAAI,OAAgC,CAAC;AAErC,mDAAmD;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAkB,EAAQ,EAAE;IAC9D,OAAO,GAAG,KAAK,CAAC;AAClB,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,GAA4B,EAAE,CAAC,OAAO,CAAC;AAErE,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAS,EAAE;IACzC,OAAO,GAAG,SAAS,CAAC;AACtB,CAAC,CAAC"}
package/dist/resolve.d.ts DELETED
@@ -1,21 +0,0 @@
1
- /**
2
- * Config resolution engine — merges config from multiple sources through
3
- * a deterministic stack: defaults → base → loadout → local → env.
4
- */
5
- import type { z } from 'zod';
6
- import { Result } from '@ontrails/core';
7
- /** Options for resolving config through the full stack. */
8
- export interface ResolveConfigOptions<T extends z.ZodType> {
9
- readonly schema: T;
10
- readonly base?: Record<string, unknown> | undefined;
11
- readonly loadouts?: Record<string, Record<string, unknown>> | undefined;
12
- readonly loadout?: string | undefined;
13
- readonly localOverrides?: Record<string, unknown> | undefined;
14
- readonly env?: Record<string, string | undefined> | undefined;
15
- }
16
- /**
17
- * Resolve config through the full stack: defaults → base → loadout → local → env.
18
- * Returns `Result.ok` with the validated config, or `Result.err` on validation failure.
19
- */
20
- export declare const resolveConfig: <T extends z.ZodType>(options: ResolveConfigOptions<T>) => Result<z.infer<T>, Error>;
21
- //# sourceMappingURL=resolve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAUxC,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO;IACvD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CAC/D;AAqOD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAC/C,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAC/B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAkB1B,CAAC"}