@actuate-media/cli 0.2.5 → 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.
@@ -1,6 +1,9 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { existsSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import path from "node:path";
3
5
  import { createInterface } from "node:readline/promises";
6
+ import { pathToFileURL } from "node:url";
4
7
  import ora from "ora";
5
8
  import { logger } from "../utils/logger.js";
6
9
  async function confirm(question) {
@@ -146,14 +149,84 @@ const DEMO_USERS = [
146
149
  { email: "editor@example.com", name: "Demo Editor", role: "EDITOR" },
147
150
  { email: "author@example.com", name: "Demo Author", role: "AUTHOR" },
148
151
  ];
152
+ const SEED_FILE_CANDIDATES = [
153
+ "actuate.seed.json",
154
+ "actuate.seed.ts",
155
+ "actuate.seed.js",
156
+ "actuate.seed.mjs",
157
+ "cms.seed.json",
158
+ ];
159
+ function asRecord(value) {
160
+ return value && typeof value === "object" && !Array.isArray(value)
161
+ ? value
162
+ : {};
163
+ }
164
+ function normalizeDocument(collection, doc) {
165
+ const record = asRecord(doc);
166
+ return {
167
+ collection,
168
+ data: asRecord(record.data ?? record),
169
+ status: typeof record.status === "string" ? record.status : "DRAFT",
170
+ };
171
+ }
172
+ export function normalizeSeedPayload(seedData) {
173
+ const documents = [];
174
+ const globals = [];
175
+ if (Array.isArray(seedData)) {
176
+ for (const doc of seedData) {
177
+ const record = asRecord(doc);
178
+ documents.push(normalizeDocument(typeof record.collection === "string" ? record.collection : "imported", record.data ? record : { data: record }));
179
+ }
180
+ return { documents, globals };
181
+ }
182
+ const root = asRecord(seedData);
183
+ const globalEntries = asRecord(root.globals);
184
+ for (const [slug, value] of Object.entries(globalEntries)) {
185
+ globals.push({ slug, data: asRecord(value) });
186
+ }
187
+ const collections = root.collections ? asRecord(root.collections) : root;
188
+ for (const [collection, docs] of Object.entries(collections)) {
189
+ if (collection === "globals" || collection === "collections")
190
+ continue;
191
+ if (!Array.isArray(docs))
192
+ continue;
193
+ for (const doc of docs) {
194
+ documents.push(normalizeDocument(collection, doc));
195
+ }
196
+ }
197
+ return { documents, globals };
198
+ }
199
+ function findConventionSeedFile() {
200
+ for (const candidate of SEED_FILE_CANDIDATES) {
201
+ if (existsSync(candidate))
202
+ return candidate;
203
+ }
204
+ return null;
205
+ }
206
+ async function loadSeedFile(filePath) {
207
+ const extension = path.extname(filePath);
208
+ if (extension === ".json" || extension === "") {
209
+ const raw = await readFile(filePath, "utf-8");
210
+ return JSON.parse(raw);
211
+ }
212
+ const fileUrl = pathToFileURL(path.resolve(filePath)).href;
213
+ const mod = extension === ".ts"
214
+ ? await import("tsx/esm/api").then(({ tsImport }) => tsImport(fileUrl, import.meta.url))
215
+ : await import(fileUrl);
216
+ return mod.default
217
+ ?? mod.seed;
218
+ }
149
219
  async function runSeed(options) {
150
- if (!options.demo && !options.file) {
151
- logger.error("Specify --demo to seed demo content or --file <path> to seed from a JSON file.");
220
+ const conventionFile = !options.demo && !options.file ? findConventionSeedFile() : null;
221
+ const file = options.file ?? conventionFile ?? undefined;
222
+ if (!options.demo && !file) {
223
+ logger.error("Specify --demo, --file <path>, or add actuate.seed.json in the project root.");
152
224
  process.exit(1);
153
225
  }
226
+ let seededDb = null;
154
227
  try {
155
- const { getDB } = await import("@actuate-media/cms-core");
156
- const db = getDB();
228
+ seededDb = await getSeedDatabase();
229
+ const db = seededDb.db;
157
230
  if (options.reset) {
158
231
  const yes = await confirm("This will delete ALL existing documents and versions. Continue?");
159
232
  if (!yes) {
@@ -169,8 +242,8 @@ async function runSeed(options) {
169
242
  if (options.demo) {
170
243
  await seedDemoData(db);
171
244
  }
172
- if (options.file) {
173
- await seedFromFile(db, options.file);
245
+ if (file) {
246
+ await seedFromFile(db, file);
174
247
  }
175
248
  }
176
249
  catch (err) {
@@ -178,65 +251,139 @@ async function runSeed(options) {
178
251
  logger.error(`Seed failed: ${message}`);
179
252
  process.exit(1);
180
253
  }
254
+ finally {
255
+ await seededDb?.disconnect();
256
+ }
181
257
  }
182
- async function seedDemoData(db) {
183
- const spinner = ora("Seeding demo data…").start();
184
- let adminUser = await db.user.findFirst({ where: { role: "ADMIN" } });
185
- if (!adminUser) {
186
- adminUser = await db.user.create({
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({
187
336
  data: {
188
- email: "admin@actuatecms.dev",
189
- name: "Admin",
190
- role: "ADMIN",
191
- isActive: true,
192
- isApproved: true,
193
- emailVerified: true,
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,
194
347
  },
195
348
  });
196
- }
349
+ await tx.version.create({
350
+ data: {
351
+ documentId: created.id,
352
+ data,
353
+ changedById: userId,
354
+ changeType: "CREATE",
355
+ },
356
+ });
357
+ });
358
+ }
359
+ async function seedDemoData(db) {
360
+ const spinner = ora("Seeding demo data…").start();
361
+ const adminUser = await ensureSeedAdmin(db);
197
362
  const userId = adminUser.id;
198
363
  let pagesCreated = 0;
199
364
  for (const page of DEMO_PAGES) {
200
- await db.document.create({
201
- data: {
202
- collection: "pages",
203
- data: page,
204
- status: "PUBLISHED",
205
- publishedAt: new Date(),
206
- createdById: userId,
207
- updatedById: userId,
208
- plainText: `${page.title} ${page.slug}`,
209
- },
365
+ await createSeedDocument(db, userId, {
366
+ collection: "pages",
367
+ data: page,
368
+ status: "PUBLISHED",
210
369
  });
211
370
  pagesCreated++;
212
371
  }
213
372
  let postsCreated = 0;
214
373
  for (const post of DEMO_POSTS) {
215
- await db.document.create({
216
- data: {
217
- collection: "posts",
218
- data: post,
219
- status: post.status,
220
- publishedAt: post.status === "PUBLISHED" ? new Date() : null,
221
- createdById: userId,
222
- updatedById: userId,
223
- plainText: `${post.title} ${post.excerpt}`,
224
- },
374
+ await createSeedDocument(db, userId, {
375
+ collection: "posts",
376
+ data: post,
377
+ status: post.status,
225
378
  });
226
379
  postsCreated++;
227
380
  }
228
381
  let formsCreated = 0;
229
382
  for (const form of DEMO_FORMS) {
230
- await db.document.create({
231
- data: {
232
- collection: "forms",
233
- data: form,
234
- status: "PUBLISHED",
235
- publishedAt: new Date(),
236
- createdById: userId,
237
- updatedById: userId,
238
- plainText: `${form.title} ${form.slug}`,
239
- },
383
+ await createSeedDocument(db, userId, {
384
+ collection: "forms",
385
+ data: form,
386
+ status: "PUBLISHED",
240
387
  });
241
388
  formsCreated++;
242
389
  }
@@ -269,74 +416,47 @@ async function seedFromFile(db, filePath) {
269
416
  process.exit(1);
270
417
  }
271
418
  const spinner = ora(`Seeding from ${filePath}…`).start();
272
- const raw = await readFile(filePath, "utf-8");
273
419
  let seedData;
274
420
  try {
275
- seedData = JSON.parse(raw);
421
+ seedData = await loadSeedFile(filePath);
276
422
  }
277
423
  catch {
278
- spinner.fail("Invalid JSON file.");
424
+ spinner.fail("Invalid seed file.");
279
425
  process.exit(1);
280
426
  }
281
427
  if (!Array.isArray(seedData) && typeof seedData !== "object") {
282
428
  spinner.fail("Seed file must contain a JSON array or an object with collection keys.");
283
429
  process.exit(1);
284
430
  }
285
- let adminUser = await db.user.findFirst({ where: { role: "ADMIN" } });
286
- if (!adminUser) {
287
- adminUser = await db.user.create({
288
- data: {
289
- email: "admin@actuatecms.dev",
290
- name: "Admin",
291
- role: "ADMIN",
292
- isActive: true,
293
- isApproved: true,
294
- emailVerified: true,
295
- },
296
- });
297
- }
431
+ const adminUser = await ensureSeedAdmin(db);
298
432
  const userId = adminUser.id;
299
- let count = 0;
300
- if (Array.isArray(seedData)) {
301
- for (const doc of seedData) {
302
- await db.document.create({
303
- data: {
304
- collection: doc.collection ?? "imported",
305
- data: doc.data ?? doc,
306
- status: doc.status ?? "DRAFT",
307
- createdById: userId,
308
- updatedById: userId,
309
- },
310
- });
311
- count++;
312
- }
433
+ const normalized = normalizeSeedPayload(seedData);
434
+ const { updateGlobal } = await import("@actuate-media/cms-core");
435
+ const ctx = { userId, role: "ADMIN", db };
436
+ let documentCount = 0;
437
+ for (const doc of normalized.documents) {
438
+ await createSeedDocument(db, userId, doc);
439
+ documentCount++;
313
440
  }
314
- else {
315
- for (const [collection, docs] of Object.entries(seedData)) {
316
- if (!Array.isArray(docs))
317
- continue;
318
- for (const doc of docs) {
319
- await db.document.create({
320
- data: {
321
- collection,
322
- data: doc.data ?? doc,
323
- status: doc.status ?? "DRAFT",
324
- createdById: userId,
325
- updatedById: userId,
326
- },
327
- });
328
- count++;
329
- }
330
- }
441
+ let globalCount = 0;
442
+ for (const global of normalized.globals) {
443
+ await updateGlobal(global.slug, global.data, ctx);
444
+ globalCount++;
331
445
  }
332
- spinner.succeed(`Seeded ${count} documents from ${filePath}.`);
446
+ spinner.succeed(`Seeded ${documentCount} documents and ${globalCount} globals from ${filePath}.`);
333
447
  }
334
448
  export function registerSeedCommand(program) {
335
449
  program
336
450
  .command("seed")
337
451
  .description("Seed the database with demo or custom data")
338
452
  .option("--demo", "Seed demo content (pages, posts, forms, users)")
339
- .option("--file <path>", "Seed from a JSON file")
453
+ .option("--file <path>", "Seed from a JSON, JavaScript, or TypeScript file")
454
+ .option("--reset", "Clear existing data before seeding")
455
+ .action(runSeed);
456
+ program
457
+ .command("populate")
458
+ .description("Populate the database from actuate.seed.json or a custom seed file")
459
+ .option("--file <path>", "Seed from a JSON, JavaScript, or TypeScript file")
340
460
  .option("--reset", "Clear existing data before seeding")
341
461
  .action(runSeed);
342
462
  }
@@ -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/dist/index.js CHANGED
@@ -9,6 +9,7 @@ import { registerUpgradeCommand } from "./commands/upgrade.js";
9
9
  import { registerUpdateCheckCommand } from "./commands/update-check.js";
10
10
  import { registerDbInitCommand } from "./commands/db-init.js";
11
11
  import { registerDbStatusCommand } from "./commands/db-status.js";
12
+ import { registerInitCommand } from "./commands/init.js";
12
13
  const program = new Command();
13
14
  program
14
15
  .name("actuate")
@@ -23,5 +24,6 @@ registerUpgradeCommand(program);
23
24
  registerUpdateCheckCommand(program);
24
25
  registerDbInitCommand(program);
25
26
  registerDbStatusCommand(program);
27
+ registerInitCommand(program);
26
28
  program.parse();
27
29
  //# sourceMappingURL=index.js.map
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,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE7B,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuate-media/cli",
3
- "version": "0.2.5",
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",
@@ -12,23 +12,28 @@
12
12
  },
13
13
  "type": "module",
14
14
  "bin": {
15
- "actuate": "dist/index.js"
15
+ "actuate": "dist/index.js",
16
+ "actuate-cms": "dist/index.js"
16
17
  },
17
18
  "main": "dist/index.js",
18
19
  "dependencies": {
19
- "commander": "^13.1.0",
20
20
  "chalk": "^5.4.1",
21
- "ora": "^8.2.0"
21
+ "commander": "^13.1.0",
22
+ "ora": "^8.2.0",
23
+ "tsx": "^4.0.0"
22
24
  },
23
25
  "peerDependencies": {
24
26
  "@actuate-media/cms-core": ">=0.1.0"
25
27
  },
26
28
  "devDependencies": {
27
- "typescript": "^5.7.0"
29
+ "typescript": "^5.7.0",
30
+ "vitest": "^3.0.0",
31
+ "@actuate-media/cms-core": "0.10.1"
28
32
  },
29
33
  "scripts": {
30
34
  "build": "tsc",
31
35
  "dev": "tsc --watch",
36
+ "test": "vitest run",
32
37
  "type-check": "tsc --noEmit",
33
38
  "clean": "rm -rf dist"
34
39
  }
@@ -0,0 +1,30 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { Command } from 'commander';
3
+ import { describe, expect, it } from 'vitest';
4
+
5
+ import { buildCreateActuateArgs, registerInitCommand } from '../commands/init.js';
6
+
7
+ describe('init command', () => {
8
+ it('registers an init command that delegates to create-actuate-cms', () => {
9
+ const program = new Command();
10
+ registerInitCommand(program);
11
+
12
+ const command = program.commands.find((candidate) => candidate.name() === 'init');
13
+
14
+ expect(command).toBeDefined();
15
+ expect(buildCreateActuateArgs()).toEqual(['create', 'actuate-cms@latest']);
16
+ expect(buildCreateActuateArgs('maidpro-site')).toEqual([
17
+ 'create',
18
+ 'actuate-cms@latest',
19
+ 'maidpro-site',
20
+ ]);
21
+ });
22
+
23
+ it('exposes an actuate-cms bin alias for installed CLI usage', async () => {
24
+ const raw = await readFile(new URL('../../package.json', import.meta.url), 'utf-8');
25
+ const pkg = JSON.parse(raw) as { bin?: Record<string, string> };
26
+
27
+ expect(pkg.bin?.actuate).toBe('dist/index.js');
28
+ expect(pkg.bin?.['actuate-cms']).toBe('dist/index.js');
29
+ });
30
+ });
@@ -0,0 +1,126 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+
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
+ });
15
+
16
+ describe('seed payload normalization', () => {
17
+ it('separates globals from collection documents', () => {
18
+ const normalized = normalizeSeedPayload({
19
+ globals: {
20
+ 'site-settings': {
21
+ siteName: 'MaidPro',
22
+ phone: '555-0100',
23
+ },
24
+ },
25
+ collections: {
26
+ pages: [
27
+ {
28
+ data: { title: 'Home', slug: 'home' },
29
+ status: 'PUBLISHED',
30
+ },
31
+ ],
32
+ },
33
+ });
34
+
35
+ expect(normalized.globals).toEqual([
36
+ {
37
+ slug: 'site-settings',
38
+ data: { siteName: 'MaidPro', phone: '555-0100' },
39
+ },
40
+ ]);
41
+ expect(normalized.documents).toEqual([
42
+ {
43
+ collection: 'pages',
44
+ data: { title: 'Home', slug: 'home' },
45
+ status: 'PUBLISHED',
46
+ },
47
+ ]);
48
+ });
49
+
50
+ it('keeps backwards-compatible collection-key seed files', () => {
51
+ const normalized = normalizeSeedPayload({
52
+ pages: [{ title: 'Home', slug: 'home' }],
53
+ });
54
+
55
+ expect(normalized.globals).toEqual([]);
56
+ expect(normalized.documents).toEqual([
57
+ {
58
+ collection: 'pages',
59
+ data: { title: 'Home', slug: 'home' },
60
+ status: 'DRAFT',
61
+ },
62
+ ]);
63
+ });
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
+ });