@ontrails/config 1.0.0-beta.13 → 1.0.0-beta.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/.turbo/turbo-lint.log +1 -1
- package/CHANGELOG.md +18 -0
- package/README.md +204 -0
- package/dist/app-config.d.ts +4 -4
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +12 -7
- package/dist/app-config.js.map +1 -1
- package/dist/compose.d.ts +11 -11
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +7 -7
- package/dist/compose.js.map +1 -1
- package/dist/config-layer.d.ts +3 -3
- package/dist/config-resource.d.ts +3 -0
- package/dist/config-resource.d.ts.map +1 -0
- package/dist/{config-service.js → config-resource.js} +7 -7
- package/dist/config-resource.js.map +1 -0
- package/dist/define-config.d.ts +9 -9
- package/dist/define-config.d.ts.map +1 -1
- package/dist/define-config.js +9 -12
- package/dist/define-config.js.map +1 -1
- package/dist/{generate → derive}/env.d.ts +1 -1
- package/dist/derive/env.d.ts.map +1 -0
- package/dist/{generate → derive}/env.js +3 -3
- package/dist/derive/env.js.map +1 -0
- package/dist/{generate → derive}/example.d.ts +1 -1
- package/dist/derive/example.d.ts.map +1 -0
- package/dist/{generate → derive}/example.js +21 -19
- package/dist/derive/example.js.map +1 -0
- package/dist/{generate → derive}/helpers.d.ts +1 -1
- package/dist/derive/helpers.d.ts.map +1 -0
- package/dist/{generate → derive}/helpers.js +2 -2
- package/dist/derive/helpers.js.map +1 -0
- package/dist/derive/index.d.ts +4 -0
- package/dist/derive/index.d.ts.map +1 -0
- package/dist/derive/index.js +4 -0
- package/dist/derive/index.js.map +1 -0
- package/dist/{generate → derive}/json-schema.d.ts +1 -1
- package/dist/derive/json-schema.d.ts.map +1 -0
- package/dist/{generate → derive}/json-schema.js +1 -1
- package/dist/derive/json-schema.js.map +1 -0
- package/dist/{describe.d.ts → derive-fields.d.ts} +2 -2
- package/dist/derive-fields.d.ts.map +1 -0
- package/dist/{describe.js → derive-fields.js} +2 -2
- package/dist/derive-fields.js.map +1 -0
- package/dist/{explain.d.ts → derive-provenance.d.ts} +5 -5
- package/dist/derive-provenance.d.ts.map +1 -0
- package/dist/{explain.js → derive-provenance.js} +8 -21
- package/dist/derive-provenance.js.map +1 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +1 -37
- package/dist/doctor.js.map +1 -1
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/dist/ref.d.ts +8 -3
- package/dist/ref.d.ts.map +1 -1
- package/dist/ref.js +8 -3
- package/dist/ref.js.map +1 -1
- package/dist/registry.d.ts +2 -2
- package/dist/resolve.d.ts +6 -6
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +11 -8
- package/dist/resolve.js.map +1 -1
- package/dist/trails/config-check.d.ts +1 -1
- package/dist/trails/config-check.d.ts.map +1 -1
- package/dist/trails/config-check.js +12 -12
- package/dist/trails/config-check.js.map +1 -1
- package/dist/trails/config-describe.d.ts +1 -1
- package/dist/trails/config-describe.d.ts.map +1 -1
- package/dist/trails/config-describe.js +9 -9
- package/dist/trails/config-describe.js.map +1 -1
- package/dist/trails/config-explain.d.ts +1 -1
- package/dist/trails/config-explain.d.ts.map +1 -1
- package/dist/trails/config-explain.js +15 -15
- package/dist/trails/config-explain.js.map +1 -1
- package/dist/trails/config-init.d.ts +1 -1
- package/dist/trails/config-init.d.ts.map +1 -1
- package/dist/trails/config-init.js +16 -16
- package/dist/trails/config-init.js.map +1 -1
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +5 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/app-config.test.ts +19 -6
- package/src/__tests__/compose.test.ts +15 -15
- package/src/__tests__/config-check.test.ts +7 -7
- package/src/__tests__/config-describe.test.ts +7 -7
- package/src/__tests__/config-explain.test.ts +7 -7
- package/src/__tests__/config-init.test.ts +7 -7
- package/src/__tests__/{config-provision.test.ts → config-resource.test.ts} +12 -12
- package/src/__tests__/define-config.test.ts +24 -18
- package/src/__tests__/{describe.test.ts → derive-fields.test.ts} +11 -11
- package/src/__tests__/{explain.test.ts → derive-provenance.test.ts} +18 -18
- package/src/__tests__/{generate.test.ts → derive.test.ts} +30 -30
- package/src/__tests__/resolve.test.ts +31 -31
- package/src/app-config.ts +23 -12
- package/src/compose.ts +16 -22
- package/src/{config-provision.ts → config-resource.ts} +5 -5
- package/src/define-config.ts +12 -15
- package/src/{generate → derive}/env.ts +3 -3
- package/src/{generate → derive}/example.ts +1 -1
- package/src/{generate → derive}/helpers.ts +1 -1
- package/src/derive/index.ts +3 -0
- package/src/{generate → derive}/json-schema.ts +1 -1
- package/src/{describe.ts → derive-fields.ts} +1 -1
- package/src/{explain.ts → derive-provenance.ts} +6 -6
- package/src/index.ts +12 -18
- package/src/registry.ts +2 -2
- package/src/resolve.ts +13 -13
- package/src/trails/config-check.ts +3 -3
- package/src/trails/config-describe.ts +5 -5
- package/src/trails/config-explain.ts +13 -13
- package/src/trails/config-init.ts +10 -10
- package/src/workspace.ts +5 -0
- package/tsconfig.tests.json +10 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/config-service.d.ts +0 -3
- package/dist/config-service.d.ts.map +0 -1
- package/dist/config-service.js.map +0 -1
- package/dist/describe.d.ts.map +0 -1
- package/dist/describe.js.map +0 -1
- package/dist/explain.d.ts.map +0 -1
- package/dist/explain.js.map +0 -1
- package/dist/generate/env.d.ts.map +0 -1
- package/dist/generate/env.js.map +0 -1
- package/dist/generate/example.d.ts.map +0 -1
- package/dist/generate/example.js.map +0 -1
- package/dist/generate/helpers.d.ts.map +0 -1
- package/dist/generate/helpers.js.map +0 -1
- package/dist/generate/index.d.ts +0 -4
- package/dist/generate/index.d.ts.map +0 -1
- package/dist/generate/index.js +0 -4
- package/dist/generate/index.js.map +0 -1
- package/dist/generate/json-schema.d.ts.map +0 -1
- package/dist/generate/json-schema.js.map +0 -1
- package/src/__tests__/config-gate.test.ts +0 -53
- package/src/config-gate.ts +0 -15
- package/src/generate/index.ts +0 -3
package/dist/ref.js
CHANGED
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
* Lazy config reference markers for trail input defaults.
|
|
3
3
|
*
|
|
4
4
|
* A `ConfigRef` is a marker object that can be embedded as a trail input
|
|
5
|
-
* default.
|
|
6
|
-
*
|
|
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.
|
|
7
12
|
*/
|
|
8
13
|
/**
|
|
9
14
|
* Create a lazy reference to a config field for use as a trail input default.
|
|
10
15
|
*
|
|
11
|
-
*
|
|
16
|
+
* Note: resolution is not yet automatic. See module-level docs.
|
|
12
17
|
*
|
|
13
18
|
*/
|
|
14
19
|
export const configRef = (path) => ({
|
package/dist/ref.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.js","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Module-level config state registry.
|
|
3
3
|
*
|
|
4
4
|
* Config is resolved once at bootstrap (two-phase init per ADR-010) and
|
|
5
|
-
* registered here so `
|
|
5
|
+
* registered here so `configResource` can expose it to trailheads. This is
|
|
6
6
|
* a process-level singleton — config resolution is inherently global.
|
|
7
7
|
*/
|
|
8
8
|
import type { z } from 'zod';
|
|
@@ -11,7 +11,7 @@ export interface ConfigState {
|
|
|
11
11
|
readonly schema: z.ZodObject<Record<string, z.ZodType>>;
|
|
12
12
|
readonly resolved: Record<string, unknown>;
|
|
13
13
|
readonly base?: Record<string, unknown>;
|
|
14
|
-
readonly
|
|
14
|
+
readonly profile?: Record<string, unknown>;
|
|
15
15
|
readonly local?: Record<string, unknown>;
|
|
16
16
|
readonly env?: Record<string, string | undefined>;
|
|
17
17
|
}
|
package/dist/resolve.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Config resolution engine — merges config from multiple sources through
|
|
3
|
-
* a deterministic stack: defaults → base →
|
|
3
|
+
* a deterministic stack: defaults → base → profile → local → env.
|
|
4
4
|
*/
|
|
5
5
|
import type { z } from 'zod';
|
|
6
6
|
import { Result } from '@ontrails/core';
|
|
7
7
|
/** Options for resolving config through the full stack. */
|
|
8
|
-
export interface
|
|
8
|
+
export interface DeriveConfigOptions<T extends z.ZodType> {
|
|
9
9
|
readonly schema: T;
|
|
10
10
|
readonly base?: Record<string, unknown> | undefined;
|
|
11
|
-
readonly
|
|
12
|
-
readonly
|
|
11
|
+
readonly profiles?: Record<string, Record<string, unknown>> | undefined;
|
|
12
|
+
readonly profile?: string | undefined;
|
|
13
13
|
readonly localOverrides?: Record<string, unknown> | undefined;
|
|
14
14
|
readonly env?: Record<string, string | undefined> | undefined;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Derive config through the full stack: defaults → base → profile → local → env.
|
|
18
18
|
* Returns `Result.ok` with the validated config, or `Result.err` on validation failure.
|
|
19
19
|
*/
|
|
20
|
-
export declare const
|
|
20
|
+
export declare const deriveConfig: <T extends z.ZodType>(options: DeriveConfigOptions<T>) => Result<z.infer<T>, Error>;
|
|
21
21
|
//# sourceMappingURL=resolve.d.ts.map
|
package/dist/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Config resolution engine — merges config from multiple sources through
|
|
3
|
-
* a deterministic stack: defaults → base →
|
|
3
|
+
* a deterministic stack: defaults → base → profile → local → env.
|
|
4
4
|
*/
|
|
5
5
|
import { Result } from '@ontrails/core';
|
|
6
6
|
import { collectConfigMeta } from './collect.js';
|
|
@@ -50,7 +50,10 @@ const coerceBooleanEnv = (raw) => {
|
|
|
50
50
|
/** Coerce env var lookup table keyed by base type name. */
|
|
51
51
|
const ENV_COERCERS = {
|
|
52
52
|
boolean: coerceBooleanEnv,
|
|
53
|
-
number:
|
|
53
|
+
number: (raw) => {
|
|
54
|
+
const n = Number(raw);
|
|
55
|
+
return Number.isNaN(n) ? raw : n;
|
|
56
|
+
},
|
|
54
57
|
};
|
|
55
58
|
/** Coerce a string env value to the type expected by the schema field. */
|
|
56
59
|
const coerceEnvValue = (raw, schema) => {
|
|
@@ -136,13 +139,13 @@ const applyEnvOverrides = (merged, schema, envVars) => {
|
|
|
136
139
|
// ---------------------------------------------------------------------------
|
|
137
140
|
// Merge pipeline
|
|
138
141
|
// ---------------------------------------------------------------------------
|
|
139
|
-
/** Apply the layered merge: base →
|
|
140
|
-
const mergeLayers = (base,
|
|
142
|
+
/** Apply the layered merge: base → profile → local overrides. */
|
|
143
|
+
const mergeLayers = (base, profiles, profile, localOverrides) => {
|
|
141
144
|
let merged = {};
|
|
142
145
|
if (base) {
|
|
143
146
|
merged = deepMerge(merged, base);
|
|
144
147
|
}
|
|
145
|
-
const selected =
|
|
148
|
+
const selected = profile && profiles ? profiles[profile] : undefined;
|
|
146
149
|
if (selected) {
|
|
147
150
|
merged = deepMerge(merged, selected);
|
|
148
151
|
}
|
|
@@ -157,11 +160,11 @@ const formatValidationError = (issues) => `Config validation failed: ${issues.ma
|
|
|
157
160
|
// Public API
|
|
158
161
|
// ---------------------------------------------------------------------------
|
|
159
162
|
/**
|
|
160
|
-
*
|
|
163
|
+
* Derive config through the full stack: defaults → base → profile → local → env.
|
|
161
164
|
* Returns `Result.ok` with the validated config, or `Result.err` on validation failure.
|
|
162
165
|
*/
|
|
163
|
-
export const
|
|
164
|
-
let merged = mergeLayers(options.base, options.
|
|
166
|
+
export const deriveConfig = (options) => {
|
|
167
|
+
let merged = mergeLayers(options.base, options.profiles, options.profile, options.localOverrides);
|
|
165
168
|
if (options.env) {
|
|
166
169
|
merged = applyEnvOverrides(merged, options.schema, options.env);
|
|
167
170
|
}
|
package/dist/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgBxC,8EAA8E;AAC9E,kDAAkD;AAClD,8EAA8E;AAE9E,kEAAkE;AAClE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAE3C,2DAA2D;AAC3D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEjE,6FAA6F;AAC7F,MAAM,SAAS,GAAG,CAChB,MAAiB,EAC+C,EAAE;IAClE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,WAAW,CAA0B;QAChD,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAuB;KAC5C,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,CAAC,MAAiB,EAAU,EAAE;IACxD,IAAI,OAAO,GAAc,MAAM,CAAC;IAEhC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM;QACR,CAAC;QACD,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAW,EAAE;IAChD,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,YAAY,GAA6C;IAC7D,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-check.d.ts","sourceRoot":"","sources":["../../src/trails/config-check.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,WAAW;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config-check.d.ts","sourceRoot":"","sources":["../../src/trails/config-check.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,WAAW;;;;;;;;;SA0BtB,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { Result, trail } from '@ontrails/core';
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
9
|
+
import { configResource } from '../config-resource.js';
|
|
10
10
|
import { checkConfig } from '../doctor.js';
|
|
11
11
|
import { deepMerge } from '../merge.js';
|
|
12
12
|
const diagnosticSchema = z.object({
|
|
@@ -24,6 +24,15 @@ const mergeValues = (resolved, overrides) => {
|
|
|
24
24
|
return hasOverrides ? deepMerge(resolved, overrides) : resolved;
|
|
25
25
|
};
|
|
26
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
|
+
},
|
|
27
36
|
examples: [
|
|
28
37
|
{
|
|
29
38
|
input: {},
|
|
@@ -37,17 +46,8 @@ export const configCheck = trail('config.check', {
|
|
|
37
46
|
.default({}),
|
|
38
47
|
}),
|
|
39
48
|
intent: 'read',
|
|
40
|
-
|
|
49
|
+
meta: { category: 'infrastructure' },
|
|
41
50
|
output: outputSchema,
|
|
42
|
-
|
|
43
|
-
const state = configService.from(ctx);
|
|
44
|
-
const effective = mergeValues(state.resolved, input.values);
|
|
45
|
-
const checked = checkConfig(state.schema, effective);
|
|
46
|
-
return Result.ok({
|
|
47
|
-
diagnostics: [...checked.diagnostics],
|
|
48
|
-
valid: checked.valid,
|
|
49
|
-
});
|
|
50
|
-
},
|
|
51
|
-
services: [configService],
|
|
51
|
+
resources: [configResource],
|
|
52
52
|
});
|
|
53
53
|
//# sourceMappingURL=config-check.js.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-describe.d.ts","sourceRoot":"","sources":["../../src/trails/config-describe.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config-describe.d.ts","sourceRoot":"","sources":["../../src/trails/config-describe.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc;;;;;;;;;;SAiBzB,CAAC"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { Result, trail } from '@ontrails/core';
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { configResource } from '../config-resource.js';
|
|
10
|
+
import { deriveConfigFields } from '../derive-fields.js';
|
|
11
11
|
const fieldSchema = z.object({
|
|
12
12
|
deprecated: z.string().optional(),
|
|
13
13
|
description: z.string().optional(),
|
|
@@ -21,6 +21,11 @@ const outputSchema = z.object({
|
|
|
21
21
|
fields: z.array(fieldSchema),
|
|
22
22
|
});
|
|
23
23
|
export const configDescribe = trail('config.describe', {
|
|
24
|
+
blaze: (_input, ctx) => {
|
|
25
|
+
const state = configResource.from(ctx);
|
|
26
|
+
const fields = deriveConfigFields(state.schema);
|
|
27
|
+
return Result.ok({ fields: [...fields] });
|
|
28
|
+
},
|
|
24
29
|
examples: [
|
|
25
30
|
{
|
|
26
31
|
input: {},
|
|
@@ -29,13 +34,8 @@ export const configDescribe = trail('config.describe', {
|
|
|
29
34
|
],
|
|
30
35
|
input: z.object({}),
|
|
31
36
|
intent: 'read',
|
|
32
|
-
|
|
37
|
+
meta: { category: 'infrastructure' },
|
|
33
38
|
output: outputSchema,
|
|
34
|
-
|
|
35
|
-
const state = configService.from(ctx);
|
|
36
|
-
const fields = describeConfig(state.schema);
|
|
37
|
-
return Result.ok({ fields: [...fields] });
|
|
38
|
-
},
|
|
39
|
-
services: [configService],
|
|
39
|
+
resources: [configResource],
|
|
40
40
|
});
|
|
41
41
|
//# sourceMappingURL=config-describe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-describe.js","sourceRoot":"","sources":["../../src/trails/config-describe.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,
|
|
1
|
+
{"version":3,"file":"config-describe.js","sourceRoot":"","sources":["../../src/trails/config-describe.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,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,EAAE;IACrD,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,4BAA4B;SACnC;KACF;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-explain.d.ts","sourceRoot":"","sources":["../../src/trails/config-explain.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,aAAa;;;;uBAvCG,MAAM;;
|
|
1
|
+
{"version":3,"file":"config-explain.d.ts","sourceRoot":"","sources":["../../src/trails/config-explain.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,aAAa;;;;uBAvCG,MAAM;;SA+DjC,CAAC"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { Result, trail } from '@ontrails/core';
|
|
8
8
|
import { z } from 'zod';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { configResource } from '../config-resource.js';
|
|
10
|
+
import { deriveConfigProvenance } from '../derive-provenance.js';
|
|
11
11
|
const provenanceEntrySchema = z.object({
|
|
12
12
|
path: z.string(),
|
|
13
13
|
redacted: z.boolean(),
|
|
@@ -21,7 +21,7 @@ const outputSchema = z.object({
|
|
|
21
21
|
const filterByPath = (entries, prefix) => prefix
|
|
22
22
|
? entries.filter((entry) => entry.path === prefix || entry.path.startsWith(`${prefix}.`))
|
|
23
23
|
: entries;
|
|
24
|
-
/** Build
|
|
24
|
+
/** Build DeriveConfigProvenanceOptions from ConfigState, omitting undefined source overrides. */
|
|
25
25
|
const toExplainOptions = (state) => {
|
|
26
26
|
const base = {
|
|
27
27
|
resolved: state.resolved,
|
|
@@ -32,14 +32,14 @@ const toExplainOptions = (state) => {
|
|
|
32
32
|
}
|
|
33
33
|
return base;
|
|
34
34
|
};
|
|
35
|
-
/** Enrich explain options with env and
|
|
35
|
+
/** Enrich explain options with env and source overrides from state. */
|
|
36
36
|
const enrichOptions = (state, options) => {
|
|
37
37
|
let enriched = options;
|
|
38
38
|
if (state.env) {
|
|
39
39
|
enriched = { ...enriched, env: state.env };
|
|
40
40
|
}
|
|
41
|
-
if (state.
|
|
42
|
-
enriched = { ...enriched,
|
|
41
|
+
if (state.profile) {
|
|
42
|
+
enriched = { ...enriched, profile: state.profile };
|
|
43
43
|
}
|
|
44
44
|
if (state.local) {
|
|
45
45
|
enriched = { ...enriched, local: state.local };
|
|
@@ -47,6 +47,13 @@ const enrichOptions = (state, options) => {
|
|
|
47
47
|
return enriched;
|
|
48
48
|
};
|
|
49
49
|
export const configExplain = trail('config.explain', {
|
|
50
|
+
blaze: (input, ctx) => {
|
|
51
|
+
const state = configResource.from(ctx);
|
|
52
|
+
const options = enrichOptions(state, toExplainOptions(state));
|
|
53
|
+
const entries = deriveConfigProvenance(options);
|
|
54
|
+
const filtered = filterByPath(entries, input.path);
|
|
55
|
+
return Result.ok({ entries: [...filtered] });
|
|
56
|
+
},
|
|
50
57
|
examples: [
|
|
51
58
|
{
|
|
52
59
|
input: {},
|
|
@@ -60,15 +67,8 @@ export const configExplain = trail('config.explain', {
|
|
|
60
67
|
.default(''),
|
|
61
68
|
}),
|
|
62
69
|
intent: 'read',
|
|
63
|
-
|
|
70
|
+
meta: { category: 'infrastructure' },
|
|
64
71
|
output: outputSchema,
|
|
65
|
-
|
|
66
|
-
const state = configService.from(ctx);
|
|
67
|
-
const options = enrichOptions(state, toExplainOptions(state));
|
|
68
|
-
const entries = explainConfig(options);
|
|
69
|
-
const filtered = filterByPath(entries, input.path);
|
|
70
|
-
return Result.ok({ entries: [...filtered] });
|
|
71
|
-
},
|
|
72
|
-
services: [configService],
|
|
72
|
+
resources: [configResource],
|
|
73
73
|
});
|
|
74
74
|
//# sourceMappingURL=config-explain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-explain.js","sourceRoot":"","sources":["../../src/trails/config-explain.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,
|
|
1
|
+
{"version":3,"file":"config-explain.js","sourceRoot":"","sources":["../../src/trails/config-explain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-init.d.ts","sourceRoot":"","sources":["../../src/trails/config-init.ts"],"names":[],"mappings":"AA+DA,eAAO,MAAM,UAAU;;;;;;;
|
|
1
|
+
{"version":3,"file":"config-init.d.ts","sourceRoot":"","sources":["../../src/trails/config-init.ts"],"names":[],"mappings":"AA+DA,eAAO,MAAM,UAAU;;;;;;;SAgCrB,CAAC"}
|
|
@@ -11,8 +11,8 @@ import { join } from 'node:path';
|
|
|
11
11
|
import { mkdir } from 'node:fs/promises';
|
|
12
12
|
import { Result, trail } from '@ontrails/core';
|
|
13
13
|
import { z as zod } from 'zod';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { configResource } from '../config-resource.js';
|
|
15
|
+
import { deriveConfigEnvExample, deriveConfigExample, deriveConfigJsonSchema, } from '../derive/index.js';
|
|
16
16
|
const formatEnum = zod.enum(['toml', 'json', 'jsonc', 'yaml']);
|
|
17
17
|
const outputSchema = zod.object({
|
|
18
18
|
content: zod.string(),
|
|
@@ -22,13 +22,13 @@ const outputSchema = zod.object({
|
|
|
22
22
|
/** Collect artifacts to write: [relativeName, content] pairs. */
|
|
23
23
|
const collectArtifacts = (schema) => {
|
|
24
24
|
const artifacts = [];
|
|
25
|
-
const envContent =
|
|
25
|
+
const envContent = deriveConfigEnvExample(schema);
|
|
26
26
|
if (envContent.length > 0) {
|
|
27
27
|
artifacts.push(['.env.example', envContent]);
|
|
28
28
|
}
|
|
29
29
|
artifacts.push([
|
|
30
30
|
'.schema.json',
|
|
31
|
-
JSON.stringify(
|
|
31
|
+
JSON.stringify(deriveConfigJsonSchema(schema), null, 2),
|
|
32
32
|
]);
|
|
33
33
|
return artifacts;
|
|
34
34
|
};
|
|
@@ -45,6 +45,16 @@ const writeArtifacts = async (dir, schema) => {
|
|
|
45
45
|
return written;
|
|
46
46
|
};
|
|
47
47
|
export const configInit = trail('config.init', {
|
|
48
|
+
blaze: async (input, ctx) => {
|
|
49
|
+
const state = configResource.from(ctx);
|
|
50
|
+
const schema = state.schema;
|
|
51
|
+
const content = deriveConfigExample(schema, input.format);
|
|
52
|
+
if (input.dir) {
|
|
53
|
+
const writtenFiles = await writeArtifacts(input.dir, schema);
|
|
54
|
+
return Result.ok({ content, format: input.format, writtenFiles });
|
|
55
|
+
}
|
|
56
|
+
return Result.ok({ content, format: input.format });
|
|
57
|
+
},
|
|
48
58
|
examples: [
|
|
49
59
|
{
|
|
50
60
|
input: {},
|
|
@@ -61,18 +71,8 @@ export const configInit = trail('config.init', {
|
|
|
61
71
|
.default('toml'),
|
|
62
72
|
}),
|
|
63
73
|
intent: 'write',
|
|
64
|
-
|
|
74
|
+
meta: { category: 'infrastructure' },
|
|
65
75
|
output: outputSchema,
|
|
66
|
-
|
|
67
|
-
const state = configService.from(ctx);
|
|
68
|
-
const schema = state.schema;
|
|
69
|
-
const content = generateExample(schema, input.format);
|
|
70
|
-
if (input.dir) {
|
|
71
|
-
const writtenFiles = await writeArtifacts(input.dir, schema);
|
|
72
|
-
return Result.ok({ content, format: input.format, writtenFiles });
|
|
73
|
-
}
|
|
74
|
-
return Result.ok({ content, format: input.format });
|
|
75
|
-
},
|
|
76
|
-
services: [configService],
|
|
76
|
+
resources: [configResource],
|
|
77
77
|
});
|
|
78
78
|
//# sourceMappingURL=config-init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-init.js","sourceRoot":"","sources":["../../src/trails/config-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config-init.js","sourceRoot":"","sources":["../../src/trails/config-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;IACpB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAEH,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,CACvB,MAA8C,EAC1B,EAAE;IACtB,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,SAAS,CAAC,IAAI,CAAC;QACb,cAAc;QACd,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACxD,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,cAAc,GAAG,KAAK,EAC1B,GAAW,EACX,MAA8C,EAC3B,EAAE;IACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE;IAC7C,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgD,CAAC;QACtE,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,uBAAuB;SAC9B;KACF;IACD,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAChB,GAAG,EAAE,GAAG;aACL,MAAM,EAAE;aACR,QAAQ,CAAC,2CAA2C,CAAC;aACrD,QAAQ,EAAE;QACb,MAAM,EAAE,UAAU;aACf,QAAQ,CAAC,2CAA2C,CAAC;aACrD,OAAO,CAAC,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACpC,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,CAAC,cAAc,CAAC;CAC5B,CAAC,CAAC"}
|
package/dist/workspace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAwCA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAQhE,CAAC"}
|
package/dist/workspace.js
CHANGED
|
@@ -18,6 +18,11 @@ const GITIGNORE_CONTENT = [
|
|
|
18
18
|
'# Generated artifacts',
|
|
19
19
|
'generated/',
|
|
20
20
|
'',
|
|
21
|
+
'# Shared Trails database',
|
|
22
|
+
'trails.db',
|
|
23
|
+
'trails.db-shm',
|
|
24
|
+
'trails.db-wal',
|
|
25
|
+
'',
|
|
21
26
|
].join('\n');
|
|
22
27
|
/**
|
|
23
28
|
* Write `.gitignore` inside the workspace directory if it does not already exist.
|
package/dist/workspace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE/D,MAAM,iBAAiB,GAAG;IACxB,0BAA0B;IAC1B,SAAS;IACT,EAAE;IACF,qBAAqB;IACrB,MAAM;IACN,EAAE;IACF,uBAAuB;IACvB,YAAY;IACZ,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;GAEG;AACH,MAAM,uBAAuB,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;IACzE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAExC,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1E,CAAC;IAEF,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE/D,MAAM,iBAAiB,GAAG;IACxB,0BAA0B;IAC1B,SAAS;IACT,EAAE;IACF,qBAAqB;IACrB,MAAM;IACN,EAAE;IACF,uBAAuB;IACvB,YAAY;IACZ,EAAE;IACF,0BAA0B;IAC1B,WAAW;IACX,eAAe;IACf,eAAe;IACf,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;GAEG;AACH,MAAM,uBAAuB,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;IACzE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAExC,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1E,CAAC;IAEF,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ontrails/config",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./src/index.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"clean": "rm -rf dist *.tsbuildinfo"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"@ontrails/core": "^1.0.0-beta.
|
|
17
|
+
"@ontrails/core": "^1.0.0-beta.14",
|
|
18
18
|
"zod": "^4.3.5"
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -6,7 +6,7 @@ import { z } from 'zod';
|
|
|
6
6
|
|
|
7
7
|
import type { AppConfig } from '../app-config.js';
|
|
8
8
|
import { appConfig } from '../app-config.js';
|
|
9
|
-
import {
|
|
9
|
+
import { deriveConfigFields } from '../derive-fields.js';
|
|
10
10
|
import { checkConfig } from '../doctor.js';
|
|
11
11
|
import { configRef } from '../ref.js';
|
|
12
12
|
|
|
@@ -45,9 +45,9 @@ describe('appConfig()', () => {
|
|
|
45
45
|
expect(config.schema).toBe(testSchema);
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
test('defaults formats to toml, json, yaml when not specified', () => {
|
|
48
|
+
test('defaults formats to toml, json, jsonc, yaml when not specified', () => {
|
|
49
49
|
const config = appConfig('myapp', { schema: testSchema });
|
|
50
|
-
expect(config.formats).toEqual(['toml', 'json', 'yaml']);
|
|
50
|
+
expect(config.formats).toEqual(['toml', 'json', 'jsonc', 'yaml']);
|
|
51
51
|
});
|
|
52
52
|
|
|
53
53
|
test('uses provided formats', () => {
|
|
@@ -218,6 +218,19 @@ describe('appConfig()', () => {
|
|
|
218
218
|
expect(result.unwrap().output).toBe('./from-toml');
|
|
219
219
|
});
|
|
220
220
|
|
|
221
|
+
test('includes jsonc in the default discovery set', async () => {
|
|
222
|
+
await Bun.write(
|
|
223
|
+
join(tempDir, 'myapp.config.jsonc'),
|
|
224
|
+
'{\n // comment\n "output": "./from-jsonc"\n}\n'
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
const config = appConfig('myapp', { schema: testSchema });
|
|
228
|
+
const result = await config.resolve({ cwd: tempDir });
|
|
229
|
+
|
|
230
|
+
expect(result.isOk()).toBe(true);
|
|
231
|
+
expect(result.unwrap().output).toBe('./from-jsonc');
|
|
232
|
+
});
|
|
233
|
+
|
|
221
234
|
test('returns Result.err when no config file found', async () => {
|
|
222
235
|
const config = appConfig('myapp', { schema: testSchema });
|
|
223
236
|
const result = await config.resolve({ cwd: tempDir });
|
|
@@ -289,10 +302,10 @@ describe('appConfig()', () => {
|
|
|
289
302
|
});
|
|
290
303
|
|
|
291
304
|
describe('method delegations', () => {
|
|
292
|
-
test('describe() returns same result as
|
|
305
|
+
test('describe() returns same result as deriveConfigFields(schema)', () => {
|
|
293
306
|
const config = appConfig('myapp', { schema: testSchema });
|
|
294
307
|
const methodResult = config.describe();
|
|
295
|
-
const standaloneResult =
|
|
308
|
+
const standaloneResult = deriveConfigFields(testSchema);
|
|
296
309
|
|
|
297
310
|
expect(methodResult).toEqual(standaloneResult);
|
|
298
311
|
});
|
|
@@ -315,7 +328,7 @@ describe('appConfig()', () => {
|
|
|
315
328
|
expect(methodResult).toEqual(standaloneResult);
|
|
316
329
|
});
|
|
317
330
|
|
|
318
|
-
test('explain() delegates to
|
|
331
|
+
test('explain() delegates to deriveConfigProvenance with bound schema', () => {
|
|
319
332
|
const config = appConfig('myapp', { schema: testSchema });
|
|
320
333
|
const resolved = { output: './dist', verbose: true };
|
|
321
334
|
|