@ontrails/config 1.0.0-beta.15 → 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 (139) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +1 -1
  3. package/package.json +10 -2
  4. package/src/define-config.ts +6 -3
  5. package/src/extensions.ts +1 -1
  6. package/src/index.ts +0 -1
  7. package/src/registry.ts +1 -1
  8. package/src/resolve.ts +4 -2
  9. package/.turbo/turbo-build.log +0 -1
  10. package/.turbo/turbo-lint.log +0 -3
  11. package/.turbo/turbo-typecheck.log +0 -1
  12. package/dist/app-config.d.ts +0 -65
  13. package/dist/app-config.d.ts.map +0 -1
  14. package/dist/app-config.js +0 -177
  15. package/dist/app-config.js.map +0 -1
  16. package/dist/collect.d.ts +0 -11
  17. package/dist/collect.d.ts.map +0 -1
  18. package/dist/collect.js +0 -81
  19. package/dist/collect.js.map +0 -1
  20. package/dist/compose.d.ts +0 -26
  21. package/dist/compose.d.ts.map +0 -1
  22. package/dist/compose.js +0 -19
  23. package/dist/compose.js.map +0 -1
  24. package/dist/config-layer.d.ts +0 -11
  25. package/dist/config-layer.d.ts.map +0 -1
  26. package/dist/config-layer.js +0 -6
  27. package/dist/config-layer.js.map +0 -1
  28. package/dist/config-resource.d.ts +0 -3
  29. package/dist/config-resource.d.ts.map +0 -1
  30. package/dist/config-resource.js +0 -26
  31. package/dist/config-resource.js.map +0 -1
  32. package/dist/define-config.d.ts +0 -61
  33. package/dist/define-config.d.ts.map +0 -1
  34. package/dist/define-config.js +0 -87
  35. package/dist/define-config.js.map +0 -1
  36. package/dist/derive/env.d.ts +0 -15
  37. package/dist/derive/env.d.ts.map +0 -1
  38. package/dist/derive/env.js +0 -65
  39. package/dist/derive/env.js.map +0 -1
  40. package/dist/derive/example.d.ts +0 -16
  41. package/dist/derive/example.d.ts.map +0 -1
  42. package/dist/derive/example.js +0 -138
  43. package/dist/derive/example.js.map +0 -1
  44. package/dist/derive/helpers.d.ts +0 -35
  45. package/dist/derive/helpers.d.ts.map +0 -1
  46. package/dist/derive/helpers.js +0 -116
  47. package/dist/derive/helpers.js.map +0 -1
  48. package/dist/derive/index.d.ts +0 -4
  49. package/dist/derive/index.d.ts.map +0 -1
  50. package/dist/derive/index.js +0 -4
  51. package/dist/derive/index.js.map +0 -1
  52. package/dist/derive/json-schema.d.ts +0 -18
  53. package/dist/derive/json-schema.d.ts.map +0 -1
  54. package/dist/derive/json-schema.js +0 -97
  55. package/dist/derive/json-schema.js.map +0 -1
  56. package/dist/derive-fields.d.ts +0 -25
  57. package/dist/derive-fields.d.ts.map +0 -1
  58. package/dist/derive-fields.js +0 -147
  59. package/dist/derive-fields.js.map +0 -1
  60. package/dist/derive-provenance.d.ts +0 -30
  61. package/dist/derive-provenance.d.ts.map +0 -1
  62. package/dist/derive-provenance.js +0 -101
  63. package/dist/derive-provenance.js.map +0 -1
  64. package/dist/doctor.d.ts +0 -27
  65. package/dist/doctor.d.ts.map +0 -1
  66. package/dist/doctor.js +0 -131
  67. package/dist/doctor.js.map +0 -1
  68. package/dist/extensions.d.ts +0 -38
  69. package/dist/extensions.d.ts.map +0 -1
  70. package/dist/extensions.js +0 -35
  71. package/dist/extensions.js.map +0 -1
  72. package/dist/index.d.ts +0 -20
  73. package/dist/index.d.ts.map +0 -1
  74. package/dist/index.js +0 -20
  75. package/dist/index.js.map +0 -1
  76. package/dist/merge.d.ts +0 -16
  77. package/dist/merge.d.ts.map +0 -1
  78. package/dist/merge.js +0 -34
  79. package/dist/merge.js.map +0 -1
  80. package/dist/ref.d.ts +0 -29
  81. package/dist/ref.d.ts.map +0 -1
  82. package/dist/ref.js +0 -30
  83. package/dist/ref.js.map +0 -1
  84. package/dist/registry.d.ts +0 -24
  85. package/dist/registry.d.ts.map +0 -1
  86. package/dist/registry.js +0 -12
  87. package/dist/registry.js.map +0 -1
  88. package/dist/resolve.d.ts +0 -21
  89. package/dist/resolve.d.ts.map +0 -1
  90. package/dist/resolve.js +0 -177
  91. package/dist/resolve.js.map +0 -1
  92. package/dist/secret-heuristics.d.ts +0 -10
  93. package/dist/secret-heuristics.d.ts.map +0 -1
  94. package/dist/secret-heuristics.js +0 -11
  95. package/dist/secret-heuristics.js.map +0 -1
  96. package/dist/trails/config-check.d.ts +0 -11
  97. package/dist/trails/config-check.d.ts.map +0 -1
  98. package/dist/trails/config-check.js +0 -53
  99. package/dist/trails/config-check.js.map +0 -1
  100. package/dist/trails/config-describe.d.ts +0 -12
  101. package/dist/trails/config-describe.d.ts.map +0 -1
  102. package/dist/trails/config-describe.js +0 -41
  103. package/dist/trails/config-describe.js.map +0 -1
  104. package/dist/trails/config-explain.d.ts +0 -8
  105. package/dist/trails/config-explain.d.ts.map +0 -1
  106. package/dist/trails/config-explain.js +0 -74
  107. package/dist/trails/config-explain.js.map +0 -1
  108. package/dist/trails/config-init.d.ts +0 -9
  109. package/dist/trails/config-init.d.ts.map +0 -1
  110. package/dist/trails/config-init.js +0 -78
  111. package/dist/trails/config-init.js.map +0 -1
  112. package/dist/workspace.d.ts +0 -9
  113. package/dist/workspace.d.ts.map +0 -1
  114. package/dist/workspace.js +0 -49
  115. package/dist/workspace.js.map +0 -1
  116. package/dist/zod-utils.d.ts +0 -14
  117. package/dist/zod-utils.d.ts.map +0 -1
  118. package/dist/zod-utils.js +0 -41
  119. package/dist/zod-utils.js.map +0 -1
  120. package/src/__tests__/app-config.test.ts +0 -342
  121. package/src/__tests__/compose.test.ts +0 -59
  122. package/src/__tests__/config-check.test.ts +0 -171
  123. package/src/__tests__/config-describe.test.ts +0 -154
  124. package/src/__tests__/config-explain.test.ts +0 -167
  125. package/src/__tests__/config-init.test.ts +0 -210
  126. package/src/__tests__/config-resource.test.ts +0 -87
  127. package/src/__tests__/define-config.test.ts +0 -269
  128. package/src/__tests__/derive-fields.test.ts +0 -158
  129. package/src/__tests__/derive-provenance.test.ts +0 -139
  130. package/src/__tests__/derive.test.ts +0 -269
  131. package/src/__tests__/doctor.test.ts +0 -172
  132. package/src/__tests__/extensions.test.ts +0 -134
  133. package/src/__tests__/ref.test.ts +0 -35
  134. package/src/__tests__/resolve.test.ts +0 -246
  135. package/src/__tests__/workspace.test.ts +0 -64
  136. package/src/workspace.ts +0 -56
  137. package/tsconfig.json +0 -9
  138. package/tsconfig.tests.json +0 -10
  139. package/tsconfig.tsbuildinfo +0 -1
@@ -1,35 +0,0 @@
1
- /**
2
- * Bind a schema field to an environment variable.
3
- *
4
- * Must be called BEFORE `.default()`, `.optional()`, or other transforms
5
- * so that the metadata lives on the inner type where `collectConfigMeta`
6
- * can find it by unwrapping wrappers.
7
- */
8
- export const env = (schema, varName) => schema.meta({ ...schema.meta(), env: varName });
9
- /**
10
- * Mark a schema field as sensitive. Redacted in survey, explain, and logs.
11
- *
12
- * Must be called BEFORE `.default()`, `.optional()`, or other transforms.
13
- */
14
- export const secret = (schema) => schema.meta({ ...schema.meta(), secret: true });
15
- /**
16
- * Mark a schema field as deprecated with migration guidance.
17
- *
18
- * Stores **two** meta keys: `deprecated: true` and `deprecationMessage: string`.
19
- * This indirection exists because Zod 4's `GlobalMeta` types `deprecated` as
20
- * `boolean | undefined` — there is no way to attach a migration message to the
21
- * standard key. We set `deprecated: true` so Zod-native tooling (schema
22
- * serializers, OpenAPI generators) recognises the field as deprecated, and store
23
- * the human-readable message under `deprecationMessage` for our own
24
- * `collectConfigMeta` / survey / explain trailheads.
25
- *
26
- * Must be called BEFORE `.default()`, `.optional()`, or other transforms
27
- * so that the metadata lives on the inner type where `collectConfigMeta`
28
- * can find it by unwrapping wrappers.
29
- */
30
- export const deprecated = (schema, message) => schema.meta({
31
- ...schema.meta(),
32
- deprecated: true,
33
- deprecationMessage: message,
34
- });
35
- //# sourceMappingURL=extensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAsB,MAAS,EAAE,OAAe,EAAK,EAAE,CACxE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAM,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAsB,MAAS,EAAK,EAAE,CAC1D,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAM,CAAC;AAEvD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAAS,EACT,OAAe,EACZ,EAAE,CACL,MAAM,CAAC,IAAI,CAAC;IACV,GAAG,MAAM,CAAC,IAAI,EAAE;IAChB,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,OAAO;CAC5B,CAAM,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,20 +0,0 @@
1
- export { appConfig, type AppConfig, type AppConfigDeriveProvenanceOptions, type AppConfigOptions, type ConfigFormat, type ResolveOptions, } from './app-config.js';
2
- export { collectConfigMeta } from './collect.js';
3
- export { collectResourceConfigs, type ResourceConfigEntry } from './compose.js';
4
- export { defineConfig, type DefineConfigOptions } from './define-config.js';
5
- export { deriveConfigFields, type FieldDescription } from './derive-fields.js';
6
- export { checkConfig, type CheckResult, type ConfigDiagnostic, } from './doctor.js';
7
- export { env, secret, deprecated, type ConfigFieldMeta } from './extensions.js';
8
- export { deriveConfigProvenance, type DeriveConfigProvenanceOptions, type ProvenanceEntry, } from './derive-provenance.js';
9
- export { deriveConfigEnvExample, deriveConfigExample, deriveConfigJsonSchema, } from './derive/index.js';
10
- export { configResource } from './config-resource.js';
11
- export { clearConfigState, type ConfigState, getConfigState, registerConfigState, } from './registry.js';
12
- export { deepMerge } from './merge.js';
13
- export { configRef, isConfigRef, type ConfigRef } from './ref.js';
14
- export { deriveConfig, type DeriveConfigOptions } from './resolve.js';
15
- export { configCheck } from './trails/config-check.js';
16
- export { configDescribe } from './trails/config-describe.js';
17
- export { configExplain } from './trails/config-explain.js';
18
- export { configInit } from './trails/config-init.js';
19
- export { ensureWorkspace } from './workspace.js';
20
- //# 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,gCAAgC,EACrC,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,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,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,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,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,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,20 +0,0 @@
1
- export { appConfig, } from './app-config.js';
2
- export { collectConfigMeta } from './collect.js';
3
- export { collectResourceConfigs } from './compose.js';
4
- export { defineConfig } from './define-config.js';
5
- export { deriveConfigFields } from './derive-fields.js';
6
- export { checkConfig, } from './doctor.js';
7
- export { env, secret, deprecated } from './extensions.js';
8
- export { deriveConfigProvenance, } from './derive-provenance.js';
9
- export { deriveConfigEnvExample, deriveConfigExample, deriveConfigJsonSchema, } from './derive/index.js';
10
- export { configResource } from './config-resource.js';
11
- export { clearConfigState, getConfigState, registerConfigState, } from './registry.js';
12
- export { deepMerge } from './merge.js';
13
- export { configRef, isConfigRef } from './ref.js';
14
- export { deriveConfig } from './resolve.js';
15
- export { configCheck } from './trails/config-check.js';
16
- export { configDescribe } from './trails/config-describe.js';
17
- export { configExplain } from './trails/config-explain.js';
18
- export { configInit } from './trails/config-init.js';
19
- export { ensureWorkspace } from './workspace.js';
20
- //# 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,EAAE,sBAAsB,EAA4B,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,YAAY,EAA4B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAyB,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EACL,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,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,YAAY,EAA4B,MAAM,cAAc,CAAC;AACtE,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 `configResource` 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 profile?: 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 → profile → 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 DeriveConfigOptions<T extends z.ZodType> {
9
- readonly schema: T;
10
- readonly base?: Record<string, unknown> | undefined;
11
- readonly profiles?: Record<string, Record<string, unknown>> | undefined;
12
- readonly profile?: string | undefined;
13
- readonly localOverrides?: Record<string, unknown> | undefined;
14
- readonly env?: Record<string, string | undefined> | undefined;
15
- }
16
- /**
17
- * Derive config through the full stack: defaults → base → profile → local → env.
18
- * Returns `Result.ok` with the validated config, or `Result.err` on validation failure.
19
- */
20
- export declare const deriveConfig: <T extends z.ZodType>(options: DeriveConfigOptions<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,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO;IACtD,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,YAAY,GAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAC9C,SAAS,mBAAmB,CAAC,CAAC,CAAC,KAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAkB1B,CAAC"}
package/dist/resolve.js DELETED
@@ -1,177 +0,0 @@
1
- /**
2
- * Config resolution engine — merges config from multiple sources through
3
- * a deterministic stack: defaults → base → profile → local → env.
4
- */
5
- import { Result } from '@ontrails/core';
6
- import { collectConfigMeta } from './collect.js';
7
- import { deepMerge } from './merge.js';
8
- import { zodDef } from './zod-utils.js';
9
- // ---------------------------------------------------------------------------
10
- // Env coercion helpers (defined before consumers)
11
- // ---------------------------------------------------------------------------
12
- /** Boolean string values we accept from environment variables. */
13
- const BOOL_TRUE = new Set(['true', '1']);
14
- const BOOL_FALSE = new Set(['false', '0']);
15
- /** Primitive type names we can coerce env strings into. */
16
- const PRIMITIVE_TYPES = new Set(['number', 'boolean', 'string']);
17
- /** Try to advance one level through a Zod wrapper, returning the inner type or undefined. */
18
- const unwrapOne = (schema) => {
19
- const def = zodDef(schema);
20
- return {
21
- inner: def['innerType'],
22
- typeName: def['type'],
23
- };
24
- };
25
- /** Unwrap ZodDefault / ZodOptional / ZodNullable to find the base type name. */
26
- const resolveBaseTypeName = (schema) => {
27
- let current = schema;
28
- for (let depth = 0; depth < 10; depth += 1) {
29
- const { typeName, inner } = unwrapOne(current);
30
- if (typeName && PRIMITIVE_TYPES.has(typeName)) {
31
- return typeName;
32
- }
33
- if (!inner) {
34
- break;
35
- }
36
- current = inner;
37
- }
38
- return 'string';
39
- };
40
- /** Coerce a boolean env string. Returns the original string if unrecognized. */
41
- const coerceBooleanEnv = (raw) => {
42
- if (BOOL_TRUE.has(raw)) {
43
- return true;
44
- }
45
- if (BOOL_FALSE.has(raw)) {
46
- return false;
47
- }
48
- return raw;
49
- };
50
- /** Coerce env var lookup table keyed by base type name. */
51
- const ENV_COERCERS = {
52
- boolean: coerceBooleanEnv,
53
- number: (raw) => {
54
- const n = Number(raw);
55
- return Number.isNaN(n) ? raw : n;
56
- },
57
- };
58
- /** Coerce a string env value to the type expected by the schema field. */
59
- const coerceEnvValue = (raw, schema) => {
60
- const coercer = ENV_COERCERS[resolveBaseTypeName(schema)];
61
- return coercer ? coercer(raw) : raw;
62
- };
63
- // ---------------------------------------------------------------------------
64
- // Path utilities
65
- // ---------------------------------------------------------------------------
66
- /** Navigate one step of a nested object, creating an intermediate if needed. */
67
- const navigateOrCreate = (current, key) => {
68
- const next = current[key];
69
- if (typeof next === 'object' && next !== null && !Array.isArray(next)) {
70
- return next;
71
- }
72
- const nested = {};
73
- current[key] = nested;
74
- return nested;
75
- };
76
- /** Ensure a nested path exists in an object, creating intermediates as needed. */
77
- const ensurePath = (obj, parts) => {
78
- let current = obj;
79
- for (const part of parts) {
80
- current = navigateOrCreate(current, part);
81
- }
82
- return current;
83
- };
84
- /** Set a value at a dot-separated path in a plain object. */
85
- const setAtPath = (obj, path, value) => {
86
- const parts = path.split('.');
87
- const parent = ensurePath(obj, parts.slice(0, -1));
88
- parent[parts.at(-1)] = value;
89
- };
90
- /** Resolve one step of a Zod shape walk: find the field schema for a key. */
91
- const resolveShapeStep = (current, key) => {
92
- const shape = zodDef(current)['shape'];
93
- return shape?.[key];
94
- };
95
- /** Walk a Zod schema shape to find the field at a dot-separated path. */
96
- const getFieldSchema = (schema, path) => {
97
- let current = schema;
98
- for (const part of path.split('.')) {
99
- const next = resolveShapeStep(current, part);
100
- if (!next) {
101
- return undefined;
102
- }
103
- current = next;
104
- }
105
- return current;
106
- };
107
- // ---------------------------------------------------------------------------
108
- // Env overlay
109
- // ---------------------------------------------------------------------------
110
- /** Coerce and set a single env override into the result object. */
111
- const applyOneEnvOverride = (result, schema, path, envValue) => {
112
- const fieldSchema = getFieldSchema(schema, path);
113
- const coerced = fieldSchema
114
- ? coerceEnvValue(envValue, fieldSchema)
115
- : envValue;
116
- setAtPath(result, path, coerced);
117
- };
118
- /** Resolve a single env binding: look up the var, apply if present. */
119
- const resolveEnvBinding = (result, schema, path, envVar, envVars) => {
120
- const envValue = envVars[envVar];
121
- if (envValue !== undefined) {
122
- applyOneEnvOverride(result, schema, path, envValue);
123
- }
124
- };
125
- /** Apply env var overrides based on schema metadata. */
126
- const applyEnvOverrides = (merged, schema, envVars) => {
127
- if (zodDef(schema)['type'] !== 'object') {
128
- return merged;
129
- }
130
- const meta = collectConfigMeta(schema);
131
- const result = deepMerge({}, merged);
132
- for (const [path, fieldMeta] of meta) {
133
- if (fieldMeta.env) {
134
- resolveEnvBinding(result, schema, path, fieldMeta.env, envVars);
135
- }
136
- }
137
- return result;
138
- };
139
- // ---------------------------------------------------------------------------
140
- // Merge pipeline
141
- // ---------------------------------------------------------------------------
142
- /** Apply the layered merge: base → profile → local overrides. */
143
- const mergeLayers = (base, profiles, profile, localOverrides) => {
144
- let merged = {};
145
- if (base) {
146
- merged = deepMerge(merged, base);
147
- }
148
- const selected = profile && profiles ? profiles[profile] : undefined;
149
- if (selected) {
150
- merged = deepMerge(merged, selected);
151
- }
152
- if (localOverrides) {
153
- merged = deepMerge(merged, localOverrides);
154
- }
155
- return merged;
156
- };
157
- /** Format Zod issues into a human-readable error message. */
158
- const formatValidationError = (issues) => `Config validation failed: ${issues.map((i) => `${String(i.path.join('.'))}: ${i.message}`).join(', ')}`;
159
- // ---------------------------------------------------------------------------
160
- // Public API
161
- // ---------------------------------------------------------------------------
162
- /**
163
- * Derive config through the full stack: defaults → base → profile → local → env.
164
- * Returns `Result.ok` with the validated config, or `Result.err` on validation failure.
165
- */
166
- export const deriveConfig = (options) => {
167
- let merged = mergeLayers(options.base, options.profiles, options.profile, options.localOverrides);
168
- if (options.env) {
169
- merged = applyEnvOverrides(merged, options.schema, options.env);
170
- }
171
- const parsed = options.schema.safeParse(merged);
172
- if (parsed.success) {
173
- return Result.ok(parsed.data);
174
- }
175
- return Result.err(new Error(formatValidationError(parsed.error.issues)));
176
- };
177
- //# sourceMappingURL=resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Heuristic detection of secret env var names.
3
- *
4
- * Matches common suffixes like `_SECRET`, `_TOKEN`, `_KEY`, `_PASSWORD`,
5
- * and `_CREDENTIALS` so that generated `.env.example` files and provenance
6
- * output can redact likely-secret values even without explicit `secret()`.
7
- */
8
- /** Return true when `envName` looks like it holds a secret value. */
9
- export declare const isLikelySecret: (envName: string) => boolean;
10
- //# sourceMappingURL=secret-heuristics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secret-heuristics.d.ts","sourceRoot":"","sources":["../src/secret-heuristics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,qEAAqE;AACrE,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,KAAG,OACnB,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Heuristic detection of secret env var names.
3
- *
4
- * Matches common suffixes like `_SECRET`, `_TOKEN`, `_KEY`, `_PASSWORD`,
5
- * and `_CREDENTIALS` so that generated `.env.example` files and provenance
6
- * output can redact likely-secret values even without explicit `secret()`.
7
- */
8
- const SECRET_PATTERN = /_SECRET$|_TOKEN$|_KEY$|_PASSWORD$|_CREDENTIALS$/i;
9
- /** Return true when `envName` looks like it holds a secret value. */
10
- export const isLikelySecret = (envName) => SECRET_PATTERN.test(envName);
11
- //# sourceMappingURL=secret-heuristics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secret-heuristics.js","sourceRoot":"","sources":["../src/secret-heuristics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,cAAc,GAAG,kDAAkD,CAAC;AAE1E,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAW,EAAE,CACzD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- export declare const configCheck: import("@ontrails/core").Trail<{
2
- values: Record<string, unknown>;
3
- }, {
4
- diagnostics: {
5
- message: string;
6
- path: string;
7
- status: "default" | "deprecated" | "valid" | "missing" | "invalid";
8
- }[];
9
- valid: boolean;
10
- }, never>;
11
- //# sourceMappingURL=config-check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-check.d.ts","sourceRoot":"","sources":["../../src/trails/config-check.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,WAAW;;;;;;;;;SA0BtB,CAAC"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Infrastructure trail that validates config values against a schema.
3
- *
4
- * Returns structured diagnostics indicating which fields are valid,
5
- * missing, invalid, deprecated, or using defaults.
6
- */
7
- import { Result, trail } from '@ontrails/core';
8
- import { z } from 'zod';
9
- import { configResource } from '../config-resource.js';
10
- import { checkConfig } from '../doctor.js';
11
- import { deepMerge } from '../merge.js';
12
- const diagnosticSchema = z.object({
13
- message: z.string(),
14
- path: z.string(),
15
- status: z.enum(['valid', 'missing', 'invalid', 'deprecated', 'default']),
16
- });
17
- const outputSchema = z.object({
18
- diagnostics: z.array(diagnosticSchema),
19
- valid: z.boolean(),
20
- });
21
- /** Merge input values on top of resolved config values. */
22
- const mergeValues = (resolved, overrides) => {
23
- const hasOverrides = Object.keys(overrides).length > 0;
24
- return hasOverrides ? deepMerge(resolved, overrides) : resolved;
25
- };
26
- export const configCheck = trail('config.check', {
27
- blaze: (input, ctx) => {
28
- const state = configResource.from(ctx);
29
- const effective = mergeValues(state.resolved, input.values);
30
- const checked = checkConfig(state.schema, effective);
31
- return Result.ok({
32
- diagnostics: [...checked.diagnostics],
33
- valid: checked.valid,
34
- });
35
- },
36
- examples: [
37
- {
38
- input: {},
39
- name: 'Check current config',
40
- },
41
- ],
42
- input: z.object({
43
- values: z
44
- .record(z.string(), z.unknown())
45
- .describe('Config values to check (merged with resolved)')
46
- .default({}),
47
- }),
48
- intent: 'read',
49
- meta: { category: 'infrastructure' },
50
- output: outputSchema,
51
- resources: [configResource],
52
- });
53
- //# sourceMappingURL=config-check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-check.js","sourceRoot":"","sources":["../../src/trails/config-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;CACzE,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;CACnB,CAAC,CAAC;AAEH,2DAA2D;AAC3D,MAAM,WAAW,GAAG,CAClB,QAAiC,EACjC,SAAkC,EACT,EAAE;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,OAAO,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,EAAE;IAC/C,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,EAAE,CAAC;YACf,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;YACrC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IACD,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,sBAAsB;SAC7B;KACF;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,CAAC;aACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;aAC/B,QAAQ,CAAC,+CAA+C,CAAC;aACzD,OAAO,CAAC,EAAE,CAAC;KACf,CAAC;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACpC,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,CAAC,cAAc,CAAC;CAC5B,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- export declare const configDescribe: import("@ontrails/core").Trail<Record<string, never>, {
2
- fields: {
3
- path: string;
4
- required: boolean;
5
- type: string;
6
- deprecated?: string | undefined;
7
- description?: string | undefined;
8
- env?: string | undefined;
9
- secret?: boolean | undefined;
10
- }[];
11
- }, never>;
12
- //# sourceMappingURL=config-describe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-describe.d.ts","sourceRoot":"","sources":["../../src/trails/config-describe.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc;;;;;;;;;;SAiBzB,CAAC"}