@intentius/chant 0.44.13 → 0.44.14
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/dist/config.d.ts.map +1 -1
- package/dist/op/index.d.ts +1 -1
- package/dist/op/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config.test.ts +56 -1
- package/src/config.ts +51 -1
- package/src/op/builders-exports.test.ts +60 -0
- package/src/op/index.ts +1 -1
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/op/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Op, phase, activity, gate, build, kubectlApply, helmInstall, waitForStack, gitlabPipeline, lifecycleSnapshot, shell, teardown, k3dUp, k3dDown, flociUp, flociDown, flociAzUp, flociAzDown, flociGcpUp, flociGcpDown, httpCheck, azGroupEnsure, azGroupDelete, azApply, azDelete, awsApply, awsDelete, gcpApply, gcpDelete, policyGate, spriteCreate, spriteExec, spriteCheckpoint, spriteRestore, listCheckpoints, spriteDestroy, spriteWriteFile, spriteReadFile, spriteListDir, spriteRemove, spriteApplyNetworkPolicy, spriteApplyServices, spriteTaskCreate, spriteTaskRefresh, spriteTaskRelease, spritesUp, spritesDown } from "./builders.js";
|
|
1
|
+
export { Op, phase, activity, gate, build, kubectlApply, helmInstall, waitForStack, waitForReady, gitlabPipeline, lifecycleSnapshot, shell, teardown, k3dUp, k3dDown, flociUp, flociDown, flociAzUp, flociAzDown, flociGcpUp, flociGcpDown, httpCheck, azGroupEnsure, azGroupDelete, azApply, azDelete, awsApply, awsDelete, gcpApply, gcpDelete, policyGate, spriteCreate, spriteExec, spriteCheckpoint, spriteRestore, listCheckpoints, spriteDestroy, spriteWriteFile, spriteReadFile, spriteListDir, spriteRemove, spriteApplyNetworkPolicy, spriteApplyServices, spriteTaskCreate, spriteTaskRefresh, spriteTaskRelease, spritesUp, spritesDown } from "./builders.js";
|
|
2
2
|
export { OpResource } from "./resource.js";
|
|
3
3
|
export { safeHeartbeat, sleep } from "./activity-runtime.js";
|
|
4
4
|
export { emulatorLifecycle, emulatorsOf, endpointEnvVars } from "./emulator-lifecycle.js";
|
package/dist/op/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/op/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/op/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EACvF,cAAc,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EACtF,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAC3D,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EACrG,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EACzF,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAC5D,wBAAwB,EAAE,mBAAmB,EAC7C,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EACtD,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvF,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrI,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpH,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpF,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClH,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
package/package.json
CHANGED
package/src/config.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, test, expect, beforeEach, afterEach } from "vitest";
|
|
1
|
+
import { describe, test, expect, beforeEach, afterEach, vi } from "vitest";
|
|
2
2
|
import {
|
|
3
3
|
loadChantConfig,
|
|
4
4
|
loadChantConfigUpward,
|
|
@@ -176,6 +176,61 @@ describe("loadChantConfigUpward (#1502 — lint fragments do not end the walk)",
|
|
|
176
176
|
expect(result.config.ownership?.stack).toBe("nested");
|
|
177
177
|
});
|
|
178
178
|
|
|
179
|
+
// #1711 — JSON has no comments, so a project explaining its rule disables
|
|
180
|
+
// reaches for an underscore key. Both CockroachDB examples carried
|
|
181
|
+
// `_ruleNotes` in every stack's fragment, and that one key stopped the walk:
|
|
182
|
+
// `chant build src/east` resolved the fragment, found no `buildParams`, and
|
|
183
|
+
// emitted `...@undefined.iam.gserviceaccount.com` without a word.
|
|
184
|
+
test("an underscore comment key does not turn a fragment into a project config", async () => {
|
|
185
|
+
mkdirSync(SRC, { recursive: true });
|
|
186
|
+
writeFileSync(
|
|
187
|
+
join(SRC, "chant.config.json"),
|
|
188
|
+
JSON.stringify({
|
|
189
|
+
extends: ["@intentius/chant/lint/presets/strict"],
|
|
190
|
+
_ruleNotes: { COR001: "inline objects read better here" },
|
|
191
|
+
rules: { COR001: "off" },
|
|
192
|
+
}),
|
|
193
|
+
);
|
|
194
|
+
writeFileSync(
|
|
195
|
+
join(TEST_DIR, "chant.config.json"),
|
|
196
|
+
JSON.stringify({
|
|
197
|
+
ownership: { stack: "crdb-multi-region" },
|
|
198
|
+
buildParams: { projectId: { type: "string", default: "my-project" } },
|
|
199
|
+
}),
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
const result = await loadChantConfigUpward(SRC);
|
|
203
|
+
expect(result.config.ownership?.stack).toBe("crdb-multi-region");
|
|
204
|
+
expect(result.config.buildParams?.projectId?.default).toBe("my-project");
|
|
205
|
+
expect(result.configPath).toBe(join(TEST_DIR, "chant.config.json"));
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
test("a non-comment unknown key still stops the walk, but says so", async () => {
|
|
209
|
+
mkdirSync(SRC, { recursive: true });
|
|
210
|
+
writeFileSync(
|
|
211
|
+
join(SRC, "chant.config.json"),
|
|
212
|
+
JSON.stringify({ extends: ["@intentius/chant/lint/presets/strict"], ruleNotes: { a: "b" } }),
|
|
213
|
+
);
|
|
214
|
+
writeFileSync(
|
|
215
|
+
join(TEST_DIR, "chant.config.json"),
|
|
216
|
+
JSON.stringify({ ownership: { stack: "root" } }),
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
const warn = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
220
|
+
try {
|
|
221
|
+
const result = await loadChantConfigUpward(SRC);
|
|
222
|
+
// Unchanged behaviour: the fragment is the project config. What is new is
|
|
223
|
+
// that the build no longer loses the root config in silence.
|
|
224
|
+
expect(result.configPath).toBe(join(SRC, "chant.config.json"));
|
|
225
|
+
expect(result.config.ownership).toBeUndefined();
|
|
226
|
+
const said = warn.mock.calls.flat().join("\n");
|
|
227
|
+
expect(said).toContain("declares no project-level key");
|
|
228
|
+
expect(said).toContain('"ruleNotes"');
|
|
229
|
+
} finally {
|
|
230
|
+
warn.mockRestore();
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
|
|
179
234
|
test("a fragment-only project resolves to the default config at the boundary", async () => {
|
|
180
235
|
mkdirSync(SRC, { recursive: true });
|
|
181
236
|
writeFileSync(join(TEST_DIR, "package.json"), JSON.stringify({ name: "boundary" }));
|
package/src/config.ts
CHANGED
|
@@ -414,6 +414,7 @@ export async function loadChantConfigUpward(startDir: string): Promise<ResolvedC
|
|
|
414
414
|
if (parent === dir) break;
|
|
415
415
|
({ dir, configPath } = findProjectConfig(parent));
|
|
416
416
|
}
|
|
417
|
+
if (configPath) warnIfFragmentShadowsProjectConfig(configPath);
|
|
417
418
|
return loadChantConfig(dir);
|
|
418
419
|
}
|
|
419
420
|
|
|
@@ -426,12 +427,25 @@ export async function loadChantConfigUpward(startDir: string): Promise<ResolvedC
|
|
|
426
427
|
*/
|
|
427
428
|
const LINT_FRAGMENT_KEYS = new Set(["$schema", "extends", "rules", "overrides", "plugins", "policies"]);
|
|
428
429
|
|
|
430
|
+
/**
|
|
431
|
+
* JSON has no comments, so a project that wants to explain why it disabled a
|
|
432
|
+
* rule reaches for an underscore-prefixed key. chant #1711: both CockroachDB
|
|
433
|
+
* examples carried a `_ruleNotes` object in every stack's fragment, and one
|
|
434
|
+
* unrecognized key was enough to stop the walk — `chant build src/east`
|
|
435
|
+
* resolved the fragment as the project config, found no `buildParams`, no
|
|
436
|
+
* `ownership` and no `lexicons`, and emitted
|
|
437
|
+
* `gke-crdb-east-crdb@undefined.iam.gserviceaccount.com`. Silently.
|
|
438
|
+
*
|
|
439
|
+
* An underscore key is a comment. It does not make a fragment a project config.
|
|
440
|
+
*/
|
|
441
|
+
const isCommentKey = (k: string): boolean => k.startsWith("_");
|
|
442
|
+
|
|
429
443
|
function isLintOnlyFragment(configPath: string): boolean {
|
|
430
444
|
if (!configPath.endsWith("chant.config.json")) return false;
|
|
431
445
|
try {
|
|
432
446
|
const parsed = JSON.parse(readFileSync(configPath, "utf-8")) as unknown;
|
|
433
447
|
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return false;
|
|
434
|
-
const keys = Object.keys(parsed);
|
|
448
|
+
const keys = Object.keys(parsed).filter((k) => !isCommentKey(k));
|
|
435
449
|
return keys.length > 0 && keys.every((k) => LINT_FRAGMENT_KEYS.has(k));
|
|
436
450
|
} catch {
|
|
437
451
|
// Unreadable/unparseable JSON: let loadChantConfig surface the real error
|
|
@@ -440,6 +454,42 @@ function isLintOnlyFragment(configPath: string): boolean {
|
|
|
440
454
|
}
|
|
441
455
|
}
|
|
442
456
|
|
|
457
|
+
/**
|
|
458
|
+
* The `chant.config.json` the walk stopped at declares no project-level key at
|
|
459
|
+
* all — so it is about to be used as the project config while carrying none of
|
|
460
|
+
* the things a project config exists to carry.
|
|
461
|
+
*
|
|
462
|
+
* The comment-key rule above fixes the case that bit (chant #1711), but the
|
|
463
|
+
* hole it came from is general: any key outside {@link LINT_FRAGMENT_KEYS}
|
|
464
|
+
* turns a fragment into the project config, and the consequence is a build
|
|
465
|
+
* that silently loses every parameter, the ownership marker and the lexicon
|
|
466
|
+
* list. This says so, naming the key responsible, instead of leaving it to be
|
|
467
|
+
* discovered in the output.
|
|
468
|
+
*/
|
|
469
|
+
function warnIfFragmentShadowsProjectConfig(configPath: string): void {
|
|
470
|
+
if (!configPath.endsWith("chant.config.json")) return;
|
|
471
|
+
try {
|
|
472
|
+
const parsed = JSON.parse(readFileSync(configPath, "utf-8")) as Record<string, unknown>;
|
|
473
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return;
|
|
474
|
+
const keys = Object.keys(parsed).filter((k) => !isCommentKey(k));
|
|
475
|
+
if (keys.some((k) => !LINT_FRAGMENT_KEYS.has(k)) && !keys.some((k) => PROJECT_CONFIG_KEYS.has(k))) {
|
|
476
|
+
const offenders = keys.filter((k) => !LINT_FRAGMENT_KEYS.has(k));
|
|
477
|
+
console.error(
|
|
478
|
+
`warning: ${configPath} is being used as the project config, but declares no project-level ` +
|
|
479
|
+
`key (${[...PROJECT_CONFIG_KEYS].slice(0, 4).join(", ")}, …). ` +
|
|
480
|
+
`${offenders.length === 1 ? "The key" : "The keys"} ${offenders.map((k) => `"${k}"`).join(", ")} ` +
|
|
481
|
+
`stopped the walk to the real one — any config above this file is being ignored. ` +
|
|
482
|
+
`Prefix a comment key with "_", or move the key to the project config. (chant #1711)`,
|
|
483
|
+
);
|
|
484
|
+
}
|
|
485
|
+
} catch {
|
|
486
|
+
// Unreadable/unparseable: loadChantConfig reports it properly.
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/** Top-level keys that make a config a *project* config rather than a lint fragment. */
|
|
491
|
+
const PROJECT_CONFIG_KEYS = new Set(Object.keys(ChantConfigSchema.shape).filter((k) => k !== "lint"));
|
|
492
|
+
|
|
443
493
|
/**
|
|
444
494
|
* Resolve the ownership marker to stamp from project config, or undefined when
|
|
445
495
|
* ownership marking is off (no `stack`, or `enabled: false`).
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { describe, test, expect } from "vitest";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import * as opIndex from "./index";
|
|
5
|
+
import * as builders from "./builders";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* chant #1715 — `op/index.ts` re-exports the step builders from `./builders`
|
|
9
|
+
* by name, in a hand-maintained list of forty-odd identifiers. `waitForReady`
|
|
10
|
+
* — the CRD-aware readiness builder #365 added, with its own readiness spec,
|
|
11
|
+
* kstatus default and per-kind overrides — was defined in `builders.ts` and
|
|
12
|
+
* missing from that list, so no project could reach it from the day it landed.
|
|
13
|
+
* The activity behind it had been registered in the k8s lexicon the whole
|
|
14
|
+
* time; nothing noticed because every readiness wait in the repo predates it.
|
|
15
|
+
*
|
|
16
|
+
* The list drifting from the thing it lists is the bug, not the one missing
|
|
17
|
+
* name. Same shape as #1347's assertion over the `LexiconPlugin` optional-member
|
|
18
|
+
* table.
|
|
19
|
+
*/
|
|
20
|
+
describe("op builders are all reachable (#1715)", () => {
|
|
21
|
+
test("every value exported from builders.ts is re-exported from op/index.ts", () => {
|
|
22
|
+
const missing = Object.keys(builders).filter((name) => !(name in opIndex));
|
|
23
|
+
expect(
|
|
24
|
+
missing,
|
|
25
|
+
`builders.ts exports these, and op/index.ts does not re-export them — add them to the ` +
|
|
26
|
+
`export list at the top of op/index.ts, or a project cannot use them:\n ${missing.join("\n ")}`,
|
|
27
|
+
).toEqual([]);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("the temporal lexicon re-exports the same set", () => {
|
|
31
|
+
// The lexicon is what a project actually imports from
|
|
32
|
+
// (`@intentius/chant-lexicon-temporal`), and it re-states the list a third
|
|
33
|
+
// time rather than re-exporting wholesale — so it can drift independently.
|
|
34
|
+
const src = readFileSync(
|
|
35
|
+
join(import.meta.dirname, "../../../../lexicons/temporal/src/index.ts"),
|
|
36
|
+
"utf-8",
|
|
37
|
+
);
|
|
38
|
+
const block = src.match(/export \{([^}]*)\} from "@intentius\/chant\/op";/)?.[1] ?? "";
|
|
39
|
+
const reExported = new Set(
|
|
40
|
+
block.split(",").map((s) => s.trim()).filter(Boolean),
|
|
41
|
+
);
|
|
42
|
+
// The sprites family reaches projects through the fly lexicon, not this
|
|
43
|
+
// one. Named rather than prefix-matched, because `listCheckpoints` is one
|
|
44
|
+
// of them and does not look like one — which this test caught on its
|
|
45
|
+
// first run.
|
|
46
|
+
const FLY_SURFACE = new Set([
|
|
47
|
+
"spriteCreate", "spriteExec", "spriteCheckpoint", "spriteRestore",
|
|
48
|
+
"listCheckpoints", "spriteDestroy", "spriteWriteFile", "spriteReadFile",
|
|
49
|
+
"spriteListDir", "spriteRemove", "spriteApplyNetworkPolicy",
|
|
50
|
+
"spriteApplyServices", "spriteTaskCreate", "spriteTaskRefresh",
|
|
51
|
+
"spriteTaskRelease", "spritesUp", "spritesDown",
|
|
52
|
+
]);
|
|
53
|
+
const expected = Object.keys(builders).filter((n) => !FLY_SURFACE.has(n));
|
|
54
|
+
const missing = expected.filter((name) => !reExported.has(name));
|
|
55
|
+
expect(
|
|
56
|
+
missing,
|
|
57
|
+
`lexicons/temporal/src/index.ts does not re-export these builders:\n ${missing.join("\n ")}`,
|
|
58
|
+
).toEqual([]);
|
|
59
|
+
});
|
|
60
|
+
});
|
package/src/op/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Op, phase, activity, gate, build, kubectlApply, helmInstall, waitForStack,
|
|
1
|
+
export { Op, phase, activity, gate, build, kubectlApply, helmInstall, waitForStack, waitForReady,
|
|
2
2
|
gitlabPipeline, lifecycleSnapshot, shell, teardown, k3dUp, k3dDown, flociUp, flociDown,
|
|
3
3
|
flociAzUp, flociAzDown, flociGcpUp, flociGcpDown, httpCheck,
|
|
4
4
|
azGroupEnsure, azGroupDelete, azApply, azDelete, awsApply, awsDelete, gcpApply, gcpDelete, policyGate,
|