ugly-app 0.1.948 → 0.1.950

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 (64) hide show
  1. package/dist/cli/build.d.ts.map +1 -1
  2. package/dist/cli/build.js +28 -0
  3. package/dist/cli/build.js.map +1 -1
  4. package/dist/cli/loadCollections.d.ts +19 -0
  5. package/dist/cli/loadCollections.d.ts.map +1 -1
  6. package/dist/cli/loadCollections.js +45 -0
  7. package/dist/cli/loadCollections.js.map +1 -1
  8. package/dist/cli/migrate.d.ts.map +1 -1
  9. package/dist/cli/migrate.js +63 -60
  10. package/dist/cli/migrate.js.map +1 -1
  11. package/dist/cli/schemaGen.d.ts.map +1 -1
  12. package/dist/cli/schemaGen.js +54 -43
  13. package/dist/cli/schemaGen.js.map +1 -1
  14. package/dist/cli/schemaStatus.d.ts.map +1 -1
  15. package/dist/cli/schemaStatus.js +25 -25
  16. package/dist/cli/schemaStatus.js.map +1 -1
  17. package/dist/cli/version.d.ts +1 -1
  18. package/dist/cli/version.js +1 -1
  19. package/dist/client/audio/AudioPlayer.d.ts +1 -0
  20. package/dist/client/audio/AudioPlayer.d.ts.map +1 -1
  21. package/dist/client/audio/AudioPlayer.js +13 -5
  22. package/dist/client/audio/AudioPlayer.js.map +1 -1
  23. package/dist/client/audio/AudioRecorder.d.ts +1 -0
  24. package/dist/client/audio/AudioRecorder.d.ts.map +1 -1
  25. package/dist/client/audio/AudioRecorder.js +8 -2
  26. package/dist/client/audio/AudioRecorder.js.map +1 -1
  27. package/dist/client/audio/audioPlayer.worklet.js +30 -3
  28. package/dist/client/audio/audioPlayer.worklet.js.map +1 -1
  29. package/dist/client/audio/audioRecorder.worklet.js +7 -3
  30. package/dist/client/audio/audioRecorder.worklet.js.map +1 -1
  31. package/dist/client/audio/workletLoader.d.ts +16 -0
  32. package/dist/client/audio/workletLoader.d.ts.map +1 -0
  33. package/dist/client/audio/workletLoader.js +49 -0
  34. package/dist/client/audio/workletLoader.js.map +1 -0
  35. package/dist/server/App.d.ts.map +1 -1
  36. package/dist/server/App.js +7 -1
  37. package/dist/server/App.js.map +1 -1
  38. package/dist/vite/audioWorkletsPlugin.d.ts +36 -0
  39. package/dist/vite/audioWorkletsPlugin.d.ts.map +1 -0
  40. package/dist/vite/audioWorkletsPlugin.js +99 -0
  41. package/dist/vite/audioWorkletsPlugin.js.map +1 -0
  42. package/dist/vite/index.d.ts +1 -0
  43. package/dist/vite/index.d.ts.map +1 -1
  44. package/dist/vite/index.js +1 -0
  45. package/dist/vite/index.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/cli/build.ts +33 -0
  48. package/src/cli/loadCollections.ts +49 -0
  49. package/src/cli/migrate.ts +81 -81
  50. package/src/cli/schemaGen.ts +82 -70
  51. package/src/cli/schemaStatus.ts +33 -27
  52. package/src/cli/version.ts +1 -1
  53. package/src/client/audio/AudioPlayer.ts +25 -5
  54. package/src/client/audio/AudioRecorder.ts +20 -2
  55. package/src/client/audio/audioPlayer.worklet.ts +33 -6
  56. package/src/client/audio/audioRecorder.worklet.ts +11 -7
  57. package/src/client/audio/workletLoader.test.ts +110 -0
  58. package/src/client/audio/workletLoader.ts +55 -0
  59. package/src/client/audio/workletSync.test.ts +43 -0
  60. package/src/server/App.ts +7 -1
  61. package/src/vite/audioWorkletsPlugin.test.ts +45 -0
  62. package/src/vite/audioWorkletsPlugin.ts +104 -0
  63. package/src/vite/index.ts +6 -0
  64. package/templates/vite.config.ts +11 -2
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAChE,MAAM,GAAG,IAAI,CAKf;AAED,wBAAsB,QAAQ,CAC5B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GAC3C,OAAO,CAAC,IAAI,CAAC,CAqHf"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAaA;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAChE,MAAM,GAAG,IAAI,CAKf;AAwBD,wBAAsB,QAAQ,CAC5B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GAC3C,OAAO,CAAC,IAAI,CAAC,CA4Hf"}
package/dist/cli/build.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { execSync } from 'child_process';
2
2
  import fs from 'fs';
3
3
  import path from 'path';
4
+ import { AUDIO_WORKLET_FILES, workletAssetPath, } from '../vite/audioWorkletsPlugin.js';
4
5
  import { runExportCollections } from './exportCollections.js';
5
6
  import { nodeBinCommand } from './resolveBin.js';
6
7
  import { runBuildStatic, STATIC_PREFIX } from './staticAssets.js';
@@ -24,6 +25,27 @@ export function viteCdnBase(staticCfg) {
24
25
  return null;
25
26
  return `${base.replace(/\/$/, '')}/${STATIC_PREFIX}`;
26
27
  }
28
+ /**
29
+ * Copy the prebuilt AudioWorklet files from the installed ugly-app package
30
+ * into the client build output, next to the JS chunks (`assets/` by vite
31
+ * default, the output root otherwise). Best-effort: a missing source file
32
+ * just means the runtime blob: fallback is used.
33
+ */
34
+ function copyAudioWorklets(clientDistDir) {
35
+ if (!fs.existsSync(clientDistDir))
36
+ return;
37
+ const assetsDir = fs.existsSync(path.join(clientDistDir, 'assets'))
38
+ ? path.join(clientDistDir, 'assets')
39
+ : clientDistDir;
40
+ for (const file of AUDIO_WORKLET_FILES) {
41
+ try {
42
+ fs.copyFileSync(workletAssetPath(file), path.join(assetsDir, file));
43
+ }
44
+ catch (err) {
45
+ console.warn(`[Build] could not copy ${file}; blob: fallback will be used (${err.message})`);
46
+ }
47
+ }
48
+ }
27
49
  export async function runBuild(opts = {}) {
28
50
  // Emit database-collections.json first. Fast, pure TS import — fails
29
51
  // loudly on zod schema errors before we do the expensive Vite/tsc work.
@@ -76,6 +98,12 @@ export const buildId = '${buildId}';
76
98
  cwd: process.cwd(),
77
99
  env: { ...process.env, ...(cdnBase ? { VITE_CDN_BASE: cdnBase } : {}) },
78
100
  });
101
+ // AudioPlayer/AudioRecorder resolve their AudioWorklet as a static asset
102
+ // beside the built JS (sibling of import.meta.url), falling back to a blob:
103
+ // URL when it is missing. Apps whose vite config includes
104
+ // audioWorkletsPlugin already emitted these; copy them here too so apps on
105
+ // an older config get them with zero changes (the copy is idempotent).
106
+ copyAudioWorklets(path.join(distDir, 'client'));
79
107
  // Bundle server with esbuild (only for simple projects without custom server build)
80
108
  const serverEntry = path.join(process.cwd(), 'server', 'index.ts');
81
109
  const hasCustomServerBuild = fs.existsSync(path.join(process.cwd(), 'vite.config.server.js'));
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,23 @@ export interface LoadedCollection {
15
15
  indexes?: IndexDef[];
16
16
  }
17
17
  export declare function loadProjectCollections(projectDir?: string): Promise<Record<string, LoadedCollection>>;
18
+ /**
19
+ * Load the app's `shared/collections.ts` merged over `BUILTIN_DEFS`, using the
20
+ * same lenient semantics as `db:migrate` / `db:schema-gen` / `db:schema-status`:
21
+ * a missing or unimportable collections file yields builtins only (no throw).
22
+ * Unlike `loadProjectCollections`, the caller owns the `importTs` lifecycle —
23
+ * call `disposeImportTs()` when done (the schema/migration CLIs already do so
24
+ * in a `finally`).
25
+ */
26
+ export declare function loadAppCollectionDefs(): Promise<Record<string, LoadedCollection>>;
27
+ /**
28
+ * True when at least one collection persists to Postgres (Neon). Mirrors the
29
+ * skip rules in `SchemaCheck.checkSchemas`: defs without a `schema` and
30
+ * getter-backed collections have no local table, and `db: d1` collections live
31
+ * in D1/SQLite — none of them need Postgres. When this returns false the
32
+ * schema/migration CLI commands must not touch Postgres at all (an all-D1 app
33
+ * has no DATABASE_URL and no pg adapter). Like `checkSchemas`, a collection
34
+ * missing the mandatory `meta.db` declaration throws via `backendKind`.
35
+ */
36
+ export declare function hasPostgresBackedCollections(defs: Record<string, LoadedCollection>): boolean;
18
37
  //# sourceMappingURL=loadCollections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadCollections.d.ts","sourceRoot":"","sources":["../../src/cli/loadCollections.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAkB3C"}
1
+ {"version":3,"file":"loadCollections.d.ts","sourceRoot":"","sources":["../../src/cli/loadCollections.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAkB3C;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CACpD,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CACjC,CAeA;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACrC,OAAO,CAQT"}
@@ -1,3 +1,4 @@
1
+ import { backendKind } from '../shared/DB.js';
1
2
  export async function loadProjectCollections(projectDir = process.cwd()) {
2
3
  const path = await import('node:path');
3
4
  const fs = await import('node:fs');
@@ -16,4 +17,48 @@ export async function loadProjectCollections(projectDir = process.cwd()) {
16
17
  const { BUILTIN_DEFS } = await import('../shared/DB.js');
17
18
  return { ...BUILTIN_DEFS, ...appDefs };
18
19
  }
20
+ /**
21
+ * Load the app's `shared/collections.ts` merged over `BUILTIN_DEFS`, using the
22
+ * same lenient semantics as `db:migrate` / `db:schema-gen` / `db:schema-status`:
23
+ * a missing or unimportable collections file yields builtins only (no throw).
24
+ * Unlike `loadProjectCollections`, the caller owns the `importTs` lifecycle —
25
+ * call `disposeImportTs()` when done (the schema/migration CLIs already do so
26
+ * in a `finally`).
27
+ */
28
+ export async function loadAppCollectionDefs() {
29
+ const path = await import('node:path');
30
+ const collectionsPath = path.resolve(process.cwd(), 'shared/collections.ts');
31
+ let appDefs = {};
32
+ try {
33
+ const { importTs } = await import('./uglyappConfig.js');
34
+ const mod = (await importTs(collectionsPath));
35
+ appDefs = mod.collections ?? {};
36
+ }
37
+ catch {
38
+ // No collections file (or unimportable) — builtins only.
39
+ }
40
+ const { BUILTIN_DEFS } = await import('../shared/DB.js');
41
+ return { ...BUILTIN_DEFS, ...appDefs };
42
+ }
43
+ /**
44
+ * True when at least one collection persists to Postgres (Neon). Mirrors the
45
+ * skip rules in `SchemaCheck.checkSchemas`: defs without a `schema` and
46
+ * getter-backed collections have no local table, and `db: d1` collections live
47
+ * in D1/SQLite — none of them need Postgres. When this returns false the
48
+ * schema/migration CLI commands must not touch Postgres at all (an all-D1 app
49
+ * has no DATABASE_URL and no pg adapter). Like `checkSchemas`, a collection
50
+ * missing the mandatory `meta.db` declaration throws via `backendKind`.
51
+ */
52
+ export function hasPostgresBackedCollections(defs) {
53
+ for (const def of Object.values(defs)) {
54
+ if (!def?.schema)
55
+ continue;
56
+ if (def.meta?.getter)
57
+ continue;
58
+ if (backendKind(def.meta?.db) === 'd1')
59
+ continue;
60
+ return true;
61
+ }
62
+ return false;
63
+ }
19
64
  //# sourceMappingURL=loadCollections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadCollections.js","sourceRoot":"","sources":["../../src/cli/loadCollections.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAqC,EAAE,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAE7B,CAAC;YACF,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,MAAM,eAAe,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACzD,OAAO,EAAE,GAAI,YAAiD,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"loadCollections.js","sourceRoot":"","sources":["../../src/cli/loadCollections.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQ9C,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAqC,EAAE,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAE7B,CAAC;YACF,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,MAAM,eAAe,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACzD,OAAO,EAAE,GAAI,YAAiD,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IAGzC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC7E,IAAI,OAAO,GAAqC,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,CAE3C,CAAC;QACF,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACzD,OAAO,EAAE,GAAI,YAAiD,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAAsC;IAEtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,MAAM;YAAE,SAAS;QAC3B,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM;YAAE,SAAS;QAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI;YAAE,SAAS;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAoBA,wBAAsB,aAAa,CACjC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GAC7C,OAAO,CAAC,IAAI,CAAC,CA8Gf"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAwBA,wBAAsB,aAAa,CACjC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GAC7C,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
@@ -3,6 +3,7 @@ import path from 'path';
3
3
  import { pgQuery as query } from '../server/Pg.js';
4
4
  import { closePg, initPg } from '../server/NodePool.js';
5
5
  import { disposeImportTs, importTs } from './uglyappConfig.js';
6
+ import { hasPostgresBackedCollections, loadAppCollectionDefs, } from './loadCollections.js';
6
7
  async function ensureMigrationsTable() {
7
8
  await query(`
8
9
  CREATE TABLE IF NOT EXISTS _migrations (
@@ -12,78 +13,80 @@ async function ensureMigrationsTable() {
12
13
  `);
13
14
  }
14
15
  export async function runMigrations(options = {}) {
15
- await initPg();
16
16
  try {
17
- await ensureMigrationsTable();
18
- // Find migration files
19
- const migrationsDir = path.join(process.cwd(), 'server', 'migrations');
20
- if (!fs.existsSync(migrationsDir)) {
21
- console.log('[Migrate] No migrations directory found at server/migrations/');
17
+ // All-D1 app (zero Postgres-backed collections): nothing to migrate and
18
+ // no DATABASE_URL / pg adapter to init — exit clean instead of throwing
19
+ // "no adapter installed".
20
+ const allDefs = await loadAppCollectionDefs();
21
+ if (!hasPostgresBackedCollections(allDefs)) {
22
+ console.log('[Migrate] All collections use the D1 backend — no Postgres migrations to apply.');
22
23
  return;
23
24
  }
24
- const files = fs
25
- .readdirSync(migrationsDir)
26
- .filter((f) => f.endsWith('.ts') || f.endsWith('.js'))
27
- .sort();
28
- const applied = await query('SELECT name, applied_at FROM _migrations');
29
- const appliedNames = new Set(applied.rows.map((m) => m.name));
30
- if (options.status) {
31
- console.log('[Migrate] Migration status:');
32
- for (const file of files) {
33
- const name = path.basename(file, path.extname(file));
34
- const status = appliedNames.has(name) ? '✓ applied' : '○ pending';
35
- console.log(` ${status} ${name}`);
25
+ await initPg();
26
+ try {
27
+ await ensureMigrationsTable();
28
+ // Find migration files
29
+ const migrationsDir = path.join(process.cwd(), 'server', 'migrations');
30
+ if (!fs.existsSync(migrationsDir)) {
31
+ console.log('[Migrate] No migrations directory found at server/migrations/');
32
+ return;
36
33
  }
37
- return;
38
- }
39
- const pending = files.filter((f) => {
40
- const name = path.basename(f, path.extname(f));
41
- return !appliedNames.has(name);
42
- });
43
- if (pending.length === 0) {
44
- console.log('[Migrate] All migrations up to date');
45
- return;
46
- }
47
- for (const file of pending) {
48
- const name = path.basename(file, path.extname(file));
49
- const filePath = path.join(migrationsDir, file);
50
- console.log(`[Migrate] Running: ${name}`);
51
- // Dynamic import of the migration file
52
- const migration = (await importTs(filePath));
53
- if (typeof migration.up !== 'function') {
54
- throw new Error(`[Migrate] Migration ${name} must export an async up() function`);
34
+ const files = fs
35
+ .readdirSync(migrationsDir)
36
+ .filter((f) => f.endsWith('.ts') || f.endsWith('.js'))
37
+ .sort();
38
+ const applied = await query('SELECT name, applied_at FROM _migrations');
39
+ const appliedNames = new Set(applied.rows.map((m) => m.name));
40
+ if (options.status) {
41
+ console.log('[Migrate] Migration status:');
42
+ for (const file of files) {
43
+ const name = path.basename(file, path.extname(file));
44
+ const status = appliedNames.has(name) ? '✓ applied' : '○ pending';
45
+ console.log(` ${status} ${name}`);
46
+ }
47
+ return;
55
48
  }
56
- await migration.up(query);
57
- await query('INSERT INTO _migrations (name) VALUES ($1)', [name]);
58
- console.log(`[Migrate] Done: ${name}`);
59
- }
60
- console.log(`[Migrate] Applied ${pending.length} migration(s)`);
61
- // After successful migrations, update schema snapshots
62
- if (pending.length > 0) {
63
- try {
64
- const { ensureSchemaSnapshotsTable, updateAllSnapshots } = await import('../server/SchemaCheck.js');
65
- await ensureSchemaSnapshotsTable();
66
- const collectionsPath = path.join(process.cwd(), 'shared', 'collections.ts');
67
- let appDefs = {};
49
+ const pending = files.filter((f) => {
50
+ const name = path.basename(f, path.extname(f));
51
+ return !appliedNames.has(name);
52
+ });
53
+ if (pending.length === 0) {
54
+ console.log('[Migrate] All migrations up to date');
55
+ return;
56
+ }
57
+ for (const file of pending) {
58
+ const name = path.basename(file, path.extname(file));
59
+ const filePath = path.join(migrationsDir, file);
60
+ console.log(`[Migrate] Running: ${name}`);
61
+ // Dynamic import of the migration file
62
+ const migration = (await importTs(filePath));
63
+ if (typeof migration.up !== 'function') {
64
+ throw new Error(`[Migrate] Migration ${name} must export an async up() function`);
65
+ }
66
+ await migration.up(query);
67
+ await query('INSERT INTO _migrations (name) VALUES ($1)', [name]);
68
+ console.log(`[Migrate] Done: ${name}`);
69
+ }
70
+ console.log(`[Migrate] Applied ${pending.length} migration(s)`);
71
+ // After successful migrations, update schema snapshots (reuses the
72
+ // collection defs already loaded above).
73
+ if (pending.length > 0) {
68
74
  try {
69
- const mod = (await importTs(collectionsPath));
70
- appDefs = (mod.collections ?? {});
75
+ const { ensureSchemaSnapshotsTable, updateAllSnapshots } = await import('../server/SchemaCheck.js');
76
+ await ensureSchemaSnapshotsTable();
77
+ await updateAllSnapshots(allDefs);
78
+ console.log('[Migrate] Schema snapshots updated');
71
79
  }
72
- catch {
73
- // No collections
80
+ catch (e) {
81
+ console.warn('[Migrate] Warning: failed to update schema snapshots', e.message);
74
82
  }
75
- const { BUILTIN_DEFS } = await import('../shared/DB.js');
76
- const allDefs = { ...BUILTIN_DEFS, ...appDefs };
77
- await updateAllSnapshots(allDefs);
78
- console.log('[Migrate] Schema snapshots updated');
79
- }
80
- catch (e) {
81
- console.warn('[Migrate] Warning: failed to update schema snapshots', e.message);
82
83
  }
83
84
  }
85
+ finally {
86
+ closePg();
87
+ }
84
88
  }
85
89
  finally {
86
- closePg();
87
90
  await disposeImportTs();
88
91
  }
89
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemaGen.d.ts","sourceRoot":"","sources":["../../src/cli/schemaGen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AA6BhD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,EAAE,GACtB,MAAM,CAwGR;AAaD,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ,EAAE,GACnB,MAAM,CAuBR;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,EAAE,EACvB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAaR;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmFlD"}
1
+ {"version":3,"file":"schemaGen.d.ts","sourceRoot":"","sources":["../../src/cli/schemaGen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAiChD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,EAAE,GACtB,MAAM,CAwGR;AAaD,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ,EAAE,GACnB,MAAM,CAuBR;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,EAAE,EACvB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAaR;AA6BD,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAgElD"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import { disposeImportTs, importTs } from './uglyappConfig.js';
3
+ import { disposeImportTs } from './uglyappConfig.js';
4
+ import { hasPostgresBackedCollections, loadAppCollectionDefs, } from './loadCollections.js';
4
5
  import { checkSchemas, ensureSchemaSnapshotsTable, } from '../server/SchemaCheck.js';
5
6
  import { fieldIndexStatements } from '../server/schemaIndexes.js';
6
7
  import { closePg, initPg } from '../server/NodePool.js';
@@ -160,58 +161,68 @@ export function writeMigrationFile(collection, changes, migrationsDir, codeOverr
160
161
  fs.writeFileSync(filePath, code, 'utf-8');
161
162
  return filePath;
162
163
  }
164
+ /**
165
+ * Write `shared/schema-snapshot.json` — the git-visible schema record. Pure
166
+ * zod serialization over every def that has a schema (Postgres AND D1); no
167
+ * database involved, so it runs even when no Postgres backend exists.
168
+ */
169
+ function writeSchemaSnapshotJson(allDefs) {
170
+ const snapshotPath = path.join(process.cwd(), 'shared', 'schema-snapshot.json');
171
+ const snapshot = {};
172
+ for (const [name, def] of Object.entries(allDefs)) {
173
+ if (def.schema) {
174
+ snapshot[name] = serializeSchema(def.schema, def.indexes);
175
+ }
176
+ }
177
+ fs.writeFileSync(snapshotPath, JSON.stringify(snapshot, null, 2) + '\n', 'utf-8');
178
+ console.log(`[schema-gen] Updated: shared/schema-snapshot.json`);
179
+ }
163
180
  export async function runSchemaGen() {
164
- await initPg();
165
- const collectionsPath = path.resolve(process.cwd(), 'shared/collections.ts');
166
181
  try {
167
- let appDefs = {};
168
- try {
169
- const mod = (await importTs(collectionsPath));
170
- appDefs = (mod.collections ?? {});
171
- }
172
- catch {
173
- // No collections file
182
+ const allDefs = await loadAppCollectionDefs();
183
+ // All-D1 app (zero Postgres-backed collections): skip Postgres entirely —
184
+ // there is no DATABASE_URL / pg adapter and nothing to diff or migrate.
185
+ // The schema snapshot JSON is still written (pure serialization).
186
+ if (!hasPostgresBackedCollections(allDefs)) {
187
+ writeSchemaSnapshotJson(allDefs);
188
+ console.log('[schema-gen] All collections use the D1 backend — no Postgres migrations needed.');
189
+ return;
174
190
  }
175
- const { BUILTIN_DEFS } = await import('../shared/DB.js');
176
- const allDefs = { ...BUILTIN_DEFS, ...appDefs };
177
- await ensureSchemaSnapshotsTable();
178
- const result = await checkSchemas(allDefs);
179
- const migrationsDir = path.join(process.cwd(), 'server', 'migrations');
180
- let generated = 0;
181
- for (const [name, col] of Object.entries(result.collections)) {
182
- if (col.action === 'store-baseline') {
183
- const def = allDefs[name];
184
- const filePath = writeMigrationFile(name, [], migrationsDir, generateMigrationCodeForNewCollection(name, def.indexes));
185
- console.log(`[schema-gen] Generated (new collection): ${path.relative(process.cwd(), filePath)}`);
191
+ await initPg();
192
+ try {
193
+ await ensureSchemaSnapshotsTable();
194
+ const result = await checkSchemas(allDefs);
195
+ const migrationsDir = path.join(process.cwd(), 'server', 'migrations');
196
+ let generated = 0;
197
+ for (const [name, col] of Object.entries(result.collections)) {
198
+ if (col.action === 'store-baseline') {
199
+ const def = allDefs[name];
200
+ const filePath = writeMigrationFile(name, [], migrationsDir, generateMigrationCodeForNewCollection(name, def.indexes));
201
+ console.log(`[schema-gen] Generated (new collection): ${path.relative(process.cwd(), filePath)}`);
202
+ generated++;
203
+ continue;
204
+ }
205
+ if (col.action !== 'migration-required')
206
+ continue;
207
+ const filePath = writeMigrationFile(name, col.changes, migrationsDir);
208
+ console.log(`[schema-gen] Generated: ${path.relative(process.cwd(), filePath)}`);
186
209
  generated++;
187
- continue;
188
210
  }
189
- if (col.action !== 'migration-required')
190
- continue;
191
- const filePath = writeMigrationFile(name, col.changes, migrationsDir);
192
- console.log(`[schema-gen] Generated: ${path.relative(process.cwd(), filePath)}`);
193
- generated++;
194
- }
195
- // Write schema snapshot JSON for git visibility
196
- const snapshotPath = path.join(process.cwd(), 'shared', 'schema-snapshot.json');
197
- const snapshot = {};
198
- for (const [name, def] of Object.entries(allDefs)) {
199
- if (def.schema) {
200
- snapshot[name] = serializeSchema(def.schema, def.indexes);
211
+ // Write schema snapshot JSON for git visibility
212
+ writeSchemaSnapshotJson(allDefs);
213
+ if (generated === 0) {
214
+ console.log('[schema-gen] No breaking changes detected — no migrations needed.');
215
+ }
216
+ else {
217
+ console.log(`\n[schema-gen] Generated ${generated} migration file(s).`);
218
+ console.log('Fix all REPLACE_ME values, then run: npm run db:migrate');
201
219
  }
202
220
  }
203
- fs.writeFileSync(snapshotPath, JSON.stringify(snapshot, null, 2) + '\n', 'utf-8');
204
- console.log(`[schema-gen] Updated: shared/schema-snapshot.json`);
205
- if (generated === 0) {
206
- console.log('[schema-gen] No breaking changes detected — no migrations needed.');
207
- }
208
- else {
209
- console.log(`\n[schema-gen] Generated ${generated} migration file(s).`);
210
- console.log('Fix all REPLACE_ME values, then run: npm run db:migrate');
221
+ finally {
222
+ closePg();
211
223
  }
212
224
  }
213
225
  finally {
214
- closePg();
215
226
  await disposeImportTs();
216
227
  }
217
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schemaGen.js","sourceRoot":"","sources":["../../src/cli/schemaGen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemaGen.js","sourceRoot":"","sources":["../../src/cli/schemaGen.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemaStatus.d.ts","sourceRoot":"","sources":["../../src/cli/schemaStatus.ts"],"names":[],"mappings":"AAQA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCrD"}
1
+ {"version":3,"file":"schemaStatus.d.ts","sourceRoot":"","sources":["../../src/cli/schemaStatus.ts"],"names":[],"mappings":"AAWA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAsCrD"}
@@ -1,37 +1,37 @@
1
- import path from 'path';
2
1
  import { closePg, initPg } from '../server/NodePool.js';
3
- import { disposeImportTs, importTs } from './uglyappConfig.js';
2
+ import { disposeImportTs } from './uglyappConfig.js';
3
+ import { hasPostgresBackedCollections, loadAppCollectionDefs, } from './loadCollections.js';
4
4
  import { checkSchemas, formatSchemaCheckResult, } from '../server/SchemaCheck.js';
5
5
  export async function runSchemaStatus() {
6
- await initPg();
7
- const collectionsPath = path.resolve(process.cwd(), 'shared/collections.ts');
8
6
  try {
9
- let appDefs = {};
10
- try {
11
- const mod = (await importTs(collectionsPath));
12
- appDefs = (mod.collections ?? {});
13
- }
14
- catch {
15
- console.log('[schema-status] No shared/collections.ts found');
7
+ const allDefs = await loadAppCollectionDefs();
8
+ // All-D1 app (zero Postgres-backed collections): no Postgres schema to
9
+ // check and no DATABASE_URL / pg adapter — exit clean.
10
+ if (!hasPostgresBackedCollections(allDefs)) {
11
+ console.log('[schema-status] All collections use the D1 backend — no Postgres schema to check.');
12
+ return;
16
13
  }
17
- const { BUILTIN_DEFS } = await import('../shared/DB.js');
18
- const allDefs = { ...BUILTIN_DEFS, ...appDefs };
19
- const result = await checkSchemas(allDefs);
20
- if (result.status === 'ok') {
21
- console.log('[schema-status] All schemas up to date');
22
- }
23
- else if (result.status === 'baseline') {
24
- console.log('[schema-status] Some collections had no baseline (first run):');
25
- console.log(formatSchemaCheckResult(result));
14
+ await initPg();
15
+ try {
16
+ const result = await checkSchemas(allDefs);
17
+ if (result.status === 'ok') {
18
+ console.log('[schema-status] All schemas up to date');
19
+ }
20
+ else if (result.status === 'baseline') {
21
+ console.log('[schema-status] Some collections had no baseline (first run):');
22
+ console.log(formatSchemaCheckResult(result));
23
+ }
24
+ else {
25
+ console.log('[schema-status] Schema drift detected:');
26
+ console.log(formatSchemaCheckResult(result));
27
+ console.log('\nRun "npm run db:schema-gen" to generate migration files.');
28
+ }
26
29
  }
27
- else {
28
- console.log('[schema-status] Schema drift detected:');
29
- console.log(formatSchemaCheckResult(result));
30
- console.log('\nRun "npm run db:schema-gen" to generate migration files.');
30
+ finally {
31
+ closePg();
31
32
  }
32
33
  }
33
34
  finally {
34
- closePg();
35
35
  await disposeImportTs();
36
36
  }
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schemaStatus.js","sourceRoot":"","sources":["../../src/cli/schemaStatus.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,EAAE,CAAC;IAEf,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,IAAI,OAAO,GAA4B,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,CAA4B,CAAC;YACzE,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAA4B,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;QACV,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schemaStatus.js","sourceRoot":"","sources":["../../src/cli/schemaStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAE9C,uEAAuE;QACvE,uDAAuD;QACvD,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CACT,mFAAmF,CACpF,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,EAAE,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAgB,CAAC,CAAC;YAEpD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CACT,4DAA4D,CAC7D,CAAC;YACJ,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.948";
1
+ export declare const CLI_VERSION = "0.1.950";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.948";
2
+ export const CLI_VERSION = "0.1.950";
3
3
  //# sourceMappingURL=version.js.map