@metaobjectsdev/cli 0.5.1 → 0.6.0-rc.1

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.
Files changed (70) hide show
  1. package/README.md +20 -1
  2. package/dist/src/commands/init.d.ts +1 -0
  3. package/dist/src/commands/init.d.ts.map +1 -1
  4. package/dist/src/commands/init.js +34 -5
  5. package/dist/src/commands/init.js.map +1 -1
  6. package/dist/src/commands/migrate.d.ts +4 -1
  7. package/dist/src/commands/migrate.d.ts.map +1 -1
  8. package/dist/src/commands/migrate.js +233 -5
  9. package/dist/src/commands/migrate.js.map +1 -1
  10. package/dist/src/commands/prompt-snapshot.d.ts +2 -0
  11. package/dist/src/commands/prompt-snapshot.d.ts.map +1 -0
  12. package/dist/src/commands/prompt-snapshot.js +125 -0
  13. package/dist/src/commands/prompt-snapshot.js.map +1 -0
  14. package/dist/src/commands/verify.d.ts +2 -0
  15. package/dist/src/commands/verify.d.ts.map +1 -0
  16. package/dist/src/commands/verify.js +93 -0
  17. package/dist/src/commands/verify.js.map +1 -0
  18. package/dist/src/index.d.ts.map +1 -1
  19. package/dist/src/index.js +22 -1
  20. package/dist/src/index.js.map +1 -1
  21. package/dist/src/lib/args.d.ts +18 -1
  22. package/dist/src/lib/args.d.ts.map +1 -1
  23. package/dist/src/lib/args.js +39 -1
  24. package/dist/src/lib/args.js.map +1 -1
  25. package/dist/src/lib/config.d.ts +11 -1
  26. package/dist/src/lib/config.d.ts.map +1 -1
  27. package/dist/src/lib/config.js +10 -1
  28. package/dist/src/lib/config.js.map +1 -1
  29. package/dist/src/lib/file-provider.d.ts +7 -0
  30. package/dist/src/lib/file-provider.d.ts.map +1 -0
  31. package/dist/src/lib/file-provider.js +33 -0
  32. package/dist/src/lib/file-provider.js.map +1 -0
  33. package/dist/src/lib/kysely.d.ts +1 -1
  34. package/dist/src/lib/kysely.d.ts.map +1 -1
  35. package/dist/src/lib/kysely.js +3 -0
  36. package/dist/src/lib/kysely.js.map +1 -1
  37. package/dist/src/lib/output.d.ts +3 -2
  38. package/dist/src/lib/output.d.ts.map +1 -1
  39. package/dist/src/lib/output.js.map +1 -1
  40. package/dist/src/lib/payload-field-tree.d.ts +9 -0
  41. package/dist/src/lib/payload-field-tree.d.ts.map +1 -0
  42. package/dist/src/lib/payload-field-tree.js +36 -0
  43. package/dist/src/lib/payload-field-tree.js.map +1 -0
  44. package/dist/src/lib/projection-migrations.d.ts +2 -1
  45. package/dist/src/lib/projection-migrations.d.ts.map +1 -1
  46. package/dist/src/lib/projection-migrations.js +4 -2
  47. package/dist/src/lib/projection-migrations.js.map +1 -1
  48. package/dist/src/lib/snapshot.d.ts +11 -0
  49. package/dist/src/lib/snapshot.d.ts.map +1 -0
  50. package/dist/src/lib/snapshot.js +36 -0
  51. package/dist/src/lib/snapshot.js.map +1 -0
  52. package/dist/src/lib/wrangler.d.ts +18 -0
  53. package/dist/src/lib/wrangler.d.ts.map +1 -0
  54. package/dist/src/lib/wrangler.js +30 -0
  55. package/dist/src/lib/wrangler.js.map +1 -0
  56. package/package.json +8 -7
  57. package/src/commands/init.ts +35 -5
  58. package/src/commands/migrate.ts +287 -5
  59. package/src/commands/prompt-snapshot.ts +142 -0
  60. package/src/commands/verify.ts +111 -0
  61. package/src/index.ts +22 -1
  62. package/src/lib/args.ts +67 -1
  63. package/src/lib/config.ts +23 -3
  64. package/src/lib/file-provider.ts +33 -0
  65. package/src/lib/kysely.ts +7 -1
  66. package/src/lib/output.ts +4 -2
  67. package/src/lib/payload-field-tree.ts +47 -0
  68. package/src/lib/projection-migrations.ts +6 -3
  69. package/src/lib/snapshot.ts +50 -0
  70. package/src/lib/wrangler.ts +45 -0
@@ -0,0 +1,125 @@
1
+ // `meta prompt-snapshot` — deterministic rendered-prompt goldens (FR-004 #4).
2
+ //
3
+ // For each template.* node with a committed fixture payload, render its @textRef
4
+ // text against that payload (same engine, provider, and @format escaping prod
5
+ // uses) and snapshot the byte-exact output under .metaobjects/snapshots/<name>/.
6
+ // Write mode (default) overwrites output.snap; --check compares against the
7
+ // committed golden and exits 1 on drift (never writes). Closes the gap the
8
+ // template's own git history misses: a shared partial or payload-shape change
9
+ // that silently alters the rendered prompt.
10
+ import { join } from "node:path";
11
+ import { existsSync, readFileSync, mkdirSync, writeFileSync } from "node:fs";
12
+ import { parsePromptSnapshotArgs } from "../lib/args.js";
13
+ import { log } from "../lib/log.js";
14
+ import { FileProvider } from "../lib/file-provider.js";
15
+ import { snapshotPaths, unifiedDiff } from "../lib/snapshot.js";
16
+ import { loadMemory } from "@metaobjectsdev/sdk";
17
+ import { TYPE_TEMPLATE, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_FORMAT } from "@metaobjectsdev/metadata";
18
+ import { render, ESCAPERS } from "@metaobjectsdev/render";
19
+ const DEFAULT_PROMPTS_DIR = "prompts";
20
+ export async function promptSnapshotCommand(args, cwd) {
21
+ let flags;
22
+ try {
23
+ flags = parsePromptSnapshotArgs(args);
24
+ }
25
+ catch (err) {
26
+ log.error(err.message);
27
+ return 2;
28
+ }
29
+ let root;
30
+ try {
31
+ root = await loadMemory(cwd);
32
+ }
33
+ catch (err) {
34
+ const msg = err.message;
35
+ if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
36
+ log.error(`no metaobjects/ found in ${cwd}; run 'meta init' to scaffold`);
37
+ return 2;
38
+ }
39
+ log.error(`failed to load metadata: ${msg}`);
40
+ return 1;
41
+ }
42
+ const promptsDir = join(cwd, flags.prompts ?? DEFAULT_PROMPTS_DIR);
43
+ const provider = new FileProvider(promptsDir);
44
+ const templates = root.ownChildren().filter((c) => c.type === TYPE_TEMPLATE);
45
+ if (templates.length === 0) {
46
+ log.info("meta prompt-snapshot — no template.* nodes found; nothing to snapshot.");
47
+ return 0;
48
+ }
49
+ let errorCount = 0;
50
+ let driftCount = 0;
51
+ let wrote = 0;
52
+ let checked = 0;
53
+ let skipped = 0;
54
+ for (const tmpl of templates) {
55
+ const textRef = tmpl.ownAttr(TEMPLATE_ATTR_TEXT_REF);
56
+ // Absent/typeless required attrs are a loader-schema concern, not ours.
57
+ if (typeof textRef !== "string")
58
+ continue;
59
+ const { dir, payloadPath, snapPath } = snapshotPaths(cwd, tmpl.name);
60
+ if (!existsSync(payloadPath)) {
61
+ log.info(`[${tmpl.name}] skipped — no payload at ${payloadPath}`);
62
+ skipped++;
63
+ continue;
64
+ }
65
+ let payload;
66
+ try {
67
+ payload = JSON.parse(readFileSync(payloadPath, "utf8"));
68
+ }
69
+ catch (err) {
70
+ log.error(`[${tmpl.name}] invalid payload.json: ${err.message}`);
71
+ errorCount++;
72
+ continue;
73
+ }
74
+ // @format is loader-validated against the template format vocabulary; narrow
75
+ // against the render engine's own escaper registry so the RenderFormat cast is
76
+ // a checked narrowing (never a TypeError on an unknown format), and omit the
77
+ // key entirely when absent (exactOptionalPropertyTypes forbids `format: undefined`).
78
+ const fmtAttr = tmpl.ownAttr(TEMPLATE_ATTR_FORMAT);
79
+ const format = typeof fmtAttr === "string" && fmtAttr in ESCAPERS ? fmtAttr : undefined;
80
+ let rendered;
81
+ try {
82
+ rendered = render({ ref: textRef, payload, provider, ...(format ? { format } : {}) });
83
+ }
84
+ catch (err) {
85
+ log.error(`[${tmpl.name}] render failed: ${err.message}`);
86
+ errorCount++;
87
+ continue;
88
+ }
89
+ if (flags.check) {
90
+ checked++;
91
+ if (!existsSync(snapPath)) {
92
+ log.error(`[${tmpl.name}] no committed snapshot at ${snapPath}; run 'meta prompt-snapshot' to create it`);
93
+ driftCount++;
94
+ continue;
95
+ }
96
+ const golden = readFileSync(snapPath, "utf8");
97
+ if (golden !== rendered) {
98
+ log.error(`[${tmpl.name}] snapshot drift:\n${unifiedDiff(golden, rendered)}`);
99
+ log.error(`[${tmpl.name}] run 'meta prompt-snapshot' to accept the change`);
100
+ driftCount++;
101
+ }
102
+ }
103
+ else {
104
+ mkdirSync(dir, { recursive: true });
105
+ writeFileSync(snapPath, rendered, "utf8");
106
+ log.info(`[${tmpl.name}] wrote ${snapPath}`);
107
+ wrote++;
108
+ }
109
+ }
110
+ if (flags.check) {
111
+ if (errorCount > 0 || driftCount > 0) {
112
+ log.error(`meta prompt-snapshot --check — ${driftCount} drifted, ${errorCount} error(s) across ${checked} checked.`);
113
+ return 1;
114
+ }
115
+ log.info(`meta prompt-snapshot --check — ${checked} snapshot(s) clean${skipped > 0 ? `, ${skipped} skipped` : ""}.`);
116
+ return 0;
117
+ }
118
+ if (errorCount > 0) {
119
+ log.error(`meta prompt-snapshot — ${errorCount} error(s); ${wrote} snapshot(s) written.`);
120
+ return 1;
121
+ }
122
+ log.info(`meta prompt-snapshot — ${wrote} snapshot(s) written${skipped > 0 ? `, ${skipped} skipped` : ""}.`);
123
+ return 0;
124
+ }
125
+ //# sourceMappingURL=prompt-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-snapshot.js","sourceRoot":"","sources":["../../../src/commands/prompt-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function verifyCommand(args: string[], cwd: string): Promise<number>;
2
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAiCA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6EhF"}
@@ -0,0 +1,93 @@
1
+ // `meta verify` — the build-time drift gate (FR-004 Plan #3, T6).
2
+ //
3
+ // Loads metadata + a filesystem provider; for each template.* node resolves its
4
+ // @textRef text, derives its @payloadRef view-object field tree, and runs the
5
+ // render engine's `verify` (template variable ↔ payload field drift). Exits
6
+ // non-zero on any drift error so CI fails loud — the "a renamed field can't
7
+ // silently break a prompt" guarantee, enforced at the last fixed point before
8
+ // the text ships. Required-slot misses are warnings (don't fail the build).
9
+ import { join } from "node:path";
10
+ import { parseVerifyArgs } from "../lib/args.js";
11
+ import { log } from "../lib/log.js";
12
+ import { FileProvider } from "../lib/file-provider.js";
13
+ import { derivePayloadFieldTree } from "../lib/payload-field-tree.js";
14
+ import { loadMemory } from "@metaobjectsdev/sdk";
15
+ import { TYPE_TEMPLATE, TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_TEXT_REF, TEMPLATE_ATTR_REQUIRED_SLOTS, TEMPLATE_ATTR_REQUIRED_TAGS, } from "@metaobjectsdev/metadata";
16
+ import { verify, ERR_REQUIRED_SLOT_UNUSED, ERR_PARTIAL_UNRESOLVED } from "@metaobjectsdev/render";
17
+ const DEFAULT_PROMPTS_DIR = "prompts";
18
+ /** Coerce a string-array attr (array, or a single string) into a string[]. */
19
+ function attrAsStringArray(attr) {
20
+ if (Array.isArray(attr))
21
+ return attr.filter((s) => typeof s === "string");
22
+ if (typeof attr === "string")
23
+ return [attr];
24
+ return [];
25
+ }
26
+ export async function verifyCommand(args, cwd) {
27
+ let flags;
28
+ try {
29
+ flags = parseVerifyArgs(args);
30
+ }
31
+ catch (err) {
32
+ log.error(err.message);
33
+ return 2;
34
+ }
35
+ let root;
36
+ try {
37
+ root = await loadMemory(cwd);
38
+ }
39
+ catch (err) {
40
+ const msg = err.message;
41
+ if (msg.includes("ENOENT") || msg.includes("no such") || msg.includes("cannot read")) {
42
+ log.error(`no metaobjects/ found in ${cwd}; run 'meta init' to scaffold`);
43
+ return 2;
44
+ }
45
+ log.error(`failed to load metadata: ${msg}`);
46
+ return 1;
47
+ }
48
+ const promptsDir = join(cwd, flags.prompts ?? DEFAULT_PROMPTS_DIR);
49
+ const provider = new FileProvider(promptsDir);
50
+ const templates = root.ownChildren().filter((c) => c.type === TYPE_TEMPLATE);
51
+ if (templates.length === 0) {
52
+ log.info("meta verify — no template.* nodes found; nothing to check.");
53
+ return 0;
54
+ }
55
+ let errorCount = 0;
56
+ let warnCount = 0;
57
+ let checked = 0;
58
+ for (const tmpl of templates) {
59
+ const textRef = tmpl.ownAttr(TEMPLATE_ATTR_TEXT_REF);
60
+ const payloadRef = tmpl.ownAttr(TEMPLATE_ATTR_PAYLOAD_REF);
61
+ // Absent/typeless required attrs are a loader-schema concern, not verify's.
62
+ if (typeof textRef !== "string" || typeof payloadRef !== "string")
63
+ continue;
64
+ const text = provider.resolve(textRef);
65
+ if (text === undefined) {
66
+ log.error(`[${tmpl.name}] ${ERR_PARTIAL_UNRESOLVED}: @textRef "${textRef}" did not resolve under ${promptsDir}`);
67
+ errorCount++;
68
+ continue;
69
+ }
70
+ const fieldTree = derivePayloadFieldTree(root, payloadRef);
71
+ const requiredSlots = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_SLOTS));
72
+ const requiredTags = attrAsStringArray(tmpl.ownAttr(TEMPLATE_ATTR_REQUIRED_TAGS));
73
+ const drift = verify(text, fieldTree, { provider, requiredSlots, requiredTags });
74
+ checked++;
75
+ for (const e of drift) {
76
+ if (e.code === ERR_REQUIRED_SLOT_UNUSED) {
77
+ log.warn(`[${tmpl.name}] ${e.code}: ${e.path}`);
78
+ warnCount++;
79
+ }
80
+ else {
81
+ log.error(`[${tmpl.name}] ${e.code}: ${e.path}`);
82
+ errorCount++;
83
+ }
84
+ }
85
+ }
86
+ if (errorCount > 0) {
87
+ log.error(`meta verify — ${errorCount} drift error(s) across ${templates.length} template(s).`);
88
+ return 1;
89
+ }
90
+ log.info(`meta verify — ${checked} template(s) clean${warnCount > 0 ? ` (${warnCount} warning(s))` : ""}.`);
91
+ return 0;
92
+ }
93
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAkEvE,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AA+EvE,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqEzD"}
package/dist/src/index.js CHANGED
@@ -38,6 +38,8 @@ COMMANDS:
38
38
  init --refresh-docs Refresh .metaobjects/AGENTS.md + CLAUDE.md after CLI upgrades
39
39
  gen [<entity>...] Codegen TS targets from metaobjects/ entities
40
40
  export Flatten loaded metadata to one canonical JSON artifact
41
+ verify Check template.* text against its payload (drift gate)
42
+ prompt-snapshot Snapshot rendered template.* output; --check gates drift
41
43
  migrate Diff metadata vs live DB; emit migration SQL files
42
44
  --version, -v Print version
43
45
  --help, -h Print this help
@@ -53,15 +55,26 @@ GEN FLAGS:
53
55
  EXPORT FLAGS:
54
56
  --out <file> Write output to a file (default: stdout)
55
57
 
58
+ VERIFY FLAGS:
59
+ --prompts <dir> Directory of provider-resolved template text (default: prompts)
60
+
61
+ PROMPT-SNAPSHOT FLAGS:
62
+ --check Compare against committed snapshots; exit 1 on drift (CI gate)
63
+ --prompts <dir> Directory of provider-resolved template text (default: prompts)
64
+
56
65
  MIGRATE FLAGS:
57
66
  --db <url> DB connection URL (required, or set DATABASE_URL or config)
58
67
  Supports: file:, libsql:, postgres:, postgresql:
59
- --dialect sqlite|postgres Optional override (auto-detected from URL scheme)
68
+ --dialect sqlite|postgres|d1 Optional override (auto-detected from URL scheme)
60
69
  --out-dir <path> Migration directory (default: ./.metaobjects/migrations)
61
70
  --slug <name> Required when changes are present (e.g., add-user-shipping)
62
71
  --allow <csv> Comma-separated destructive-change permissions:
63
72
  drop-column,drop-table,type-change,drop-index,drop-fk,nullable-to-not-null
64
73
  --on-ambiguous abort|rename|drop-add Default abort
74
+ --d1 <binding> D1 binding name from wrangler.toml (only with --dialect d1)
75
+ --remote Target remote D1 instead of local (only with --dialect d1)
76
+ --apply Run 'wrangler d1 migrations apply' after writing files
77
+ --yes Skip the --remote --apply confirmation pause
65
78
  --dry-run Print SQL to stdout, don't write
66
79
 
67
80
  Other commands (ingest, mcp, serve, install-hooks, audit, capture, promote)
@@ -118,6 +131,14 @@ export async function run(argv) {
118
131
  const { exportCommand } = await import("./commands/export.js");
119
132
  return exportCommand(rest, cwd);
120
133
  }
134
+ case "verify": {
135
+ const { verifyCommand } = await import("./commands/verify.js");
136
+ return verifyCommand(rest, cwd);
137
+ }
138
+ case "prompt-snapshot": {
139
+ const { promptSnapshotCommand } = await import("./commands/prompt-snapshot.js");
140
+ return promptSnapshotCommand(rest, cwd);
141
+ }
121
142
  case "migrate": {
122
143
  const { migrateCommand } = await import("./commands/migrate.js");
123
144
  return migrateCommand(rest, cwd);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export interface InitFlags {
3
3
  quiet: boolean;
4
4
  printOnly: boolean;
5
5
  refreshDocs: boolean;
6
+ d1: boolean;
6
7
  }
7
8
  export declare function parseInitArgs(argv: string[]): InitFlags;
8
9
  export interface GenFlags {
@@ -14,7 +15,19 @@ export interface ExportFlags {
14
15
  out: string | undefined;
15
16
  }
16
17
  export declare function parseExportArgs(argv: string[]): ExportFlags;
17
- declare const DIALECTS: readonly ["sqlite", "postgres"];
18
+ export interface VerifyFlags {
19
+ /** Directory (relative to cwd) holding provider-resolved template text. */
20
+ prompts: string | undefined;
21
+ }
22
+ export declare function parseVerifyArgs(argv: string[]): VerifyFlags;
23
+ export interface PromptSnapshotFlags {
24
+ /** Compare against committed snapshots and fail on drift; never write. */
25
+ check: boolean;
26
+ /** Directory (relative to cwd) holding provider-resolved template text. */
27
+ prompts: string | undefined;
28
+ }
29
+ export declare function parsePromptSnapshotArgs(argv: string[]): PromptSnapshotFlags;
30
+ declare const DIALECTS: readonly ["sqlite", "postgres", "d1"];
18
31
  type Dialect = (typeof DIALECTS)[number];
19
32
  declare const ALLOW_TOKENS: readonly ["drop-column", "drop-table", "type-change", "drop-index", "drop-fk", "nullable-to-not-null"];
20
33
  type AllowToken = (typeof ALLOW_TOKENS)[number];
@@ -28,6 +41,10 @@ export interface MigrateFlags {
28
41
  allow: AllowToken[];
29
42
  onAmbiguous: OnAmbiguous | undefined;
30
43
  dryRun: boolean;
44
+ d1Binding: string | undefined;
45
+ remote: boolean;
46
+ apply: boolean;
47
+ yes: boolean;
31
48
  }
32
49
  export declare function parseMigrateArgs(argv: string[]): MigrateFlags;
33
50
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAkBvD;AAMD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAarD;AAMD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAY3D;AAMD,QAAA,MAAM,QAAQ,iCAAkC,CAAC;AACjD,KAAK,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzC,QAAA,MAAM,YAAY,wGAOR,CAAC;AACX,KAAK,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,QAAA,MAAM,YAAY,0CAA2C,CAAC;AAC9D,KAAK,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA+C7D"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAoBvD;AAMD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAarD;AAMD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAY3D;AAMD,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAY3D;AAMD,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAc3E;AAMD,QAAA,MAAM,QAAQ,uCAAwC,CAAC;AACvD,KAAK,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzC,QAAA,MAAM,YAAY,wGAOR,CAAC;AACX,KAAK,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,QAAA,MAAM,YAAY,0CAA2C,CAAC;AAC9D,KAAK,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;IAEhB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAuD7D"}
@@ -7,6 +7,7 @@ export function parseInitArgs(argv) {
7
7
  quiet: { type: "boolean", default: false },
8
8
  "print-only": { type: "boolean", default: false },
9
9
  "refresh-docs": { type: "boolean", default: false },
10
+ d1: { type: "boolean", default: false },
10
11
  },
11
12
  strict: true,
12
13
  allowPositionals: false,
@@ -16,6 +17,7 @@ export function parseInitArgs(argv) {
16
17
  quiet: !!values.quiet,
17
18
  printOnly: !!values["print-only"],
18
19
  refreshDocs: !!values["refresh-docs"],
20
+ d1: !!values.d1,
19
21
  };
20
22
  }
21
23
  export function parseGenArgs(argv) {
@@ -45,10 +47,38 @@ export function parseExportArgs(argv) {
45
47
  out: values.out,
46
48
  };
47
49
  }
50
+ export function parseVerifyArgs(argv) {
51
+ const { values } = parseArgs({
52
+ args: argv,
53
+ options: {
54
+ prompts: { type: "string" },
55
+ },
56
+ strict: true,
57
+ allowPositionals: false,
58
+ });
59
+ return {
60
+ prompts: values.prompts,
61
+ };
62
+ }
63
+ export function parsePromptSnapshotArgs(argv) {
64
+ const { values } = parseArgs({
65
+ args: argv,
66
+ options: {
67
+ check: { type: "boolean", default: false },
68
+ prompts: { type: "string" },
69
+ },
70
+ strict: true,
71
+ allowPositionals: false,
72
+ });
73
+ return {
74
+ check: !!values.check,
75
+ prompts: values.prompts,
76
+ };
77
+ }
48
78
  // ---------------------------------------------------------------------------
49
79
  // migrate flags
50
80
  // ---------------------------------------------------------------------------
51
- const DIALECTS = ["sqlite", "postgres"];
81
+ const DIALECTS = ["sqlite", "postgres", "d1"];
52
82
  const ALLOW_TOKENS = [
53
83
  "drop-column",
54
84
  "drop-table",
@@ -69,6 +99,10 @@ export function parseMigrateArgs(argv) {
69
99
  "allow": { type: "string" },
70
100
  "on-ambiguous": { type: "string" },
71
101
  "dry-run": { type: "boolean", default: false },
102
+ "d1": { type: "string" },
103
+ "remote": { type: "boolean", default: false },
104
+ "apply": { type: "boolean", default: false },
105
+ "yes": { type: "boolean", default: false },
72
106
  },
73
107
  strict: true,
74
108
  allowPositionals: false,
@@ -98,6 +132,10 @@ export function parseMigrateArgs(argv) {
98
132
  allow: allowTokens,
99
133
  onAmbiguous: onAmb,
100
134
  dryRun: !!values["dry-run"],
135
+ d1Binding: values.d1,
136
+ remote: !!values.remote,
137
+ apply: !!values.apply,
138
+ yes: !!values.yes,
101
139
  };
102
140
  }
103
141
  //# sourceMappingURL=args.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,26 @@
1
1
  import type { GenFlags, MigrateFlags } from "./args.js";
2
+ import type { Dialect } from "./kysely.js";
3
+ export declare const MIGRATE_DEFAULT_OUT_DIR = "./.metaobjects/migrations";
2
4
  export interface ResolvedGenConfig {
3
5
  dryRun: boolean;
4
6
  entities: string[];
5
7
  }
8
+ export interface ResolvedD1Config {
9
+ binding: string | undefined;
10
+ remote: boolean;
11
+ autoApply: boolean;
12
+ wranglerConfigPath: string | undefined;
13
+ }
6
14
  export interface ResolvedMigrateConfig {
7
15
  outDir: string;
8
16
  databaseUrl: string | undefined;
9
- dialect: "sqlite" | "postgres" | undefined;
17
+ dialect: Dialect | undefined;
10
18
  onAmbiguous: "abort" | "rename" | "drop-add";
11
19
  allow: string[];
12
20
  slug: string | undefined;
13
21
  dryRun: boolean;
22
+ yes: boolean;
23
+ d1: ResolvedD1Config;
14
24
  }
15
25
  export declare function resolveGenConfig(flags: GenFlags): ResolvedGenConfig;
16
26
  export declare function resolveMigrateConfig(flags: MigrateFlags, metaRoot: string): Promise<ResolvedMigrateConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAkBxD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;CACjB;AAmBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB,CAEnE;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC,CAiBhC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAM3C,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAcnE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,EAAE,EAAE,gBAAgB,CAAC;CACtB;AAmBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB,CAEnE;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC,CAyBhC"}
@@ -4,8 +4,9 @@ import { ConfigSchema, DEFAULT_METAOBJECTS_DIR } from "@metaobjectsdev/sdk";
4
4
  // ---------------------------------------------------------------------------
5
5
  // Built-in defaults
6
6
  // ---------------------------------------------------------------------------
7
+ export const MIGRATE_DEFAULT_OUT_DIR = "./.metaobjects/migrations";
7
8
  const MIGRATE_DEFAULTS = {
8
- outDir: "./.metaobjects/migrations",
9
+ outDir: MIGRATE_DEFAULT_OUT_DIR,
9
10
  databaseUrl: undefined,
10
11
  dialect: undefined,
11
12
  onAmbiguous: "abort",
@@ -32,6 +33,7 @@ export function resolveGenConfig(flags) {
32
33
  export async function resolveMigrateConfig(flags, metaRoot) {
33
34
  const config = await tryLoadConfig(metaRoot);
34
35
  const cfgBlock = config?.migrate ?? {};
36
+ const d1Block = cfgBlock.d1 ?? {};
35
37
  const envUrl = process.env.DATABASE_URL;
36
38
  return {
37
39
  outDir: flags.outDir ?? cfgBlock.outDir ?? MIGRATE_DEFAULTS.outDir,
@@ -43,6 +45,13 @@ export async function resolveMigrateConfig(flags, metaRoot) {
43
45
  : (cfgBlock.allow ?? MIGRATE_DEFAULTS.allow),
44
46
  slug: flags.slug,
45
47
  dryRun: flags.dryRun,
48
+ yes: flags.yes,
49
+ d1: {
50
+ binding: flags.d1Binding ?? d1Block.binding,
51
+ remote: flags.remote || (d1Block.remote ?? false),
52
+ autoApply: flags.apply || (d1Block.autoApply ?? false),
53
+ wranglerConfigPath: d1Block.wranglerConfigPath,
54
+ },
46
55
  };
47
56
  }
48
57
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAe,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGzF,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,2BAA2B;IACnC,WAAW,EAAE,SAA+B;IAC5C,OAAO,EAAE,SAA8C;IACvD,WAAW,EAAE,OAAgB;IAC7B,KAAK,EAAE,EAAc;CACtB,CAAC;AAqBF,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3F,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAmB,EACnB,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAExC,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM;QAClE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,IAAI,QAAQ,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW;QACvF,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO;QACtE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW;QACtF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,KAAK;YACb,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAC9C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAe,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAIzF,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAEnE,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,uBAAuB;IAC/B,WAAW,EAAE,SAA+B;IAC5C,OAAO,EAAE,SAAgC;IACzC,WAAW,EAAE,OAAgB;IAC7B,KAAK,EAAE,EAAc;CACtB,CAAC;AA8BF,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3F,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAmB,EACnB,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAExC,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM;QAClE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,IAAI,QAAQ,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW;QACvF,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO;QACtE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW;QACtF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,KAAK;YACb,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAC9C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,EAAE,EAAE;YACF,OAAO,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO;YAC3C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;YACjD,SAAS,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;YACtD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC/C;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Provider } from "@metaobjectsdev/render";
2
+ export declare class FileProvider implements Provider {
3
+ private readonly baseDir;
4
+ constructor(baseDir: string);
5
+ resolve(ref: string): string | undefined;
6
+ }
7
+ //# sourceMappingURL=file-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-provider.d.ts","sourceRoot":"","sources":["../../../src/lib/file-provider.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,qBAAa,YAAa,YAAW,QAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAezC"}
@@ -0,0 +1,33 @@
1
+ // The filesystem template provider for `meta verify` (FR-004 Plan #3, T6).
2
+ //
3
+ // Maps a 2-layer logical reference (`group/source`) onto a file under a base
4
+ // directory, trying a small set of conventional extensions. This is the CLI's
5
+ // concrete provider; the render engine itself stays provider-agnostic (it only
6
+ // knows the `Provider` interface), so production hosts can swap in an RDB/NoSQL
7
+ // provider without touching the engine.
8
+ import { existsSync, readFileSync } from "node:fs";
9
+ import { join } from "node:path";
10
+ const EXTENSIONS = [".mustache", ".txt", ""];
11
+ export class FileProvider {
12
+ baseDir;
13
+ constructor(baseDir) {
14
+ this.baseDir = baseDir;
15
+ }
16
+ resolve(ref) {
17
+ // `group/source` → <baseDir>/group/source<ext>; node:path.join normalizes
18
+ // the embedded "/" separators for the host OS.
19
+ for (const ext of EXTENSIONS) {
20
+ const path = join(this.baseDir, ref) + ext;
21
+ if (existsSync(path)) {
22
+ try {
23
+ return readFileSync(path, "utf8");
24
+ }
25
+ catch {
26
+ // unreadable — fall through and try the next candidate
27
+ }
28
+ }
29
+ }
30
+ return undefined;
31
+ }
32
+ }
33
+ //# sourceMappingURL=file-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-provider.js","sourceRoot":"","sources":["../../../src/lib/file-provider.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAU,CAAC;AAEtD,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,OAAO,CAAC,GAAW;QACjB,0EAA0E;QAC1E,+CAA+C;QAC/C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;YAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,uDAAuD;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { Kysely } from "kysely";
2
- export type Dialect = "sqlite" | "postgres";
2
+ export type Dialect = "sqlite" | "postgres" | "d1";
3
3
  export interface KyselyHandle {
4
4
  db: Kysely<Record<string, unknown>>;
5
5
  dialect: Dialect;
@@ -1 +1 @@
1
- {"version":3,"file":"kysely.d.ts","sourceRoot":"","sources":["../../../src/lib/kysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAkBjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,YAAY,CAAC,CA2DvB"}
1
+ {"version":3,"file":"kysely.d.ts","sourceRoot":"","sources":["../../../src/lib/kysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAkBjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,YAAY,CAAC,CAiEvB"}
@@ -36,6 +36,9 @@ export function redactUrl(url) {
36
36
  export async function buildKyselyFromUrl(url, dialectOverride) {
37
37
  const dialect = dialectOverride ?? inferDialect(url);
38
38
  const displayUrl = redactUrl(url);
39
+ if (dialect === "d1") {
40
+ throw new Error(`dialect 'd1' does not use a URL connection; use meta migrate --d1 <binding>`);
41
+ }
39
42
  if (dialect === "sqlite") {
40
43
  let LibsqlDialect;
41
44
  try {