@metaobjectsdev/cli 1.0.0-rc.4 → 1.0.0-rc.6
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/src/commands/docs.d.ts.map +1 -1
- package/dist/src/commands/docs.js +41 -9
- package/dist/src/commands/docs.js.map +1 -1
- package/dist/src/commands/gen.d.ts +8 -0
- package/dist/src/commands/gen.d.ts.map +1 -1
- package/dist/src/commands/gen.js +17 -4
- package/dist/src/commands/gen.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +181 -35
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/migrate.d.ts +6 -0
- package/dist/src/commands/migrate.d.ts.map +1 -1
- package/dist/src/commands/migrate.js +11 -5
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/prompt-snapshot.d.ts.map +1 -1
- package/dist/src/commands/prompt-snapshot.js +2 -1
- package/dist/src/commands/prompt-snapshot.js.map +1 -1
- package/dist/src/commands/types.d.ts.map +1 -1
- package/dist/src/commands/types.js +12 -3
- package/dist/src/commands/types.js.map +1 -1
- package/dist/src/commands/upgrade.d.ts.map +1 -1
- package/dist/src/commands/upgrade.js +38 -4
- package/dist/src/commands/upgrade.js.map +1 -1
- package/dist/src/commands/verify.d.ts.map +1 -1
- package/dist/src/commands/verify.js +108 -30
- package/dist/src/commands/verify.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +55 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/advisory.d.ts +6 -0
- package/dist/src/lib/advisory.d.ts.map +1 -1
- package/dist/src/lib/advisory.js +13 -0
- package/dist/src/lib/advisory.js.map +1 -1
- package/dist/src/lib/anti-patterns.d.ts.map +1 -1
- package/dist/src/lib/anti-patterns.js +2 -4
- package/dist/src/lib/anti-patterns.js.map +1 -1
- package/dist/src/lib/args.d.ts +251 -12
- package/dist/src/lib/args.d.ts.map +1 -1
- package/dist/src/lib/args.js +119 -92
- package/dist/src/lib/args.js.map +1 -1
- package/dist/src/lib/base-url-advisory.d.ts +37 -0
- package/dist/src/lib/base-url-advisory.d.ts.map +1 -0
- package/dist/src/lib/base-url-advisory.js +162 -0
- package/dist/src/lib/base-url-advisory.js.map +1 -0
- package/dist/src/lib/codegen-drift.d.ts +8 -0
- package/dist/src/lib/codegen-drift.d.ts.map +1 -1
- package/dist/src/lib/codegen-drift.js +43 -10
- package/dist/src/lib/codegen-drift.js.map +1 -1
- package/dist/src/lib/detect-stack.d.ts +17 -0
- package/dist/src/lib/detect-stack.d.ts.map +1 -1
- package/dist/src/lib/detect-stack.js +64 -2
- package/dist/src/lib/detect-stack.js.map +1 -1
- package/dist/src/lib/docs-drift.d.ts +12 -1
- package/dist/src/lib/docs-drift.d.ts.map +1 -1
- package/dist/src/lib/docs-drift.js +85 -16
- package/dist/src/lib/docs-drift.js.map +1 -1
- package/dist/src/lib/git-ignore.d.ts +59 -0
- package/dist/src/lib/git-ignore.d.ts.map +1 -0
- package/dist/src/lib/git-ignore.js +120 -0
- package/dist/src/lib/git-ignore.js.map +1 -0
- package/dist/src/lib/ignored-scaffold-check.d.ts +12 -0
- package/dist/src/lib/ignored-scaffold-check.d.ts.map +1 -0
- package/dist/src/lib/ignored-scaffold-check.js +75 -0
- package/dist/src/lib/ignored-scaffold-check.js.map +1 -0
- package/dist/src/lib/load-error.d.ts +46 -0
- package/dist/src/lib/load-error.d.ts.map +1 -0
- package/dist/src/lib/load-error.js +51 -0
- package/dist/src/lib/load-error.js.map +1 -0
- package/dist/src/lib/load-metaobjects-config.d.ts.map +1 -1
- package/dist/src/lib/load-metaobjects-config.js +65 -1
- package/dist/src/lib/load-metaobjects-config.js.map +1 -1
- package/dist/src/lib/manifest-ignored-check.d.ts.map +1 -1
- package/dist/src/lib/manifest-ignored-check.js +23 -36
- package/dist/src/lib/manifest-ignored-check.js.map +1 -1
- package/dist/src/lib/output.d.ts +22 -1
- package/dist/src/lib/output.d.ts.map +1 -1
- package/dist/src/lib/output.js +39 -12
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/rel-posix.d.ts +5 -0
- package/dist/src/lib/rel-posix.d.ts.map +1 -0
- package/dist/src/lib/rel-posix.js +23 -0
- package/dist/src/lib/rel-posix.js.map +1 -0
- package/dist/src/lib/replay-remedy.d.ts +2 -0
- package/dist/src/lib/replay-remedy.d.ts.map +1 -0
- package/dist/src/lib/replay-remedy.js +69 -0
- package/dist/src/lib/replay-remedy.js.map +1 -0
- package/dist/src/lib/requirement-lint.d.ts.map +1 -1
- package/dist/src/lib/requirement-lint.js +25 -5
- package/dist/src/lib/requirement-lint.js.map +1 -1
- package/package.json +10 -10
- package/src/commands/docs.ts +51 -12
- package/src/commands/gen.ts +19 -4
- package/src/commands/init.ts +188 -39
- package/src/commands/migrate.ts +13 -5
- package/src/commands/prompt-snapshot.ts +2 -1
- package/src/commands/types.ts +12 -3
- package/src/commands/upgrade.ts +44 -4
- package/src/commands/verify.ts +120 -32
- package/src/index.ts +55 -8
- package/src/lib/advisory.ts +15 -0
- package/src/lib/anti-patterns.ts +2 -5
- package/src/lib/args.ts +154 -109
- package/src/lib/base-url-advisory.ts +173 -0
- package/src/lib/codegen-drift.ts +52 -9
- package/src/lib/detect-stack.ts +73 -2
- package/src/lib/docs-drift.ts +107 -17
- package/src/lib/git-ignore.ts +159 -0
- package/src/lib/ignored-scaffold-check.ts +78 -0
- package/src/lib/load-error.ts +89 -0
- package/src/lib/load-metaobjects-config.ts +58 -1
- package/src/lib/manifest-ignored-check.ts +25 -33
- package/src/lib/output.ts +64 -11
- package/src/lib/rel-posix.ts +25 -0
- package/src/lib/replay-remedy.ts +78 -0
- package/src/lib/requirement-lint.ts +26 -5
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// "Does this project deliberately not commit these files?" — asked of git, once.
|
|
2
|
+
//
|
|
3
|
+
// `check-ignore` is the only reliable answer. Parsing `.gitignore` by hand would have
|
|
4
|
+
// to reimplement precedence, negation and nested ignore files, and the traps are
|
|
5
|
+
// exactly the rules a hand-rolled parser gets wrong: a directory pattern (`docs/`)
|
|
6
|
+
// makes a `!` negation inside it unreachable, and a TRACKED file is never reported
|
|
7
|
+
// ignored no matter what pattern matches it.
|
|
8
|
+
//
|
|
9
|
+
// That last property is what makes this usable as an exemption: a page the project
|
|
10
|
+
// has committed is always compared, whatever its `.gitignore` says. So a rule built
|
|
11
|
+
// on this cannot be used to hide a file the project actually tracks.
|
|
12
|
+
//
|
|
13
|
+
// Paths are evaluated BY NAME — a path need not exist on disk for git to answer. That
|
|
14
|
+
// is deliberate and load-bearing for the docs gate: the exemption is computed over
|
|
15
|
+
// the set a fresh run WOULD emit, so the verdict is identical on a developer box
|
|
16
|
+
// where those files are present and on a CI runner where they are not.
|
|
17
|
+
import { spawnSync } from "node:child_process";
|
|
18
|
+
import { toPosix } from "./rel-posix.js";
|
|
19
|
+
/** A path that cannot exist, used to neutralise a per-user excludes file. */
|
|
20
|
+
const NO_SUCH_EXCLUDES_FILE = "/dev/null/metaobjects-no-global-excludes";
|
|
21
|
+
/**
|
|
22
|
+
* Ask git which of `rels` are ignored, relative to `dir`.
|
|
23
|
+
*
|
|
24
|
+
* Returns `unavailable` — never throws, never guesses — when git is not on PATH or
|
|
25
|
+
* `dir` is not inside a repository. A caller must decide what that means for it;
|
|
26
|
+
* silently treating "cannot say" as "nothing is ignored" is a fallback that lies, and
|
|
27
|
+
* the callers here say so out loud instead.
|
|
28
|
+
*/
|
|
29
|
+
export function gitIgnored(dir, rels, opts) {
|
|
30
|
+
if (rels.length === 0)
|
|
31
|
+
return { ignored: new Set() };
|
|
32
|
+
const gitBin = process.env.META_GEN_GIT ?? "git";
|
|
33
|
+
const args = [];
|
|
34
|
+
if (!opts.honourGlobalExcludes) {
|
|
35
|
+
args.push("-c", `core.excludesFile=${NO_SUCH_EXCLUDES_FILE}`);
|
|
36
|
+
}
|
|
37
|
+
args.push("-C", dir, "check-ignore", "--stdin", "-z");
|
|
38
|
+
// Forward slashes: git speaks them on every platform, and `listFiles` hands us
|
|
39
|
+
// platform separators.
|
|
40
|
+
const input = rels.map(toPosix).join("\0");
|
|
41
|
+
let res;
|
|
42
|
+
try {
|
|
43
|
+
res = spawnSync(gitBin, args, { encoding: "utf-8", input });
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
return { unavailable: `git could not be run (${err.message})` };
|
|
47
|
+
}
|
|
48
|
+
if (res.error !== undefined) {
|
|
49
|
+
return { unavailable: "git is not on PATH" };
|
|
50
|
+
}
|
|
51
|
+
// 0 = at least one ignored, 1 = none ignored, anything else = not a repository
|
|
52
|
+
// (or a git error), which is a different fact from "nothing is ignored".
|
|
53
|
+
if (res.status === 1)
|
|
54
|
+
return { ignored: new Set() };
|
|
55
|
+
if (res.status !== 0) {
|
|
56
|
+
const stderr = (res.stderr ?? "").split("\n")[0]?.trim();
|
|
57
|
+
return {
|
|
58
|
+
unavailable: stderr !== undefined && stderr !== ""
|
|
59
|
+
? stderr
|
|
60
|
+
: `'${dir}' is not inside a git repository`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const ignored = new Set((res.stdout ?? "").split("\0").map((p) => p.trim()).filter((p) => p !== ""));
|
|
64
|
+
return { ignored };
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Single-path convenience: true / false / undefined when git cannot say.
|
|
68
|
+
*
|
|
69
|
+
* `honourGlobalExcludes` is the caller's decision — see the option's doc.
|
|
70
|
+
*/
|
|
71
|
+
export function isGitIgnored(dir, rel, opts) {
|
|
72
|
+
const res = gitIgnored(dir, [rel], opts);
|
|
73
|
+
if ("unavailable" in res)
|
|
74
|
+
return undefined;
|
|
75
|
+
return res.ignored.has(toPosix(rel));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* WHICH rule ignores `rel` — the `.gitignore` file, its line, and the pattern.
|
|
79
|
+
*
|
|
80
|
+
* Advisories that tell an adopter to fix an ignore rule have to name the rule that is
|
|
81
|
+
* actually in force, not a conventional location. The exclusion can live in ANY
|
|
82
|
+
* `.gitignore` up the tree, in `.git/info/exclude`, or in a per-user excludes file, and an
|
|
83
|
+
* advisory that assumes one of them sends the reader to edit a file that does not hold the
|
|
84
|
+
* rule — after which the same advisory prints again, unchanged. `git check-ignore -v`
|
|
85
|
+
* answers it exactly, so nothing has to be assumed.
|
|
86
|
+
*
|
|
87
|
+
* `undefined` when git cannot say or nothing matches. The verdict itself still comes from
|
|
88
|
+
* `isGitIgnored`; this is only for the message, so a failure here degrades the wording
|
|
89
|
+
* rather than the check.
|
|
90
|
+
*/
|
|
91
|
+
export function gitIgnoreSource(dir, rel, opts) {
|
|
92
|
+
const gitBin = process.env.META_GEN_GIT ?? "git";
|
|
93
|
+
const args = [];
|
|
94
|
+
if (!opts.honourGlobalExcludes) {
|
|
95
|
+
args.push("-c", `core.excludesFile=${NO_SUCH_EXCLUDES_FILE}`);
|
|
96
|
+
}
|
|
97
|
+
args.push("-C", dir, "check-ignore", "-v", "--", toPosix(rel));
|
|
98
|
+
let res;
|
|
99
|
+
try {
|
|
100
|
+
res = spawnSync(gitBin, args, { encoding: "utf-8" });
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
if (res.error !== undefined || res.status !== 0)
|
|
106
|
+
return undefined;
|
|
107
|
+
// `<source>:<line>:<pattern>\t<path>` — the source may itself contain a colon on
|
|
108
|
+
// Windows, so split from the RIGHT of the first tab-delimited field.
|
|
109
|
+
const first = (res.stdout ?? "").split("\n")[0];
|
|
110
|
+
if (first === undefined || first === "")
|
|
111
|
+
return undefined;
|
|
112
|
+
const lhs = first.split("\t")[0];
|
|
113
|
+
if (lhs === undefined)
|
|
114
|
+
return undefined;
|
|
115
|
+
const m = /^(.*):(\d+):(.*)$/.exec(lhs);
|
|
116
|
+
if (m === null)
|
|
117
|
+
return undefined;
|
|
118
|
+
return { file: m[1], line: m[2], pattern: m[3] };
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=git-ignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-ignore.js","sourceRoot":"","sources":["../../../src/lib/git-ignore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Warn when some of the scaffolded paths are git-ignored, naming how many and where.
|
|
3
|
+
*
|
|
4
|
+
* Silent when: nothing is ignored, the project is not a git repository, or git cannot be
|
|
5
|
+
* consulted — "cannot say" must never be reported as "there is a problem".
|
|
6
|
+
*
|
|
7
|
+
* `honourGlobalExcludes: false` for the same reason the docs-drift gate uses it: this is a
|
|
8
|
+
* property of the REPOSITORY, and a personal `~/.gitignore` is not something a teammate
|
|
9
|
+
* shares. A warning that fires for one developer and not another is worse than none.
|
|
10
|
+
*/
|
|
11
|
+
export declare function reportIgnoredScaffold(cwd: string, created: readonly string[]): void;
|
|
12
|
+
//# sourceMappingURL=ignored-scaffold-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignored-scaffold-check.d.ts","sourceRoot":"","sources":["../../../src/lib/ignored-scaffold-check.ts"],"names":[],"mappings":"AA0CA;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAyBnF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Advisory: did the scaffold land in a directory this repository ignores?
|
|
2
|
+
//
|
|
3
|
+
// `meta init` reports "(11 files)". Eight of them go under `.claude/skills/`, and many
|
|
4
|
+
// projects git-ignore `.claude/` — commonly under a comment about credentials, which is a
|
|
5
|
+
// defensible convention, not a mistake. Ignored, those files exist only on the machine that
|
|
6
|
+
// ran the command: never committed, absent from CI and from a fresh clone, invisible to a
|
|
7
|
+
// teammate — while `.metaobjects/.agent-context.json`, which IS committed, records every one
|
|
8
|
+
// of them. The count says eleven; the repository gets three.
|
|
9
|
+
//
|
|
10
|
+
// The failure is INVISIBLE, which is why it is worth a check rather than a doc: nothing
|
|
11
|
+
// errors, nothing looks wrong, and the whole downstream agent-context design is simply void
|
|
12
|
+
// for that repo.
|
|
13
|
+
//
|
|
14
|
+
// Deliberately ADVISORY. Ignoring `.claude/` may be exactly what the project wants — it is a
|
|
15
|
+
// per-repo policy call, and a scaffolder has no standing to fail a build over it.
|
|
16
|
+
import { isAbsolute, relative } from "node:path";
|
|
17
|
+
import { log } from "./log.js";
|
|
18
|
+
import { gitIgnored } from "./git-ignore.js";
|
|
19
|
+
import { toPosix } from "./rel-posix.js";
|
|
20
|
+
/**
|
|
21
|
+
* `meta init` records what it created as paths RELATIVE TO THE PROJECT, and one of them
|
|
22
|
+
* carries a display decoration ("CLAUDE.md (created with MetaObjects @import)") because the
|
|
23
|
+
* same array is printed back to the user. Normalize both into a plain project-relative,
|
|
24
|
+
* POSIX-separated path, and drop anything outside the project.
|
|
25
|
+
*
|
|
26
|
+
* The relative case is why this exists at all: `relative(cwd, p)` resolves BOTH arguments
|
|
27
|
+
* against the ambient `process.cwd()`, so handing it an already-relative path under `--cwd`
|
|
28
|
+
* produced a "../"-prefixed result for every entry, the filter dropped them all, and the
|
|
29
|
+
* advisory returned before consulting git. It fired only when the process happened to be
|
|
30
|
+
* running in the project directory — silent on the path the check exists for.
|
|
31
|
+
*/
|
|
32
|
+
function toProjectRelative(cwd, p) {
|
|
33
|
+
// Strip a trailing display decoration; handed to git verbatim it is not a path, so a
|
|
34
|
+
// repository ignoring that file was never told about it.
|
|
35
|
+
const bare = p.replace(/\s+\(.*\)$/, "");
|
|
36
|
+
const rel = toPosix(isAbsolute(bare) ? relative(cwd, bare) : bare);
|
|
37
|
+
if (rel.length === 0 || rel === ".." || rel.startsWith("../"))
|
|
38
|
+
return undefined;
|
|
39
|
+
return rel;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Warn when some of the scaffolded paths are git-ignored, naming how many and where.
|
|
43
|
+
*
|
|
44
|
+
* Silent when: nothing is ignored, the project is not a git repository, or git cannot be
|
|
45
|
+
* consulted — "cannot say" must never be reported as "there is a problem".
|
|
46
|
+
*
|
|
47
|
+
* `honourGlobalExcludes: false` for the same reason the docs-drift gate uses it: this is a
|
|
48
|
+
* property of the REPOSITORY, and a personal `~/.gitignore` is not something a teammate
|
|
49
|
+
* shares. A warning that fires for one developer and not another is worse than none.
|
|
50
|
+
*/
|
|
51
|
+
export function reportIgnoredScaffold(cwd, created) {
|
|
52
|
+
const rels = created
|
|
53
|
+
.map((p) => toProjectRelative(cwd, p))
|
|
54
|
+
.filter((p) => p !== undefined);
|
|
55
|
+
if (rels.length === 0)
|
|
56
|
+
return;
|
|
57
|
+
const res = gitIgnored(cwd, rels, { honourGlobalExcludes: false });
|
|
58
|
+
if ("unavailable" in res)
|
|
59
|
+
return; // not a git repo, or git could not answer
|
|
60
|
+
const ignored = rels.filter((p) => res.ignored.has(p));
|
|
61
|
+
if (ignored.length === 0)
|
|
62
|
+
return;
|
|
63
|
+
// Report the DIRECTORIES rather than every path: an adopter fixes this by editing one
|
|
64
|
+
// `.gitignore` line, and a wall of forty filenames buries that.
|
|
65
|
+
const dirs = [...new Set(ignored.map((p) => {
|
|
66
|
+
const i = p.indexOf("/");
|
|
67
|
+
return i < 0 ? p : p.slice(0, i) + "/";
|
|
68
|
+
}))].sort();
|
|
69
|
+
log.warn(`${ignored.length} of ${rels.length} scaffolded file(s) are git-ignored (${dirs.join(", ")}), ` +
|
|
70
|
+
"so they exist only on this machine — not committed, absent from CI and from a fresh " +
|
|
71
|
+
"clone, invisible to a teammate — while .metaobjects/.agent-context.json is committed " +
|
|
72
|
+
"and records them. If the agent context is meant to be shared, un-ignore those paths; " +
|
|
73
|
+
"if it is deliberately local, nothing to do.");
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=ignored-scaffold-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignored-scaffold-check.js","sourceRoot":"","sources":["../../../src/lib/ignored-scaffold-check.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,uFAAuF;AACvF,0FAA0F;AAC1F,4FAA4F;AAC5F,0FAA0F;AAC1F,6FAA6F;AAC7F,6DAA6D;AAC7D,EAAE;AACF,wFAAwF;AACxF,4FAA4F;AAC5F,iBAAiB;AACjB,EAAE;AACF,6FAA6F;AAC7F,kFAAkF;AAElF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,CAAS;IAC/C,qFAAqF;IACrF,yDAAyD;IACzD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,OAA0B;IAC3E,MAAM,IAAI,GAAG,OAAO;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE9B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,IAAI,aAAa,IAAI,GAAG;QAAE,OAAO,CAAG,0CAA0C;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,sFAAsF;IACtF,gEAAgE;IAChE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;QACzC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEZ,GAAG,CAAC,IAAI,CACN,GAAG,OAAO,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,wCAAwC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;QAC7F,sFAAsF;QACtF,uFAAuF;QACvF,uFAAuF;QACvF,6CAA6C,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One rendering of a metadata LOAD failure, for every command that can hit one.
|
|
3
|
+
*
|
|
4
|
+
* The loader builds a full ADR-0009 envelope — a stable `code`, the `files` the node came
|
|
5
|
+
* from, the `jsonPath` inside the document, and often `suggestions[]` naming the next step.
|
|
6
|
+
* Five commands then printed `` `failed to load metadata: ${err.message}` `` and threw all
|
|
7
|
+
* of it away. So `ERR_ABSTRACT_SUBTYPE_AUTHORED` reached an adopter as a paragraph with no
|
|
8
|
+
* file, no line, no node name and no code — and `--format json` carried the same bare
|
|
9
|
+
* string, so a CI job could not key on the code ADR-0009 promises and the docs name. Five
|
|
10
|
+
* metadata files made that a `grep`; two hundred would not.
|
|
11
|
+
*
|
|
12
|
+
* This does not invent provenance. It reports exactly what the error carries and stays
|
|
13
|
+
* silent about what it does not, so a caller can never read more precision into the line
|
|
14
|
+
* than the loader actually had.
|
|
15
|
+
*/
|
|
16
|
+
export interface LoadErrorReport {
|
|
17
|
+
/** The message plus whatever provenance the envelope carried, for a human. */
|
|
18
|
+
readonly text: string;
|
|
19
|
+
/** ADR-0009 stable code, when the loader attached one. */
|
|
20
|
+
readonly code?: string;
|
|
21
|
+
/** The file(s) the failing node was read from. */
|
|
22
|
+
readonly files?: readonly string[];
|
|
23
|
+
/** JSON path of the failing node within its document. */
|
|
24
|
+
readonly jsonPath?: string;
|
|
25
|
+
/** The loader's own next steps. Printed verbatim; never paraphrased. */
|
|
26
|
+
readonly suggestions?: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
export declare function describeLoadError(err: unknown): LoadErrorReport;
|
|
29
|
+
/**
|
|
30
|
+
* Print a load failure the one way every command prints it: the described line, then the
|
|
31
|
+
* loader's own `suggestions[]` indented beneath it, verbatim.
|
|
32
|
+
*
|
|
33
|
+
* This lived as a byte-identical private copy in `docs.ts`, `gen.ts` and `migrate.ts`. It
|
|
34
|
+
* belongs beside `describeLoadError` for the same reason that function exists: the rendering
|
|
35
|
+
* of a load failure is ONE decision, and three copies of it are three places for the next
|
|
36
|
+
* improvement to reach two of. `verify.ts`'s variant is deliberately NOT this — it chooses
|
|
37
|
+
* between the loader's suggestions and its own strict-attr hint (ADR-0023), which is a
|
|
38
|
+
* different decision, not a different spelling of this one.
|
|
39
|
+
*
|
|
40
|
+
* `log` is a parameter rather than an import so a test can capture what was printed without
|
|
41
|
+
* reaching into module state.
|
|
42
|
+
*/
|
|
43
|
+
export declare function reportLoadError(log: {
|
|
44
|
+
error: (msg: string) => void;
|
|
45
|
+
}, prefix: string, err: unknown): void;
|
|
46
|
+
//# sourceMappingURL=load-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-error.d.ts","sourceRoot":"","sources":["../../../src/lib/load-error.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAWD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAyB/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,EACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,OAAO,GACX,IAAI,CAIN"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** True for a thrown value carrying the loader's ADR-0009 envelope. */
|
|
2
|
+
function isLoaderError(err) {
|
|
3
|
+
return (typeof err === "object" && err !== null
|
|
4
|
+
&& typeof err.code === "string"
|
|
5
|
+
&& typeof err.source === "object");
|
|
6
|
+
}
|
|
7
|
+
export function describeLoadError(err) {
|
|
8
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
9
|
+
if (!isLoaderError(err))
|
|
10
|
+
return { text: message };
|
|
11
|
+
const source = err.source;
|
|
12
|
+
const files = source.files?.filter((f) => f.length > 0);
|
|
13
|
+
const jsonPath = source.jsonPath;
|
|
14
|
+
const suggestions = err.suggestions?.filter((s) => s.length > 0);
|
|
15
|
+
// `code` first: it is the one part a machine keys on, and a human scanning a terminal
|
|
16
|
+
// finds it fastest at the front of the line. Then WHERE, which is the question the
|
|
17
|
+
// message itself can never answer.
|
|
18
|
+
const where = [
|
|
19
|
+
files !== undefined && files.length > 0 ? files.join(", ") : undefined,
|
|
20
|
+
jsonPath !== undefined && jsonPath.length > 0 ? `at ${jsonPath}` : undefined,
|
|
21
|
+
].filter((p) => p !== undefined).join(" ");
|
|
22
|
+
const head = `${err.code}: ${message}`;
|
|
23
|
+
return {
|
|
24
|
+
text: where.length > 0 ? `${head}\n in ${where}` : head,
|
|
25
|
+
code: err.code,
|
|
26
|
+
...(files !== undefined && files.length > 0 ? { files } : {}),
|
|
27
|
+
...(jsonPath !== undefined && jsonPath.length > 0 ? { jsonPath } : {}),
|
|
28
|
+
...(suggestions !== undefined && suggestions.length > 0 ? { suggestions } : {}),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Print a load failure the one way every command prints it: the described line, then the
|
|
33
|
+
* loader's own `suggestions[]` indented beneath it, verbatim.
|
|
34
|
+
*
|
|
35
|
+
* This lived as a byte-identical private copy in `docs.ts`, `gen.ts` and `migrate.ts`. It
|
|
36
|
+
* belongs beside `describeLoadError` for the same reason that function exists: the rendering
|
|
37
|
+
* of a load failure is ONE decision, and three copies of it are three places for the next
|
|
38
|
+
* improvement to reach two of. `verify.ts`'s variant is deliberately NOT this — it chooses
|
|
39
|
+
* between the loader's suggestions and its own strict-attr hint (ADR-0023), which is a
|
|
40
|
+
* different decision, not a different spelling of this one.
|
|
41
|
+
*
|
|
42
|
+
* `log` is a parameter rather than an import so a test can capture what was printed without
|
|
43
|
+
* reaching into module state.
|
|
44
|
+
*/
|
|
45
|
+
export function reportLoadError(log, prefix, err) {
|
|
46
|
+
const report = describeLoadError(err);
|
|
47
|
+
log.error(`${prefix}: ${report.text}`);
|
|
48
|
+
for (const s of report.suggestions ?? [])
|
|
49
|
+
log.error(` ${s}`);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=load-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-error.js","sourceRoot":"","sources":["../../../src/lib/load-error.ts"],"names":[],"mappings":"AA8BA,uEAAuE;AACvE,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;WACpC,OAAQ,GAA0B,CAAC,IAAI,KAAK,QAAQ;WACpD,OAAQ,GAA4B,CAAC,MAAM,KAAK,QAAQ,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAElD,MAAM,MAAM,GAAG,GAAG,CAAC,MAA0D,CAAC;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjE,sFAAsF;IACtF,mFAAmF;IACnF,mCAAmC;IACnC,MAAM,KAAK,GAAG;QACZ,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACtE,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;KAC7E,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;IACvC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;QACxD,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAqC,EACrC,MAAc,EACd,GAAY;IAEZ,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE;QAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-metaobjects-config.d.ts","sourceRoot":"","sources":["../../../src/lib/load-metaobjects-config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA+IzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA6B9E;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG,SAAS,GACrE;IAAE,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAKhF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC,CAUrB;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"load-metaobjects-config.d.ts","sourceRoot":"","sources":["../../../src/lib/load-metaobjects-config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA+IzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA6B9E;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG,SAAS,GACrE;IAAE,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAKhF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC,CAUrB;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqM9F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readdirSync, unlinkSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, unlinkSync } from "node:fs";
|
|
2
2
|
import { readFile, writeFile } from "node:fs/promises";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { dirname, join, resolve } from "node:path";
|
|
@@ -329,6 +329,70 @@ export async function loadMetaobjectsConfig(projectRoot) {
|
|
|
329
329
|
}
|
|
330
330
|
catch { /* no ts-poet adjacent to codegen-ts — leave project resolution in place */ }
|
|
331
331
|
}
|
|
332
|
+
// EVERY DECLARED SUBPATH EXPORT NEEDS ITS OWN ENTRY, because jiti's `alias` matches by
|
|
333
|
+
// PREFIX and then concatenates the remainder onto the mapped value. The mapped value is
|
|
334
|
+
// a FILE, so `@metaobjectsdev/codegen-ts/templates/inferred-types` became
|
|
335
|
+
// `…/codegen-ts/dist/index.js/templates/inferred-types` — a path that has never existed,
|
|
336
|
+
// named in an error message that mentions neither jiti nor the alias map:
|
|
337
|
+
//
|
|
338
|
+
// Cannot find module '…/@metaobjectsdev/codegen-ts/dist/index.js/templates/inferred-types'
|
|
339
|
+
//
|
|
340
|
+
// So every subpath the package deliberately exports was unloadable from an owned
|
|
341
|
+
// generator, and the documented escape (a dynamic `import()`, which this file's own
|
|
342
|
+
// comment offers) failed identically, because it falls back to the same broken matcher.
|
|
343
|
+
// A cold adoption probe hit this retargeting the entity tier off Drizzle and got past it
|
|
344
|
+
// only by reading this file's compiled output — the subpath holds `fieldTsTypeString`,
|
|
345
|
+
// the one neutral MetaField→TypeScript mapper, which anyone replacing `renderDrizzleSchema`
|
|
346
|
+
// needs. `rewriteImportSpecifiers` above was always correct here (it anchors on the
|
|
347
|
+
// closing quote, so a subpath is left alone); only the alias fallback was wrong, and the
|
|
348
|
+
// fallback is what an OWNED GENERATOR gets, since only the config file is pre-processed.
|
|
349
|
+
//
|
|
350
|
+
// DERIVED from each package's own `exports` map rather than listed. A hand-kept list of
|
|
351
|
+
// subpaths is the same defect one level up: the package adds an export, nobody edits this
|
|
352
|
+
// file, and it is unloadable again with the same unrecognisable error. Resolution goes
|
|
353
|
+
// through `createRequire().resolve`, so the exports map — including its conditions — is
|
|
354
|
+
// the authority, and a subpath that does not resolve is skipped rather than guessed at.
|
|
355
|
+
for (const [specifier, resolvedPath] of [...Object.entries(aliasMap)]) {
|
|
356
|
+
if (!specifier.startsWith("@metaobjectsdev/"))
|
|
357
|
+
continue;
|
|
358
|
+
// The package root is the specifier itself; a specifier that is already a subpath
|
|
359
|
+
// (e.g. ".../generators") contributes nothing further.
|
|
360
|
+
if (specifier.slice("@metaobjectsdev/".length).includes("/"))
|
|
361
|
+
continue;
|
|
362
|
+
// Read the manifest off the FILE SYSTEM by walking up from the resolved entry, not by
|
|
363
|
+
// requiring `<specifier>/package.json` — these packages do not list `./package.json` in
|
|
364
|
+
// their own exports map, so requiring it throws ERR_PACKAGE_PATH_NOT_EXPORTED and the
|
|
365
|
+
// derivation silently produces nothing. (Which it did, on the first cut of this fix:
|
|
366
|
+
// the gate in test/owned-generator-subpath-import.test.ts stayed red and named the
|
|
367
|
+
// same impossible path, which is exactly what that assertion is for.)
|
|
368
|
+
let manifest;
|
|
369
|
+
for (let dir = dirname(resolvedPath);; dir = dirname(dir)) {
|
|
370
|
+
try {
|
|
371
|
+
const parsed = JSON.parse(readFileSync(resolve(dir, "package.json"), "utf8"));
|
|
372
|
+
if (parsed.name === specifier) {
|
|
373
|
+
manifest = parsed;
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
catch { /* not this directory — keep walking */ }
|
|
378
|
+
const parent = dirname(dir);
|
|
379
|
+
if (parent === dir)
|
|
380
|
+
break; // filesystem root
|
|
381
|
+
}
|
|
382
|
+
if (manifest === undefined)
|
|
383
|
+
continue; // no readable manifest — leave normal resolution
|
|
384
|
+
for (const key of Object.keys(manifest?.exports ?? {})) {
|
|
385
|
+
if (!key.startsWith("./") || key.includes("*"))
|
|
386
|
+
continue;
|
|
387
|
+
const sub = `${specifier}/${key.slice(2)}`;
|
|
388
|
+
if (aliasMap[sub] !== undefined)
|
|
389
|
+
continue; // an explicit CLI_PKG_PATHS entry wins
|
|
390
|
+
try {
|
|
391
|
+
aliasMap[sub] = createRequire(resolvedPath).resolve(sub);
|
|
392
|
+
}
|
|
393
|
+
catch { /* not resolvable under these conditions — skip rather than invent a path */ }
|
|
394
|
+
}
|
|
395
|
+
}
|
|
332
396
|
// Pre-process the config file content to rewrite @metaobjectsdev/* import
|
|
333
397
|
// specifiers to resolved absolute paths. This is the primary mechanism that
|
|
334
398
|
// ensures the CLI's own copies are used: jiti's `alias` map is kept below as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-metaobjects-config.js","sourceRoot":"","sources":["../../../src/lib/load-metaobjects-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"load-metaobjects-config.js","sourceRoot":"","sources":["../../../src/lib/load-metaobjects-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-ignored-check.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest-ignored-check.ts"],"names":[],"mappings":"AAsBA;6BAC6B;AAC7B,eAAO,MAAM,iBAAiB,QAAqD,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-ignored-check.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest-ignored-check.ts"],"names":[],"mappings":"AAsBA;6BAC6B;AAC7B,eAAO,MAAM,iBAAiB,QAAqD,CAAC;AAEpF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAiCvD"}
|
|
@@ -15,41 +15,12 @@
|
|
|
15
15
|
// commit generated output has no use for the manifest, and failing its build over an
|
|
16
16
|
// unused artifact would be wrong.
|
|
17
17
|
import { existsSync } from "node:fs";
|
|
18
|
-
import { spawnSync } from "node:child_process";
|
|
19
18
|
import { join } from "node:path";
|
|
20
19
|
import { log } from "./log.js";
|
|
20
|
+
import { gitIgnoreSource, isGitIgnored } from "./git-ignore.js";
|
|
21
21
|
/** Project-relative path of the manifest — the one artifact of `.gen-state/` that is
|
|
22
22
|
* meant to be committed. */
|
|
23
23
|
export const HASH_MANIFEST_REL = join(".metaobjects", ".gen-state", ".hashes.json");
|
|
24
|
-
/**
|
|
25
|
-
* Ask git whether `relPath` is ignored, or undefined when the question cannot be
|
|
26
|
-
* answered (not a repository, git missing).
|
|
27
|
-
*
|
|
28
|
-
* `check-ignore` is the only reliable answer: parsing `.gitignore` by hand would have
|
|
29
|
-
* to reimplement precedence, negation and nested ignore files — and the specific trap
|
|
30
|
-
* this check exists to catch (`.gen-state/` excluding a directory so a `!` negation
|
|
31
|
-
* inside it can never apply) is exactly the rule a hand-rolled parser gets wrong.
|
|
32
|
-
*/
|
|
33
|
-
function isGitIgnored(cwd, relPath) {
|
|
34
|
-
const gitBin = process.env.META_GEN_GIT ?? "git";
|
|
35
|
-
let res;
|
|
36
|
-
try {
|
|
37
|
-
res = spawnSync(gitBin, ["-C", cwd, "check-ignore", "-q", "--", relPath], {
|
|
38
|
-
encoding: "utf-8",
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
if (res.error !== undefined)
|
|
45
|
-
return undefined;
|
|
46
|
-
// 0 = ignored, 1 = not ignored, 128 = not a git repo / other git error.
|
|
47
|
-
if (res.status === 0)
|
|
48
|
-
return true;
|
|
49
|
-
if (res.status === 1)
|
|
50
|
-
return false;
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
24
|
/**
|
|
54
25
|
* Warn once when the hash manifest is git-ignored, naming the fix.
|
|
55
26
|
*
|
|
@@ -61,14 +32,30 @@ export function warnIfManifestIgnored(cwd) {
|
|
|
61
32
|
// Nothing generated yet ⇒ nothing at risk ⇒ nothing worth saying.
|
|
62
33
|
if (!existsSync(join(cwd, HASH_MANIFEST_REL)))
|
|
63
34
|
return;
|
|
64
|
-
|
|
35
|
+
// honourGlobalExcludes: TRUE here, and that is the opposite call to the docs gate.
|
|
36
|
+
// The question this warning asks is "will this file reach another machine?", and a
|
|
37
|
+
// per-user ignore file answers it just as truly as a committed .gitignore does.
|
|
38
|
+
if (isGitIgnored(cwd, HASH_MANIFEST_REL, { honourGlobalExcludes: true }) !== true)
|
|
65
39
|
return;
|
|
40
|
+
// WHERE the rule actually lives, asked of git rather than assumed. This used to name
|
|
41
|
+
// `.metaobjects/.gitignore` and the literal pattern `.gen-state/`, which is only one of
|
|
42
|
+
// the places the exclusion can sit: an adopter estate had it in the ROOT `.gitignore` as
|
|
43
|
+
// `.metaobjects/.gen-state/`, so following this advisory to the letter edited a file that
|
|
44
|
+
// did not hold the rule, changed nothing, and printed this same line again — the loop
|
|
45
|
+
// shape. `git check-ignore -v` knows the answer, so nothing is guessed. When git cannot
|
|
46
|
+
// say, the wording degrades to the generic form rather than asserting a location.
|
|
47
|
+
const src = gitIgnoreSource(cwd, HASH_MANIFEST_REL, { honourGlobalExcludes: true });
|
|
48
|
+
const where = src !== undefined
|
|
49
|
+
? `The rule is '${src.pattern}' at ${src.file}:${src.line} — replace it there with ` +
|
|
50
|
+
`a '/*' form plus a '!' negation for the manifest ` +
|
|
51
|
+
`(e.g. '${src.pattern.replace(/\/$/, "")}/*' and '!${src.pattern.replace(/\/$/, "")}/.hashes.json')`
|
|
52
|
+
: `Find the rule with 'git check-ignore -v ${HASH_MANIFEST_REL}' and replace it with ` +
|
|
53
|
+
`a '/*' form plus a '!' negation for the manifest`;
|
|
66
54
|
log.warn(`${HASH_MANIFEST_REL} is git-ignored, so it never reaches another machine — ` +
|
|
67
55
|
`on a fresh clone or CI runner 'meta gen' cannot tell your hand edits from its ` +
|
|
68
|
-
`own stale output, and will refuse to overwrite rather than guess.
|
|
69
|
-
|
|
70
|
-
`
|
|
71
|
-
`
|
|
72
|
-
`commit the manifest. If you deliberately do not commit generated output, ignore this.`);
|
|
56
|
+
`own stale output, and will refuse to overwrite rather than guess. ${where} ` +
|
|
57
|
+
`(the glob matters — git will not descend into an excluded directory, so a negation ` +
|
|
58
|
+
`INSIDE an excluded directory can never apply), then commit the manifest. ` +
|
|
59
|
+
`If you deliberately do not commit generated output, ignore this.`);
|
|
73
60
|
}
|
|
74
61
|
//# sourceMappingURL=manifest-ignored-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-ignored-check.js","sourceRoot":"","sources":["../../../src/lib/manifest-ignored-check.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,oFAAoF;AACpF,oFAAoF;AACpF,qFAAqF;AACrF,qEAAqE;AACrE,EAAE;AACF,gFAAgF;AAChF,sFAAsF;AACtF,qFAAqF;AACrF,qFAAqF;AACrF,kFAAkF;AAClF,EAAE;AACF,kFAAkF;AAClF,qFAAqF;AACrF,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"manifest-ignored-check.js","sourceRoot":"","sources":["../../../src/lib/manifest-ignored-check.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,oFAAoF;AACpF,oFAAoF;AACpF,qFAAqF;AACrF,qEAAqE;AACrE,EAAE;AACF,gFAAgF;AAChF,sFAAsF;AACtF,qFAAqF;AACrF,qFAAqF;AACrF,kFAAkF;AAClF,EAAE;AACF,kFAAkF;AAClF,qFAAqF;AACrF,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEhE;6BAC6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,kEAAkE;IAClE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAAE,OAAO;IAEtD,mFAAmF;IACnF,mFAAmF;IACnF,gFAAgF;IAChF,IAAI,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI;QAAE,OAAO;IAE1F,qFAAqF;IACrF,wFAAwF;IACxF,yFAAyF;IACzF,0FAA0F;IAC1F,sFAAsF;IACtF,wFAAwF;IACxF,kFAAkF;IAClF,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,MAAM,KAAK,GACT,GAAG,KAAK,SAAS;QACf,CAAC,CAAC,gBAAgB,GAAG,CAAC,OAAO,QAAQ,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,2BAA2B;YAClF,mDAAmD;YACnD,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB;QACtG,CAAC,CAAC,2CAA2C,iBAAiB,wBAAwB;YACpF,kDAAkD,CAAC;IAEzD,GAAG,CAAC,IAAI,CACN,GAAG,iBAAiB,yDAAyD;QAC3E,gFAAgF;QAChF,qEAAqE,KAAK,GAAG;QAC7E,qFAAqF;QACrF,2EAA2E;QAC3E,kEAAkE,CACrE,CAAC;AACJ,CAAC"}
|
package/dist/src/lib/output.d.ts
CHANGED
|
@@ -3,7 +3,20 @@ import { type AdvisoryFindingRow, type AdvisorySection } from "./advisory.js";
|
|
|
3
3
|
export interface FormatOptions {
|
|
4
4
|
isTTY: boolean;
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* `overwrite` is distinct from `new` on purpose. Reviewing a run, "an entity
|
|
8
|
+
* appeared" and "an existing artifact was rewritten" are different facts, and the
|
|
9
|
+
* CLI used to report both as `new` — the engine has always distinguished them
|
|
10
|
+
* (`WriteStatus.overwrite`), and the reporting layer collapsed the two. Found on
|
|
11
|
+
* two adopter estates independently, which is what makes it a reporting defect
|
|
12
|
+
* rather than a preference: the summary line was right and the per-file status
|
|
13
|
+
* was not.
|
|
14
|
+
*/
|
|
15
|
+
export type GenFileStatus = "new" | "overwrite" | "merged" | "conflict" | "unchanged" | "refused"
|
|
16
|
+
/** `--baseline=adopt`: the file's existing content became the merge base and
|
|
17
|
+
* nothing was written. Never folded into "unchanged" — the run's product is the
|
|
18
|
+
* manifest, and a summary that showed these as unchanged would hide it. */
|
|
19
|
+
| "adopted" | "removed";
|
|
7
20
|
export interface GenFileEntry {
|
|
8
21
|
path: string;
|
|
9
22
|
status: GenFileStatus;
|
|
@@ -27,6 +40,14 @@ export interface GenResultShape {
|
|
|
27
40
|
* structured payload carries every finding.
|
|
28
41
|
*/
|
|
29
42
|
antiPatterns?: AdvisorySection<AdvisoryFindingRow>;
|
|
43
|
+
/**
|
|
44
|
+
* How many generators the config wired. Required, because the alternative is a
|
|
45
|
+
* message that GUESSES: with no generators wired, a run over a project with five
|
|
46
|
+
* entities emitted nothing and reported "no entities to generate … author entities
|
|
47
|
+
* in this project's metadata sources", sending the reader to edit a file that was
|
|
48
|
+
* already correct. The output's own first line (`gen: []`) already knew.
|
|
49
|
+
*/
|
|
50
|
+
generatorCount: number;
|
|
30
51
|
}
|
|
31
52
|
export declare function formatGenResult(result: GenResultShape, opts: FormatOptions): string;
|
|
32
53
|
export interface BlockedEntry {
|