@zigrivers/mmr 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +422 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/ack.d.ts +11 -0
- package/dist/commands/ack.d.ts.map +1 -0
- package/dist/commands/ack.js +123 -0
- package/dist/commands/ack.js.map +1 -0
- package/dist/commands/config.d.ts +5 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +248 -14
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/jobs.d.ts.map +1 -1
- package/dist/commands/jobs.js +3 -4
- package/dist/commands/jobs.js.map +1 -1
- package/dist/commands/reconcile.d.ts.map +1 -1
- package/dist/commands/reconcile.js +12 -5
- package/dist/commands/reconcile.js.map +1 -1
- package/dist/commands/results.d.ts.map +1 -1
- package/dist/commands/results.js +13 -5
- package/dist/commands/results.js.map +1 -1
- package/dist/commands/review.d.ts +25 -0
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +457 -44
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/sessions.d.ts +58 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +266 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/config/defaults.d.ts +2 -2
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +66 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts +22 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +279 -36
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +869 -53
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +151 -4
- package/dist/config/schema.js.map +1 -1
- package/dist/core/ack-store.d.ts +109 -0
- package/dist/core/ack-store.d.ts.map +1 -0
- package/dist/core/ack-store.js +363 -0
- package/dist/core/ack-store.js.map +1 -0
- package/dist/core/auth.d.ts +10 -1
- package/dist/core/auth.d.ts.map +1 -1
- package/dist/core/auth.js +65 -2
- package/dist/core/auth.js.map +1 -1
- package/dist/core/compensator.d.ts +32 -4
- package/dist/core/compensator.d.ts.map +1 -1
- package/dist/core/compensator.js +118 -15
- package/dist/core/compensator.js.map +1 -1
- package/dist/core/diff-introspect.d.ts +21 -0
- package/dist/core/diff-introspect.d.ts.map +1 -0
- package/dist/core/diff-introspect.js +42 -0
- package/dist/core/diff-introspect.js.map +1 -0
- package/dist/core/dispatcher.d.ts +7 -0
- package/dist/core/dispatcher.d.ts.map +1 -1
- package/dist/core/dispatcher.js +21 -3
- package/dist/core/dispatcher.js.map +1 -1
- package/dist/core/git-show.d.ts +31 -0
- package/dist/core/git-show.d.ts.map +1 -0
- package/dist/core/git-show.js +72 -0
- package/dist/core/git-show.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +20 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +125 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/job-store.d.ts +7 -1
- package/dist/core/job-store.d.ts.map +1 -1
- package/dist/core/job-store.js +21 -1
- package/dist/core/job-store.js.map +1 -1
- package/dist/core/jsonpath.d.ts +15 -0
- package/dist/core/jsonpath.d.ts.map +1 -0
- package/dist/core/jsonpath.js +63 -0
- package/dist/core/jsonpath.js.map +1 -0
- package/dist/core/oss-examples.d.ts +18 -0
- package/dist/core/oss-examples.d.ts.map +1 -0
- package/dist/core/oss-examples.js +66 -0
- package/dist/core/oss-examples.js.map +1 -0
- package/dist/core/parser.d.ts +8 -3
- package/dist/core/parser.d.ts.map +1 -1
- package/dist/core/parser.js +157 -6
- package/dist/core/parser.js.map +1 -1
- package/dist/core/project-root.d.ts +10 -0
- package/dist/core/project-root.d.ts.map +1 -0
- package/dist/core/project-root.js +23 -0
- package/dist/core/project-root.js.map +1 -0
- package/dist/core/reconciler.d.ts +1 -1
- package/dist/core/reconciler.d.ts.map +1 -1
- package/dist/core/reconciler.js +100 -18
- package/dist/core/reconciler.js.map +1 -1
- package/dist/core/redact.d.ts +17 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +140 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/results-pipeline.d.ts +8 -2
- package/dist/core/results-pipeline.d.ts.map +1 -1
- package/dist/core/results-pipeline.js +50 -3
- package/dist/core/results-pipeline.js.map +1 -1
- package/dist/core/runtime-probe.d.ts +14 -0
- package/dist/core/runtime-probe.d.ts.map +1 -0
- package/dist/core/runtime-probe.js +57 -0
- package/dist/core/runtime-probe.js.map +1 -0
- package/dist/core/stable-id.d.ts +19 -0
- package/dist/core/stable-id.d.ts.map +1 -0
- package/dist/core/stable-id.js +148 -0
- package/dist/core/stable-id.js.map +1 -0
- package/dist/core/trust-mode.d.ts +29 -0
- package/dist/core/trust-mode.d.ts.map +1 -0
- package/dist/core/trust-mode.js +103 -0
- package/dist/core/trust-mode.js.map +1 -0
- package/dist/formatters/markdown.d.ts.map +1 -1
- package/dist/formatters/markdown.js +9 -0
- package/dist/formatters/markdown.js.map +1 -1
- package/dist/formatters/text.d.ts.map +1 -1
- package/dist/formatters/text.js +9 -0
- package/dist/formatters/text.js.map +1 -1
- package/dist/types.d.ts +44 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/dist/config/loader.js
CHANGED
|
@@ -4,6 +4,8 @@ import os from 'node:os';
|
|
|
4
4
|
import yaml from 'js-yaml';
|
|
5
5
|
import { MmrConfigSchema } from './schema.js';
|
|
6
6
|
import { DEFAULT_CONFIG } from './defaults.js';
|
|
7
|
+
import { isSecretKey } from '../core/redact.js';
|
|
8
|
+
import { readFileAtRef } from '../core/git-show.js';
|
|
7
9
|
/**
|
|
8
10
|
* Deep-merge two plain objects. Arrays replace (not concat).
|
|
9
11
|
* Primitives from `overlay` win over `base`.
|
|
@@ -29,6 +31,41 @@ function deepMerge(base, overlay) {
|
|
|
29
31
|
}
|
|
30
32
|
return result;
|
|
31
33
|
}
|
|
34
|
+
function resetExtendingChannelBases(base, overlay) {
|
|
35
|
+
if (!isPlainRecord(base.channels) || !isPlainRecord(overlay.channels))
|
|
36
|
+
return;
|
|
37
|
+
for (const [name, channel] of Object.entries(overlay.channels)) {
|
|
38
|
+
if (isPlainRecord(channel) && typeof channel.extends === 'string') {
|
|
39
|
+
base.channels[name] = {};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function resetExtendingChannelProvenance(baseChannels, overlay) {
|
|
44
|
+
if (!isPlainRecord(overlay.channels))
|
|
45
|
+
return;
|
|
46
|
+
for (const [name, channel] of Object.entries(overlay.channels)) {
|
|
47
|
+
if (isPlainRecord(channel) && typeof channel.extends === 'string') {
|
|
48
|
+
baseChannels[name] = {};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Try to read and parse a YAML file; returns undefined if missing.
|
|
54
|
+
*/
|
|
55
|
+
function parseYamlConfig(raw, label) {
|
|
56
|
+
let parsed;
|
|
57
|
+
try {
|
|
58
|
+
parsed = yaml.load(raw);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
62
|
+
throw new Error(`Failed to parse ${label}: ${msg}`);
|
|
63
|
+
}
|
|
64
|
+
if (parsed === null || parsed === undefined || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
65
|
+
throw new Error(`Invalid config in ${label}: expected an object, got ${typeof parsed}`);
|
|
66
|
+
}
|
|
67
|
+
return parsed;
|
|
68
|
+
}
|
|
32
69
|
/**
|
|
33
70
|
* Try to read and parse a YAML file; returns undefined if missing.
|
|
34
71
|
*/
|
|
@@ -42,18 +79,167 @@ function loadYaml(filePath) {
|
|
|
42
79
|
catch {
|
|
43
80
|
return undefined;
|
|
44
81
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
82
|
+
return parseYamlConfig(raw, filePath);
|
|
83
|
+
}
|
|
84
|
+
function loadProjectYaml(opts) {
|
|
85
|
+
if (opts.skipProjectConfig === true) {
|
|
86
|
+
// Default-deny: untrusted tree with no opt-in → no project config.
|
|
87
|
+
return undefined;
|
|
48
88
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
89
|
+
// Precedence note: trustProjectConfig:true intentionally overrides
|
|
90
|
+
// configBaseRef (it means "trust the working tree"). The review handler never
|
|
91
|
+
// passes both — it sends exactly one of { configBaseRef } / { trustProjectConfig }
|
|
92
|
+
// / { skipProjectConfig } per trust mode — so this combination only arises for
|
|
93
|
+
// other direct callers, who get the documented working-tree behavior.
|
|
94
|
+
if (opts.configBaseRef !== undefined && opts.trustProjectConfig !== true) {
|
|
95
|
+
// Trust boundary (§5 decision 1): read .mmr.yaml from the trusted base ref
|
|
96
|
+
// via the shared git-show helper, never from the (possibly untrusted)
|
|
97
|
+
// working tree. Missing file/ref → no project config (built-in defaults).
|
|
98
|
+
const raw = readFileAtRef({ cwd: opts.projectRoot, ref: opts.configBaseRef, filePath: './.mmr.yaml' });
|
|
99
|
+
if (raw === undefined)
|
|
100
|
+
return undefined;
|
|
101
|
+
return parseYamlConfig(raw, `${opts.configBaseRef}:.mmr.yaml`);
|
|
52
102
|
}
|
|
53
|
-
|
|
54
|
-
|
|
103
|
+
return loadYaml(path.join(opts.projectRoot, '.mmr.yaml'));
|
|
104
|
+
}
|
|
105
|
+
const MAX_EXTENDS_DEPTH = 4;
|
|
106
|
+
function isPlainRecord(value) {
|
|
107
|
+
return (value !== null
|
|
108
|
+
&& typeof value === 'object'
|
|
109
|
+
&& !Array.isArray(value));
|
|
110
|
+
}
|
|
111
|
+
function resolveChannelExtends(name, channels, stack = []) {
|
|
112
|
+
if (stack.includes(name)) {
|
|
113
|
+
throw new Error(`Channel extends cycle detected: ${[...stack, name].join(' -> ')}`);
|
|
114
|
+
}
|
|
115
|
+
if (stack.length > MAX_EXTENDS_DEPTH) {
|
|
116
|
+
throw new Error(`Channel extends depth exceeds max (${MAX_EXTENDS_DEPTH}) at ${[...stack, name].join(' -> ')}`);
|
|
117
|
+
}
|
|
118
|
+
const channel = channels[name];
|
|
119
|
+
if (!channel) {
|
|
120
|
+
throw new Error(`Channel "${name}" referenced by extends not found`);
|
|
121
|
+
}
|
|
122
|
+
const parentName = channel.extends;
|
|
123
|
+
if (typeof parentName !== 'string')
|
|
124
|
+
return channel;
|
|
125
|
+
const parentResolved = resolveChannelExtends(parentName, channels, [...stack, name]);
|
|
126
|
+
const childWithoutExtends = { ...channel };
|
|
127
|
+
delete childWithoutExtends.extends;
|
|
128
|
+
const childDefinesAbstract = Object.prototype.hasOwnProperty.call(channel, 'abstract');
|
|
129
|
+
const parentBase = structuredClone(parentResolved);
|
|
130
|
+
const merged = deepMerge(parentBase, childWithoutExtends);
|
|
131
|
+
if (!childDefinesAbstract) {
|
|
132
|
+
delete merged.abstract;
|
|
133
|
+
}
|
|
134
|
+
return merged;
|
|
135
|
+
}
|
|
136
|
+
function resolveExtendsAcrossChannels(channels) {
|
|
137
|
+
if (!channels)
|
|
138
|
+
return {};
|
|
139
|
+
const resolved = {};
|
|
140
|
+
for (const name of Object.keys(channels)) {
|
|
141
|
+
resolved[name] = resolveChannelExtends(name, channels);
|
|
142
|
+
}
|
|
143
|
+
return resolved;
|
|
144
|
+
}
|
|
145
|
+
function validateRunnableChannels(config) {
|
|
146
|
+
for (const [name, channel] of Object.entries(config.channels)) {
|
|
147
|
+
if (channel.abstract)
|
|
148
|
+
continue;
|
|
149
|
+
// http channels are runnable via endpoint/model (schema-required), not a
|
|
150
|
+
// command — only subprocess channels must define one after inheritance.
|
|
151
|
+
if (channel.kind === 'http')
|
|
152
|
+
continue;
|
|
153
|
+
if (!channel.command) {
|
|
154
|
+
throw new Error(`Channel "${name}" must define command after inheritance unless abstract is set`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function validateCompensatorReference(config) {
|
|
159
|
+
const compensator = config.defaults.compensator;
|
|
160
|
+
if (!compensator)
|
|
161
|
+
return;
|
|
162
|
+
const ref = compensator.channel;
|
|
163
|
+
if (ref === undefined)
|
|
164
|
+
return;
|
|
165
|
+
if (ref.trim().length === 0) {
|
|
166
|
+
throw new Error('defaults.compensator.channel cannot be empty. '
|
|
167
|
+
+ 'Configure a concrete channel name in the channels: section, or remove the compensator block.');
|
|
168
|
+
}
|
|
169
|
+
const hasTarget = Object.prototype.hasOwnProperty.call(config.channels, ref);
|
|
170
|
+
const target = config.channels[ref];
|
|
171
|
+
if (!hasTarget || !target) {
|
|
172
|
+
throw new Error(`defaults.compensator.channel references unknown channel "${ref}". `
|
|
173
|
+
+ 'Configure a channel with this name in the channels: section, or remove the compensator block.');
|
|
174
|
+
}
|
|
175
|
+
// Abstract channels (v3.28 T1-A) are templates only: they cannot be
|
|
176
|
+
// dispatched directly and therefore cannot serve as a compensator target.
|
|
177
|
+
if (target.abstract === true) {
|
|
178
|
+
throw new Error(`defaults.compensator.channel "${ref}" is marked abstract: true (T1-A). `
|
|
179
|
+
+ 'Abstract channels are non-dispatchable templates; reference a concrete channel that extends it instead.');
|
|
180
|
+
}
|
|
181
|
+
// http channels are concrete via endpoint/model rather than command.
|
|
182
|
+
if (target.kind !== 'http' && !target.command) {
|
|
183
|
+
throw new Error(`defaults.compensator.channel "${ref}" is missing command. `
|
|
184
|
+
+ 'Compensator channels must be concrete dispatch targets.');
|
|
55
185
|
}
|
|
56
|
-
|
|
186
|
+
}
|
|
187
|
+
function warnOnInlineSecretHeaders(config, warn) {
|
|
188
|
+
for (const [name, channel] of Object.entries(config.channels)) {
|
|
189
|
+
const headers = channel.headers;
|
|
190
|
+
if (!headers)
|
|
191
|
+
continue;
|
|
192
|
+
for (const headerKey of Object.keys(headers)) {
|
|
193
|
+
if (isSecretKey(headerKey, { exemptEnvNameKeys: false })) {
|
|
194
|
+
warn(`[mmr] warning: channel "${name}" has a literal "${headerKey}" header. ` +
|
|
195
|
+
'For HTTP channels in v3.30, move the secret to an env var and reference it via api_key_env.');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function loadConfigLayers(opts) {
|
|
201
|
+
const { cliOverrides } = opts;
|
|
202
|
+
const userHome = opts.userHome ?? os.homedir();
|
|
203
|
+
let merged = structuredClone(DEFAULT_CONFIG);
|
|
204
|
+
const userConfigPath = path.join(userHome, '.mmr', 'config.yaml');
|
|
205
|
+
const userConfig = loadYaml(userConfigPath) ?? {};
|
|
206
|
+
if (Object.keys(userConfig).length > 0) {
|
|
207
|
+
resetExtendingChannelBases(merged, userConfig);
|
|
208
|
+
merged = deepMerge(merged, userConfig);
|
|
209
|
+
}
|
|
210
|
+
const projectConfig = loadProjectYaml(opts) ?? {};
|
|
211
|
+
if (Object.keys(projectConfig).length > 0) {
|
|
212
|
+
resetExtendingChannelBases(merged, projectConfig);
|
|
213
|
+
merged = deepMerge(merged, projectConfig);
|
|
214
|
+
}
|
|
215
|
+
const cliConfig = cliOverridesToConfig(cliOverrides);
|
|
216
|
+
if (Object.keys(cliConfig).length > 0) {
|
|
217
|
+
merged = deepMerge(merged, cliConfig);
|
|
218
|
+
}
|
|
219
|
+
return { merged, userConfig, projectConfig, cliConfig };
|
|
220
|
+
}
|
|
221
|
+
function cliOverridesToConfig(cliOverrides) {
|
|
222
|
+
if (!cliOverrides)
|
|
223
|
+
return {};
|
|
224
|
+
const overrideDefaults = {};
|
|
225
|
+
if (cliOverrides.fix_threshold !== undefined)
|
|
226
|
+
overrideDefaults.fix_threshold = cliOverrides.fix_threshold;
|
|
227
|
+
if (cliOverrides.timeout !== undefined)
|
|
228
|
+
overrideDefaults.timeout = cliOverrides.timeout;
|
|
229
|
+
if (cliOverrides.format !== undefined)
|
|
230
|
+
overrideDefaults.format = cliOverrides.format;
|
|
231
|
+
return Object.keys(overrideDefaults).length > 0 ? { defaults: overrideDefaults } : {};
|
|
232
|
+
}
|
|
233
|
+
function parseMergedConfig(mergedRaw, warn = console.warn) {
|
|
234
|
+
const merged = structuredClone(mergedRaw);
|
|
235
|
+
if (isPlainRecord(merged.channels)) {
|
|
236
|
+
merged.channels = resolveExtendsAcrossChannels(merged.channels);
|
|
237
|
+
}
|
|
238
|
+
const config = MmrConfigSchema.parse(merged);
|
|
239
|
+
warnOnInlineSecretHeaders(config, warn);
|
|
240
|
+
validateCompensatorReference(config);
|
|
241
|
+
validateRunnableChannels(config);
|
|
242
|
+
return config;
|
|
57
243
|
}
|
|
58
244
|
/**
|
|
59
245
|
* Load and merge configuration from multiple sources.
|
|
@@ -67,36 +253,93 @@ function loadYaml(filePath) {
|
|
|
67
253
|
* The merged result is validated through MmrConfigSchema.parse().
|
|
68
254
|
*/
|
|
69
255
|
export function loadConfig(opts) {
|
|
70
|
-
const {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
256
|
+
const { merged } = loadConfigLayers(opts);
|
|
257
|
+
return parseMergedConfig(merged, opts.onWarning);
|
|
258
|
+
}
|
|
259
|
+
function provenanceForRecord(overlay, source) {
|
|
260
|
+
const result = {};
|
|
261
|
+
for (const [k, v] of Object.entries(overlay)) {
|
|
262
|
+
if (isPlainRecord(v)) {
|
|
263
|
+
result[k] = provenanceForRecord(v, source);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
result[k] = source;
|
|
267
|
+
}
|
|
79
268
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if (
|
|
84
|
-
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
function applyProvenanceLayer(base, overlay, source) {
|
|
272
|
+
if (isPlainRecord(overlay.defaults)) {
|
|
273
|
+
base.defaults = deepMerge(base.defaults, provenanceForRecord(overlay.defaults, source));
|
|
85
274
|
}
|
|
86
|
-
|
|
87
|
-
if (
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
275
|
+
resetExtendingChannelProvenance(base.channels, overlay);
|
|
276
|
+
if (!isPlainRecord(overlay.channels))
|
|
277
|
+
return;
|
|
278
|
+
for (const [name, channel] of Object.entries(overlay.channels)) {
|
|
279
|
+
if (!isPlainRecord(channel))
|
|
280
|
+
continue;
|
|
281
|
+
base.channels[name] = deepMerge(base.channels[name] ?? {}, provenanceForRecord(channel, source));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function resolveChannelProvenanceExtends(name, channels, provenance, stack = []) {
|
|
285
|
+
if (stack.includes(name)) {
|
|
286
|
+
throw new Error(`Channel extends cycle detected: ${[...stack, name].join(' -> ')}`);
|
|
287
|
+
}
|
|
288
|
+
if (stack.length > MAX_EXTENDS_DEPTH) {
|
|
289
|
+
throw new Error(`Channel extends depth exceeds max (${MAX_EXTENDS_DEPTH}) at ${[...stack, name].join(' -> ')}`);
|
|
290
|
+
}
|
|
291
|
+
const channel = channels[name];
|
|
292
|
+
if (!channel) {
|
|
293
|
+
throw new Error(`Channel "${name}" referenced by extends not found`);
|
|
294
|
+
}
|
|
295
|
+
const ownProvenance = structuredClone(provenance[name] ?? {});
|
|
296
|
+
const parentName = channel.extends;
|
|
297
|
+
if (typeof parentName !== 'string')
|
|
298
|
+
return ownProvenance;
|
|
299
|
+
const parentResolved = resolveChannelProvenanceExtends(parentName, channels, provenance, [...stack, name]);
|
|
300
|
+
delete ownProvenance.extends;
|
|
301
|
+
const childDefinesAbstract = Object.prototype.hasOwnProperty.call(channel, 'abstract');
|
|
302
|
+
const merged = deepMerge(structuredClone(parentResolved), ownProvenance);
|
|
303
|
+
if (!childDefinesAbstract) {
|
|
304
|
+
delete merged.abstract;
|
|
305
|
+
}
|
|
306
|
+
return merged;
|
|
307
|
+
}
|
|
308
|
+
function fillDefaultProvenance(finalValue, provenance) {
|
|
309
|
+
if (!isPlainRecord(finalValue))
|
|
310
|
+
return;
|
|
311
|
+
for (const [field, value] of Object.entries(finalValue)) {
|
|
312
|
+
if (isPlainRecord(value)) {
|
|
313
|
+
const existing = provenance[field];
|
|
314
|
+
const nested = isPlainRecord(existing) ? existing : {};
|
|
315
|
+
provenance[field] = nested;
|
|
316
|
+
fillDefaultProvenance(value, nested);
|
|
317
|
+
}
|
|
318
|
+
else if (provenance[field] === undefined) {
|
|
319
|
+
provenance[field] = 'default';
|
|
97
320
|
}
|
|
98
321
|
}
|
|
99
|
-
|
|
100
|
-
|
|
322
|
+
}
|
|
323
|
+
export function loadConfigWithProvenance(opts) {
|
|
324
|
+
const { merged: mergedRaw, userConfig, projectConfig, cliConfig } = loadConfigLayers(opts);
|
|
325
|
+
const rawProvenance = { defaults: {}, channels: {} };
|
|
326
|
+
applyProvenanceLayer(rawProvenance, DEFAULT_CONFIG, 'default');
|
|
327
|
+
if (Object.keys(userConfig).length > 0)
|
|
328
|
+
applyProvenanceLayer(rawProvenance, userConfig, 'user');
|
|
329
|
+
if (Object.keys(projectConfig).length > 0)
|
|
330
|
+
applyProvenanceLayer(rawProvenance, projectConfig, 'project');
|
|
331
|
+
if (Object.keys(cliConfig).length > 0)
|
|
332
|
+
applyProvenanceLayer(rawProvenance, cliConfig, 'cli');
|
|
333
|
+
const config = parseMergedConfig(mergedRaw, opts.onWarning);
|
|
334
|
+
const provenance = { defaults: rawProvenance.defaults, channels: {} };
|
|
335
|
+
fillDefaultProvenance(config.defaults, provenance.defaults);
|
|
336
|
+
const mergedChannels = isPlainRecord(mergedRaw.channels)
|
|
337
|
+
? mergedRaw.channels
|
|
338
|
+
: {};
|
|
339
|
+
for (const name of Object.keys(config.channels)) {
|
|
340
|
+
provenance.channels[name] = resolveChannelProvenanceExtends(name, mergedChannels, rawProvenance.channels);
|
|
341
|
+
fillDefaultProvenance(config.channels[name], provenance.channels[name]);
|
|
342
|
+
}
|
|
343
|
+
return { config, provenance };
|
|
101
344
|
}
|
|
102
345
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|