@goodbones/core 0.1.0-beta.10 → 0.1.0-beta.12
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/build/dts/core/structure.d.ts.map +1 -1
- package/build/dts/domain/architecture-config.d.ts +3 -310
- package/build/dts/domain/architecture-config.d.ts.map +1 -1
- package/build/dts/domain/snapshot.d.ts +150 -18
- package/build/dts/domain/snapshot.d.ts.map +1 -1
- package/build/dts/index.d.ts +11 -14
- package/build/dts/index.d.ts.map +1 -1
- package/build/dts/infrastructure/file-system-fake.d.ts.map +1 -1
- package/build/dts/infrastructure/file-system-live.d.ts.map +1 -1
- package/build/dts/infrastructure/walk.d.ts +6 -1
- package/build/dts/infrastructure/walk.d.ts.map +1 -1
- package/build/dts/load/extension.d.ts +33 -0
- package/build/dts/load/extension.d.ts.map +1 -0
- package/build/dts/load/policy.d.ts +4 -10
- package/build/dts/load/policy.d.ts.map +1 -1
- package/build/dts/manifest/compile.d.ts +7 -2
- package/build/dts/manifest/compile.d.ts.map +1 -1
- package/build/dts/manifest/extension.d.ts +8 -0
- package/build/dts/manifest/extension.d.ts.map +1 -0
- package/build/dts/manifest/glob.d.ts +1 -0
- package/build/dts/manifest/glob.d.ts.map +1 -1
- package/build/dts/manifest/json-schema.d.ts +6 -2
- package/build/dts/manifest/json-schema.d.ts.map +1 -1
- package/build/dts/manifest/manifest.d.ts +7 -362
- package/build/dts/manifest/manifest.d.ts.map +1 -1
- package/build/dts/ports/file-system.d.ts +1 -0
- package/build/dts/ports/file-system.d.ts.map +1 -1
- package/build/dts/testing.d.ts +0 -1
- package/build/dts/testing.d.ts.map +1 -1
- package/build/esm/core/structure.js +1 -1
- package/build/esm/core/structure.js.map +1 -1
- package/build/esm/domain/architecture-config.js +3 -136
- package/build/esm/domain/architecture-config.js.map +1 -1
- package/build/esm/domain/snapshot.js +55 -15
- package/build/esm/domain/snapshot.js.map +1 -1
- package/build/esm/index.js +16 -10
- package/build/esm/index.js.map +1 -1
- package/build/esm/infrastructure/file-system-fake.js +10 -0
- package/build/esm/infrastructure/file-system-fake.js.map +1 -1
- package/build/esm/infrastructure/file-system-live.js +9 -1
- package/build/esm/infrastructure/file-system-live.js.map +1 -1
- package/build/esm/infrastructure/walk.js +50 -4
- package/build/esm/infrastructure/walk.js.map +1 -1
- package/build/esm/load/extension.js +2 -0
- package/build/esm/load/extension.js.map +1 -0
- package/build/esm/load/policy.js +43 -116
- package/build/esm/load/policy.js.map +1 -1
- package/build/esm/manifest/compile.js +3 -182
- package/build/esm/manifest/compile.js.map +1 -1
- package/build/esm/manifest/extension.js +2 -0
- package/build/esm/manifest/extension.js.map +1 -0
- package/build/esm/manifest/glob.js +3 -0
- package/build/esm/manifest/glob.js.map +1 -1
- package/build/esm/manifest/json-schema.js +45 -11
- package/build/esm/manifest/json-schema.js.map +1 -1
- package/build/esm/manifest/manifest.js +56 -172
- package/build/esm/manifest/manifest.js.map +1 -1
- package/build/esm/testing.js +0 -1
- package/build/esm/testing.js.map +1 -1
- package/package.json +1 -1
- package/schema/architecture-node.schema.json +0 -887
- package/schema/architecture.schema.json +3264 -1591
- package/schema/conformance.schema.json +291 -47
- package/src/core/structure.ts +5 -3
- package/src/domain/architecture-config.ts +3 -180
- package/src/domain/snapshot.ts +125 -25
- package/src/index.ts +51 -78
- package/src/infrastructure/file-system-fake.ts +12 -0
- package/src/infrastructure/file-system-live.ts +8 -1
- package/src/infrastructure/walk.ts +58 -3
- package/src/load/extension.ts +66 -0
- package/src/load/policy.ts +60 -175
- package/src/manifest/compile.ts +2 -213
- package/src/manifest/extension.ts +41 -0
- package/src/manifest/glob.ts +5 -0
- package/src/manifest/json-schema.ts +53 -11
- package/src/manifest/manifest.ts +82 -214
- package/src/ports/file-system.ts +3 -0
- package/src/testing.ts +0 -1
- package/build/dts/core/campaigns.d.ts +0 -141
- package/build/dts/core/campaigns.d.ts.map +0 -1
- package/build/dts/core/ledger.d.ts +0 -61
- package/build/dts/core/ledger.d.ts.map +0 -1
- package/build/dts/domain/report.d.ts +0 -16
- package/build/dts/domain/report.d.ts.map +0 -1
- package/build/dts/infrastructure/campaign-functions.d.ts +0 -7
- package/build/dts/infrastructure/campaign-functions.d.ts.map +0 -1
- package/build/dts/infrastructure/report-source-fake.d.ts +0 -4
- package/build/dts/infrastructure/report-source-fake.d.ts.map +0 -1
- package/build/dts/infrastructure/report-source-live.d.ts +0 -3
- package/build/dts/infrastructure/report-source-live.d.ts.map +0 -1
- package/build/dts/ports/campaign-predicate.d.ts +0 -24
- package/build/dts/ports/campaign-predicate.d.ts.map +0 -1
- package/build/dts/ports/report-source.d.ts +0 -14
- package/build/dts/ports/report-source.d.ts.map +0 -1
- package/build/esm/core/campaigns.js +0 -778
- package/build/esm/core/campaigns.js.map +0 -1
- package/build/esm/core/ledger.js +0 -171
- package/build/esm/core/ledger.js.map +0 -1
- package/build/esm/domain/report.js +0 -168
- package/build/esm/domain/report.js.map +0 -1
- package/build/esm/infrastructure/campaign-functions.js +0 -67
- package/build/esm/infrastructure/campaign-functions.js.map +0 -1
- package/build/esm/infrastructure/report-source-fake.js +0 -6
- package/build/esm/infrastructure/report-source-fake.js.map +0 -1
- package/build/esm/infrastructure/report-source-live.js +0 -165
- package/build/esm/infrastructure/report-source-live.js.map +0 -1
- package/build/esm/ports/campaign-predicate.js +0 -2
- package/build/esm/ports/campaign-predicate.js.map +0 -1
- package/build/esm/ports/report-source.js +0 -7
- package/build/esm/ports/report-source.js.map +0 -1
- package/src/core/campaigns.ts +0 -1056
- package/src/core/ledger.ts +0 -242
- package/src/domain/report.ts +0 -203
- package/src/infrastructure/campaign-functions.ts +0 -98
- package/src/infrastructure/report-source-fake.ts +0 -10
- package/src/infrastructure/report-source-live.ts +0 -192
- package/src/ports/campaign-predicate.ts +0 -30
- package/src/ports/report-source.ts +0 -35
package/build/esm/load/policy.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import * as Result from "effect/Result";
|
|
2
2
|
import { decodeBaseline, EMPTY_BASELINE, makeBaselineFilter, } from "../core/baseline.js";
|
|
3
|
-
import { campaignsFailingTheirProbe, compileCampaignRules, leafTermsOf, } from "../core/campaigns.js";
|
|
4
3
|
import { compileExportRules, exportRulesFailingTheirProbe, } from "../core/exports.js";
|
|
5
4
|
import { compileGraphRules, graphRulesFailingTheirProbe, } from "../core/graph.js";
|
|
6
5
|
import { compileImportRules, rulesFailingTheirProbe, } from "../core/imports.js";
|
|
7
|
-
import { decodeLedger } from "../core/ledger.js";
|
|
8
6
|
import { compileMemberRules, memberRulesFailingTheirProbe, } from "../core/members.js";
|
|
9
7
|
import { compileStructure, structureRulesFailingTheirProbe, } from "../core/structure.js";
|
|
10
8
|
import { compileSurfaceRules, surfaceRulesFailingTheirProbe, } from "../core/surface.js";
|
|
11
9
|
import { ConfigInvalid, ImportUnresolved, } from "../domain/architecture-error.js";
|
|
12
10
|
import { lowerManifest } from "../manifest/compile.js";
|
|
13
|
-
import { decodeManifest
|
|
14
|
-
import { NO_REPORTS } from "../ports/report-source.js";
|
|
11
|
+
import { decodeManifest } from "../manifest/manifest.js";
|
|
15
12
|
const NOTHING = {
|
|
16
13
|
specifiers: [],
|
|
17
14
|
bindings: new Map(),
|
|
@@ -38,19 +35,6 @@ const routesOf = (configPath, scopes, languages) => {
|
|
|
38
35
|
return Result.succeed(routes);
|
|
39
36
|
};
|
|
40
37
|
const routeFor = (routes, file) => routes.find((route) => route.matches.test(file));
|
|
41
|
-
const referencedFunctions = (detect) => {
|
|
42
|
-
switch (detect.kind) {
|
|
43
|
-
case "all":
|
|
44
|
-
case "any":
|
|
45
|
-
return detect.terms.flatMap(referencedFunctions);
|
|
46
|
-
case "not":
|
|
47
|
-
return referencedFunctions(detect.term);
|
|
48
|
-
case "fn":
|
|
49
|
-
return [detect.name];
|
|
50
|
-
default:
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
38
|
// One resolver per scope, built by the scope's language, behind one port that
|
|
55
39
|
// picks the scope by the importing file.
|
|
56
40
|
const makeRouter = (configPath, repoRoot, routes) => {
|
|
@@ -84,45 +68,11 @@ const makeRoutingExtractor = (routes) => ({
|
|
|
84
68
|
});
|
|
85
69
|
// One matcher per scope, behind one port that picks the scope by the file. A
|
|
86
70
|
// language without one parses nothing, which a `syntax` term reads as no
|
|
87
|
-
// matches — and which
|
|
71
|
+
// matches — and which an extension's probe check refuses for a family that
|
|
88
72
|
// depends on it.
|
|
89
73
|
const makeRoutingMatcher = (routes) => ({
|
|
90
74
|
parse: (file, text) => routeFor(routes, file)?.language.syntax?.parse(file, text) ?? null,
|
|
91
75
|
});
|
|
92
|
-
// The ledgers, read through the port. An absent file is a campaign with no
|
|
93
|
-
// ledger yet; a malformed one is refused, since reading it as empty would
|
|
94
|
-
// report every hit as unrecorded growth.
|
|
95
|
-
const readLedgers = (configPath, fileSystem, ledgerDir, campaigns) => {
|
|
96
|
-
const ledgers = new Map();
|
|
97
|
-
for (const campaign of campaigns) {
|
|
98
|
-
const at = `${ledgerDir}/${campaign.id}.json`;
|
|
99
|
-
const text = fileSystem.readText(at);
|
|
100
|
-
if (text === null)
|
|
101
|
-
continue;
|
|
102
|
-
let raw;
|
|
103
|
-
try {
|
|
104
|
-
raw = JSON.parse(text);
|
|
105
|
-
}
|
|
106
|
-
catch (cause) {
|
|
107
|
-
return Result.fail(new ConfigInvalid({ configPath, detail: `the ledger ${at} is not JSON: ${String(cause)}` }));
|
|
108
|
-
}
|
|
109
|
-
const decoded = decodeLedger(raw);
|
|
110
|
-
if (Result.isFailure(decoded)) {
|
|
111
|
-
return Result.fail(new ConfigInvalid({
|
|
112
|
-
configPath,
|
|
113
|
-
detail: `the ledger ${at} does not decode:\n${decoded.failure}`,
|
|
114
|
-
}));
|
|
115
|
-
}
|
|
116
|
-
if (decoded.success.id !== campaign.id) {
|
|
117
|
-
return Result.fail(new ConfigInvalid({
|
|
118
|
-
configPath,
|
|
119
|
-
detail: `the ledger ${at} says it belongs to "${decoded.success.id}", not "${campaign.id}".`,
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
ledgers.set(campaign.id, decoded.success);
|
|
123
|
-
}
|
|
124
|
-
return Result.succeed(ledgers);
|
|
125
|
-
};
|
|
126
76
|
// The baseline is read through the port, so this tier touches no file itself.
|
|
127
77
|
// An absent or unreadable one carries nothing, which is the safe direction:
|
|
128
78
|
// every violation reports.
|
|
@@ -144,7 +94,11 @@ const readBaseline = (fileSystem, at) => {
|
|
|
144
94
|
// gap reports nothing there and looks exactly like a clean codebase.
|
|
145
95
|
export const loadPolicy = (input) => {
|
|
146
96
|
const { configPath, fileSystem, languages, repoRoot } = input;
|
|
147
|
-
const
|
|
97
|
+
const extensions = input.extensions ?? [];
|
|
98
|
+
const decoded = decodeManifest(configPath, input.manifest, {
|
|
99
|
+
locate: input.locate,
|
|
100
|
+
extensions,
|
|
101
|
+
});
|
|
148
102
|
if (Result.isFailure(decoded))
|
|
149
103
|
return Result.fail(decoded.failure);
|
|
150
104
|
const config = decoded.success.manifest;
|
|
@@ -207,57 +161,42 @@ export const loadPolicy = (input) => {
|
|
|
207
161
|
const structure = compileStructure(rules.structure);
|
|
208
162
|
if (Result.isFailure(structure))
|
|
209
163
|
return Result.fail(structure.failure);
|
|
210
|
-
const campaignRules = compileCampaignRules(rules.campaigns);
|
|
211
|
-
if (Result.isFailure(campaignRules))
|
|
212
|
-
return Result.fail(campaignRules.failure);
|
|
213
|
-
// A `fn` term names a function the host was to import. One it did not is
|
|
214
|
-
// a term that would answer false for every file, and is refused.
|
|
215
|
-
const functions = input.functions ?? new Map();
|
|
216
|
-
const missing = campaignRules.success.flatMap((rule) => referencedFunctions(rule.detect).filter((name) => !functions.has(name)));
|
|
217
|
-
if (missing.length > 0) {
|
|
218
|
-
return Result.fail(new ConfigInvalid({
|
|
219
|
-
configPath,
|
|
220
|
-
detail: `these campaigns name a predicate function the host did not load: ` +
|
|
221
|
-
`${[...new Set(missing)].join(", ")}. A \`fn\` term is \`module#export\`, resolved ` +
|
|
222
|
-
`relative to the manifest, and the export must be a function.`,
|
|
223
|
-
}));
|
|
224
|
-
}
|
|
225
|
-
// A `report` term is answered by the host's source. Without one every
|
|
226
|
-
// such campaign would report nothing and look complete.
|
|
227
|
-
const reporting = campaignRules.success.filter((rule) => leafTermsOf(rule.detect).includes("report"));
|
|
228
|
-
if (input.reports === undefined && reporting.length > 0) {
|
|
229
|
-
return Result.fail(new ConfigInvalid({
|
|
230
|
-
configPath,
|
|
231
|
-
detail: `these campaigns hold a \`report\` term and the host provided no report source: ` +
|
|
232
|
-
`${reporting.map((rule) => rule.name).join(", ")}.`,
|
|
233
|
-
}));
|
|
234
|
-
}
|
|
235
|
-
// A `syntax` term needs a matcher for the language of every file in its
|
|
236
|
-
// scope. The probes are the files the campaign is proven on; a probe whose
|
|
237
|
-
// language has none would pass no probe and mean nothing.
|
|
238
|
-
const syntaxless = campaignRules.success.flatMap((rule) => {
|
|
239
|
-
if (!leafTermsOf(rule.detect).includes("syntax"))
|
|
240
|
-
return [];
|
|
241
|
-
return [...rule.probes.fires, ...rule.probes.ignores].flatMap((probe) => {
|
|
242
|
-
const route = routeFor(routes.success, probe.path);
|
|
243
|
-
return route === undefined || route.language.syntax !== undefined
|
|
244
|
-
? []
|
|
245
|
-
: [`${rule.name} (${probe.path}: ${route.language.id} carries no syntax matcher)`];
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
if (syntaxless.length > 0) {
|
|
249
|
-
return Result.fail(new ConfigInvalid({
|
|
250
|
-
configPath,
|
|
251
|
-
detail: `these campaigns hold a \`syntax\` term in a scope whose language has no syntax ` +
|
|
252
|
-
`matcher: ${[...new Set(syntaxless)].join(", ")}. Compose the language pack with ` +
|
|
253
|
-
`one (\`@goodbones/ast-grep\` for TypeScript), or write the detector without it.`,
|
|
254
|
-
}));
|
|
255
|
-
}
|
|
256
164
|
// A probe carrying a source snippet is parsed by the extractor of the
|
|
257
165
|
// language whose scope covers the probe's file — the same extractor the CLI
|
|
258
166
|
// reads that file through. The plugin reads through oxlint's tree instead,
|
|
259
167
|
// and the parity suite is what holds that tree to this one.
|
|
260
168
|
const extractor = makeRoutingExtractor(routes.success);
|
|
169
|
+
const syntax = makeRoutingMatcher(routes.success);
|
|
170
|
+
const routeOf = (file) => {
|
|
171
|
+
const found = routeFor(routes.success, file);
|
|
172
|
+
return found === undefined ? undefined : { language: found.language, scope: found.scope };
|
|
173
|
+
};
|
|
174
|
+
const now = input.now ?? Date.now();
|
|
175
|
+
// Each family the core does not own compiles and probes its own rules, with
|
|
176
|
+
// the same extractor and matcher the core used for its. Its probe failures
|
|
177
|
+
// join the one refusal below, so a vacuous campaign and a vacuous import
|
|
178
|
+
// rule are reported in the same sentence.
|
|
179
|
+
const loadedExtensions = new Map();
|
|
180
|
+
const extensionVacuous = [];
|
|
181
|
+
for (const extension of extensions) {
|
|
182
|
+
const loaded = extension.load({
|
|
183
|
+
spec: decoded.success.extensions.get(extension.id),
|
|
184
|
+
configPath,
|
|
185
|
+
repoRoot,
|
|
186
|
+
config,
|
|
187
|
+
languages,
|
|
188
|
+
fileSystem,
|
|
189
|
+
extractor,
|
|
190
|
+
syntax,
|
|
191
|
+
routeFor: routeOf,
|
|
192
|
+
now,
|
|
193
|
+
});
|
|
194
|
+
if (Result.isFailure(loaded))
|
|
195
|
+
return Result.fail(loaded.failure);
|
|
196
|
+
loadedExtensions.set(extension.id, loaded.success.value);
|
|
197
|
+
for (const name of loaded.success.vacuous ?? [])
|
|
198
|
+
extensionVacuous.push(name);
|
|
199
|
+
}
|
|
261
200
|
const parsedBy = (rule) => {
|
|
262
201
|
const route = routeFor(routes.success, rule.probe.from);
|
|
263
202
|
return route === undefined
|
|
@@ -271,12 +210,7 @@ export const loadPolicy = (input) => {
|
|
|
271
210
|
...surfaceRulesFailingTheirProbe(surfaceRules.success, extractor).map((rule) => rule.name + (rule.probe.source === undefined ? "" : parsedBy(rule))),
|
|
272
211
|
...structureRulesFailingTheirProbe(structure.success),
|
|
273
212
|
...graphRulesFailingTheirProbe(graph.success),
|
|
274
|
-
...
|
|
275
|
-
? `${failed.name} (its probe ${failed.probe.path} is outside the campaign's own scope)`
|
|
276
|
-
: failed.expected === "fires"
|
|
277
|
-
? `${failed.name} (fires probe ${failed.probe.path} did not fire)`
|
|
278
|
-
: `${failed.name} (ignores probe ${failed.probe.path} fired` +
|
|
279
|
-
(failed.admittedBy === undefined ? ")" : `, admitted by \`${failed.admittedBy}\`)`)),
|
|
213
|
+
...extensionVacuous,
|
|
280
214
|
];
|
|
281
215
|
if (vacuous.length > 0) {
|
|
282
216
|
return Result.fail(new ConfigInvalid({
|
|
@@ -294,10 +228,6 @@ export const loadPolicy = (input) => {
|
|
|
294
228
|
const resolver = makeRouter(configPath, repoRoot, routes.success);
|
|
295
229
|
if (Result.isFailure(resolver))
|
|
296
230
|
return Result.fail(resolver.failure);
|
|
297
|
-
const ledgerDir = config.ledger ?? DEFAULT_LEDGER_DIR;
|
|
298
|
-
const ledgers = readLedgers(configPath, fileSystem, ledgerDir, campaignRules.success);
|
|
299
|
-
if (Result.isFailure(ledgers))
|
|
300
|
-
return Result.fail(ledgers.failure);
|
|
301
231
|
return Result.succeed({
|
|
302
232
|
repoRoot,
|
|
303
233
|
config,
|
|
@@ -308,18 +238,15 @@ export const loadPolicy = (input) => {
|
|
|
308
238
|
graph: graph.success,
|
|
309
239
|
adoption: rules.adoption,
|
|
310
240
|
structure: structure.success,
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
ledgerDir,
|
|
314
|
-
functions,
|
|
315
|
-
reports: input.reports ?? NO_REPORTS,
|
|
316
|
-
now: input.now ?? Date.now(),
|
|
241
|
+
extensions: loadedExtensions,
|
|
242
|
+
now,
|
|
317
243
|
fileSystem,
|
|
318
244
|
languages,
|
|
319
245
|
baseline: makeBaselineFilter(readBaseline(fileSystem, config.baseline)),
|
|
320
246
|
resolver: resolver.success,
|
|
321
247
|
extractor,
|
|
322
|
-
syntax
|
|
248
|
+
syntax,
|
|
249
|
+
routeFor: routeOf,
|
|
323
250
|
ignoreUnresolved: (config.resolve.ignoreUnresolved ?? []).map((pattern) => new RegExp(pattern)),
|
|
324
251
|
notices: decoded.success.notices,
|
|
325
252
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/load/policy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/load/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OPEN_LAYOUT, } from "../domain/architecture-config.js";
|
|
2
2
|
import { fragmentOf } from "./expand.js";
|
|
3
3
|
import { anchored, globToRegexSource, prefixed } from "./glob.js";
|
|
4
|
-
import {
|
|
4
|
+
import { globsOf, } from "./manifest.js";
|
|
5
5
|
const FOLDER_KEY = /\/$/;
|
|
6
6
|
// The marker an open folder's allowlist carries: it admits any name, so it has
|
|
7
7
|
// no layout policy to prove.
|
|
@@ -21,7 +21,7 @@ const alternativesOf = (key) => key
|
|
|
21
21
|
.split(ALTERNATIVE)
|
|
22
22
|
.map(stripSlash)
|
|
23
23
|
.filter((one) => one !== "");
|
|
24
|
-
const expandAliases = (glob, aliases) => {
|
|
24
|
+
export const expandAliases = (glob, aliases) => {
|
|
25
25
|
for (const [alias, target] of Object.entries(aliases)) {
|
|
26
26
|
if (glob === alias)
|
|
27
27
|
return target;
|
|
@@ -61,7 +61,7 @@ const probeMemberName = (match) => {
|
|
|
61
61
|
};
|
|
62
62
|
// Each convention pairs the shape a name must have with a name that does not
|
|
63
63
|
// have it, so the rule's probe is generated rather than written.
|
|
64
|
-
const CONVENTIONS = {
|
|
64
|
+
export const CONVENTIONS = {
|
|
65
65
|
"kebab-case": {
|
|
66
66
|
source: "^[a-z0-9]+(?:-[a-z0-9]+)*$",
|
|
67
67
|
violating: "zzProbeStray",
|
|
@@ -716,193 +716,14 @@ export const lowerManifest = (manifest, languages = [], options = {}) => {
|
|
|
716
716
|
...(rule.via === undefined ? {} : { via: asGraphPatterns(rule.via) ?? [] }),
|
|
717
717
|
})),
|
|
718
718
|
};
|
|
719
|
-
const campaigns = (manifest.campaigns ?? []).map((campaign) => lowerCampaign(campaign, aliases));
|
|
720
719
|
return {
|
|
721
720
|
imports,
|
|
722
721
|
exports,
|
|
723
722
|
members,
|
|
724
723
|
surface,
|
|
725
724
|
graph,
|
|
726
|
-
campaigns,
|
|
727
725
|
adoption: { unrestricted: unrestrictedNodes, partial: partialNodes },
|
|
728
726
|
structure: { roots, folders, parity, naming: namingRules },
|
|
729
727
|
};
|
|
730
728
|
};
|
|
731
|
-
// The keys of a `syntax` term that belong to the engine's rule; `where` is
|
|
732
|
-
// the one that does not.
|
|
733
|
-
const SYNTAX_RULE_KEYS = [
|
|
734
|
-
"pattern",
|
|
735
|
-
"kind",
|
|
736
|
-
"regex",
|
|
737
|
-
"nthChild",
|
|
738
|
-
"inside",
|
|
739
|
-
"has",
|
|
740
|
-
"precedes",
|
|
741
|
-
"follows",
|
|
742
|
-
"all",
|
|
743
|
-
"any",
|
|
744
|
-
"not",
|
|
745
|
-
];
|
|
746
|
-
const syntaxRuleOf = (term) => Object.fromEntries(SYNTAX_RULE_KEYS.flatMap((key) => (term[key] === undefined ? [] : [[key, term[key]]])));
|
|
747
|
-
// The leaf terms a path alone cannot exercise: each reads the file's text,
|
|
748
|
-
// its syntax, or its facts, so a probe for a detector holding one must carry
|
|
749
|
-
// a `source`.
|
|
750
|
-
const TERMS_NEEDING_SOURCE = ["content", "syntax", "exports", "members", "fn"];
|
|
751
|
-
const leafTermsOf = (detector) => {
|
|
752
|
-
if ("all" in detector)
|
|
753
|
-
return detector.all.flatMap(leafTermsOf);
|
|
754
|
-
if ("any" in detector)
|
|
755
|
-
return detector.any.flatMap(leafTermsOf);
|
|
756
|
-
if ("not" in detector)
|
|
757
|
-
return leafTermsOf(detector.not);
|
|
758
|
-
return Object.keys(detector);
|
|
759
|
-
};
|
|
760
|
-
// A campaign's globs resolved: `scope` and a path-shaped `resolves` the way
|
|
761
|
-
// graph rules resolve theirs, `exports`/`members` names the way `surface` and
|
|
762
|
-
// `members` rules do, and the rest carried as written. The `fn` string is
|
|
763
|
-
// kept verbatim for the loader, which holds the function it names.
|
|
764
|
-
const lowerCampaign = (campaign, aliases) => {
|
|
765
|
-
const asPath = (glob) => prefixed(globToRegexSource(expandAliases(glob, aliases), {}, { declaring: false, nextGroup: 1 })
|
|
766
|
-
.source);
|
|
767
|
-
const asName = (globs) => globsOf(globs).map((one) => anchored(globToRegexSource(one, {}, { declaring: false, nextGroup: 1 }).source));
|
|
768
|
-
const name = `campaign/${campaign.id}`;
|
|
769
|
-
const lower = (detector) => {
|
|
770
|
-
if ("all" in detector)
|
|
771
|
-
return { all: detector.all.map(lower) };
|
|
772
|
-
if ("any" in detector)
|
|
773
|
-
return { any: detector.any.map(lower) };
|
|
774
|
-
if ("not" in detector)
|
|
775
|
-
return { not: lower(detector.not) };
|
|
776
|
-
if ("path" in detector) {
|
|
777
|
-
const { convention, ...rest } = detector.path;
|
|
778
|
-
const conventionSource = convention === undefined
|
|
779
|
-
? undefined
|
|
780
|
-
: typeof convention === "string"
|
|
781
|
-
? CONVENTIONS[convention]?.source
|
|
782
|
-
: convention.regex;
|
|
783
|
-
if (convention !== undefined && conventionSource === undefined) {
|
|
784
|
-
throw new Error(`campaign "${campaign.id}" names an unknown convention "${convention}".`);
|
|
785
|
-
}
|
|
786
|
-
if (conventionSource !== undefined && rest.subject === undefined) {
|
|
787
|
-
throw new Error(`campaign "${campaign.id}" states a path convention with no \`subject\`: say which ` +
|
|
788
|
-
`capture group of \`file\` holds the name the convention is about.`);
|
|
789
|
-
}
|
|
790
|
-
return {
|
|
791
|
-
path: {
|
|
792
|
-
file: globsOf(rest.file),
|
|
793
|
-
...(rest.fileNot === undefined ? {} : { fileNot: globsOf(rest.fileNot) }),
|
|
794
|
-
...(rest.subject === undefined ? {} : { subject: rest.subject }),
|
|
795
|
-
...(conventionSource === undefined ? {} : { convention: conventionSource }),
|
|
796
|
-
},
|
|
797
|
-
};
|
|
798
|
-
}
|
|
799
|
-
if ("imports" in detector) {
|
|
800
|
-
const { resolves, symbols } = detector.imports;
|
|
801
|
-
return {
|
|
802
|
-
imports: {
|
|
803
|
-
resolves: typeof resolves === "string" ? asPath(resolves) : resolves,
|
|
804
|
-
...(symbols === undefined ? {} : { symbols: [...symbols] }),
|
|
805
|
-
},
|
|
806
|
-
};
|
|
807
|
-
}
|
|
808
|
-
if ("exports" in detector) {
|
|
809
|
-
const term = detector.exports;
|
|
810
|
-
return {
|
|
811
|
-
exports: {
|
|
812
|
-
...(term.name === undefined ? {} : { name: asName(term.name) }),
|
|
813
|
-
...(term.kinds === undefined ? {} : { kinds: [...term.kinds] }),
|
|
814
|
-
...(term.declares === undefined ? {} : { declares: [...term.declares] }),
|
|
815
|
-
...(term.reexport === undefined ? {} : { reexport: term.reexport }),
|
|
816
|
-
},
|
|
817
|
-
};
|
|
818
|
-
}
|
|
819
|
-
if ("members" in detector) {
|
|
820
|
-
const term = detector.members;
|
|
821
|
-
return {
|
|
822
|
-
members: {
|
|
823
|
-
subject: term.subject,
|
|
824
|
-
...(term.name === undefined ? {} : { name: asName(term.name) }),
|
|
825
|
-
...(term.in === undefined ? {} : { in: asName(term.in) }),
|
|
826
|
-
...(term.declares === undefined ? {} : { declares: [...term.declares] }),
|
|
827
|
-
},
|
|
828
|
-
};
|
|
829
|
-
}
|
|
830
|
-
if ("requires" in detector)
|
|
831
|
-
return { requires: [...detector.requires] };
|
|
832
|
-
if ("content" in detector)
|
|
833
|
-
return { content: { regex: detector.content.regex } };
|
|
834
|
-
if ("report" in detector) {
|
|
835
|
-
// Exactly one of `command` and `file`, and a pattern for `regex`: the
|
|
836
|
-
// manifest schema refused anything else at decode.
|
|
837
|
-
const term = detector.report;
|
|
838
|
-
return {
|
|
839
|
-
report: {
|
|
840
|
-
...(term.command === undefined ? {} : { command: globsOf(term.command) }),
|
|
841
|
-
...(term.file === undefined ? {} : { file: globsOf(term.file) }),
|
|
842
|
-
format: term.format,
|
|
843
|
-
...(term.pattern === undefined ? {} : { pattern: term.pattern }),
|
|
844
|
-
...(term.codes === undefined ? {} : { codes: [...term.codes] }),
|
|
845
|
-
...(term.codesNot === undefined ? {} : { codesNot: [...term.codesNot] }),
|
|
846
|
-
},
|
|
847
|
-
};
|
|
848
|
-
}
|
|
849
|
-
if ("syntax" in detector) {
|
|
850
|
-
const { where } = detector.syntax;
|
|
851
|
-
const narrowed = where === undefined
|
|
852
|
-
? {}
|
|
853
|
-
: {
|
|
854
|
-
where: Object.fromEntries(Object.entries(where).map(([capture, narrowing]) => [
|
|
855
|
-
capture,
|
|
856
|
-
{
|
|
857
|
-
...(narrowing.regex === undefined ? {} : { regex: narrowing.regex }),
|
|
858
|
-
...(narrowing.binding === undefined
|
|
859
|
-
? {}
|
|
860
|
-
: {
|
|
861
|
-
binding: {
|
|
862
|
-
resolves: typeof narrowing.binding.resolves === "string"
|
|
863
|
-
? asPath(narrowing.binding.resolves)
|
|
864
|
-
: narrowing.binding.resolves,
|
|
865
|
-
...(narrowing.binding.member === undefined
|
|
866
|
-
? {}
|
|
867
|
-
: { member: [...narrowing.binding.member] }),
|
|
868
|
-
},
|
|
869
|
-
}),
|
|
870
|
-
},
|
|
871
|
-
])),
|
|
872
|
-
};
|
|
873
|
-
return { syntax: { rule: syntaxRuleOf(detector.syntax), ...narrowed } };
|
|
874
|
-
}
|
|
875
|
-
return { fn: detector.fn };
|
|
876
|
-
};
|
|
877
|
-
// A probe without a source proves only the path; a detector that reads the
|
|
878
|
-
// file needs the file. Refused here, with the term named, rather than at
|
|
879
|
-
// load as a probe that mysteriously never fires.
|
|
880
|
-
const leaves = leafTermsOf(campaign.detect);
|
|
881
|
-
const needsSource = TERMS_NEEDING_SOURCE.filter((term) => leaves.includes(term));
|
|
882
|
-
const probes = [...campaign.probes.fires, ...(campaign.probes.ignores ?? [])];
|
|
883
|
-
const sourceless = probes.find((probe) => probe.source === undefined);
|
|
884
|
-
if (needsSource.length > 0 && sourceless !== undefined) {
|
|
885
|
-
throw new Error(`campaign "${campaign.id}" has a probe (${sourceless.path}) with no \`source\`, and its ` +
|
|
886
|
-
`detector holds a ${needsSource.map((term) => `\`${term}\``).join(", ")} term, which ` +
|
|
887
|
-
`a path alone cannot exercise. Give every probe a source.`);
|
|
888
|
-
}
|
|
889
|
-
if (campaign.probes.fires.length === 0) {
|
|
890
|
-
throw new Error(`campaign "${campaign.id}" carries no \`probes.fires\`. A campaign proves it can fire ` +
|
|
891
|
-
`the way every rule does; write at least one source it must report.`);
|
|
892
|
-
}
|
|
893
|
-
return {
|
|
894
|
-
name,
|
|
895
|
-
id: campaign.id,
|
|
896
|
-
...(campaign.title === undefined ? {} : { title: campaign.title }),
|
|
897
|
-
message: campaign.how,
|
|
898
|
-
why: campaign.why,
|
|
899
|
-
...(campaign.owner === undefined ? {} : { owner: campaign.owner }),
|
|
900
|
-
scope: globsOf(campaign.scope).map(asPath),
|
|
901
|
-
unit: campaign.unit,
|
|
902
|
-
detect: lower(campaign.detect),
|
|
903
|
-
probes: { fires: [...campaign.probes.fires], ignores: [...(campaign.probes.ignores ?? [])] },
|
|
904
|
-
staleAfter: durationMs(campaign.staleAfter),
|
|
905
|
-
onComplete: campaign.onComplete ?? "keep",
|
|
906
|
-
};
|
|
907
|
-
};
|
|
908
729
|
//# sourceMappingURL=compile.js.map
|