@metaobjectsdev/cli 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +40 -1
  2. package/dist/src/commands/migrate.d.ts +16 -0
  3. package/dist/src/commands/migrate.d.ts.map +1 -1
  4. package/dist/src/commands/migrate.js +252 -39
  5. package/dist/src/commands/migrate.js.map +1 -1
  6. package/dist/src/commands/verify.d.ts.map +1 -1
  7. package/dist/src/commands/verify.js +162 -53
  8. package/dist/src/commands/verify.js.map +1 -1
  9. package/dist/src/index.d.ts.map +1 -1
  10. package/dist/src/index.js +6 -0
  11. package/dist/src/index.js.map +1 -1
  12. package/dist/src/lib/allow.d.ts +10 -0
  13. package/dist/src/lib/allow.d.ts.map +1 -0
  14. package/dist/src/lib/allow.js +50 -0
  15. package/dist/src/lib/allow.js.map +1 -0
  16. package/dist/src/lib/args.d.ts +22 -4
  17. package/dist/src/lib/args.d.ts.map +1 -1
  18. package/dist/src/lib/args.js +47 -11
  19. package/dist/src/lib/args.js.map +1 -1
  20. package/dist/src/lib/bun-sqlite-dialect.d.ts +13 -0
  21. package/dist/src/lib/bun-sqlite-dialect.d.ts.map +1 -0
  22. package/dist/src/lib/bun-sqlite-dialect.js +119 -0
  23. package/dist/src/lib/bun-sqlite-dialect.js.map +1 -0
  24. package/dist/src/lib/config.d.ts +11 -0
  25. package/dist/src/lib/config.d.ts.map +1 -1
  26. package/dist/src/lib/config.js +4 -0
  27. package/dist/src/lib/config.js.map +1 -1
  28. package/dist/src/lib/kysely.d.ts.map +1 -1
  29. package/dist/src/lib/kysely.js +21 -7
  30. package/dist/src/lib/kysely.js.map +1 -1
  31. package/dist/src/lib/projection-migrations.d.ts.map +1 -1
  32. package/dist/src/lib/projection-migrations.js +2 -6
  33. package/dist/src/lib/projection-migrations.js.map +1 -1
  34. package/package.json +11 -10
  35. package/src/commands/migrate.ts +277 -42
  36. package/src/commands/verify.ts +172 -61
  37. package/src/index.ts +6 -0
  38. package/src/lib/allow.ts +54 -0
  39. package/src/lib/args.ts +77 -15
  40. package/src/lib/bun-sqlite-dialect.ts +146 -0
  41. package/src/lib/config.ts +15 -0
  42. package/src/lib/kysely.ts +23 -10
  43. package/src/lib/projection-migrations.ts +2 -6
@@ -0,0 +1,119 @@
1
+ // A Kysely SQLite dialect backed by Bun's built-in `bun:sqlite`.
2
+ //
3
+ // WHY: the standalone `meta` binary is produced with `bun build --compile`,
4
+ // which embeds the Bun runtime but CANNOT bundle native node addons. The
5
+ // default sqlite driver (`@libsql/kysely-libsql`) loads a platform-native
6
+ // `.node` addon (`@libsql/linux-x64-gnu` etc.) via a runtime require that the
7
+ // single-file binary's virtual filesystem can't resolve — so libsql fails
8
+ // inside the compiled binary with `Cannot find module '@libsql/linux-x64-gnu'`.
9
+ //
10
+ // `bun:sqlite` ships *inside* the Bun runtime that `--compile` embeds, so it
11
+ // needs no on-disk addon. This dialect is therefore the sqlite driver the
12
+ // standalone binary uses. The npm/Node distribution keeps using libsql (this
13
+ // module is only loaded when running under Bun — see buildKyselyFromUrl).
14
+ //
15
+ // The `bun:sqlite` import is dynamic + typed loosely so the tsc → Node build
16
+ // (which has no `bun:sqlite` module) never tries to resolve it statically.
17
+ import { SqliteAdapter, SqliteIntrospector, SqliteQueryCompiler, } from "kysely";
18
+ /**
19
+ * Open a `bun:sqlite` database for a `file:`/`libsql:` URL (or a bare path).
20
+ * Throws when not running under Bun (no `bun:sqlite` module).
21
+ */
22
+ async function openBunSqlite(url) {
23
+ // `bun:sqlite` is a Bun built-in; the dynamic specifier keeps Node/tsc from
24
+ // resolving it. The cast is necessary because there's no ambient type here.
25
+ const mod = (await import("bun:sqlite"));
26
+ // Strip a file:/libsql: scheme to a plain filesystem path; `:memory:` stays.
27
+ let filename = url;
28
+ const schemeMatch = /^(file|libsql):\/\/(.*)$/i.exec(url) ?? /^(file|libsql):(.*)$/i.exec(url);
29
+ if (schemeMatch)
30
+ filename = schemeMatch[2] ?? "";
31
+ if (filename === "")
32
+ filename = ":memory:";
33
+ return new mod.Database(filename);
34
+ }
35
+ class BunSqliteConnection {
36
+ db;
37
+ constructor(db) {
38
+ this.db = db;
39
+ }
40
+ async executeQuery(compiledQuery) {
41
+ const { sql, parameters } = compiledQuery;
42
+ const stmt = this.db.query(sql);
43
+ const params = parameters;
44
+ // SELECT-shaped statements return rows; everything else reports counts.
45
+ const isReturningRows = /^\s*(select|with|pragma)\b/i.test(sql);
46
+ if (isReturningRows) {
47
+ const rows = stmt.all(...params);
48
+ return { rows };
49
+ }
50
+ const info = stmt.run(...params);
51
+ return {
52
+ numAffectedRows: BigInt(info.changes),
53
+ insertId: BigInt(info.lastInsertRowid),
54
+ rows: [],
55
+ };
56
+ }
57
+ // Async generator that never yields by design — streaming is unsupported.
58
+ async *streamQuery() {
59
+ throw new Error("bun:sqlite dialect does not support streaming");
60
+ }
61
+ }
62
+ class BunSqliteDriver {
63
+ url;
64
+ db;
65
+ connection;
66
+ constructor(url) {
67
+ this.url = url;
68
+ }
69
+ async init() {
70
+ this.db = await openBunSqlite(this.url);
71
+ this.connection = new BunSqliteConnection(this.db);
72
+ }
73
+ async acquireConnection() {
74
+ if (this.connection === undefined)
75
+ throw new Error("bun:sqlite driver not initialized");
76
+ return this.connection;
77
+ }
78
+ async beginTransaction(conn) {
79
+ await conn.executeQuery({ sql: "begin", parameters: [], query: { kind: "RawNode" } });
80
+ }
81
+ async commitTransaction(conn) {
82
+ await conn.executeQuery({ sql: "commit", parameters: [], query: { kind: "RawNode" } });
83
+ }
84
+ async rollbackTransaction(conn) {
85
+ await conn.executeQuery({ sql: "rollback", parameters: [], query: { kind: "RawNode" } });
86
+ }
87
+ async releaseConnection() {
88
+ /* single shared connection — nothing to release */
89
+ }
90
+ async destroy() {
91
+ this.db?.close();
92
+ this.db = undefined;
93
+ this.connection = undefined;
94
+ }
95
+ }
96
+ /** Kysely Dialect backed by `bun:sqlite`. */
97
+ export class BunSqliteDialect {
98
+ url;
99
+ constructor(url) {
100
+ this.url = url;
101
+ }
102
+ createDriver() {
103
+ return new BunSqliteDriver(this.url);
104
+ }
105
+ createQueryCompiler() {
106
+ return new SqliteQueryCompiler();
107
+ }
108
+ createAdapter() {
109
+ return new SqliteAdapter();
110
+ }
111
+ createIntrospector(db) {
112
+ return new SqliteIntrospector(db);
113
+ }
114
+ }
115
+ /** True when running under the Bun runtime (where `bun:sqlite` is available). */
116
+ export function isBun() {
117
+ return typeof globalThis.Bun !== "undefined";
118
+ }
119
+ //# sourceMappingURL=bun-sqlite-dialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun-sqlite-dialect.js","sourceRoot":"","sources":["../../../src/lib/bun-sqlite-dialect.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,18 @@ export interface ResolvedMigrateConfig {
19
19
  allow: string[];
20
20
  slug: string | undefined;
21
21
  dryRun: boolean;
22
+ /** Run pending migration files against the DB (postgres/sqlite, ledger-backed). */
23
+ apply: boolean;
24
+ /**
25
+ * Roll back all applied migrations newer than this target (target retained),
26
+ * postgres/sqlite only. Mutually exclusive with apply.
27
+ */
28
+ rollback: string | undefined;
22
29
  yes: boolean;
30
+ /** Use live-DB introspection instead of the committed snapshot. */
31
+ fromDb: boolean;
32
+ /** Seed the snapshot and exit (no migration). */
33
+ baseline: boolean;
23
34
  d1: ResolvedD1Config;
24
35
  }
25
36
  export declare function resolveGenConfig(flags: GenFlags): ResolvedGenConfig;
@@ -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;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"}
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,mFAAmF;IACnF,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,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,CA6BhC"}
@@ -45,7 +45,11 @@ export async function resolveMigrateConfig(flags, metaRoot) {
45
45
  : (cfgBlock.allow ?? MIGRATE_DEFAULTS.allow),
46
46
  slug: flags.slug,
47
47
  dryRun: flags.dryRun,
48
+ apply: flags.apply,
49
+ rollback: flags.rollback,
48
50
  yes: flags.yes,
51
+ fromDb: flags.fromDb,
52
+ baseline: flags.baseline,
49
53
  d1: {
50
54
  binding: flags.d1Binding ?? d1Block.binding,
51
55
  remote: flags.remote || (d1Block.remote ?? false),
@@ -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;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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -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,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"}
1
+ {"version":3,"file":"kysely.d.ts","sourceRoot":"","sources":["../../../src/lib/kysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,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,CA6EvB"}
@@ -1,4 +1,5 @@
1
1
  import { Kysely } from "kysely";
2
+ import { BunSqliteDialect, isBun } from "./bun-sqlite-dialect.js";
2
3
  /**
3
4
  * Infer dialect from URL scheme. Throws if the scheme isn't recognized.
4
5
  */
@@ -40,15 +41,28 @@ export async function buildKyselyFromUrl(url, dialectOverride) {
40
41
  throw new Error(`dialect 'd1' does not use a URL connection; use meta migrate --d1 <binding>`);
41
42
  }
42
43
  if (dialect === "sqlite") {
43
- let LibsqlDialect;
44
- try {
45
- const mod = await import("@libsql/kysely-libsql");
46
- LibsqlDialect = mod.LibsqlDialect;
44
+ // Under Bun (notably the `bun build --compile` standalone binary), use the
45
+ // built-in `bun:sqlite` driver. It ships inside the embedded Bun runtime,
46
+ // so unlike `@libsql/kysely-libsql`, whose platform-native `.node` addon
47
+ // can't be bundled into a single-file binary — it works in the compiled
48
+ // `meta` binary with no on-disk dependency. The Node/npm distribution falls
49
+ // through to libsql below.
50
+ let sqliteDialect;
51
+ if (isBun()) {
52
+ sqliteDialect = new BunSqliteDialect(url);
47
53
  }
48
- catch {
49
- throw new Error(`dialect 'sqlite' requires '@libsql/kysely-libsql'; install it: 'bun add @libsql/kysely-libsql'`);
54
+ else {
55
+ let LibsqlDialect;
56
+ try {
57
+ const mod = await import("@libsql/kysely-libsql");
58
+ LibsqlDialect = mod.LibsqlDialect;
59
+ }
60
+ catch {
61
+ throw new Error(`dialect 'sqlite' requires '@libsql/kysely-libsql'; install it: 'bun add @libsql/kysely-libsql'`);
62
+ }
63
+ sqliteDialect = new LibsqlDialect({ url });
50
64
  }
51
- const db = new Kysely({ dialect: new LibsqlDialect({ url }) });
65
+ const db = new Kysely({ dialect: sqliteDialect });
52
66
  let closed = false;
53
67
  return {
54
68
  db,
@@ -1 +1 @@
1
- {"version":3,"file":"kysely.js","sourceRoot":"","sources":["../../../src/lib/kysely.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kysely.js","sourceRoot":"","sources":["../../../src/lib/kysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAalE;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,uEAAuE,CAAC,CAAC;IACnH,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;IACvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY;YACf,OAAO,UAAU,CAAC;QACpB;YACE,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,kDAAkD,CACrF,CAAC;IACN,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,mCAAmC,EAAE,WAAW,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,eAAyB;IAEzB,MAAM,OAAO,GAAG,eAAe,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,2EAA2E;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,wEAAwE;QACxE,4EAA4E;QAC5E,2BAA2B;QAC3B,IAAI,aAA0F,CAAC;QAC/F,IAAI,KAAK,EAAE,EAAE,CAAC;YACZ,aAAa,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YAEN,IAAI,aAAgC,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;gBAClD,aAAa,GAAG,GAAG,CAAC,aAA6C,CAAC;YACpE,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;YACJ,CAAC;YACD,aAAa,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,MAAM,CAA0B,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3E,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,OAAO;YACL,EAAE;YACF,OAAO;YACP,UAAU;YACV,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,IAAI,MAAM;oBAAE,OAAO;gBACnB,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,CAAC;oBAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YACrD,CAAC;SACF,CAAC;IACJ,CAAC;IAID,IAAI,EAAgB,CAAC;IACrB,IAAI,eAAwD,CAAC;IAC7D,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAA4B,CAAC;QACnD,CAAC,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,MAAM,CAA0B,EAAE,OAAO,EAAE,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1G,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO;QACL,EAAE;QACF,OAAO;QACP,UAAU;QACV,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,CAAC;gBAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YACnD,IAAI,CAAC;gBAAC,MAAO,IAAgD,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;QAChG,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"projection-migrations.d.ts","sourceRoot":"","sources":["../../../src/lib/projection-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,0EAA0E;AAC1E,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,qFAAqF;IACrF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;IACxE;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxD;AAOD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,wBAAwB,GAC7B,oBAAoB,CAsEtB;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,sBAAsB,CAAC,GACxE,0BAA0B,CAgC5B"}
1
+ {"version":3,"file":"projection-migrations.d.ts","sourceRoot":"","sources":["../../../src/lib/projection-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,0EAA0E;AAC1E,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,qFAAqF;IACrF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;IACxE;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,wBAAwB,GAC7B,oBAAoB,CAsEtB;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,sBAAsB,CAAC,GACxE,0BAA0B,CAgC5B"}
@@ -1,10 +1,6 @@
1
1
  import { resolveTableName, MetaRoot, } from "@metaobjectsdev/metadata";
2
2
  import { isProjection, extractViewSpec, emitViewDdl, } from "@metaobjectsdev/codegen-ts";
3
- import { computeViewMigrations, } from "@metaobjectsdev/migrate-ts";
4
- /** Collapse whitespace + strip trailing ";" for textual view-SQL comparison. */
5
- function normalizeViewSql(sql) {
6
- return sql.replace(/\s+/g, " ").replace(/;\s*$/, "").trim();
7
- }
3
+ import { computeViewMigrations, viewSqlEquals, } from "@metaobjectsdev/migrate-ts";
8
4
  /**
9
5
  * Walk all projection entities in metadata, extract their ViewSpec, emit CREATE
10
6
  * VIEW DDL, and compute view migration SQL via computeViewMigrations.
@@ -54,7 +50,7 @@ export function computeProjectionMigrations(opts) {
54
50
  // Avoids the "every migration re-creates every view" noise when nothing
55
51
  // about the view's body actually changed.
56
52
  const existing = opts.existingViewSql?.get(spec.viewName);
57
- if (existing !== undefined && normalizeViewSql(existing) === normalizeViewSql(createSql)) {
53
+ if (existing !== undefined && viewSqlEquals(existing, createSql)) {
58
54
  continue;
59
55
  }
60
56
  views.push({
@@ -1 +1 @@
1
- {"version":3,"file":"projection-migrations.js","sourceRoot":"","sources":["../../../src/lib/projection-migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection-migrations.js","sourceRoot":"","sources":["../../../src/lib/projection-migrations.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/cli",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "CLI for MetaObjects: scaffold, codegen, migrate, and drift-detection commands.",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -21,7 +21,8 @@
21
21
  "files": ["dist", "src", "README.md", "LICENSE"],
22
22
  "scripts": {
23
23
  "build": "tsc -p .",
24
- "typecheck": "tsc -p tsconfig.typecheck.json"
24
+ "typecheck": "tsc -p tsconfig.typecheck.json",
25
+ "build:binary": "bun build ./bin/meta.ts --compile --outfile dist/meta --external @biomejs/wasm-bundler --external @biomejs/wasm-web"
25
26
  },
26
27
  "license": "Apache-2.0",
27
28
  "author": "Doug Mealing <doug@dougmealing.com>",
@@ -36,14 +37,14 @@
36
37
  },
37
38
  "keywords": ["metaobjects", "cli", "scaffold", "codegen", "drift-detection"],
38
39
  "dependencies": {
39
- "@metaobjectsdev/sdk": "0.8.1",
40
- "@metaobjectsdev/metadata": "0.8.1",
41
- "@metaobjectsdev/render": "0.8.1",
42
- "@metaobjectsdev/codegen-ts": "0.8.1",
43
- "@metaobjectsdev/codegen-ts-react": "0.8.1",
44
- "@metaobjectsdev/codegen-ts-tanstack": "0.8.1",
45
- "@metaobjectsdev/migrate-ts": "0.8.1",
46
- "@metaobjectsdev/runtime-ts": "0.8.1",
40
+ "@metaobjectsdev/sdk": "0.9.0",
41
+ "@metaobjectsdev/metadata": "0.9.0",
42
+ "@metaobjectsdev/render": "0.9.0",
43
+ "@metaobjectsdev/codegen-ts": "0.9.0",
44
+ "@metaobjectsdev/codegen-ts-react": "0.9.0",
45
+ "@metaobjectsdev/codegen-ts-tanstack": "0.9.0",
46
+ "@metaobjectsdev/migrate-ts": "0.9.0",
47
+ "@metaobjectsdev/runtime-ts": "0.9.0",
47
48
  "jiti": "^2.4.0"
48
49
  },
49
50
  "peerDependencies": {