ugly-app 0.1.470 → 0.1.472
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/exportCollections.d.ts.map +1 -1
- package/dist/cli/exportCollections.js +43 -38
- package/dist/cli/exportCollections.js.map +1 -1
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +2 -1
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/schemaGen.d.ts.map +1 -1
- package/dist/cli/schemaGen.js +44 -39
- package/dist/cli/schemaGen.js.map +1 -1
- package/dist/cli/schemaStatus.d.ts.map +1 -1
- package/dist/cli/schemaStatus.js +26 -21
- package/dist/cli/schemaStatus.js.map +1 -1
- package/dist/cli/uglyappConfig.d.ts +9 -0
- package/dist/cli/uglyappConfig.d.ts.map +1 -1
- package/dist/cli/uglyappConfig.js +19 -0
- package/dist/cli/uglyappConfig.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/cli/workerGen.d.ts.map +1 -1
- package/dist/cli/workerGen.js +30 -25
- package/dist/cli/workerGen.js.map +1 -1
- package/package.json +2 -2
- package/src/cli/exportCollections.ts +52 -48
- package/src/cli/migrate.ts +2 -1
- package/src/cli/schemaGen.ts +53 -49
- package/src/cli/schemaStatus.ts +23 -19
- package/src/cli/uglyappConfig.ts +21 -0
- package/src/cli/version.ts +1 -1
- package/src/cli/workerGen.ts +34 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportCollections.d.ts","sourceRoot":"","sources":["../../src/cli/exportCollections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgBH,wBAAsB,oBAAoB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"exportCollections.d.ts","sourceRoot":"","sources":["../../src/cli/exportCollections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgBH,wBAAsB,oBAAoB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmE9F"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import fs from 'fs';
|
|
18
18
|
import path from 'path';
|
|
19
19
|
import { serializeSchema } from '../shared/SchemaSerializer.js';
|
|
20
|
-
import { importTs } from './uglyappConfig.js';
|
|
20
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
21
21
|
export async function runExportCollections(cwd = process.cwd()) {
|
|
22
22
|
const collectionsPath = path.resolve(cwd, 'shared/collections.ts');
|
|
23
23
|
if (!fs.existsSync(collectionsPath)) {
|
|
@@ -25,47 +25,52 @@ export async function runExportCollections(cwd = process.cwd()) {
|
|
|
25
25
|
// fixtures. Quietly no-op instead of erroring.
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
|
-
let appDefs = {};
|
|
29
28
|
try {
|
|
30
|
-
|
|
31
|
-
appDefs = (mod.collections ?? {});
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
throw new Error(`[collections:export] failed to import shared/collections.ts: ${err.message}`);
|
|
35
|
-
}
|
|
36
|
-
const { BUILTIN_DEFS } = await import('../shared/DB.js');
|
|
37
|
-
const allDefs = { ...BUILTIN_DEFS, ...appDefs };
|
|
38
|
-
const entries = {};
|
|
39
|
-
for (const [name, def] of Object.entries(allDefs)) {
|
|
40
|
-
if (!def.schema)
|
|
41
|
-
continue;
|
|
42
|
-
entries[name] = {
|
|
43
|
-
name,
|
|
44
|
-
schema: serializeSchema(def.schema, def.indexes),
|
|
45
|
-
meta: def.meta ?? null,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
const outPath = path.join(cwd, 'database-collections.json');
|
|
49
|
-
if (fs.existsSync(outPath)) {
|
|
29
|
+
let appDefs = {};
|
|
50
30
|
try {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
31
|
+
const mod = (await importTs(collectionsPath));
|
|
32
|
+
appDefs = (mod.collections ?? {});
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
throw new Error(`[collections:export] failed to import shared/collections.ts: ${err.message}`);
|
|
57
36
|
}
|
|
58
|
-
|
|
59
|
-
|
|
37
|
+
const { BUILTIN_DEFS } = await import('../shared/DB.js');
|
|
38
|
+
const allDefs = { ...BUILTIN_DEFS, ...appDefs };
|
|
39
|
+
const entries = {};
|
|
40
|
+
for (const [name, def] of Object.entries(allDefs)) {
|
|
41
|
+
if (!def.schema)
|
|
42
|
+
continue;
|
|
43
|
+
entries[name] = {
|
|
44
|
+
name,
|
|
45
|
+
schema: serializeSchema(def.schema, def.indexes),
|
|
46
|
+
meta: def.meta ?? null,
|
|
47
|
+
};
|
|
60
48
|
}
|
|
49
|
+
const outPath = path.join(cwd, 'database-collections.json');
|
|
50
|
+
if (fs.existsSync(outPath)) {
|
|
51
|
+
try {
|
|
52
|
+
const prev = JSON.parse(fs.readFileSync(outPath, 'utf-8'));
|
|
53
|
+
if (prev.source === 'shared/collections.ts' &&
|
|
54
|
+
JSON.stringify(prev.collections ?? {}) === JSON.stringify(entries)) {
|
|
55
|
+
console.log(`[collections:export] unchanged ${path.relative(cwd, outPath)} (${Object.keys(entries).length} collections)`);
|
|
56
|
+
return outPath;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Fall through to rewrite on parse error.
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const body = {
|
|
64
|
+
generatedAt: new Date().toISOString(),
|
|
65
|
+
source: 'shared/collections.ts',
|
|
66
|
+
collections: entries,
|
|
67
|
+
};
|
|
68
|
+
fs.writeFileSync(outPath, JSON.stringify(body, null, 2) + '\n', 'utf-8');
|
|
69
|
+
console.log(`[collections:export] wrote ${path.relative(cwd, outPath)} (${Object.keys(entries).length} collections)`);
|
|
70
|
+
return outPath;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
await disposeImportTs();
|
|
61
74
|
}
|
|
62
|
-
const body = {
|
|
63
|
-
generatedAt: new Date().toISOString(),
|
|
64
|
-
source: 'shared/collections.ts',
|
|
65
|
-
collections: entries,
|
|
66
|
-
};
|
|
67
|
-
fs.writeFileSync(outPath, JSON.stringify(body, null, 2) + '\n', 'utf-8');
|
|
68
|
-
console.log(`[collections:export] wrote ${path.relative(cwd, outPath)} (${Object.keys(entries).length} collections)`);
|
|
69
|
-
return outPath;
|
|
70
75
|
}
|
|
71
76
|
//# sourceMappingURL=exportCollections.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportCollections.js","sourceRoot":"","sources":["../../src/cli/exportCollections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"exportCollections.js","sourceRoot":"","sources":["../../src/cli/exportCollections.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,
|
|
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,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAoGf"}
|
package/dist/cli/migrate.js
CHANGED
|
@@ -2,7 +2,7 @@ import fs from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { initDataProxy, pgQuery as query, stopDataProxy } from '../server/DataProxyClient.js';
|
|
4
4
|
import { ensureInfra } from './ensureInfra.js';
|
|
5
|
-
import { importTs } from './uglyappConfig.js';
|
|
5
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
6
6
|
async function ensureMigrationsTable() {
|
|
7
7
|
await query(`
|
|
8
8
|
CREATE TABLE IF NOT EXISTS _migrations (
|
|
@@ -87,6 +87,7 @@ export async function runMigrations(options = {}) {
|
|
|
87
87
|
}
|
|
88
88
|
finally {
|
|
89
89
|
stopDataProxy();
|
|
90
|
+
await disposeImportTs();
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
93
|
//# sourceMappingURL=migrate.js.map
|
package/dist/cli/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
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;AAsBhD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAsGzF;AAaD,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ,EAAE,GACnB,MAAM,CAiCR;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,
|
|
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;AAsBhD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAsGzF;AAaD,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,QAAQ,EAAE,GACnB,MAAM,CAiCR;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,CAgElD"}
|
package/dist/cli/schemaGen.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { ensureInfra } from './ensureInfra.js';
|
|
4
|
-
import { importTs } from './uglyappConfig.js';
|
|
4
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
5
5
|
import { checkSchemas } from '../server/SchemaCheck.js';
|
|
6
6
|
import { serializeSchema } from '../shared/SchemaSerializer.js';
|
|
7
7
|
function toJsonbPath(field) {
|
|
@@ -165,49 +165,54 @@ export function writeMigrationFile(collection, changes, migrationsDir, codeOverr
|
|
|
165
165
|
export async function runSchemaGen() {
|
|
166
166
|
await ensureInfra();
|
|
167
167
|
const collectionsPath = path.resolve(process.cwd(), 'shared/collections.ts');
|
|
168
|
-
let appDefs = {};
|
|
169
168
|
try {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
169
|
+
let appDefs = {};
|
|
170
|
+
try {
|
|
171
|
+
const mod = await importTs(collectionsPath);
|
|
172
|
+
appDefs = (mod.collections ?? {});
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// No collections file
|
|
176
|
+
}
|
|
177
|
+
const { BUILTIN_DEFS } = await import('../shared/DB.js');
|
|
178
|
+
const allDefs = { ...BUILTIN_DEFS, ...appDefs };
|
|
179
|
+
const result = await checkSchemas(allDefs);
|
|
180
|
+
const migrationsDir = path.join(process.cwd(), 'server', 'migrations');
|
|
181
|
+
let generated = 0;
|
|
182
|
+
for (const [name, col] of Object.entries(result.collections)) {
|
|
183
|
+
if (col.action === 'store-baseline') {
|
|
184
|
+
const def = allDefs[name];
|
|
185
|
+
const filePath = writeMigrationFile(name, [], migrationsDir, generateMigrationCodeForNewCollection(name, def.indexes));
|
|
186
|
+
console.log(`[schema-gen] Generated (new collection): ${path.relative(process.cwd(), filePath)}`);
|
|
187
|
+
generated++;
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (col.action !== 'migration-required')
|
|
191
|
+
continue;
|
|
192
|
+
const filePath = writeMigrationFile(name, col.changes, migrationsDir);
|
|
193
|
+
console.log(`[schema-gen] Generated: ${path.relative(process.cwd(), filePath)}`);
|
|
186
194
|
generated++;
|
|
187
|
-
continue;
|
|
188
195
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
if (
|
|
200
|
-
|
|
196
|
+
// Write schema snapshot JSON for git visibility
|
|
197
|
+
const snapshotPath = path.join(process.cwd(), 'shared', 'schema-snapshot.json');
|
|
198
|
+
const snapshot = {};
|
|
199
|
+
for (const [name, def] of Object.entries(allDefs)) {
|
|
200
|
+
if (def.schema) {
|
|
201
|
+
snapshot[name] = serializeSchema(def.schema, def.indexes);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
fs.writeFileSync(snapshotPath, JSON.stringify(snapshot, null, 2) + '\n', 'utf-8');
|
|
205
|
+
console.log(`[schema-gen] Updated: shared/schema-snapshot.json`);
|
|
206
|
+
if (generated === 0) {
|
|
207
|
+
console.log('[schema-gen] No breaking changes detected — no migrations needed.');
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
console.log(`\n[schema-gen] Generated ${generated} migration file(s).`);
|
|
211
|
+
console.log('Fix all REPLACE_ME values, then run: npm run db:migrate');
|
|
201
212
|
}
|
|
202
213
|
}
|
|
203
|
-
|
|
204
|
-
|
|
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');
|
|
214
|
+
finally {
|
|
215
|
+
await disposeImportTs();
|
|
211
216
|
}
|
|
212
217
|
}
|
|
213
218
|
//# sourceMappingURL=schemaGen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaGen.js","sourceRoot":"","sources":["../../src/cli/schemaGen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
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":"AAKA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"schemaStatus.d.ts","sourceRoot":"","sources":["../../src/cli/schemaStatus.ts"],"names":[],"mappings":"AAKA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCrD"}
|
package/dist/cli/schemaStatus.js
CHANGED
|
@@ -1,32 +1,37 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { ensureInfra } from './ensureInfra.js';
|
|
3
|
-
import { importTs } from './uglyappConfig.js';
|
|
3
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
4
4
|
import { checkSchemas, formatSchemaCheckResult } from '../server/SchemaCheck.js';
|
|
5
5
|
export async function runSchemaStatus() {
|
|
6
6
|
await ensureInfra();
|
|
7
7
|
const collectionsPath = path.resolve(process.cwd(), 'shared/collections.ts');
|
|
8
|
-
let appDefs = {};
|
|
9
8
|
try {
|
|
10
|
-
|
|
11
|
-
|
|
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');
|
|
16
|
+
}
|
|
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));
|
|
26
|
+
}
|
|
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.');
|
|
31
|
+
}
|
|
12
32
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
const { BUILTIN_DEFS } = await import('../shared/DB.js');
|
|
17
|
-
const allDefs = { ...BUILTIN_DEFS, ...appDefs };
|
|
18
|
-
const result = await checkSchemas(allDefs);
|
|
19
|
-
if (result.status === 'ok') {
|
|
20
|
-
console.log('[schema-status] All schemas up to date');
|
|
21
|
-
}
|
|
22
|
-
else if (result.status === 'baseline') {
|
|
23
|
-
console.log('[schema-status] Some collections had no baseline (first run):');
|
|
24
|
-
console.log(formatSchemaCheckResult(result));
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
console.log('[schema-status] Schema drift detected:');
|
|
28
|
-
console.log(formatSchemaCheckResult(result));
|
|
29
|
-
console.log('\nRun "npm run db:schema-gen" to generate migration files.');
|
|
33
|
+
finally {
|
|
34
|
+
await disposeImportTs();
|
|
30
35
|
}
|
|
31
36
|
}
|
|
32
37
|
//# sourceMappingURL=schemaStatus.js.map
|
|
@@ -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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"schemaStatus.js","sourceRoot":"","sources":["../../src/cli/schemaStatus.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,WAAW,EAAE,CAAC;IAEpB,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,MAAM,QAAQ,CAAC,eAAe,CAA4B,CAAC;YACvE,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,CAAC,+DAA+D,CAAC,CAAC;YAC7E,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,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
|
@@ -26,6 +26,15 @@ export declare function writeUglyAppConfig(cwd: string, config: UglyAppConfig):
|
|
|
26
26
|
export declare function readUglyAppConfigRaw(cwd: string): Record<string, unknown> | null;
|
|
27
27
|
/** Update a single field in .uglyapp without rewriting the whole file. */
|
|
28
28
|
export declare function updateUglyAppField(cwd: string, key: string, value: unknown): void;
|
|
29
|
+
/**
|
|
30
|
+
* Stop any long-lived transformer subprocesses (esbuild service) that
|
|
31
|
+
* importTs may have started. One-shot CLIs (db:migrate, schema-gen,
|
|
32
|
+
* worker-gen, export-collections) must call this in a finally block so
|
|
33
|
+
* the Node event loop can exit — without it, the esbuild service child
|
|
34
|
+
* keeps the parent alive forever via its stdio socket pair. tsx also
|
|
35
|
+
* uses esbuild under the hood, so stop() covers both code paths.
|
|
36
|
+
*/
|
|
37
|
+
export declare function disposeImportTs(): Promise<void>;
|
|
29
38
|
/**
|
|
30
39
|
* Import a TypeScript file at runtime using tsx's ESM loader.
|
|
31
40
|
* Falls back to esbuild transpilation, then plain dynamic import.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uglyappConfig.d.ts","sourceRoot":"","sources":["../../src/cli/uglyappConfig.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,eAAO,MAAM,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAItD,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA6BzD;AAGD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA4DnE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAa3E;AAED,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQhF;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAQjF;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCjE"}
|
|
1
|
+
{"version":3,"file":"uglyappConfig.d.ts","sourceRoot":"","sources":["../../src/cli/uglyappConfig.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,eAAO,MAAM,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAItD,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA6BzD;AAGD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA4DnE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAa3E;AAED,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQhF;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAQjF;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAWrD;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCjE"}
|
|
@@ -127,6 +127,25 @@ export function updateUglyAppField(cwd, key, value) {
|
|
|
127
127
|
data[key] = value;
|
|
128
128
|
fs.writeFileSync(configPath, JSON.stringify(data, null, 2) + '\n', 'utf-8');
|
|
129
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Stop any long-lived transformer subprocesses (esbuild service) that
|
|
132
|
+
* importTs may have started. One-shot CLIs (db:migrate, schema-gen,
|
|
133
|
+
* worker-gen, export-collections) must call this in a finally block so
|
|
134
|
+
* the Node event loop can exit — without it, the esbuild service child
|
|
135
|
+
* keeps the parent alive forever via its stdio socket pair. tsx also
|
|
136
|
+
* uses esbuild under the hood, so stop() covers both code paths.
|
|
137
|
+
*/
|
|
138
|
+
export async function disposeImportTs() {
|
|
139
|
+
try {
|
|
140
|
+
const esbuild = (await import('esbuild'));
|
|
141
|
+
if (typeof esbuild.stop === 'function') {
|
|
142
|
+
await esbuild.stop();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
/* esbuild not loadable — nothing to dispose */
|
|
147
|
+
}
|
|
148
|
+
}
|
|
130
149
|
/**
|
|
131
150
|
* Import a TypeScript file at runtime using tsx's ESM loader.
|
|
132
151
|
* Falls back to esbuild transpilation, then plain dynamic import.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uglyappConfig.js","sourceRoot":"","sources":["../../src/cli/uglyappConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uglyappConfig.js","sourceRoot":"","sources":["../../src/cli/uglyappConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.472";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerGen.d.ts","sourceRoot":"","sources":["../../src/cli/workerGen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC9C;AAED,wBAAsB,gBAAgB,CACpC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"workerGen.d.ts","sourceRoot":"","sources":["../../src/cli/workerGen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC9C;AAED,wBAAsB,gBAAgB,CACpC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0CxB"}
|
package/dist/cli/workerGen.js
CHANGED
|
@@ -17,39 +17,44 @@
|
|
|
17
17
|
import fs from 'fs';
|
|
18
18
|
import path from 'path';
|
|
19
19
|
import { z } from 'zod';
|
|
20
|
-
import { importTs } from './uglyappConfig.js';
|
|
20
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
21
21
|
export async function runExportWorkers(cwd = process.cwd()) {
|
|
22
22
|
const workersPath = path.resolve(cwd, 'shared/workers.ts');
|
|
23
23
|
if (!fs.existsSync(workersPath)) {
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
26
|
-
let registry = {};
|
|
27
26
|
try {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
let registry = {};
|
|
28
|
+
try {
|
|
29
|
+
const mod = (await importTs(workersPath));
|
|
30
|
+
// Convention: `export const workers = defineWorkers({...})`. Also
|
|
31
|
+
// accept a default export for flexibility.
|
|
32
|
+
registry =
|
|
33
|
+
(mod.workers ?? mod.default) ?? {};
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
throw new Error(`[workers:export] failed to import shared/workers.ts: ${err.message}`);
|
|
37
|
+
}
|
|
38
|
+
const entries = {};
|
|
39
|
+
for (const [name, def] of Object.entries(registry)) {
|
|
40
|
+
entries[name] = buildEntry(name, def);
|
|
41
|
+
}
|
|
42
|
+
// Write at project root — matches `database-collections.json`, survives
|
|
43
|
+
// the `dist/` clean step in runBuild(), and is reachable by studio which
|
|
44
|
+
// already operates on the project root via `getCurrentProject()`.
|
|
45
|
+
const outPath = path.join(cwd, 'worker-definitions.json');
|
|
46
|
+
const body = {
|
|
47
|
+
generatedAt: new Date().toISOString(),
|
|
48
|
+
source: 'shared/workers.ts',
|
|
49
|
+
workers: entries,
|
|
50
|
+
};
|
|
51
|
+
fs.writeFileSync(outPath, JSON.stringify(body, null, 2) + '\n', 'utf-8');
|
|
52
|
+
console.log(`[workers:export] wrote ${path.relative(cwd, outPath)} (${Object.keys(entries).length} workers)`);
|
|
53
|
+
return outPath;
|
|
36
54
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
entries[name] = buildEntry(name, def);
|
|
55
|
+
finally {
|
|
56
|
+
await disposeImportTs();
|
|
40
57
|
}
|
|
41
|
-
// Write at project root — matches `database-collections.json`, survives
|
|
42
|
-
// the `dist/` clean step in runBuild(), and is reachable by studio which
|
|
43
|
-
// already operates on the project root via `getCurrentProject()`.
|
|
44
|
-
const outPath = path.join(cwd, 'worker-definitions.json');
|
|
45
|
-
const body = {
|
|
46
|
-
generatedAt: new Date().toISOString(),
|
|
47
|
-
source: 'shared/workers.ts',
|
|
48
|
-
workers: entries,
|
|
49
|
-
};
|
|
50
|
-
fs.writeFileSync(outPath, JSON.stringify(body, null, 2) + '\n', 'utf-8');
|
|
51
|
-
console.log(`[workers:export] wrote ${path.relative(cwd, outPath)} (${Object.keys(entries).length} workers)`);
|
|
52
|
-
return outPath;
|
|
53
58
|
}
|
|
54
59
|
function buildEntry(name,
|
|
55
60
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerGen.js","sourceRoot":"","sources":["../../src/cli/workerGen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AAGtC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"workerGen.js","sourceRoot":"","sources":["../../src/cli/workerGen.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.472",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/server/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -105,6 +105,7 @@
|
|
|
105
105
|
"prosemirror-transform": "^1.12.0",
|
|
106
106
|
"prosemirror-view": "^1.41.8",
|
|
107
107
|
"react-datepicker": "^9.1.0",
|
|
108
|
+
"sprintf-js": "^1.1.3",
|
|
108
109
|
"turndown": "^7.2.4",
|
|
109
110
|
"url-parse": "^1.5.10",
|
|
110
111
|
"vega-embed": "^7.1.0",
|
|
@@ -137,7 +138,6 @@
|
|
|
137
138
|
"jsdom": "^29.0.1",
|
|
138
139
|
"react": "^19.2.4",
|
|
139
140
|
"react-dom": "^19.2.4",
|
|
140
|
-
"sprintf-js": "^1.1.3",
|
|
141
141
|
"three": "^0.183.2",
|
|
142
142
|
"typescript": "^5.9.3",
|
|
143
143
|
"vitest": "^4.0.18",
|
|
@@ -21,7 +21,7 @@ import type { z } from 'zod';
|
|
|
21
21
|
|
|
22
22
|
import type { CollectionMeta, IndexDef } from '../shared/DB.js';
|
|
23
23
|
import { serializeSchema } from '../shared/SchemaSerializer.js';
|
|
24
|
-
import { importTs } from './uglyappConfig.js';
|
|
24
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
25
25
|
|
|
26
26
|
interface CollectionDefSurface {
|
|
27
27
|
schema?: z.ZodObject<z.ZodRawShape>;
|
|
@@ -37,59 +37,63 @@ export async function runExportCollections(cwd: string = process.cwd()): Promise
|
|
|
37
37
|
return null;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
let appDefs: Record<string, unknown> = {};
|
|
41
40
|
try {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
let appDefs: Record<string, unknown> = {};
|
|
42
|
+
try {
|
|
43
|
+
const mod = (await importTs(collectionsPath)) as Record<string, unknown>;
|
|
44
|
+
appDefs = (mod.collections ?? {}) as Record<string, unknown>;
|
|
45
|
+
} catch (err) {
|
|
46
|
+
throw new Error(
|
|
47
|
+
`[collections:export] failed to import shared/collections.ts: ${(err as Error).message}`,
|
|
48
|
+
);
|
|
49
|
+
}
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
const { BUILTIN_DEFS } = await import('../shared/DB.js');
|
|
52
|
+
const allDefs = { ...BUILTIN_DEFS, ...appDefs } as Record<string, CollectionDefSurface>;
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
54
|
+
const entries: Record<string, unknown> = {};
|
|
55
|
+
for (const [name, def] of Object.entries(allDefs)) {
|
|
56
|
+
if (!def.schema) continue;
|
|
57
|
+
entries[name] = {
|
|
58
|
+
name,
|
|
59
|
+
schema: serializeSchema(def.schema, def.indexes),
|
|
60
|
+
meta: def.meta ?? null,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
const outPath = path.join(cwd, 'database-collections.json');
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
66
|
+
if (fs.existsSync(outPath)) {
|
|
67
|
+
try {
|
|
68
|
+
const prev = JSON.parse(fs.readFileSync(outPath, 'utf-8')) as {
|
|
69
|
+
source?: string;
|
|
70
|
+
collections?: Record<string, unknown>;
|
|
71
|
+
};
|
|
72
|
+
if (
|
|
73
|
+
prev.source === 'shared/collections.ts' &&
|
|
74
|
+
JSON.stringify(prev.collections ?? {}) === JSON.stringify(entries)
|
|
75
|
+
) {
|
|
76
|
+
console.log(
|
|
77
|
+
`[collections:export] unchanged ${path.relative(cwd, outPath)} (${Object.keys(entries).length} collections)`,
|
|
78
|
+
);
|
|
79
|
+
return outPath;
|
|
80
|
+
}
|
|
81
|
+
} catch {
|
|
82
|
+
// Fall through to rewrite on parse error.
|
|
79
83
|
}
|
|
80
|
-
} catch {
|
|
81
|
-
// Fall through to rewrite on parse error.
|
|
82
84
|
}
|
|
83
|
-
}
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
86
|
+
const body = {
|
|
87
|
+
generatedAt: new Date().toISOString(),
|
|
88
|
+
source: 'shared/collections.ts',
|
|
89
|
+
collections: entries,
|
|
90
|
+
};
|
|
91
|
+
fs.writeFileSync(outPath, JSON.stringify(body, null, 2) + '\n', 'utf-8');
|
|
92
|
+
console.log(
|
|
93
|
+
`[collections:export] wrote ${path.relative(cwd, outPath)} (${Object.keys(entries).length} collections)`,
|
|
94
|
+
);
|
|
95
|
+
return outPath;
|
|
96
|
+
} finally {
|
|
97
|
+
await disposeImportTs();
|
|
98
|
+
}
|
|
95
99
|
}
|
package/src/cli/migrate.ts
CHANGED
|
@@ -2,7 +2,7 @@ import fs from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { initDataProxy, pgQuery as query, stopDataProxy } from '../server/DataProxyClient.js';
|
|
4
4
|
import { ensureInfra } from './ensureInfra.js';
|
|
5
|
-
import { importTs } from './uglyappConfig.js';
|
|
5
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
6
6
|
|
|
7
7
|
interface MigrationRecord {
|
|
8
8
|
name: string;
|
|
@@ -118,5 +118,6 @@ export async function runMigrations(
|
|
|
118
118
|
}
|
|
119
119
|
} finally {
|
|
120
120
|
stopDataProxy();
|
|
121
|
+
await disposeImportTs();
|
|
121
122
|
}
|
|
122
123
|
}
|
package/src/cli/schemaGen.ts
CHANGED
|
@@ -3,7 +3,7 @@ import path from 'path';
|
|
|
3
3
|
import type { SchemaChange } from '../shared/SchemaDiff.js';
|
|
4
4
|
import type { IndexDef } from '../shared/DB.js';
|
|
5
5
|
import { ensureInfra } from './ensureInfra.js';
|
|
6
|
-
import { importTs } from './uglyappConfig.js';
|
|
6
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
7
7
|
import { checkSchemas } from '../server/SchemaCheck.js';
|
|
8
8
|
import { serializeSchema } from '../shared/SchemaSerializer.js';
|
|
9
9
|
import type { z } from 'zod';
|
|
@@ -201,59 +201,63 @@ export async function runSchemaGen(): Promise<void> {
|
|
|
201
201
|
|
|
202
202
|
const collectionsPath = path.resolve(process.cwd(), 'shared/collections.ts');
|
|
203
203
|
|
|
204
|
-
let appDefs: Record<string, unknown> = {};
|
|
205
204
|
try {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const allDefs = { ...BUILTIN_DEFS, ...appDefs } as Record<string, { schema?: z.ZodObject<z.ZodRawShape>; indexes?: IndexDef[] }>;
|
|
214
|
-
|
|
215
|
-
const result = await checkSchemas(allDefs as never);
|
|
216
|
-
|
|
217
|
-
const migrationsDir = path.join(process.cwd(), 'server', 'migrations');
|
|
218
|
-
let generated = 0;
|
|
205
|
+
let appDefs: Record<string, unknown> = {};
|
|
206
|
+
try {
|
|
207
|
+
const mod = await importTs(collectionsPath) as Record<string, unknown>;
|
|
208
|
+
appDefs = (mod.collections ?? {}) as Record<string, unknown>;
|
|
209
|
+
} catch {
|
|
210
|
+
// No collections file
|
|
211
|
+
}
|
|
219
212
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
213
|
+
const { BUILTIN_DEFS } = await import('../shared/DB.js');
|
|
214
|
+
const allDefs = { ...BUILTIN_DEFS, ...appDefs } as Record<string, { schema?: z.ZodObject<z.ZodRawShape>; indexes?: IndexDef[] }>;
|
|
215
|
+
|
|
216
|
+
const result = await checkSchemas(allDefs as never);
|
|
217
|
+
|
|
218
|
+
const migrationsDir = path.join(process.cwd(), 'server', 'migrations');
|
|
219
|
+
let generated = 0;
|
|
220
|
+
|
|
221
|
+
for (const [name, col] of Object.entries(result.collections)) {
|
|
222
|
+
if (col.action === 'store-baseline') {
|
|
223
|
+
const def = allDefs[name] as { indexes?: IndexDef[] };
|
|
224
|
+
const filePath = writeMigrationFile(
|
|
225
|
+
name,
|
|
226
|
+
[],
|
|
227
|
+
migrationsDir,
|
|
228
|
+
generateMigrationCodeForNewCollection(name, def.indexes),
|
|
229
|
+
);
|
|
230
|
+
console.log(`[schema-gen] Generated (new collection): ${path.relative(process.cwd(), filePath)}`);
|
|
231
|
+
generated++;
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
if (col.action !== 'migration-required') continue;
|
|
235
|
+
const filePath = writeMigrationFile(name, col.changes, migrationsDir);
|
|
236
|
+
console.log(`[schema-gen] Generated: ${path.relative(process.cwd(), filePath)}`);
|
|
230
237
|
generated++;
|
|
231
|
-
continue;
|
|
232
238
|
}
|
|
233
|
-
if (col.action !== 'migration-required') continue;
|
|
234
|
-
const filePath = writeMigrationFile(name, col.changes, migrationsDir);
|
|
235
|
-
console.log(`[schema-gen] Generated: ${path.relative(process.cwd(), filePath)}`);
|
|
236
|
-
generated++;
|
|
237
|
-
}
|
|
238
239
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
240
|
+
// Write schema snapshot JSON for git visibility
|
|
241
|
+
const snapshotPath = path.join(process.cwd(), 'shared', 'schema-snapshot.json');
|
|
242
|
+
const snapshot: Record<string, unknown> = {};
|
|
243
|
+
for (const [name, def] of Object.entries(allDefs)) {
|
|
244
|
+
if (def.schema) {
|
|
245
|
+
snapshot[name] = serializeSchema(
|
|
246
|
+
def.schema,
|
|
247
|
+
(def as { indexes?: IndexDef[] }).indexes,
|
|
248
|
+
);
|
|
249
|
+
}
|
|
248
250
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
251
|
+
fs.writeFileSync(snapshotPath, JSON.stringify(snapshot, null, 2) + '\n', 'utf-8');
|
|
252
|
+
console.log(`[schema-gen] Updated: shared/schema-snapshot.json`);
|
|
253
|
+
|
|
254
|
+
if (generated === 0) {
|
|
255
|
+
console.log('[schema-gen] No breaking changes detected — no migrations needed.');
|
|
256
|
+
} else {
|
|
257
|
+
console.log(`\n[schema-gen] Generated ${generated} migration file(s).`);
|
|
258
|
+
console.log('Fix all REPLACE_ME values, then run: npm run db:migrate');
|
|
259
|
+
}
|
|
260
|
+
} finally {
|
|
261
|
+
await disposeImportTs();
|
|
258
262
|
}
|
|
259
263
|
}
|
package/src/cli/schemaStatus.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { ensureInfra } from './ensureInfra.js';
|
|
3
|
-
import { importTs } from './uglyappConfig.js';
|
|
3
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
4
4
|
import { checkSchemas, formatSchemaCheckResult } from '../server/SchemaCheck.js';
|
|
5
5
|
|
|
6
6
|
export async function runSchemaStatus(): Promise<void> {
|
|
@@ -8,27 +8,31 @@ export async function runSchemaStatus(): Promise<void> {
|
|
|
8
8
|
|
|
9
9
|
const collectionsPath = path.resolve(process.cwd(), 'shared/collections.ts');
|
|
10
10
|
|
|
11
|
-
let appDefs: Record<string, unknown> = {};
|
|
12
11
|
try {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
let appDefs: Record<string, unknown> = {};
|
|
13
|
+
try {
|
|
14
|
+
const mod = await importTs(collectionsPath) as Record<string, unknown>;
|
|
15
|
+
appDefs = (mod.collections ?? {}) as Record<string, unknown>;
|
|
16
|
+
} catch {
|
|
17
|
+
console.log('[schema-status] No shared/collections.ts found');
|
|
18
|
+
}
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
const { BUILTIN_DEFS } = await import('../shared/DB.js');
|
|
21
|
+
const allDefs = { ...BUILTIN_DEFS, ...appDefs };
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
const result = await checkSchemas(allDefs);
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
if (result.status === 'ok') {
|
|
26
|
+
console.log('[schema-status] All schemas up to date');
|
|
27
|
+
} else if (result.status === 'baseline') {
|
|
28
|
+
console.log('[schema-status] Some collections had no baseline (first run):');
|
|
29
|
+
console.log(formatSchemaCheckResult(result));
|
|
30
|
+
} else {
|
|
31
|
+
console.log('[schema-status] Schema drift detected:');
|
|
32
|
+
console.log(formatSchemaCheckResult(result));
|
|
33
|
+
console.log('\nRun "npm run db:schema-gen" to generate migration files.');
|
|
34
|
+
}
|
|
35
|
+
} finally {
|
|
36
|
+
await disposeImportTs();
|
|
33
37
|
}
|
|
34
38
|
}
|
package/src/cli/uglyappConfig.ts
CHANGED
|
@@ -161,6 +161,27 @@ export function updateUglyAppField(cwd: string, key: string, value: unknown): vo
|
|
|
161
161
|
fs.writeFileSync(configPath, JSON.stringify(data, null, 2) + '\n', 'utf-8');
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Stop any long-lived transformer subprocesses (esbuild service) that
|
|
166
|
+
* importTs may have started. One-shot CLIs (db:migrate, schema-gen,
|
|
167
|
+
* worker-gen, export-collections) must call this in a finally block so
|
|
168
|
+
* the Node event loop can exit — without it, the esbuild service child
|
|
169
|
+
* keeps the parent alive forever via its stdio socket pair. tsx also
|
|
170
|
+
* uses esbuild under the hood, so stop() covers both code paths.
|
|
171
|
+
*/
|
|
172
|
+
export async function disposeImportTs(): Promise<void> {
|
|
173
|
+
try {
|
|
174
|
+
const esbuild = (await import('esbuild')) as {
|
|
175
|
+
stop?: () => void | Promise<void>;
|
|
176
|
+
};
|
|
177
|
+
if (typeof esbuild.stop === 'function') {
|
|
178
|
+
await esbuild.stop();
|
|
179
|
+
}
|
|
180
|
+
} catch {
|
|
181
|
+
/* esbuild not loadable — nothing to dispose */
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
164
185
|
/**
|
|
165
186
|
* Import a TypeScript file at runtime using tsx's ESM loader.
|
|
166
187
|
* Falls back to esbuild transpilation, then plain dynamic import.
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.472";
|
package/src/cli/workerGen.ts
CHANGED
|
@@ -20,7 +20,7 @@ import path from 'path';
|
|
|
20
20
|
import { z, type ZodType } from 'zod';
|
|
21
21
|
|
|
22
22
|
import type { WorkerDef, WorkerRegistry } from '../shared/Api.js';
|
|
23
|
-
import { importTs } from './uglyappConfig.js';
|
|
23
|
+
import { disposeImportTs, importTs } from './uglyappConfig.js';
|
|
24
24
|
|
|
25
25
|
interface WorkerManifestEntry {
|
|
26
26
|
name: string;
|
|
@@ -46,38 +46,42 @@ export async function runExportWorkers(
|
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
let registry: WorkerRegistry = {};
|
|
50
49
|
try {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
let registry: WorkerRegistry = {};
|
|
51
|
+
try {
|
|
52
|
+
const mod = (await importTs(workersPath)) as Record<string, unknown>;
|
|
53
|
+
// Convention: `export const workers = defineWorkers({...})`. Also
|
|
54
|
+
// accept a default export for flexibility.
|
|
55
|
+
registry =
|
|
56
|
+
((mod.workers ?? mod.default) as WorkerRegistry | undefined) ?? {};
|
|
57
|
+
} catch (err) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`[workers:export] failed to import shared/workers.ts: ${(err as Error).message}`,
|
|
60
|
+
);
|
|
61
|
+
}
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
const entries: Record<string, WorkerManifestEntry> = {};
|
|
64
|
+
for (const [name, def] of Object.entries(registry)) {
|
|
65
|
+
entries[name] = buildEntry(name, def);
|
|
66
|
+
}
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
// Write at project root — matches `database-collections.json`, survives
|
|
69
|
+
// the `dist/` clean step in runBuild(), and is reachable by studio which
|
|
70
|
+
// already operates on the project root via `getCurrentProject()`.
|
|
71
|
+
const outPath = path.join(cwd, 'worker-definitions.json');
|
|
72
|
+
const body: WorkerManifest = {
|
|
73
|
+
generatedAt: new Date().toISOString(),
|
|
74
|
+
source: 'shared/workers.ts',
|
|
75
|
+
workers: entries,
|
|
76
|
+
};
|
|
77
|
+
fs.writeFileSync(outPath, JSON.stringify(body, null, 2) + '\n', 'utf-8');
|
|
78
|
+
console.log(
|
|
79
|
+
`[workers:export] wrote ${path.relative(cwd, outPath)} (${Object.keys(entries).length} workers)`,
|
|
80
|
+
);
|
|
81
|
+
return outPath;
|
|
82
|
+
} finally {
|
|
83
|
+
await disposeImportTs();
|
|
84
|
+
}
|
|
81
85
|
}
|
|
82
86
|
|
|
83
87
|
function buildEntry(
|