@actuate-media/cli 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +6 -6
- package/CHANGELOG.md +6 -0
- package/dist/__tests__/seed.test.js +68 -2
- package/dist/__tests__/seed.test.js.map +1 -1
- package/dist/commands/seed.d.ts +4 -0
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +123 -85
- package/dist/commands/seed.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/seed.test.ts +75 -2
- package/src/commands/seed.ts +150 -87
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
|
|
2
|
-
> @actuate-media/cli@0.3.
|
|
2
|
+
> @actuate-media/cli@0.3.1 test /home/runner/work/actuatecms/actuatecms/packages/cli
|
|
3
3
|
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/actuatecms/actuatecms/packages/cli[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m src/__tests__/seed.test.ts [2m([22m[
|
|
9
|
-
[32m✓[39m src/__tests__/init.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
8
|
+
[32m✓[39m src/__tests__/seed.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 100[2mms[22m[39m
|
|
9
|
+
[32m✓[39m src/__tests__/init.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 34[2mms[22m[39m
|
|
10
10
|
|
|
11
11
|
[2m Test Files [22m [1m[32m2 passed[39m[22m[90m (2)[39m
|
|
12
|
-
[2m Tests [22m [1m[
|
|
13
|
-
[2m Start at [22m 17:
|
|
14
|
-
[2m Duration [22m
|
|
12
|
+
[2m Tests [22m [1m[32m6 passed[39m[22m[90m (6)[39m
|
|
13
|
+
[2m Start at [22m 17:55:01
|
|
14
|
+
[2m Duration [22m 3.52s[2m (transform 711ms, setup 0ms, collect 1.19s, tests 134ms, environment 0ms, prepare 673ms)[22m
|
|
15
15
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
vi.mock('@actuate-media/cms-core', () => ({
|
|
3
|
+
extractPlainText: vi.fn((value) => value.replace(/<[^>]+>/g, ' ')),
|
|
4
|
+
hashContent: vi.fn(async () => 'hash-1'),
|
|
5
|
+
sanitizeHtml: vi.fn((value) => value.replace(/<script[\s\S]*?<\/script>/gi, '')),
|
|
6
|
+
createInitialAdmin: vi.fn(),
|
|
7
|
+
}));
|
|
8
|
+
import { createSeedDocument, ensureSeedAdmin, normalizeSeedPayload } from '../commands/seed.js';
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
vi.unstubAllEnvs();
|
|
11
|
+
});
|
|
3
12
|
describe('seed payload normalization', () => {
|
|
4
13
|
it('separates globals from collection documents', () => {
|
|
5
14
|
const normalized = normalizeSeedPayload({
|
|
@@ -46,4 +55,61 @@ describe('seed payload normalization', () => {
|
|
|
46
55
|
]);
|
|
47
56
|
});
|
|
48
57
|
});
|
|
58
|
+
describe('seed admin handling', () => {
|
|
59
|
+
it('refuses to create a first admin without credentials', async () => {
|
|
60
|
+
const db = {
|
|
61
|
+
user: {
|
|
62
|
+
findFirst: vi.fn().mockResolvedValue(null),
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
await expect(ensureSeedAdmin(db)).rejects.toThrow('CMS_ADMIN_EMAIL and CMS_ADMIN_PASSWORD');
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
describe('seed document creation', () => {
|
|
69
|
+
it('creates documents with versions, content hashes, and sanitized HTML', async () => {
|
|
70
|
+
const tx = {
|
|
71
|
+
document: {
|
|
72
|
+
create: vi.fn().mockResolvedValue({ id: 'doc-1' }),
|
|
73
|
+
},
|
|
74
|
+
version: {
|
|
75
|
+
create: vi.fn(),
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
const db = {
|
|
79
|
+
$transaction: vi.fn(async (fn) => fn(tx)),
|
|
80
|
+
};
|
|
81
|
+
await createSeedDocument(db, 'admin-1', {
|
|
82
|
+
collection: 'pages',
|
|
83
|
+
status: 'PUBLISHED',
|
|
84
|
+
data: {
|
|
85
|
+
title: 'Home',
|
|
86
|
+
slug: 'home',
|
|
87
|
+
content: '<p>Hello</p><script>alert(1)</script>',
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
expect(tx.document.create).toHaveBeenCalledWith({
|
|
91
|
+
data: expect.objectContaining({
|
|
92
|
+
collection: 'pages',
|
|
93
|
+
title: 'Home',
|
|
94
|
+
slug: 'home',
|
|
95
|
+
status: 'PUBLISHED',
|
|
96
|
+
publishedAt: expect.any(Date),
|
|
97
|
+
createdById: 'admin-1',
|
|
98
|
+
updatedById: 'admin-1',
|
|
99
|
+
plainText: expect.any(String),
|
|
100
|
+
contentHash: expect.any(String),
|
|
101
|
+
data: expect.objectContaining({
|
|
102
|
+
content: '<p>Hello</p>',
|
|
103
|
+
}),
|
|
104
|
+
}),
|
|
105
|
+
});
|
|
106
|
+
expect(tx.version.create).toHaveBeenCalledWith({
|
|
107
|
+
data: expect.objectContaining({
|
|
108
|
+
documentId: 'doc-1',
|
|
109
|
+
changedById: 'admin-1',
|
|
110
|
+
changeType: 'CREATE',
|
|
111
|
+
}),
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
49
115
|
//# sourceMappingURL=seed.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.test.js","sourceRoot":"","sources":["../../src/__tests__/seed.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"seed.test.js","sourceRoot":"","sources":["../../src/__tests__/seed.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/seed.d.ts
CHANGED
|
@@ -13,5 +13,9 @@ export interface NormalizedSeedPayload {
|
|
|
13
13
|
globals: NormalizedSeedGlobal[];
|
|
14
14
|
}
|
|
15
15
|
export declare function normalizeSeedPayload(seedData: unknown): NormalizedSeedPayload;
|
|
16
|
+
export declare function ensureSeedAdmin(db: any): Promise<{
|
|
17
|
+
id: string;
|
|
18
|
+
}>;
|
|
19
|
+
export declare function createSeedDocument(db: any, userId: string, doc: NormalizedSeedDocument): Promise<void>;
|
|
16
20
|
export declare function registerSeedCommand(program: Command): void;
|
|
17
21
|
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkLpC,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAyBD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,qBAAqB,CAgC7E;AAyHD,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;AA0GD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe1D"}
|
package/dist/commands/seed.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
import { createInterface } from "node:readline/promises";
|
|
5
6
|
import { pathToFileURL } from "node:url";
|
|
@@ -222,9 +223,10 @@ async function runSeed(options) {
|
|
|
222
223
|
logger.error("Specify --demo, --file <path>, or add actuate.seed.json in the project root.");
|
|
223
224
|
process.exit(1);
|
|
224
225
|
}
|
|
226
|
+
let seededDb = null;
|
|
225
227
|
try {
|
|
226
|
-
|
|
227
|
-
const db =
|
|
228
|
+
seededDb = await getSeedDatabase();
|
|
229
|
+
const db = seededDb.db;
|
|
228
230
|
if (options.reset) {
|
|
229
231
|
const yes = await confirm("This will delete ALL existing documents and versions. Continue?");
|
|
230
232
|
if (!yes) {
|
|
@@ -249,65 +251,139 @@ async function runSeed(options) {
|
|
|
249
251
|
logger.error(`Seed failed: ${message}`);
|
|
250
252
|
process.exit(1);
|
|
251
253
|
}
|
|
254
|
+
finally {
|
|
255
|
+
await seededDb?.disconnect();
|
|
256
|
+
}
|
|
252
257
|
}
|
|
253
|
-
async function
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
+
async function getSeedDatabase() {
|
|
259
|
+
const { getDB, initDB, isDBInitialized } = await import("@actuate-media/cms-core");
|
|
260
|
+
if (isDBInitialized()) {
|
|
261
|
+
return { db: getDB(), disconnect: async () => { } };
|
|
262
|
+
}
|
|
263
|
+
const db = await createProjectPrismaClient();
|
|
264
|
+
initDB(db);
|
|
265
|
+
return {
|
|
266
|
+
db,
|
|
267
|
+
disconnect: async () => {
|
|
268
|
+
if (typeof db.$disconnect === "function") {
|
|
269
|
+
await db.$disconnect();
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
async function createProjectPrismaClient() {
|
|
275
|
+
if (!process.env.DATABASE_URL) {
|
|
276
|
+
throw new Error("DATABASE_URL is required to run seed/populate.");
|
|
277
|
+
}
|
|
278
|
+
const requireFromProject = createRequire(path.join(process.cwd(), "package.json"));
|
|
279
|
+
const generatedClient = path.resolve("generated", "prisma", "client.ts");
|
|
280
|
+
if (existsSync(generatedClient)) {
|
|
281
|
+
const [{ tsImport }, adapterModule, pgModule] = await Promise.all([
|
|
282
|
+
import("tsx/esm/api"),
|
|
283
|
+
import(pathToFileURL(requireFromProject.resolve("@prisma/adapter-pg")).href),
|
|
284
|
+
import(pathToFileURL(requireFromProject.resolve("pg")).href),
|
|
285
|
+
]);
|
|
286
|
+
const { PrismaClient } = await tsImport(pathToFileURL(generatedClient).href, import.meta.url);
|
|
287
|
+
const { PrismaPg } = adapterModule;
|
|
288
|
+
const pg = pgModule.default ?? pgModule;
|
|
289
|
+
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
|
|
290
|
+
const adapter = new PrismaPg(pool);
|
|
291
|
+
return new PrismaClient({ adapter });
|
|
292
|
+
}
|
|
293
|
+
const clientModule = await import(pathToFileURL(requireFromProject.resolve("@prisma/client")).href);
|
|
294
|
+
return new clientModule.PrismaClient();
|
|
295
|
+
}
|
|
296
|
+
export async function ensureSeedAdmin(db) {
|
|
297
|
+
const existing = await db.user.findFirst({ where: { role: "ADMIN" } });
|
|
298
|
+
if (existing)
|
|
299
|
+
return existing;
|
|
300
|
+
const email = process.env.CMS_ADMIN_EMAIL;
|
|
301
|
+
const password = process.env.CMS_ADMIN_PASSWORD;
|
|
302
|
+
const name = process.env.CMS_ADMIN_NAME ?? "Admin";
|
|
303
|
+
if (!email || !password) {
|
|
304
|
+
throw new Error("No admin user exists. Set CMS_ADMIN_EMAIL and CMS_ADMIN_PASSWORD before running seed, or complete the setup wizard first.");
|
|
305
|
+
}
|
|
306
|
+
const { createInitialAdmin } = await import("@actuate-media/cms-core");
|
|
307
|
+
const result = await createInitialAdmin(db, { email, password, name });
|
|
308
|
+
if (!result.success || !result.userId) {
|
|
309
|
+
throw new Error(result.error ?? "Failed to create initial admin user");
|
|
310
|
+
}
|
|
311
|
+
return { id: result.userId };
|
|
312
|
+
}
|
|
313
|
+
function sanitizeSeedData(value, sanitizeHtml) {
|
|
314
|
+
if (Array.isArray(value)) {
|
|
315
|
+
return value.map((item) => sanitizeSeedData(item, sanitizeHtml));
|
|
316
|
+
}
|
|
317
|
+
if (value && typeof value === "object") {
|
|
318
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [
|
|
319
|
+
key,
|
|
320
|
+
sanitizeSeedData(item, sanitizeHtml),
|
|
321
|
+
]));
|
|
322
|
+
}
|
|
323
|
+
if (typeof value === "string" && /<[a-z][\s\S]*>/i.test(value)) {
|
|
324
|
+
return sanitizeHtml(value);
|
|
325
|
+
}
|
|
326
|
+
return value;
|
|
327
|
+
}
|
|
328
|
+
export async function createSeedDocument(db, userId, doc) {
|
|
329
|
+
const { extractPlainText, hashContent, sanitizeHtml } = await import("@actuate-media/cms-core");
|
|
330
|
+
const data = sanitizeSeedData(doc.data, sanitizeHtml);
|
|
331
|
+
const serialized = JSON.stringify(data);
|
|
332
|
+
const plainText = extractPlainText(serialized);
|
|
333
|
+
const contentHash = await hashContent(serialized);
|
|
334
|
+
await db.$transaction(async (tx) => {
|
|
335
|
+
const created = await tx.document.create({
|
|
336
|
+
data: {
|
|
337
|
+
collection: doc.collection,
|
|
338
|
+
title: typeof data.title === "string" ? data.title : null,
|
|
339
|
+
slug: typeof data.slug === "string" ? data.slug : null,
|
|
340
|
+
data,
|
|
341
|
+
status: doc.status,
|
|
342
|
+
publishedAt: doc.status === "PUBLISHED" ? new Date() : null,
|
|
343
|
+
createdById: userId,
|
|
344
|
+
updatedById: userId,
|
|
345
|
+
plainText,
|
|
346
|
+
contentHash,
|
|
347
|
+
},
|
|
348
|
+
});
|
|
349
|
+
await tx.version.create({
|
|
258
350
|
data: {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
isApproved: true,
|
|
264
|
-
emailVerified: true,
|
|
351
|
+
documentId: created.id,
|
|
352
|
+
data,
|
|
353
|
+
changedById: userId,
|
|
354
|
+
changeType: "CREATE",
|
|
265
355
|
},
|
|
266
356
|
});
|
|
267
|
-
}
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
async function seedDemoData(db) {
|
|
360
|
+
const spinner = ora("Seeding demo data…").start();
|
|
361
|
+
const adminUser = await ensureSeedAdmin(db);
|
|
268
362
|
const userId = adminUser.id;
|
|
269
363
|
let pagesCreated = 0;
|
|
270
364
|
for (const page of DEMO_PAGES) {
|
|
271
|
-
await db
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
status: "PUBLISHED",
|
|
276
|
-
publishedAt: new Date(),
|
|
277
|
-
createdById: userId,
|
|
278
|
-
updatedById: userId,
|
|
279
|
-
plainText: `${page.title} ${page.slug}`,
|
|
280
|
-
},
|
|
365
|
+
await createSeedDocument(db, userId, {
|
|
366
|
+
collection: "pages",
|
|
367
|
+
data: page,
|
|
368
|
+
status: "PUBLISHED",
|
|
281
369
|
});
|
|
282
370
|
pagesCreated++;
|
|
283
371
|
}
|
|
284
372
|
let postsCreated = 0;
|
|
285
373
|
for (const post of DEMO_POSTS) {
|
|
286
|
-
await db
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
status: post.status,
|
|
291
|
-
publishedAt: post.status === "PUBLISHED" ? new Date() : null,
|
|
292
|
-
createdById: userId,
|
|
293
|
-
updatedById: userId,
|
|
294
|
-
plainText: `${post.title} ${post.excerpt}`,
|
|
295
|
-
},
|
|
374
|
+
await createSeedDocument(db, userId, {
|
|
375
|
+
collection: "posts",
|
|
376
|
+
data: post,
|
|
377
|
+
status: post.status,
|
|
296
378
|
});
|
|
297
379
|
postsCreated++;
|
|
298
380
|
}
|
|
299
381
|
let formsCreated = 0;
|
|
300
382
|
for (const form of DEMO_FORMS) {
|
|
301
|
-
await db
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
status: "PUBLISHED",
|
|
306
|
-
publishedAt: new Date(),
|
|
307
|
-
createdById: userId,
|
|
308
|
-
updatedById: userId,
|
|
309
|
-
plainText: `${form.title} ${form.slug}`,
|
|
310
|
-
},
|
|
383
|
+
await createSeedDocument(db, userId, {
|
|
384
|
+
collection: "forms",
|
|
385
|
+
data: form,
|
|
386
|
+
status: "PUBLISHED",
|
|
311
387
|
});
|
|
312
388
|
formsCreated++;
|
|
313
389
|
}
|
|
@@ -352,52 +428,14 @@ async function seedFromFile(db, filePath) {
|
|
|
352
428
|
spinner.fail("Seed file must contain a JSON array or an object with collection keys.");
|
|
353
429
|
process.exit(1);
|
|
354
430
|
}
|
|
355
|
-
|
|
356
|
-
if (!adminUser) {
|
|
357
|
-
adminUser = await db.user.create({
|
|
358
|
-
data: {
|
|
359
|
-
email: "admin@actuatecms.dev",
|
|
360
|
-
name: "Admin",
|
|
361
|
-
role: "ADMIN",
|
|
362
|
-
isActive: true,
|
|
363
|
-
isApproved: true,
|
|
364
|
-
emailVerified: true,
|
|
365
|
-
},
|
|
366
|
-
});
|
|
367
|
-
}
|
|
431
|
+
const adminUser = await ensureSeedAdmin(db);
|
|
368
432
|
const userId = adminUser.id;
|
|
369
433
|
const normalized = normalizeSeedPayload(seedData);
|
|
370
|
-
const {
|
|
434
|
+
const { updateGlobal } = await import("@actuate-media/cms-core");
|
|
371
435
|
const ctx = { userId, role: "ADMIN", db };
|
|
372
436
|
let documentCount = 0;
|
|
373
437
|
for (const doc of normalized.documents) {
|
|
374
|
-
|
|
375
|
-
const plainText = extractPlainText(serialized);
|
|
376
|
-
const contentHash = await hashContent(serialized);
|
|
377
|
-
await db.$transaction(async (tx) => {
|
|
378
|
-
const created = await tx.document.create({
|
|
379
|
-
data: {
|
|
380
|
-
collection: doc.collection,
|
|
381
|
-
title: typeof doc.data.title === "string" ? doc.data.title : null,
|
|
382
|
-
slug: typeof doc.data.slug === "string" ? doc.data.slug : null,
|
|
383
|
-
data: doc.data,
|
|
384
|
-
status: doc.status,
|
|
385
|
-
publishedAt: doc.status === "PUBLISHED" ? new Date() : null,
|
|
386
|
-
createdById: userId,
|
|
387
|
-
updatedById: userId,
|
|
388
|
-
plainText,
|
|
389
|
-
contentHash,
|
|
390
|
-
},
|
|
391
|
-
});
|
|
392
|
-
await tx.version.create({
|
|
393
|
-
data: {
|
|
394
|
-
documentId: created.id,
|
|
395
|
-
data: doc.data,
|
|
396
|
-
changedById: userId,
|
|
397
|
-
changeType: "CREATE",
|
|
398
|
-
},
|
|
399
|
-
});
|
|
400
|
-
});
|
|
438
|
+
await createSeedDocument(db, userId, doc);
|
|
401
439
|
documentCount++;
|
|
402
440
|
}
|
|
403
441
|
let globalCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
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": "^3.0.0",
|
|
31
|
-
"@actuate-media/cms-core": "0.10.
|
|
31
|
+
"@actuate-media/cms-core": "0.10.1"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc",
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
vi.mock('@actuate-media/cms-core', () => ({
|
|
4
|
+
extractPlainText: vi.fn((value: string) => value.replace(/<[^>]+>/g, ' ')),
|
|
5
|
+
hashContent: vi.fn(async () => 'hash-1'),
|
|
6
|
+
sanitizeHtml: vi.fn((value: string) => value.replace(/<script[\s\S]*?<\/script>/gi, '')),
|
|
7
|
+
createInitialAdmin: vi.fn(),
|
|
8
|
+
}));
|
|
9
|
+
|
|
10
|
+
import { createSeedDocument, ensureSeedAdmin, normalizeSeedPayload } from '../commands/seed.js';
|
|
11
|
+
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
vi.unstubAllEnvs();
|
|
14
|
+
});
|
|
4
15
|
|
|
5
16
|
describe('seed payload normalization', () => {
|
|
6
17
|
it('separates globals from collection documents', () => {
|
|
@@ -51,3 +62,65 @@ describe('seed payload normalization', () => {
|
|
|
51
62
|
]);
|
|
52
63
|
});
|
|
53
64
|
});
|
|
65
|
+
|
|
66
|
+
describe('seed admin handling', () => {
|
|
67
|
+
it('refuses to create a first admin without credentials', async () => {
|
|
68
|
+
const db = {
|
|
69
|
+
user: {
|
|
70
|
+
findFirst: vi.fn().mockResolvedValue(null),
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
await expect(ensureSeedAdmin(db)).rejects.toThrow('CMS_ADMIN_EMAIL and CMS_ADMIN_PASSWORD');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
describe('seed document creation', () => {
|
|
79
|
+
it('creates documents with versions, content hashes, and sanitized HTML', async () => {
|
|
80
|
+
const tx = {
|
|
81
|
+
document: {
|
|
82
|
+
create: vi.fn().mockResolvedValue({ id: 'doc-1' }),
|
|
83
|
+
},
|
|
84
|
+
version: {
|
|
85
|
+
create: vi.fn(),
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
const db = {
|
|
89
|
+
$transaction: vi.fn(async (fn) => fn(tx)),
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
await createSeedDocument(db, 'admin-1', {
|
|
93
|
+
collection: 'pages',
|
|
94
|
+
status: 'PUBLISHED',
|
|
95
|
+
data: {
|
|
96
|
+
title: 'Home',
|
|
97
|
+
slug: 'home',
|
|
98
|
+
content: '<p>Hello</p><script>alert(1)</script>',
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
expect(tx.document.create).toHaveBeenCalledWith({
|
|
103
|
+
data: expect.objectContaining({
|
|
104
|
+
collection: 'pages',
|
|
105
|
+
title: 'Home',
|
|
106
|
+
slug: 'home',
|
|
107
|
+
status: 'PUBLISHED',
|
|
108
|
+
publishedAt: expect.any(Date),
|
|
109
|
+
createdById: 'admin-1',
|
|
110
|
+
updatedById: 'admin-1',
|
|
111
|
+
plainText: expect.any(String),
|
|
112
|
+
contentHash: expect.any(String),
|
|
113
|
+
data: expect.objectContaining({
|
|
114
|
+
content: '<p>Hello</p>',
|
|
115
|
+
}),
|
|
116
|
+
}),
|
|
117
|
+
});
|
|
118
|
+
expect(tx.version.create).toHaveBeenCalledWith({
|
|
119
|
+
data: expect.objectContaining({
|
|
120
|
+
documentId: 'doc-1',
|
|
121
|
+
changedById: 'admin-1',
|
|
122
|
+
changeType: 'CREATE',
|
|
123
|
+
}),
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
});
|
package/src/commands/seed.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
import { createInterface } from "node:readline/promises";
|
|
6
7
|
import { pathToFileURL } from "node:url";
|
|
@@ -280,9 +281,11 @@ async function runSeed(options: SeedOptions): Promise<void> {
|
|
|
280
281
|
process.exit(1);
|
|
281
282
|
}
|
|
282
283
|
|
|
284
|
+
let seededDb: { db: any; disconnect: () => Promise<void> } | null = null;
|
|
285
|
+
|
|
283
286
|
try {
|
|
284
|
-
|
|
285
|
-
const db =
|
|
287
|
+
seededDb = await getSeedDatabase();
|
|
288
|
+
const db = seededDb.db;
|
|
286
289
|
|
|
287
290
|
if (options.reset) {
|
|
288
291
|
const yes = await confirm(
|
|
@@ -311,71 +314,171 @@ async function runSeed(options: SeedOptions): Promise<void> {
|
|
|
311
314
|
const message = err instanceof Error ? err.message : String(err);
|
|
312
315
|
logger.error(`Seed failed: ${message}`);
|
|
313
316
|
process.exit(1);
|
|
317
|
+
} finally {
|
|
318
|
+
await seededDb?.disconnect();
|
|
314
319
|
}
|
|
315
320
|
}
|
|
316
321
|
|
|
317
|
-
async function
|
|
318
|
-
const
|
|
322
|
+
async function getSeedDatabase(): Promise<{ db: any; disconnect: () => Promise<void> }> {
|
|
323
|
+
const { getDB, initDB, isDBInitialized } = await import("@actuate-media/cms-core");
|
|
324
|
+
|
|
325
|
+
if (isDBInitialized()) {
|
|
326
|
+
return { db: getDB<any>(), disconnect: async () => {} };
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const db = await createProjectPrismaClient();
|
|
330
|
+
initDB(db);
|
|
331
|
+
return {
|
|
332
|
+
db,
|
|
333
|
+
disconnect: async () => {
|
|
334
|
+
if (typeof db.$disconnect === "function") {
|
|
335
|
+
await db.$disconnect();
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
async function createProjectPrismaClient(): Promise<any> {
|
|
342
|
+
if (!process.env.DATABASE_URL) {
|
|
343
|
+
throw new Error("DATABASE_URL is required to run seed/populate.");
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
const requireFromProject = createRequire(path.join(process.cwd(), "package.json"));
|
|
347
|
+
const generatedClient = path.resolve("generated", "prisma", "client.ts");
|
|
348
|
+
|
|
349
|
+
if (existsSync(generatedClient)) {
|
|
350
|
+
const [{ tsImport }, adapterModule, pgModule] = await Promise.all([
|
|
351
|
+
import("tsx/esm/api"),
|
|
352
|
+
import(pathToFileURL(requireFromProject.resolve("@prisma/adapter-pg")).href),
|
|
353
|
+
import(pathToFileURL(requireFromProject.resolve("pg")).href),
|
|
354
|
+
]);
|
|
355
|
+
const { PrismaClient } = await tsImport(pathToFileURL(generatedClient).href, import.meta.url) as {
|
|
356
|
+
PrismaClient: new (options?: unknown) => any;
|
|
357
|
+
};
|
|
358
|
+
const { PrismaPg } = adapterModule as { PrismaPg: new (pool: unknown) => unknown };
|
|
359
|
+
const pg = (pgModule as { default?: typeof pgModule }).default ?? pgModule;
|
|
360
|
+
const pool = new (pg as any).Pool({ connectionString: process.env.DATABASE_URL });
|
|
361
|
+
const adapter = new PrismaPg(pool);
|
|
362
|
+
return new PrismaClient({ adapter } as any);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
const clientModule = await import(pathToFileURL(requireFromProject.resolve("@prisma/client")).href) as {
|
|
366
|
+
PrismaClient: new () => any;
|
|
367
|
+
};
|
|
368
|
+
return new clientModule.PrismaClient();
|
|
369
|
+
}
|
|
319
370
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
371
|
+
export async function ensureSeedAdmin(db: any): Promise<{ id: string }> {
|
|
372
|
+
const existing = await db.user.findFirst({ where: { role: "ADMIN" } });
|
|
373
|
+
if (existing) return existing;
|
|
374
|
+
|
|
375
|
+
const email = process.env.CMS_ADMIN_EMAIL;
|
|
376
|
+
const password = process.env.CMS_ADMIN_PASSWORD;
|
|
377
|
+
const name = process.env.CMS_ADMIN_NAME ?? "Admin";
|
|
378
|
+
|
|
379
|
+
if (!email || !password) {
|
|
380
|
+
throw new Error(
|
|
381
|
+
"No admin user exists. Set CMS_ADMIN_EMAIL and CMS_ADMIN_PASSWORD before running seed, or complete the setup wizard first.",
|
|
382
|
+
);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
const { createInitialAdmin } = await import("@actuate-media/cms-core");
|
|
386
|
+
const result = await createInitialAdmin(db, { email, password, name });
|
|
387
|
+
if (!result.success || !result.userId) {
|
|
388
|
+
throw new Error(result.error ?? "Failed to create initial admin user");
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return { id: result.userId };
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
function sanitizeSeedData(value: unknown, sanitizeHtml: (html: string) => string): unknown {
|
|
395
|
+
if (Array.isArray(value)) {
|
|
396
|
+
return value.map((item) => sanitizeSeedData(item, sanitizeHtml));
|
|
397
|
+
}
|
|
398
|
+
if (value && typeof value === "object") {
|
|
399
|
+
return Object.fromEntries(
|
|
400
|
+
Object.entries(value as Record<string, unknown>).map(([key, item]) => [
|
|
401
|
+
key,
|
|
402
|
+
sanitizeSeedData(item, sanitizeHtml),
|
|
403
|
+
]),
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
if (typeof value === "string" && /<[a-z][\s\S]*>/i.test(value)) {
|
|
407
|
+
return sanitizeHtml(value);
|
|
408
|
+
}
|
|
409
|
+
return value;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
export async function createSeedDocument(
|
|
413
|
+
db: any,
|
|
414
|
+
userId: string,
|
|
415
|
+
doc: NormalizedSeedDocument,
|
|
416
|
+
): Promise<void> {
|
|
417
|
+
const { extractPlainText, hashContent, sanitizeHtml } = await import("@actuate-media/cms-core");
|
|
418
|
+
const data = sanitizeSeedData(doc.data, sanitizeHtml) as Record<string, unknown>;
|
|
419
|
+
const serialized = JSON.stringify(data);
|
|
420
|
+
const plainText = extractPlainText(serialized);
|
|
421
|
+
const contentHash = await hashContent(serialized);
|
|
422
|
+
|
|
423
|
+
await db.$transaction(async (tx: any) => {
|
|
424
|
+
const created = await tx.document.create({
|
|
323
425
|
data: {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
426
|
+
collection: doc.collection,
|
|
427
|
+
title: typeof data.title === "string" ? data.title : null,
|
|
428
|
+
slug: typeof data.slug === "string" ? data.slug : null,
|
|
429
|
+
data,
|
|
430
|
+
status: doc.status,
|
|
431
|
+
publishedAt: doc.status === "PUBLISHED" ? new Date() : null,
|
|
432
|
+
createdById: userId,
|
|
433
|
+
updatedById: userId,
|
|
434
|
+
plainText,
|
|
435
|
+
contentHash,
|
|
330
436
|
},
|
|
331
437
|
});
|
|
332
|
-
|
|
438
|
+
|
|
439
|
+
await tx.version.create({
|
|
440
|
+
data: {
|
|
441
|
+
documentId: created.id,
|
|
442
|
+
data,
|
|
443
|
+
changedById: userId,
|
|
444
|
+
changeType: "CREATE",
|
|
445
|
+
},
|
|
446
|
+
});
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
async function seedDemoData(db: any): Promise<void> {
|
|
451
|
+
const spinner = ora("Seeding demo data…").start();
|
|
452
|
+
|
|
453
|
+
const adminUser = await ensureSeedAdmin(db);
|
|
333
454
|
const userId = adminUser.id;
|
|
334
455
|
|
|
335
456
|
let pagesCreated = 0;
|
|
336
457
|
for (const page of DEMO_PAGES) {
|
|
337
|
-
await db
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
status: "PUBLISHED",
|
|
342
|
-
publishedAt: new Date(),
|
|
343
|
-
createdById: userId,
|
|
344
|
-
updatedById: userId,
|
|
345
|
-
plainText: `${page.title} ${page.slug}`,
|
|
346
|
-
},
|
|
458
|
+
await createSeedDocument(db, userId, {
|
|
459
|
+
collection: "pages",
|
|
460
|
+
data: page,
|
|
461
|
+
status: "PUBLISHED",
|
|
347
462
|
});
|
|
348
463
|
pagesCreated++;
|
|
349
464
|
}
|
|
350
465
|
|
|
351
466
|
let postsCreated = 0;
|
|
352
467
|
for (const post of DEMO_POSTS) {
|
|
353
|
-
await db
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
status: post.status,
|
|
358
|
-
publishedAt: post.status === "PUBLISHED" ? new Date() : null,
|
|
359
|
-
createdById: userId,
|
|
360
|
-
updatedById: userId,
|
|
361
|
-
plainText: `${post.title} ${post.excerpt}`,
|
|
362
|
-
},
|
|
468
|
+
await createSeedDocument(db, userId, {
|
|
469
|
+
collection: "posts",
|
|
470
|
+
data: post,
|
|
471
|
+
status: post.status,
|
|
363
472
|
});
|
|
364
473
|
postsCreated++;
|
|
365
474
|
}
|
|
366
475
|
|
|
367
476
|
let formsCreated = 0;
|
|
368
477
|
for (const form of DEMO_FORMS) {
|
|
369
|
-
await db
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
status: "PUBLISHED",
|
|
374
|
-
publishedAt: new Date(),
|
|
375
|
-
createdById: userId,
|
|
376
|
-
updatedById: userId,
|
|
377
|
-
plainText: `${form.title} ${form.slug}`,
|
|
378
|
-
},
|
|
478
|
+
await createSeedDocument(db, userId, {
|
|
479
|
+
collection: "forms",
|
|
480
|
+
data: form,
|
|
481
|
+
status: "PUBLISHED",
|
|
379
482
|
});
|
|
380
483
|
formsCreated++;
|
|
381
484
|
}
|
|
@@ -426,56 +529,16 @@ async function seedFromFile(db: any, filePath: string): Promise<void> {
|
|
|
426
529
|
process.exit(1);
|
|
427
530
|
}
|
|
428
531
|
|
|
429
|
-
|
|
430
|
-
if (!adminUser) {
|
|
431
|
-
adminUser = await db.user.create({
|
|
432
|
-
data: {
|
|
433
|
-
email: "admin@actuatecms.dev",
|
|
434
|
-
name: "Admin",
|
|
435
|
-
role: "ADMIN",
|
|
436
|
-
isActive: true,
|
|
437
|
-
isApproved: true,
|
|
438
|
-
emailVerified: true,
|
|
439
|
-
},
|
|
440
|
-
});
|
|
441
|
-
}
|
|
532
|
+
const adminUser = await ensureSeedAdmin(db);
|
|
442
533
|
const userId = adminUser.id;
|
|
443
534
|
|
|
444
535
|
const normalized = normalizeSeedPayload(seedData);
|
|
445
|
-
const {
|
|
536
|
+
const { updateGlobal } = await import("@actuate-media/cms-core");
|
|
446
537
|
const ctx = { userId, role: "ADMIN", db };
|
|
447
538
|
|
|
448
539
|
let documentCount = 0;
|
|
449
540
|
for (const doc of normalized.documents) {
|
|
450
|
-
|
|
451
|
-
const plainText = extractPlainText(serialized);
|
|
452
|
-
const contentHash = await hashContent(serialized);
|
|
453
|
-
|
|
454
|
-
await db.$transaction(async (tx: any) => {
|
|
455
|
-
const created = await tx.document.create({
|
|
456
|
-
data: {
|
|
457
|
-
collection: doc.collection,
|
|
458
|
-
title: typeof doc.data.title === "string" ? doc.data.title : null,
|
|
459
|
-
slug: typeof doc.data.slug === "string" ? doc.data.slug : null,
|
|
460
|
-
data: doc.data,
|
|
461
|
-
status: doc.status,
|
|
462
|
-
publishedAt: doc.status === "PUBLISHED" ? new Date() : null,
|
|
463
|
-
createdById: userId,
|
|
464
|
-
updatedById: userId,
|
|
465
|
-
plainText,
|
|
466
|
-
contentHash,
|
|
467
|
-
},
|
|
468
|
-
});
|
|
469
|
-
|
|
470
|
-
await tx.version.create({
|
|
471
|
-
data: {
|
|
472
|
-
documentId: created.id,
|
|
473
|
-
data: doc.data,
|
|
474
|
-
changedById: userId,
|
|
475
|
-
changeType: "CREATE",
|
|
476
|
-
},
|
|
477
|
-
});
|
|
478
|
-
});
|
|
541
|
+
await createSeedDocument(db, userId, doc);
|
|
479
542
|
documentCount++;
|
|
480
543
|
}
|
|
481
544
|
|