@actuate-media/cli 0.6.0 → 0.7.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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +23 -23
- package/CHANGELOG.md +9 -0
- package/dist/commands/migrate-sections.d.ts +3 -0
- package/dist/commands/migrate-sections.d.ts.map +1 -0
- package/dist/commands/migrate-sections.js +56 -0
- package/dist/commands/migrate-sections.js.map +1 -0
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +2 -40
- package/dist/commands/seed.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/database.d.ts +19 -0
- package/dist/utils/database.d.ts.map +1 -0
- package/dist/utils/database.js +58 -0
- package/dist/utils/database.js.map +1 -0
- package/package.json +2 -2
- package/src/commands/migrate-sections.ts +73 -0
- package/src/commands/seed.ts +2 -56
- package/src/index.ts +2 -0
- package/src/utils/database.ts +77 -0
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
|
|
2
|
-
> @actuate-media/cli@0.
|
|
2
|
+
> @actuate-media/cli@0.7.0 test /home/runner/work/actuatecms/actuatecms/packages/cli
|
|
3
3
|
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[30m[46m RUN [49m[39m[22m [36mv4.1.8 [39m[90m/home/runner/work/actuatecms/actuatecms/packages/cli[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m dist/__tests__/db-sync.test.js [2m([22m[2m6 tests[22m[2m)[22m[33m
|
|
9
|
-
[32m✓[39m src/__tests__/db-sync.test.ts [2m([22m[2m6 tests[22m[2m)[22m[33m
|
|
8
|
+
[32m✓[39m dist/__tests__/db-sync.test.js [2m([22m[2m6 tests[22m[2m)[22m[33m 423[2mms[22m[39m
|
|
9
|
+
[32m✓[39m src/__tests__/db-sync.test.ts [2m([22m[2m6 tests[22m[2m)[22m[33m 330[2mms[22m[39m
|
|
10
10
|
- Reading canonical Actuate schema...
|
|
11
11
|
✔ Actuate CMS models added to schema.
|
|
12
|
+
- Running prisma generate...
|
|
12
13
|
[90mstdout[2m | dist/__tests__/db-init.test.js[2m > [22m[2mdb:init (WS-D D5 — canonical schema, no stale fragment)[2m > [22m[2mcommand[2m > [22m[2minjects canonical models with @@map and no duplicate datasource/generator
|
|
13
14
|
[22m[39m✔ Prisma client generated.
|
|
14
15
|
ℹ Run `npx prisma migrate dev --name actuate-cms` to create the migration.
|
|
15
16
|
|
|
16
|
-
- Running prisma generate...
|
|
17
17
|
- Reading canonical Actuate schema...
|
|
18
|
+
✖ Could not locate @actuate-media/cms-core.
|
|
18
19
|
[90mstdout[2m | dist/__tests__/db-init.test.js[2m > [22m[2mdb:init (WS-D D5 — canonical schema, no stale fragment)[2m > [22m[2mcommand[2m > [22m[2mfails clearly when cms-core cannot be located
|
|
19
20
|
[22m[39mℹ Install it first: `npm install @actuate-media/cms-core`.
|
|
20
21
|
|
|
21
|
-
✖ Could not locate @actuate-media/cms-core.
|
|
22
22
|
- Reading canonical Actuate schema...
|
|
23
23
|
✔ Actuate CMS models added to schema.
|
|
24
24
|
[90mstdout[2m | dist/__tests__/db-init.test.js[2m > [22m[2mdb:init (WS-D D5 — canonical schema, no stale fragment)[2m > [22m[2mcommand[2m > [22m[2mis idempotent without --force
|
|
@@ -28,33 +28,33 @@
|
|
|
28
28
|
- Running prisma generate...
|
|
29
29
|
- Reading canonical Actuate schema...
|
|
30
30
|
ℹ Actuate CMS models already present in schema. Use --force to overwrite.
|
|
31
|
-
[32m✓[39m dist/__tests__/db-init.test.js [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
31
|
+
[32m✓[39m dist/__tests__/db-init.test.js [2m([22m[2m4 tests[22m[2m)[22m[32m 183[2mms[22m[39m
|
|
32
32
|
- Reading canonical Actuate schema...
|
|
33
33
|
✔ Actuate CMS models added to schema.
|
|
34
|
-
- Running prisma generate...
|
|
35
34
|
[90mstdout[2m | src/__tests__/db-init.test.ts[2m > [22m[2mdb:init (WS-D D5 — canonical schema, no stale fragment)[2m > [22m[2mcommand[2m > [22m[2minjects canonical models with @@map and no duplicate datasource/generator
|
|
35
|
+
- Running prisma generate...
|
|
36
36
|
[22m[39m✔ Prisma client generated.
|
|
37
37
|
ℹ Run `npx prisma migrate dev --name actuate-cms` to create the migration.
|
|
38
38
|
|
|
39
|
-
- Reading canonical Actuate schema...
|
|
40
|
-
✖ Could not locate @actuate-media/cms-core.
|
|
41
39
|
[90mstdout[2m | src/__tests__/db-init.test.ts[2m > [22m[2mdb:init (WS-D D5 — canonical schema, no stale fragment)[2m > [22m[2mcommand[2m > [22m[2mfails clearly when cms-core cannot be located
|
|
42
40
|
[22m[39mℹ Install it first: `npm install @actuate-media/cms-core`.
|
|
43
41
|
|
|
44
42
|
- Reading canonical Actuate schema...
|
|
45
|
-
|
|
46
|
-
-
|
|
43
|
+
✖ Could not locate @actuate-media/cms-core.
|
|
44
|
+
- Reading canonical Actuate schema...
|
|
47
45
|
[90mstdout[2m | src/__tests__/db-init.test.ts[2m > [22m[2mdb:init (WS-D D5 — canonical schema, no stale fragment)[2m > [22m[2mcommand[2m > [22m[2mis idempotent without --force
|
|
48
46
|
[22m[39m✔ Prisma client generated.
|
|
49
47
|
ℹ Run `npx prisma migrate dev --name actuate-cms` to create the migration.
|
|
50
48
|
|
|
49
|
+
✔ Actuate CMS models added to schema.
|
|
50
|
+
- Running prisma generate...
|
|
51
51
|
- Reading canonical Actuate schema...
|
|
52
52
|
ℹ Actuate CMS models already present in schema. Use --force to overwrite.
|
|
53
|
-
[32m✓[39m src/__tests__/db-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
54
|
-
[32m✓[39m dist/__tests__/seed.test.js [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
55
|
-
[32m✓[39m dist/__tests__/deployment-diagnostics.test.js [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
56
|
-
[32m✓[39m src/__tests__/deployment-diagnostics.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
57
|
-
[32m✓[39m src/__tests__/seed.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
53
|
+
[32m✓[39m src/__tests__/db-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 259[2mms[22m[39m
|
|
54
|
+
[32m✓[39m dist/__tests__/seed.test.js [2m([22m[2m5 tests[22m[2m)[22m[32m 88[2mms[22m[39m
|
|
55
|
+
[32m✓[39m dist/__tests__/deployment-diagnostics.test.js [2m([22m[2m5 tests[22m[2m)[22m[32m 61[2mms[22m[39m
|
|
56
|
+
[32m✓[39m src/__tests__/deployment-diagnostics.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 60[2mms[22m[39m
|
|
57
|
+
[32m✓[39m src/__tests__/seed.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 192[2mms[22m[39m
|
|
58
58
|
- Reading canonical Actuate schema...
|
|
59
59
|
✔ Actuate CMS models added to schema.
|
|
60
60
|
- Running prisma generate...
|
|
@@ -62,20 +62,20 @@
|
|
|
62
62
|
[22m[39m✔ Prisma client generated.
|
|
63
63
|
ℹ Run `npx prisma migrate dev --name actuate-cms` to create the migration.
|
|
64
64
|
|
|
65
|
-
[32m✓[39m dist/__tests__/schema-fragment.test.js [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
65
|
+
[32m✓[39m dist/__tests__/schema-fragment.test.js [2m([22m[2m1 test[22m[2m)[22m[32m 149[2mms[22m[39m
|
|
66
66
|
- Reading canonical Actuate schema...
|
|
67
67
|
✔ Actuate CMS models added to schema.
|
|
68
|
-
- Running prisma generate...
|
|
69
68
|
[90mstdout[2m | src/__tests__/schema-fragment.test.ts[2m > [22m[2mdb:init schema fragment[2m > [22m[2minjects all deploy-critical Actuate models
|
|
70
69
|
[22m[39m✔ Prisma client generated.
|
|
71
70
|
ℹ Run `npx prisma migrate dev --name actuate-cms` to create the migration.
|
|
71
|
+
- Running prisma generate...
|
|
72
72
|
|
|
73
|
-
[32m✓[39m src/__tests__/schema-fragment.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
74
|
-
[32m✓[39m dist/__tests__/init.test.js [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
75
|
-
[32m✓[39m src/__tests__/init.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
73
|
+
[32m✓[39m src/__tests__/schema-fragment.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 233[2mms[22m[39m
|
|
74
|
+
[32m✓[39m dist/__tests__/init.test.js [2m([22m[2m2 tests[22m[2m)[22m[32m 62[2mms[22m[39m
|
|
75
|
+
[32m✓[39m src/__tests__/init.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 148[2mms[22m[39m
|
|
76
76
|
|
|
77
77
|
[2m Test Files [22m [1m[32m12 passed[39m[22m[90m (12)[39m
|
|
78
78
|
[2m Tests [22m [1m[32m46 passed[39m[22m[90m (46)[39m
|
|
79
|
-
[2m Start at [22m
|
|
80
|
-
[2m Duration [22m
|
|
79
|
+
[2m Start at [22m 02:17:00
|
|
80
|
+
[2m Duration [22m 21.65s[2m (transform 2.28s, setup 0ms, import 6.52s, tests 2.19s, environment 11ms)[22m
|
|
81
81
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @actuate-media/cli
|
|
2
2
|
|
|
3
|
+
## 0.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- aa4bd1a: Unify the page content model at write time (ADR 0002). Visual Page-Builder pages now compile their `_layout` tree to the canonical `data.sections[]` on every save, so every reader (SDK, MCP, search, content graph, `/resolve`) sees one contract instead of the lazy read-time bridge.
|
|
8
|
+
- **cms-core**: `createDocument`/`updateDocument` derive `sections` from a `layout` envelope; the `/page-sections/*` write routes refuse a builder-owned page (one with `_layout`) with HTTP 409 to prevent silently-overwritten edits; the `/resolve` bridge is now a legacy fallback for un-migrated pages. New `migratePageBuilderSections()` export backfills legacy pages (idempotent).
|
|
9
|
+
- **cms-admin**: the flat Page Editor opens a builder-owned page read-only with an "Open in Page Builder" action; `EditorPage` gains a `builderOwned` flag.
|
|
10
|
+
- **cli**: new `actuate migrate:sections` command (with `--dry-run` / `--batch-size`) to backfill canonical sections for legacy page-builder documents.
|
|
11
|
+
|
|
3
12
|
## 0.6.0
|
|
4
13
|
|
|
5
14
|
### Minor Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-sections.d.ts","sourceRoot":"","sources":["../../src/commands/migrate-sections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+DnC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASrE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { connectProjectDatabase } from '../utils/database.js';
|
|
4
|
+
/**
|
|
5
|
+
* `actuate migrate:sections` — backfill canonical `data.sections` for legacy
|
|
6
|
+
* page-builder documents (ADR 0002). Idempotent: safe to re-run.
|
|
7
|
+
*/
|
|
8
|
+
async function runMigrateSections(options) {
|
|
9
|
+
const dryRun = options.dryRun ?? false;
|
|
10
|
+
const batchSize = options.batchSize ? Number.parseInt(options.batchSize, 10) : undefined;
|
|
11
|
+
if (batchSize !== undefined && (!Number.isFinite(batchSize) || batchSize <= 0)) {
|
|
12
|
+
logger.error('--batch-size must be a positive integer.');
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
let connection = null;
|
|
16
|
+
const spinner = ora(dryRun ? 'Scanning page-builder documents (dry run)…' : 'Backfilling page sections…').start();
|
|
17
|
+
try {
|
|
18
|
+
connection = await connectProjectDatabase();
|
|
19
|
+
const db = connection.db;
|
|
20
|
+
const { migratePageBuilderSections } = await import('@actuate-media/cms-core');
|
|
21
|
+
// Run as the system admin so per-collection update access is satisfied.
|
|
22
|
+
const admin = await db.user.findFirst({ where: { role: 'ADMIN' } });
|
|
23
|
+
if (!admin) {
|
|
24
|
+
spinner.fail('No ADMIN user found. Create an admin (setup wizard or seed) first.');
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const ctx = { userId: admin.id, role: 'ADMIN', db };
|
|
28
|
+
const result = await migratePageBuilderSections(ctx, { dryRun, batchSize });
|
|
29
|
+
spinner.succeed(dryRun
|
|
30
|
+
? `Dry run complete — ${result.migrated} document(s) would be migrated.`
|
|
31
|
+
: `Migrated ${result.migrated} document(s).`);
|
|
32
|
+
logger.info(` Scanned: ${result.scanned}`);
|
|
33
|
+
logger.info(` Migrated: ${result.migrated}`);
|
|
34
|
+
logger.info(` Skipped: ${result.skipped}`);
|
|
35
|
+
if (result.migratedIds.length > 0) {
|
|
36
|
+
logger.info(` IDs: ${result.migratedIds.join(', ')}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
41
|
+
spinner.fail(`Section migration failed: ${message}`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
await connection?.disconnect();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function registerMigrateSectionsCommand(program) {
|
|
49
|
+
program
|
|
50
|
+
.command('migrate:sections')
|
|
51
|
+
.description('Backfill canonical page sections for legacy page-builder documents (ADR 0002). Idempotent.')
|
|
52
|
+
.option('--dry-run', 'Report what would change without writing')
|
|
53
|
+
.option('--batch-size <n>', 'Documents to scan per DB page (default 100)')
|
|
54
|
+
.action(runMigrateSections);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=migrate-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-sections.js","sourceRoot":"","sources":["../../src/commands/migrate-sections.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+JnC,eAAO,MAAM,gBAAgB;;;;;;;;;GAoB5B,CAAA;AAaD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,sBAAsB,EAAE,CAAA;IACnC,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAyBD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,qBAAqB,CAkC7E;
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+JnC,eAAO,MAAM,gBAAgB;;;;;;;;;GAoB5B,CAAA;AAaD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,sBAAsB,EAAE,CAAA;IACnC,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAyBD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,qBAAqB,CAkC7E;AAwED,wBAAsB,eAAe,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBtE;AAoBD,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgCf;AAqHD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe1D"}
|
package/dist/commands/seed.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
-
import { createRequire } from 'node:module';
|
|
4
3
|
import path from 'node:path';
|
|
5
4
|
import { createInterface } from 'node:readline/promises';
|
|
6
5
|
import { pathToFileURL } from 'node:url';
|
|
7
6
|
import ora from 'ora';
|
|
8
7
|
import { logger } from '../utils/logger.js';
|
|
8
|
+
import { connectProjectDatabase } from '../utils/database.js';
|
|
9
9
|
async function confirm(question) {
|
|
10
10
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
11
11
|
const answer = await rl.question(`${question} (y/N) `);
|
|
@@ -248,7 +248,7 @@ async function runSeed(options) {
|
|
|
248
248
|
}
|
|
249
249
|
let seededDb = null;
|
|
250
250
|
try {
|
|
251
|
-
seededDb = await
|
|
251
|
+
seededDb = await connectProjectDatabase();
|
|
252
252
|
const db = seededDb.db;
|
|
253
253
|
if (options.reset) {
|
|
254
254
|
const yes = await confirm('This will delete ALL existing documents and versions. Continue?');
|
|
@@ -280,44 +280,6 @@ async function runSeed(options) {
|
|
|
280
280
|
await seededDb?.disconnect();
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
|
-
async function getSeedDatabase() {
|
|
284
|
-
const { getDB, initDB, isDBInitialized } = await import('@actuate-media/cms-core');
|
|
285
|
-
if (isDBInitialized()) {
|
|
286
|
-
return { db: getDB(), disconnect: async () => { } };
|
|
287
|
-
}
|
|
288
|
-
const db = await createProjectPrismaClient();
|
|
289
|
-
initDB(db);
|
|
290
|
-
return {
|
|
291
|
-
db,
|
|
292
|
-
disconnect: async () => {
|
|
293
|
-
if (typeof db.$disconnect === 'function') {
|
|
294
|
-
await db.$disconnect();
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
async function createProjectPrismaClient() {
|
|
300
|
-
if (!process.env.DATABASE_URL) {
|
|
301
|
-
throw new Error('DATABASE_URL is required to run seed/populate.');
|
|
302
|
-
}
|
|
303
|
-
const requireFromProject = createRequire(path.join(process.cwd(), 'package.json'));
|
|
304
|
-
const generatedClient = path.resolve('generated', 'prisma', 'client.ts');
|
|
305
|
-
if (existsSync(generatedClient)) {
|
|
306
|
-
const [{ tsImport }, adapterModule, pgModule] = await Promise.all([
|
|
307
|
-
import('tsx/esm/api'),
|
|
308
|
-
import(pathToFileURL(requireFromProject.resolve('@prisma/adapter-pg')).href),
|
|
309
|
-
import(pathToFileURL(requireFromProject.resolve('pg')).href),
|
|
310
|
-
]);
|
|
311
|
-
const { PrismaClient } = (await tsImport(pathToFileURL(generatedClient).href, import.meta.url));
|
|
312
|
-
const { PrismaPg } = adapterModule;
|
|
313
|
-
const pg = pgModule.default ?? pgModule;
|
|
314
|
-
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
|
|
315
|
-
const adapter = new PrismaPg(pool);
|
|
316
|
-
return new PrismaClient({ adapter });
|
|
317
|
-
}
|
|
318
|
-
const clientModule = (await import(pathToFileURL(requireFromProject.resolve('@prisma/client')).href));
|
|
319
|
-
return new clientModule.PrismaClient();
|
|
320
|
-
}
|
|
321
283
|
export async function ensureSeedAdmin(db) {
|
|
322
284
|
const existing = await db.user.findFirst({ where: { role: 'ADMIN' } });
|
|
323
285
|
if (existing)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,KAAK,UAAU,OAAO,CAAC,QAAgB;IACrC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,SAAS,CAAC,CAAA;IACtD,EAAE,CAAC,KAAK,EAAE,CAAA;IACV,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,GAAG;IACjB;QACE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,yDAAyD;KACnE;IACD;QACE,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,gEAAgE;KAC1E;IACD;QACE,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,iEAAiE;KAC3E;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,iFAAiF;KAC3F;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,4EAA4E;KACtF;CACF,CAAA;AAED,MAAM,UAAU,GAAG;IACjB;QACE,KAAK,EAAE,kCAAkC;QACzC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,iDAAiD;QAC1D,OAAO,EACL,oGAAoG;QACtG,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,iCAAiC;QACxC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,6DAA6D;QACtE,OAAO,EACL,8FAA8F;QAChG,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,mDAAmD;QAC5D,OAAO,EAAE,mFAAmF;QAC5F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,qDAAqD;QAC9D,OAAO,EAAE,oFAAoF;QAC7F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,2CAA2C;QACpD,OAAO,EAAE,sFAAsF;QAC/F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,8EAA8E;QACvF,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,iFAAiF;QAC1F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EACL,uFAAuF;QACzF,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,2BAA2B;QAClC,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,yDAAyD;QAClE,OAAO,EAAE,mFAAmF;QAC5F,MAAM,EAAE,OAAO;KAChB;IACD;QACE,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,uDAAuD;QAChE,OAAO,EAAE,+EAA+E;QACxF,MAAM,EAAE,OAAO;KAChB;CACF,CAAA;AAED,MAAM,UAAU,GAAG;IACjB;QACE,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;SACtD;QACD,WAAW,EAAE,cAAc;QAC3B,cAAc,EAAE,sDAAsD;KACvE;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACrD;QACD,WAAW,EAAE,WAAW;QACxB,cAAc,EAAE,uDAAuD;KACxE;IACD;QACE,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;SACxD;QACD,WAAW,EAAE,iBAAiB;QAC9B,cAAc,EAAE,8BAA8B;KAC/C;CACF,CAAA;AAED,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;YAC3C,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;YAClD,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE;SACzD;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,EAAE;YACtE,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC9D;KACF;CACF,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAiB,EAAE;IAC7E,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAiB,EAAE;CAC9E,CAAA;AAwBD,MAAM,oBAAoB,GAAG;IAC3B,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;CAChB,CAAA;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,EAAE,CAAA;AACR,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAE,GAAY;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC5B,OAAO;QACL,UAAU;QACV,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;QACrC,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;KACpE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACpD,MAAM,SAAS,GAA6B,EAAE,CAAA;IAC9C,MAAM,OAAO,GAA2B,EAAE,CAAA;IAE1C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC5B,SAAS,CAAC,IAAI,CACZ,iBAAiB,CACf,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EACtE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CACxC,CACF,CAAA;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAE/B,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACxE,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,aAAa;YAAE,SAAQ;QACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAQ;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,sBAAsB;IAC7B,KAAK,MAAM,SAAS,IAAI,oBAAoB,EAAE,CAAC;QAC7C,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;IAC7C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1D,MAAM,GAAG,GACP,SAAS,KAAK,KAAK;QACjB,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;IAE3B,OAAQ,GAA6C,CAAC,OAAO,IAAK,GAA0B,CAAC,IAAI,CAAA;AACnG,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAoB;IACzC,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,cAAc,IAAI,SAAS,CAAA;IAExD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,QAAQ,GAAwD,IAAI,CAAA;IAExE,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;QAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAA;QAEtB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,iEAAiE,CAAC,CAAA;YAC5F,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBAC9B,OAAM;YACR,CAAC;YAED,MAAM,YAAY,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;YAC3D,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YAC/B,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACpC,CAAC;YACD,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YAChC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,YAAY,CAAC,EAAE,CAAC,CAAA;QACxB,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAA;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAElF,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAO,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAA;IACzD,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,yBAAyB,EAAE,CAAA;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,OAAO;QACL,EAAE;QACF,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,OAAO,EAAE,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBACzC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAA;YACxB,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB;IACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;IAClF,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;IAExE,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChE,MAAM,CAAC,aAAa,CAAC;YACrB,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;SAC7D,CAAC,CAAA;QACF,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,QAAQ,CACtC,aAAa,CAAC,eAAe,CAAC,CAAC,IAAI,EACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAEA,CAAA;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,aAA6D,CAAA;QAClF,MAAM,EAAE,GAAI,QAA0C,CAAC,OAAO,IAAI,QAAQ,CAAA;QAC1E,MAAM,IAAI,GAAG,IAAK,EAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;QACjF,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,IAAI,YAAY,CAAC,EAAE,OAAO,EAAS,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAM,MAAM,CAChC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CACjE,CAEA,CAAA;IACD,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,CAAA;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAO;IAC3C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;IACtE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAA;IAElD,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAA;IACH,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACtE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,qCAAqC,CAAC,CAAA;IACxE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,YAAsC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACpE,GAAG;YACH,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC;SACrC,CAAC,CACH,CAAA;IACH,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAO,EACP,MAAc,EACd,GAA2B;IAE3B,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAC/F,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAA4B,CAAA;IAChF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAEjD,MAAM,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAO,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvC,IAAI,EAAE;gBACJ,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACzD,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;gBACtD,IAAI;gBACJ,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC3D,WAAW,EAAE,MAAM;gBACnB,WAAW,EAAE,MAAM;gBACnB,SAAS;gBACT,WAAW;aACZ;SACF,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,IAAI;gBACJ,WAAW,EAAE,MAAM;gBACnB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAAO;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAA;IAEjD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;IAE3B,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,YAAY,EAAE,CAAA;IAChB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;QACF,YAAY,EAAE,CAAA;IAChB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,YAAY,EAAE,CAAA;IAChB,CAAC;IAED,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAC1B,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,aAAa;YACzB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,kBAAkB,EAAE,CAAA;IACtB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnB,IAAI,EAAE;oBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,IAAI;iBACpB;aACF,CAAC,CAAA;YACF,YAAY,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAA;IACjD,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,kBAAkB,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,qBAAqB,CAAC,CAAA;AACnE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAAO,EAAE,QAAgB;IACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAA;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;IAExD,IAAI,QAAa,CAAA;IACjB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;IAE3B,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAChE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAEzC,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;QACzC,aAAa,EAAE,CAAA;IACjB,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjD,WAAW,EAAE,CAAA;IACf,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,UAAU,aAAa,kBAAkB,WAAW,iBAAiB,QAAQ,GAAG,CAAC,CAAA;AACnG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,QAAQ,EAAE,gDAAgD,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,kDAAkD,CAAC;SAC3E,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,eAAe,EAAE,kDAAkD,CAAC;SAC3E,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,OAAO,CAAC,CAAA;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAE7D,KAAK,UAAU,OAAO,CAAC,QAAgB;IACrC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,SAAS,CAAC,CAAA;IACtD,EAAE,CAAC,KAAK,EAAE,CAAA;IACV,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,GAAG;IACjB;QACE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,yDAAyD;KACnE;IACD;QACE,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,gEAAgE;KAC1E;IACD;QACE,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,iEAAiE;KAC3E;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,iFAAiF;KAC3F;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,4EAA4E;KACtF;CACF,CAAA;AAED,MAAM,UAAU,GAAG;IACjB;QACE,KAAK,EAAE,kCAAkC;QACzC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,iDAAiD;QAC1D,OAAO,EACL,oGAAoG;QACtG,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,iCAAiC;QACxC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,6DAA6D;QACtE,OAAO,EACL,8FAA8F;QAChG,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,mDAAmD;QAC5D,OAAO,EAAE,mFAAmF;QAC5F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,qDAAqD;QAC9D,OAAO,EAAE,oFAAoF;QAC7F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,2CAA2C;QACpD,OAAO,EAAE,sFAAsF;QAC/F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,8EAA8E;QACvF,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,iFAAiF;QAC1F,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EACL,uFAAuF;QACzF,MAAM,EAAE,WAAW;KACpB;IACD;QACE,KAAK,EAAE,2BAA2B;QAClC,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,yDAAyD;QAClE,OAAO,EAAE,mFAAmF;QAC5F,MAAM,EAAE,OAAO;KAChB;IACD;QACE,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,uDAAuD;QAChE,OAAO,EAAE,+EAA+E;QACxF,MAAM,EAAE,OAAO;KAChB;CACF,CAAA;AAED,MAAM,UAAU,GAAG;IACjB;QACE,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;SACtD;QACD,WAAW,EAAE,cAAc;QAC3B,cAAc,EAAE,sDAAsD;KACvE;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACrD;QACD,WAAW,EAAE,WAAW;QACxB,cAAc,EAAE,uDAAuD;KACxE;IACD;QACE,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtF,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;SACxD;QACD,WAAW,EAAE,iBAAiB;QAC9B,cAAc,EAAE,8BAA8B;KAC/C;CACF,CAAA;AAED,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;YAC3C,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;YAClD,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE;SACzD;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,EAAE;YACtE,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC9D;KACF;CACF,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAiB,EAAE;IAC7E,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAiB,EAAE;CAC9E,CAAA;AAwBD,MAAM,oBAAoB,GAAG;IAC3B,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;CAChB,CAAA;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,EAAE,CAAA;AACR,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAE,GAAY;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC5B,OAAO;QACL,UAAU;QACV,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;QACrC,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;KACpE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACpD,MAAM,SAAS,GAA6B,EAAE,CAAA;IAC9C,MAAM,OAAO,GAA2B,EAAE,CAAA;IAE1C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC5B,SAAS,CAAC,IAAI,CACZ,iBAAiB,CACf,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EACtE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CACxC,CACF,CAAA;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAE/B,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACxE,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,aAAa;YAAE,SAAQ;QACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAQ;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,sBAAsB;IAC7B,KAAK,MAAM,SAAS,IAAI,oBAAoB,EAAE,CAAC;QAC7C,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;IAC7C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1D,MAAM,GAAG,GACP,SAAS,KAAK,KAAK;QACjB,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;IAE3B,OAAQ,GAA6C,CAAC,OAAO,IAAK,GAA0B,CAAC,IAAI,CAAA;AACnG,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAoB;IACzC,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,cAAc,IAAI,SAAS,CAAA;IAExD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAA;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,QAAQ,GAAwD,IAAI,CAAA;IAExE,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,sBAAsB,EAAE,CAAA;QACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAA;QAEtB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,iEAAiE,CAAC,CAAA;YAC5F,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBAC9B,OAAM;YACR,CAAC;YAED,MAAM,YAAY,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;YAC3D,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YAC/B,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACpC,CAAC;YACD,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YAChC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,YAAY,CAAC,EAAE,CAAC,CAAA;QACxB,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAA;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAO;IAC3C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;IACtE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAA;IAElD,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAA;IACH,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACtE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,qCAAqC,CAAC,CAAA;IACxE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,YAAsC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACpE,GAAG;YACH,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC;SACrC,CAAC,CACH,CAAA;IACH,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAO,EACP,MAAc,EACd,GAA2B;IAE3B,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAC/F,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAA4B,CAAA;IAChF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAEjD,MAAM,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAO,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvC,IAAI,EAAE;gBACJ,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACzD,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;gBACtD,IAAI;gBACJ,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC3D,WAAW,EAAE,MAAM;gBACnB,WAAW,EAAE,MAAM;gBACnB,SAAS;gBACT,WAAW;aACZ;SACF,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,IAAI;gBACJ,WAAW,EAAE,MAAM;gBACnB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAAO;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAA;IAEjD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;IAE3B,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,YAAY,EAAE,CAAA;IAChB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;QACF,YAAY,EAAE,CAAA;IAChB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,OAAO;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,YAAY,EAAE,CAAA;IAChB,CAAC;IAED,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAC1B,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,aAAa;YACzB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,kBAAkB,EAAE,CAAA;IACtB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnB,IAAI,EAAE;oBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,IAAI;iBACpB;aACF,CAAC,CAAA;YACF,YAAY,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAA;IACjD,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,kBAAkB,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,qBAAqB,CAAC,CAAA;AACnE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAAO,EAAE,QAAgB;IACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAA;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;IAExD,IAAI,QAAa,CAAA;IACjB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;IAE3B,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAChE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAEzC,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;QACzC,aAAa,EAAE,CAAA;IACjB,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjD,WAAW,EAAE,CAAA;IACf,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,UAAU,aAAa,kBAAkB,WAAW,iBAAiB,QAAQ,GAAG,CAAC,CAAA;AACnG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,QAAQ,EAAE,gDAAgD,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,kDAAkD,CAAC;SAC3E,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,eAAe,EAAE,kDAAkD,CAAC;SAC3E,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,OAAO,CAAC,CAAA;AACpB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { registerMigrateCommand } from './commands/migrate.js';
|
|
4
|
+
import { registerMigrateSectionsCommand } from './commands/migrate-sections.js';
|
|
4
5
|
import { registerGenerateCommand } from './commands/generate.js';
|
|
5
6
|
import { registerSeedCommand } from './commands/seed.js';
|
|
6
7
|
import { registerImportCommand } from './commands/import.js';
|
|
@@ -18,6 +19,7 @@ program
|
|
|
18
19
|
.description('Actuate CMS — CLI toolkit for migrations, codegen, and more')
|
|
19
20
|
.version('0.1.0');
|
|
20
21
|
registerMigrateCommand(program);
|
|
22
|
+
registerMigrateSectionsCommand(program);
|
|
21
23
|
registerGenerateCommand(program);
|
|
22
24
|
registerSeedCommand(program);
|
|
23
25
|
registerImportCommand(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAA;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAA;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,8BAA8B,CAAC,OAAO,CAAC,CAAA;AACvC,uBAAuB,CAAC,OAAO,CAAC,CAAA;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAA;AAC/B,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAA;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAA;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helper for CLI commands that need a live connection to the consumer
|
|
3
|
+
* project's database (seed, populate, data migrations…).
|
|
4
|
+
*
|
|
5
|
+
* Resolution order mirrors how a scaffolded Actuate project exposes Prisma:
|
|
6
|
+
* 1. If `cms-core` already has an initialized client (e.g. set up by the host
|
|
7
|
+
* app in-process), reuse it.
|
|
8
|
+
* 2. Otherwise build a client from the project's generated Prisma client
|
|
9
|
+
* (`generated/prisma/client.ts`, Prisma 7 + pg driver adapter).
|
|
10
|
+
* 3. Fall back to a plain `@prisma/client` resolved from the project.
|
|
11
|
+
*
|
|
12
|
+
* The returned `disconnect()` only tears down clients this helper created — a
|
|
13
|
+
* pre-initialized in-process client is left untouched.
|
|
14
|
+
*/
|
|
15
|
+
export declare function connectProjectDatabase(): Promise<{
|
|
16
|
+
db: any;
|
|
17
|
+
disconnect: () => Promise<void>;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IAEtD,EAAE,EAAE,GAAG,CAAA;IACP,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC,CAAC,CAiBD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
/**
|
|
6
|
+
* Shared helper for CLI commands that need a live connection to the consumer
|
|
7
|
+
* project's database (seed, populate, data migrations…).
|
|
8
|
+
*
|
|
9
|
+
* Resolution order mirrors how a scaffolded Actuate project exposes Prisma:
|
|
10
|
+
* 1. If `cms-core` already has an initialized client (e.g. set up by the host
|
|
11
|
+
* app in-process), reuse it.
|
|
12
|
+
* 2. Otherwise build a client from the project's generated Prisma client
|
|
13
|
+
* (`generated/prisma/client.ts`, Prisma 7 + pg driver adapter).
|
|
14
|
+
* 3. Fall back to a plain `@prisma/client` resolved from the project.
|
|
15
|
+
*
|
|
16
|
+
* The returned `disconnect()` only tears down clients this helper created — a
|
|
17
|
+
* pre-initialized in-process client is left untouched.
|
|
18
|
+
*/
|
|
19
|
+
export async function connectProjectDatabase() {
|
|
20
|
+
const { getDB, initDB, isDBInitialized } = await import('@actuate-media/cms-core');
|
|
21
|
+
if (isDBInitialized()) {
|
|
22
|
+
return { db: getDB(), disconnect: async () => { } };
|
|
23
|
+
}
|
|
24
|
+
const db = await createProjectPrismaClient();
|
|
25
|
+
initDB(db);
|
|
26
|
+
return {
|
|
27
|
+
db,
|
|
28
|
+
disconnect: async () => {
|
|
29
|
+
if (typeof db.$disconnect === 'function') {
|
|
30
|
+
await db.$disconnect();
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see above.
|
|
36
|
+
async function createProjectPrismaClient() {
|
|
37
|
+
if (!process.env.DATABASE_URL) {
|
|
38
|
+
throw new Error('DATABASE_URL is required to connect to the project database.');
|
|
39
|
+
}
|
|
40
|
+
const requireFromProject = createRequire(path.join(process.cwd(), 'package.json'));
|
|
41
|
+
const generatedClient = path.resolve('generated', 'prisma', 'client.ts');
|
|
42
|
+
if (existsSync(generatedClient)) {
|
|
43
|
+
const [{ tsImport }, adapterModule, pgModule] = await Promise.all([
|
|
44
|
+
import('tsx/esm/api'),
|
|
45
|
+
import(pathToFileURL(requireFromProject.resolve('@prisma/adapter-pg')).href),
|
|
46
|
+
import(pathToFileURL(requireFromProject.resolve('pg')).href),
|
|
47
|
+
]);
|
|
48
|
+
const { PrismaClient } = (await tsImport(pathToFileURL(generatedClient).href, import.meta.url));
|
|
49
|
+
const { PrismaPg } = adapterModule;
|
|
50
|
+
const pg = pgModule.default ?? pgModule;
|
|
51
|
+
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
|
|
52
|
+
const adapter = new PrismaPg(pool);
|
|
53
|
+
return new PrismaClient({ adapter });
|
|
54
|
+
}
|
|
55
|
+
const clientModule = (await import(pathToFileURL(requireFromProject.resolve('@prisma/client')).href));
|
|
56
|
+
return new clientModule.PrismaClient();
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAK1C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAElF,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAO,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAA;IACzD,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,yBAAyB,EAAE,CAAA;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,OAAO;QACL,EAAE;QACF,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,OAAO,EAAE,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBACzC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAA;YACxB,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,yBAAyB;IACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IAED,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;IAClF,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;IAExE,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChE,MAAM,CAAC,aAAa,CAAC;YACrB,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;SAC7D,CAAC,CAAA;QACF,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,QAAQ,CACtC,aAAa,CAAC,eAAe,CAAC,CAAC,IAAI,EACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAEA,CAAA;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,aAA6D,CAAA;QAClF,MAAM,EAAE,GAAI,QAA0C,CAAC,OAAO,IAAI,QAAQ,CAAA;QAC1E,MAAM,IAAI,GAAG,IAAK,EAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;QACjF,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,IAAI,YAAY,CAAC,EAAE,OAAO,EAAS,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAM,MAAM,CAChC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CACjE,CAEA,CAAA;IACD,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,CAAA;AACxC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "CLI for Actuate CMS — migrations, codegen, imports, exports, and upgrades",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"typescript": "^5.7.0",
|
|
30
30
|
"vitest": "^4.1.0",
|
|
31
|
-
"@actuate-media/cms-core": "0.
|
|
31
|
+
"@actuate-media/cms-core": "0.53.0"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc",
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Command } from 'commander'
|
|
2
|
+
import ora from 'ora'
|
|
3
|
+
import { logger } from '../utils/logger.js'
|
|
4
|
+
import { connectProjectDatabase } from '../utils/database.js'
|
|
5
|
+
|
|
6
|
+
interface MigrateSectionsOptions {
|
|
7
|
+
dryRun?: boolean
|
|
8
|
+
batchSize?: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* `actuate migrate:sections` — backfill canonical `data.sections` for legacy
|
|
13
|
+
* page-builder documents (ADR 0002). Idempotent: safe to re-run.
|
|
14
|
+
*/
|
|
15
|
+
async function runMigrateSections(options: MigrateSectionsOptions): Promise<void> {
|
|
16
|
+
const dryRun = options.dryRun ?? false
|
|
17
|
+
const batchSize = options.batchSize ? Number.parseInt(options.batchSize, 10) : undefined
|
|
18
|
+
if (batchSize !== undefined && (!Number.isFinite(batchSize) || batchSize <= 0)) {
|
|
19
|
+
logger.error('--batch-size must be a positive integer.')
|
|
20
|
+
process.exit(1)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let connection: { db: any; disconnect: () => Promise<void> } | null = null
|
|
24
|
+
const spinner = ora(
|
|
25
|
+
dryRun ? 'Scanning page-builder documents (dry run)…' : 'Backfilling page sections…',
|
|
26
|
+
).start()
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
connection = await connectProjectDatabase()
|
|
30
|
+
const db = connection.db
|
|
31
|
+
|
|
32
|
+
const { migratePageBuilderSections } = await import('@actuate-media/cms-core')
|
|
33
|
+
|
|
34
|
+
// Run as the system admin so per-collection update access is satisfied.
|
|
35
|
+
const admin = await db.user.findFirst({ where: { role: 'ADMIN' } })
|
|
36
|
+
if (!admin) {
|
|
37
|
+
spinner.fail('No ADMIN user found. Create an admin (setup wizard or seed) first.')
|
|
38
|
+
process.exit(1)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const ctx = { userId: admin.id, role: 'ADMIN', db }
|
|
42
|
+
const result = await migratePageBuilderSections(ctx, { dryRun, batchSize })
|
|
43
|
+
|
|
44
|
+
spinner.succeed(
|
|
45
|
+
dryRun
|
|
46
|
+
? `Dry run complete — ${result.migrated} document(s) would be migrated.`
|
|
47
|
+
: `Migrated ${result.migrated} document(s).`,
|
|
48
|
+
)
|
|
49
|
+
logger.info(` Scanned: ${result.scanned}`)
|
|
50
|
+
logger.info(` Migrated: ${result.migrated}`)
|
|
51
|
+
logger.info(` Skipped: ${result.skipped}`)
|
|
52
|
+
if (result.migratedIds.length > 0) {
|
|
53
|
+
logger.info(` IDs: ${result.migratedIds.join(', ')}`)
|
|
54
|
+
}
|
|
55
|
+
} catch (err) {
|
|
56
|
+
const message = err instanceof Error ? err.message : String(err)
|
|
57
|
+
spinner.fail(`Section migration failed: ${message}`)
|
|
58
|
+
process.exit(1)
|
|
59
|
+
} finally {
|
|
60
|
+
await connection?.disconnect()
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function registerMigrateSectionsCommand(program: Command): void {
|
|
65
|
+
program
|
|
66
|
+
.command('migrate:sections')
|
|
67
|
+
.description(
|
|
68
|
+
'Backfill canonical page sections for legacy page-builder documents (ADR 0002). Idempotent.',
|
|
69
|
+
)
|
|
70
|
+
.option('--dry-run', 'Report what would change without writing')
|
|
71
|
+
.option('--batch-size <n>', 'Documents to scan per DB page (default 100)')
|
|
72
|
+
.action(runMigrateSections)
|
|
73
|
+
}
|
package/src/commands/seed.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Command } from 'commander'
|
|
2
2
|
import { readFile } from 'node:fs/promises'
|
|
3
3
|
import { existsSync } from 'node:fs'
|
|
4
|
-
import { createRequire } from 'node:module'
|
|
5
4
|
import path from 'node:path'
|
|
6
5
|
import { createInterface } from 'node:readline/promises'
|
|
7
6
|
import { pathToFileURL } from 'node:url'
|
|
8
7
|
import ora from 'ora'
|
|
9
8
|
import { logger } from '../utils/logger.js'
|
|
9
|
+
import { connectProjectDatabase } from '../utils/database.js'
|
|
10
10
|
|
|
11
11
|
async function confirm(question: string): Promise<boolean> {
|
|
12
12
|
const rl = createInterface({ input: process.stdin, output: process.stdout })
|
|
@@ -300,7 +300,7 @@ async function runSeed(options: SeedOptions): Promise<void> {
|
|
|
300
300
|
let seededDb: { db: any; disconnect: () => Promise<void> } | null = null
|
|
301
301
|
|
|
302
302
|
try {
|
|
303
|
-
seededDb = await
|
|
303
|
+
seededDb = await connectProjectDatabase()
|
|
304
304
|
const db = seededDb.db
|
|
305
305
|
|
|
306
306
|
if (options.reset) {
|
|
@@ -335,60 +335,6 @@ async function runSeed(options: SeedOptions): Promise<void> {
|
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
337
|
|
|
338
|
-
async function getSeedDatabase(): Promise<{ db: any; disconnect: () => Promise<void> }> {
|
|
339
|
-
const { getDB, initDB, isDBInitialized } = await import('@actuate-media/cms-core')
|
|
340
|
-
|
|
341
|
-
if (isDBInitialized()) {
|
|
342
|
-
return { db: getDB<any>(), disconnect: async () => {} }
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
const db = await createProjectPrismaClient()
|
|
346
|
-
initDB(db)
|
|
347
|
-
return {
|
|
348
|
-
db,
|
|
349
|
-
disconnect: async () => {
|
|
350
|
-
if (typeof db.$disconnect === 'function') {
|
|
351
|
-
await db.$disconnect()
|
|
352
|
-
}
|
|
353
|
-
},
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
async function createProjectPrismaClient(): Promise<any> {
|
|
358
|
-
if (!process.env.DATABASE_URL) {
|
|
359
|
-
throw new Error('DATABASE_URL is required to run seed/populate.')
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
const requireFromProject = createRequire(path.join(process.cwd(), 'package.json'))
|
|
363
|
-
const generatedClient = path.resolve('generated', 'prisma', 'client.ts')
|
|
364
|
-
|
|
365
|
-
if (existsSync(generatedClient)) {
|
|
366
|
-
const [{ tsImport }, adapterModule, pgModule] = await Promise.all([
|
|
367
|
-
import('tsx/esm/api'),
|
|
368
|
-
import(pathToFileURL(requireFromProject.resolve('@prisma/adapter-pg')).href),
|
|
369
|
-
import(pathToFileURL(requireFromProject.resolve('pg')).href),
|
|
370
|
-
])
|
|
371
|
-
const { PrismaClient } = (await tsImport(
|
|
372
|
-
pathToFileURL(generatedClient).href,
|
|
373
|
-
import.meta.url,
|
|
374
|
-
)) as {
|
|
375
|
-
PrismaClient: new (options?: unknown) => any
|
|
376
|
-
}
|
|
377
|
-
const { PrismaPg } = adapterModule as { PrismaPg: new (pool: unknown) => unknown }
|
|
378
|
-
const pg = (pgModule as { default?: typeof pgModule }).default ?? pgModule
|
|
379
|
-
const pool = new (pg as any).Pool({ connectionString: process.env.DATABASE_URL })
|
|
380
|
-
const adapter = new PrismaPg(pool)
|
|
381
|
-
return new PrismaClient({ adapter } as any)
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
const clientModule = (await import(
|
|
385
|
-
pathToFileURL(requireFromProject.resolve('@prisma/client')).href
|
|
386
|
-
)) as {
|
|
387
|
-
PrismaClient: new () => any
|
|
388
|
-
}
|
|
389
|
-
return new clientModule.PrismaClient()
|
|
390
|
-
}
|
|
391
|
-
|
|
392
338
|
export async function ensureSeedAdmin(db: any): Promise<{ id: string }> {
|
|
393
339
|
const existing = await db.user.findFirst({ where: { role: 'ADMIN' } })
|
|
394
340
|
if (existing) return existing
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander'
|
|
3
3
|
import { registerMigrateCommand } from './commands/migrate.js'
|
|
4
|
+
import { registerMigrateSectionsCommand } from './commands/migrate-sections.js'
|
|
4
5
|
import { registerGenerateCommand } from './commands/generate.js'
|
|
5
6
|
import { registerSeedCommand } from './commands/seed.js'
|
|
6
7
|
import { registerImportCommand } from './commands/import.js'
|
|
@@ -25,6 +26,7 @@ program
|
|
|
25
26
|
.version('0.1.0')
|
|
26
27
|
|
|
27
28
|
registerMigrateCommand(program)
|
|
29
|
+
registerMigrateSectionsCommand(program)
|
|
28
30
|
registerGenerateCommand(program)
|
|
29
31
|
registerSeedCommand(program)
|
|
30
32
|
registerImportCommand(program)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs'
|
|
2
|
+
import { createRequire } from 'node:module'
|
|
3
|
+
import path from 'node:path'
|
|
4
|
+
import { pathToFileURL } from 'node:url'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Shared helper for CLI commands that need a live connection to the consumer
|
|
8
|
+
* project's database (seed, populate, data migrations…).
|
|
9
|
+
*
|
|
10
|
+
* Resolution order mirrors how a scaffolded Actuate project exposes Prisma:
|
|
11
|
+
* 1. If `cms-core` already has an initialized client (e.g. set up by the host
|
|
12
|
+
* app in-process), reuse it.
|
|
13
|
+
* 2. Otherwise build a client from the project's generated Prisma client
|
|
14
|
+
* (`generated/prisma/client.ts`, Prisma 7 + pg driver adapter).
|
|
15
|
+
* 3. Fall back to a plain `@prisma/client` resolved from the project.
|
|
16
|
+
*
|
|
17
|
+
* The returned `disconnect()` only tears down clients this helper created — a
|
|
18
|
+
* pre-initialized in-process client is left untouched.
|
|
19
|
+
*/
|
|
20
|
+
export async function connectProjectDatabase(): Promise<{
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Prisma client shape varies by project; callers treat it structurally.
|
|
22
|
+
db: any
|
|
23
|
+
disconnect: () => Promise<void>
|
|
24
|
+
}> {
|
|
25
|
+
const { getDB, initDB, isDBInitialized } = await import('@actuate-media/cms-core')
|
|
26
|
+
|
|
27
|
+
if (isDBInitialized()) {
|
|
28
|
+
return { db: getDB<any>(), disconnect: async () => {} }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const db = await createProjectPrismaClient()
|
|
32
|
+
initDB(db)
|
|
33
|
+
return {
|
|
34
|
+
db,
|
|
35
|
+
disconnect: async () => {
|
|
36
|
+
if (typeof db.$disconnect === 'function') {
|
|
37
|
+
await db.$disconnect()
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see above.
|
|
44
|
+
async function createProjectPrismaClient(): Promise<any> {
|
|
45
|
+
if (!process.env.DATABASE_URL) {
|
|
46
|
+
throw new Error('DATABASE_URL is required to connect to the project database.')
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const requireFromProject = createRequire(path.join(process.cwd(), 'package.json'))
|
|
50
|
+
const generatedClient = path.resolve('generated', 'prisma', 'client.ts')
|
|
51
|
+
|
|
52
|
+
if (existsSync(generatedClient)) {
|
|
53
|
+
const [{ tsImport }, adapterModule, pgModule] = await Promise.all([
|
|
54
|
+
import('tsx/esm/api'),
|
|
55
|
+
import(pathToFileURL(requireFromProject.resolve('@prisma/adapter-pg')).href),
|
|
56
|
+
import(pathToFileURL(requireFromProject.resolve('pg')).href),
|
|
57
|
+
])
|
|
58
|
+
const { PrismaClient } = (await tsImport(
|
|
59
|
+
pathToFileURL(generatedClient).href,
|
|
60
|
+
import.meta.url,
|
|
61
|
+
)) as {
|
|
62
|
+
PrismaClient: new (options?: unknown) => any
|
|
63
|
+
}
|
|
64
|
+
const { PrismaPg } = adapterModule as { PrismaPg: new (pool: unknown) => unknown }
|
|
65
|
+
const pg = (pgModule as { default?: typeof pgModule }).default ?? pgModule
|
|
66
|
+
const pool = new (pg as any).Pool({ connectionString: process.env.DATABASE_URL })
|
|
67
|
+
const adapter = new PrismaPg(pool)
|
|
68
|
+
return new PrismaClient({ adapter } as any)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const clientModule = (await import(
|
|
72
|
+
pathToFileURL(requireFromProject.resolve('@prisma/client')).href
|
|
73
|
+
)) as {
|
|
74
|
+
PrismaClient: new () => any
|
|
75
|
+
}
|
|
76
|
+
return new clientModule.PrismaClient()
|
|
77
|
+
}
|