@actuate-media/cli 0.8.0 → 0.10.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 +30 -28
- package/CHANGELOG.md +18 -0
- package/README.md +30 -0
- package/dist/__tests__/form-seed.test.d.ts +2 -0
- package/dist/__tests__/form-seed.test.d.ts.map +1 -0
- package/dist/__tests__/form-seed.test.js +79 -0
- package/dist/__tests__/form-seed.test.js.map +1 -0
- package/dist/__tests__/seed.test.js +73 -0
- package/dist/__tests__/seed.test.js.map +1 -1
- package/dist/commands/seed.d.ts +30 -1
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +146 -21
- package/dist/commands/seed.js.map +1 -1
- package/dist/utils/form-seed.d.ts +15 -0
- package/dist/utils/form-seed.d.ts.map +1 -0
- package/dist/utils/form-seed.js +97 -0
- package/dist/utils/form-seed.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/form-seed.test.ts +91 -0
- package/src/__tests__/seed.test.ts +97 -0
- package/src/commands/seed.ts +167 -21
- package/src/utils/form-seed.ts +137 -0
package/dist/commands/seed.js
CHANGED
|
@@ -6,6 +6,7 @@ import { pathToFileURL } from 'node:url';
|
|
|
6
6
|
import ora from 'ora';
|
|
7
7
|
import { logger } from '../utils/logger.js';
|
|
8
8
|
import { connectProjectDatabase } from '../utils/database.js';
|
|
9
|
+
import { validateFormSeeds } from '../utils/form-seed.js';
|
|
9
10
|
async function confirm(question) {
|
|
10
11
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
11
12
|
const answer = await rl.question(`${question} (y/N) `);
|
|
@@ -111,37 +112,101 @@ const DEMO_POSTS = [
|
|
|
111
112
|
status: 'DRAFT',
|
|
112
113
|
},
|
|
113
114
|
];
|
|
114
|
-
|
|
115
|
+
// Canonical form seed shape: the form definition lives in document `data`
|
|
116
|
+
// with its own lifecycle `status: 'active'` (gates the public endpoints) and
|
|
117
|
+
// `fields` keyed by { id, key, label, type, required, sortOrder }. See
|
|
118
|
+
// `validateFormSeeds` — these are validated by the same rules as user seeds.
|
|
119
|
+
export const DEMO_FORMS = [
|
|
115
120
|
{
|
|
121
|
+
name: 'Contact Form',
|
|
116
122
|
title: 'Contact Form',
|
|
117
123
|
slug: 'contact-form',
|
|
124
|
+
status: 'active',
|
|
118
125
|
fields: [
|
|
119
|
-
{
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
{
|
|
127
|
+
id: 'contact-name',
|
|
128
|
+
key: 'name',
|
|
129
|
+
label: 'Name',
|
|
130
|
+
type: 'text',
|
|
131
|
+
required: true,
|
|
132
|
+
sortOrder: 0,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
id: 'contact-email',
|
|
136
|
+
key: 'email',
|
|
137
|
+
label: 'Email',
|
|
138
|
+
type: 'email',
|
|
139
|
+
required: true,
|
|
140
|
+
sortOrder: 1,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: 'contact-message',
|
|
144
|
+
key: 'message',
|
|
145
|
+
label: 'Message',
|
|
146
|
+
type: 'textarea',
|
|
147
|
+
required: true,
|
|
148
|
+
sortOrder: 2,
|
|
149
|
+
},
|
|
122
150
|
],
|
|
123
|
-
submitLabel: 'Send Message',
|
|
124
151
|
successMessage: "Thanks for reaching out! We'll get back to you soon.",
|
|
125
152
|
},
|
|
126
153
|
{
|
|
154
|
+
name: 'Newsletter Signup',
|
|
127
155
|
title: 'Newsletter Signup',
|
|
128
156
|
slug: 'newsletter',
|
|
157
|
+
status: 'active',
|
|
129
158
|
fields: [
|
|
130
|
-
{
|
|
131
|
-
|
|
159
|
+
{
|
|
160
|
+
id: 'newsletter-email',
|
|
161
|
+
key: 'email',
|
|
162
|
+
label: 'Email',
|
|
163
|
+
type: 'email',
|
|
164
|
+
required: true,
|
|
165
|
+
sortOrder: 0,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: 'newsletter-first-name',
|
|
169
|
+
key: 'firstName',
|
|
170
|
+
label: 'First name',
|
|
171
|
+
type: 'text',
|
|
172
|
+
required: false,
|
|
173
|
+
sortOrder: 1,
|
|
174
|
+
},
|
|
132
175
|
],
|
|
133
|
-
submitLabel: 'Subscribe',
|
|
134
176
|
successMessage: "You're subscribed! Check your inbox for confirmation.",
|
|
135
177
|
},
|
|
136
178
|
{
|
|
179
|
+
name: 'Feedback Form',
|
|
137
180
|
title: 'Feedback Form',
|
|
138
181
|
slug: 'feedback',
|
|
182
|
+
status: 'active',
|
|
139
183
|
fields: [
|
|
140
|
-
{
|
|
141
|
-
|
|
142
|
-
|
|
184
|
+
{
|
|
185
|
+
id: 'feedback-name',
|
|
186
|
+
key: 'name',
|
|
187
|
+
label: 'Name',
|
|
188
|
+
type: 'text',
|
|
189
|
+
required: false,
|
|
190
|
+
sortOrder: 0,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
id: 'feedback-rating',
|
|
194
|
+
key: 'rating',
|
|
195
|
+
label: 'Rating',
|
|
196
|
+
type: 'select',
|
|
197
|
+
required: true,
|
|
198
|
+
sortOrder: 1,
|
|
199
|
+
options: ['1', '2', '3', '4', '5'].map((v) => ({ label: v, value: v })),
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
id: 'feedback-comments',
|
|
203
|
+
key: 'comments',
|
|
204
|
+
label: 'Comments',
|
|
205
|
+
type: 'textarea',
|
|
206
|
+
required: false,
|
|
207
|
+
sortOrder: 2,
|
|
208
|
+
},
|
|
143
209
|
],
|
|
144
|
-
submitLabel: 'Submit Feedback',
|
|
145
210
|
successMessage: 'Thank you for your feedback!',
|
|
146
211
|
},
|
|
147
212
|
];
|
|
@@ -268,7 +333,7 @@ async function runSeed(options) {
|
|
|
268
333
|
await seedDemoData(db);
|
|
269
334
|
}
|
|
270
335
|
if (file) {
|
|
271
|
-
await seedFromFile(db, file);
|
|
336
|
+
await seedFromFile(db, file, { upsert: options.upsert });
|
|
272
337
|
}
|
|
273
338
|
}
|
|
274
339
|
catch (err) {
|
|
@@ -312,18 +377,56 @@ function sanitizeSeedData(value, sanitizeHtml) {
|
|
|
312
377
|
}
|
|
313
378
|
return value;
|
|
314
379
|
}
|
|
315
|
-
export async function createSeedDocument(db, userId, doc) {
|
|
380
|
+
export async function createSeedDocument(db, userId, doc, options = {}) {
|
|
316
381
|
const { extractPlainText, hashContent, sanitizeHtml } = await import('@actuate-media/cms-core');
|
|
317
382
|
const data = sanitizeSeedData(doc.data, sanitizeHtml);
|
|
318
383
|
const serialized = JSON.stringify(data);
|
|
319
384
|
const plainText = extractPlainText(serialized);
|
|
320
385
|
const contentHash = await hashContent(serialized);
|
|
386
|
+
const slug = typeof data.slug === 'string' ? data.slug : null;
|
|
387
|
+
const title = typeof data.title === 'string' ? data.title : null;
|
|
388
|
+
// Upsert key: collection + slug. Slugless documents can't be re-identified,
|
|
389
|
+
// so they always insert (same as a plain seed run).
|
|
390
|
+
const existing = options.upsert && slug
|
|
391
|
+
? await db.document.findFirst({
|
|
392
|
+
where: { collection: doc.collection, slug, deletedAt: null },
|
|
393
|
+
select: { id: true, status: true, publishedAt: true },
|
|
394
|
+
})
|
|
395
|
+
: null;
|
|
396
|
+
if (existing) {
|
|
397
|
+
await db.$transaction(async (tx) => {
|
|
398
|
+
await tx.document.update({
|
|
399
|
+
where: { id: existing.id },
|
|
400
|
+
data: {
|
|
401
|
+
title,
|
|
402
|
+
data,
|
|
403
|
+
status: doc.status,
|
|
404
|
+
// Stamp publishedAt only on the transition into PUBLISHED.
|
|
405
|
+
publishedAt: doc.status === 'PUBLISHED'
|
|
406
|
+
? (existing.publishedAt ?? new Date())
|
|
407
|
+
: existing.publishedAt,
|
|
408
|
+
updatedById: userId,
|
|
409
|
+
plainText,
|
|
410
|
+
contentHash,
|
|
411
|
+
},
|
|
412
|
+
});
|
|
413
|
+
await tx.version.create({
|
|
414
|
+
data: {
|
|
415
|
+
documentId: existing.id,
|
|
416
|
+
data,
|
|
417
|
+
changedById: userId,
|
|
418
|
+
changeType: 'UPDATE',
|
|
419
|
+
},
|
|
420
|
+
});
|
|
421
|
+
});
|
|
422
|
+
return 'updated';
|
|
423
|
+
}
|
|
321
424
|
await db.$transaction(async (tx) => {
|
|
322
425
|
const created = await tx.document.create({
|
|
323
426
|
data: {
|
|
324
427
|
collection: doc.collection,
|
|
325
|
-
title
|
|
326
|
-
slug
|
|
428
|
+
title,
|
|
429
|
+
slug,
|
|
327
430
|
data,
|
|
328
431
|
status: doc.status,
|
|
329
432
|
publishedAt: doc.status === 'PUBLISHED' ? new Date() : null,
|
|
@@ -342,6 +445,7 @@ export async function createSeedDocument(db, userId, doc) {
|
|
|
342
445
|
},
|
|
343
446
|
});
|
|
344
447
|
});
|
|
448
|
+
return 'created';
|
|
345
449
|
}
|
|
346
450
|
async function seedDemoData(db) {
|
|
347
451
|
const spinner = ora('Seeding demo data…').start();
|
|
@@ -407,7 +511,7 @@ async function seedDemoData(db) {
|
|
|
407
511
|
logger.info(` Navigations: ${navigationsCreated}`);
|
|
408
512
|
logger.info(` Users: ${usersCreated} (+ existing admin)`);
|
|
409
513
|
}
|
|
410
|
-
async function seedFromFile(db, filePath) {
|
|
514
|
+
async function seedFromFile(db, filePath, options = {}) {
|
|
411
515
|
if (!existsSync(filePath)) {
|
|
412
516
|
logger.error(`File not found: ${filePath}`);
|
|
413
517
|
process.exit(1);
|
|
@@ -428,19 +532,38 @@ async function seedFromFile(db, filePath) {
|
|
|
428
532
|
const adminUser = await ensureSeedAdmin(db);
|
|
429
533
|
const userId = adminUser.id;
|
|
430
534
|
const normalized = normalizeSeedPayload(seedData);
|
|
535
|
+
// Forms have a stricter shape than generic documents (data.status gates the
|
|
536
|
+
// public endpoints; fields need key/label/type). Fail loudly BEFORE writing
|
|
537
|
+
// anything — a malformed form seed used to insert fine and then 404 on
|
|
538
|
+
// /api/cms/public/forms/:slug with no hint why.
|
|
539
|
+
const formErrors = validateFormSeeds(normalized.documents);
|
|
540
|
+
if (formErrors.length > 0) {
|
|
541
|
+
spinner.fail('Form seed validation failed — nothing was written:');
|
|
542
|
+
for (const error of formErrors) {
|
|
543
|
+
logger.error(` ${error}`);
|
|
544
|
+
}
|
|
545
|
+
logger.info(' Expected shape: { "forms": [{ "status": "PUBLISHED", "data": { "name", "slug", "status": "active", "fields": [{ "key", "label", "type", … }] } }] }');
|
|
546
|
+
process.exit(1);
|
|
547
|
+
}
|
|
431
548
|
const { updateGlobal } = await import('@actuate-media/cms-core');
|
|
432
549
|
const ctx = { userId, role: 'ADMIN', db };
|
|
433
|
-
let
|
|
550
|
+
let createdCount = 0;
|
|
551
|
+
let updatedCount = 0;
|
|
434
552
|
for (const doc of normalized.documents) {
|
|
435
|
-
await createSeedDocument(db, userId, doc);
|
|
436
|
-
|
|
553
|
+
const result = await createSeedDocument(db, userId, doc, options);
|
|
554
|
+
if (result === 'updated')
|
|
555
|
+
updatedCount++;
|
|
556
|
+
else
|
|
557
|
+
createdCount++;
|
|
437
558
|
}
|
|
438
559
|
let globalCount = 0;
|
|
439
560
|
for (const global of normalized.globals) {
|
|
440
561
|
await updateGlobal(global.slug, global.data, ctx);
|
|
441
562
|
globalCount++;
|
|
442
563
|
}
|
|
443
|
-
spinner.succeed(
|
|
564
|
+
spinner.succeed(options.upsert
|
|
565
|
+
? `Seeded from ${filePath}: ${createdCount} created, ${updatedCount} updated, ${globalCount} globals.`
|
|
566
|
+
: `Seeded ${createdCount} documents and ${globalCount} globals from ${filePath}.`);
|
|
444
567
|
}
|
|
445
568
|
export function registerSeedCommand(program) {
|
|
446
569
|
program
|
|
@@ -449,12 +572,14 @@ export function registerSeedCommand(program) {
|
|
|
449
572
|
.option('--demo', 'Seed demo content (pages, posts, forms, users)')
|
|
450
573
|
.option('--file <path>', 'Seed from a JSON, JavaScript, or TypeScript file')
|
|
451
574
|
.option('--reset', 'Clear existing data before seeding')
|
|
575
|
+
.option('--upsert', 'Update existing documents matched by collection + slug instead of inserting duplicates')
|
|
452
576
|
.action(runSeed);
|
|
453
577
|
program
|
|
454
578
|
.command('populate')
|
|
455
579
|
.description('Populate the database from actuate.seed.json or a custom seed file')
|
|
456
580
|
.option('--file <path>', 'Seed from a JSON, JavaScript, or TypeScript file')
|
|
457
581
|
.option('--reset', 'Clear existing data before seeding')
|
|
582
|
+
.option('--upsert', 'Update existing documents matched by collection + slug instead of inserting duplicates')
|
|
458
583
|
.action(runSeed);
|
|
459
584
|
}
|
|
460
585
|
//# sourceMappingURL=seed.js.map
|
|
@@ -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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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate one form's `data` payload. Returns human-readable errors —
|
|
3
|
+
* empty array means the form will work with the public endpoints
|
|
4
|
+
* (`GET /api/cms/public/forms/:slug` + `/submit`) and `<ActuateForm>`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function validateFormSeedData(data: unknown, label?: string): string[];
|
|
7
|
+
/**
|
|
8
|
+
* Validate every `forms`-collection document in a normalized seed payload.
|
|
9
|
+
* Returns all errors across all forms (so one run surfaces everything).
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateFormSeeds(documents: ReadonlyArray<{
|
|
12
|
+
collection: string;
|
|
13
|
+
data: Record<string, unknown>;
|
|
14
|
+
}>): string[];
|
|
15
|
+
//# sourceMappingURL=form-seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-seed.d.ts","sourceRoot":"","sources":["../../src/utils/form-seed.ts"],"names":[],"mappings":"AA8CA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE,CAqE5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAC9E,MAAM,EAAE,CAQV"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
const VALID_FIELD_TYPES = [
|
|
2
|
+
'text',
|
|
3
|
+
'email',
|
|
4
|
+
'phone',
|
|
5
|
+
'textarea',
|
|
6
|
+
'select',
|
|
7
|
+
'multiselect',
|
|
8
|
+
'radio',
|
|
9
|
+
'checkbox',
|
|
10
|
+
'date',
|
|
11
|
+
'number',
|
|
12
|
+
'url',
|
|
13
|
+
'hidden',
|
|
14
|
+
'file',
|
|
15
|
+
'consent',
|
|
16
|
+
'richtext',
|
|
17
|
+
'divider',
|
|
18
|
+
'honeypot',
|
|
19
|
+
];
|
|
20
|
+
const VALID_FORM_STATUSES = ['active', 'draft', 'archived'];
|
|
21
|
+
/** Document-envelope statuses people mistakenly put in `data.status`. */
|
|
22
|
+
const ENVELOPE_STATUSES = new Set(['DRAFT', 'PUBLISHED', 'SCHEDULED', 'ARCHIVED']);
|
|
23
|
+
function isRecord(value) {
|
|
24
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validate one form's `data` payload. Returns human-readable errors —
|
|
28
|
+
* empty array means the form will work with the public endpoints
|
|
29
|
+
* (`GET /api/cms/public/forms/:slug` + `/submit`) and `<ActuateForm>`.
|
|
30
|
+
*/
|
|
31
|
+
export function validateFormSeedData(data, label = 'form') {
|
|
32
|
+
const errors = [];
|
|
33
|
+
if (!isRecord(data)) {
|
|
34
|
+
return [`${label}: form data must be an object.`];
|
|
35
|
+
}
|
|
36
|
+
if (typeof data.slug !== 'string' || data.slug.trim() === '') {
|
|
37
|
+
errors.push(`${label}: missing "slug" (string). The public endpoints look forms up by slug — e.g. /api/cms/public/forms/contact.`);
|
|
38
|
+
}
|
|
39
|
+
const name = data.name ?? data.title;
|
|
40
|
+
if (typeof name !== 'string' || name.trim() === '') {
|
|
41
|
+
errors.push(`${label}: missing "name" (string) — shown in the admin Forms list and inbox.`);
|
|
42
|
+
}
|
|
43
|
+
const status = data.status;
|
|
44
|
+
if (status === undefined || status === null) {
|
|
45
|
+
errors.push(`${label}: missing "status". Set data.status to "active" to enable the public form endpoints. ` +
|
|
46
|
+
`Note: this is the FORM's lifecycle status inside data — separate from the document envelope status ` +
|
|
47
|
+
`(DRAFT/PUBLISHED) set next to data.`);
|
|
48
|
+
}
|
|
49
|
+
else if (typeof status === 'string' && ENVELOPE_STATUSES.has(status)) {
|
|
50
|
+
errors.push(`${label}: data.status "${status}" looks like a document envelope status. The form definition's ` +
|
|
51
|
+
`data.status must be one of ${VALID_FORM_STATUSES.map((s) => `"${s}"`).join(' | ')} — use "active" ` +
|
|
52
|
+
`to enable the public endpoints. Put DRAFT/PUBLISHED on the document's top-level "status" key instead.`);
|
|
53
|
+
}
|
|
54
|
+
else if (!VALID_FORM_STATUSES.includes(status)) {
|
|
55
|
+
errors.push(`${label}: invalid data.status ${JSON.stringify(status)} — must be one of ` +
|
|
56
|
+
`${VALID_FORM_STATUSES.map((s) => `"${s}"`).join(' | ')}.`);
|
|
57
|
+
}
|
|
58
|
+
const fields = data.fields;
|
|
59
|
+
if (!Array.isArray(fields) || fields.length === 0) {
|
|
60
|
+
errors.push(`${label}: missing "fields" (non-empty array). Each field needs at least { key, label, type }.`);
|
|
61
|
+
return errors;
|
|
62
|
+
}
|
|
63
|
+
fields.forEach((field, i) => {
|
|
64
|
+
const fieldLabel = `${label}: fields[${i}]`;
|
|
65
|
+
if (!isRecord(field)) {
|
|
66
|
+
errors.push(`${fieldLabel}: must be an object with at least { key, label, type }.`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (typeof field.key !== 'string' || field.key.trim() === '') {
|
|
70
|
+
errors.push(typeof field.name === 'string'
|
|
71
|
+
? `${fieldLabel}: uses "name" — the form schema calls this "key". Rename name → key (and add a human-readable "label").`
|
|
72
|
+
: `${fieldLabel}: missing "key" (string) — the submission payload is keyed by it.`);
|
|
73
|
+
}
|
|
74
|
+
if (typeof field.label !== 'string' || field.label.trim() === '') {
|
|
75
|
+
errors.push(`${fieldLabel}: missing "label" (string) — shown to visitors and in the inbox.`);
|
|
76
|
+
}
|
|
77
|
+
if (!VALID_FIELD_TYPES.includes(field.type)) {
|
|
78
|
+
errors.push(`${fieldLabel}: invalid type ${JSON.stringify(field.type)} — must be one of ${VALID_FIELD_TYPES.join(', ')}.`);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return errors;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Validate every `forms`-collection document in a normalized seed payload.
|
|
85
|
+
* Returns all errors across all forms (so one run surfaces everything).
|
|
86
|
+
*/
|
|
87
|
+
export function validateFormSeeds(documents) {
|
|
88
|
+
const errors = [];
|
|
89
|
+
documents.forEach((doc, i) => {
|
|
90
|
+
if (doc.collection !== 'forms')
|
|
91
|
+
return;
|
|
92
|
+
const slug = typeof doc.data.slug === 'string' ? doc.data.slug : `#${i + 1}`;
|
|
93
|
+
errors.push(...validateFormSeedData(doc.data, `forms "${slug}"`));
|
|
94
|
+
});
|
|
95
|
+
return errors;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=form-seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-seed.js","sourceRoot":"","sources":["../../src/utils/form-seed.ts"],"names":[],"mappings":"AAiBA,MAAM,iBAAiB,GAA6B;IAClD,MAAM;IACN,OAAO;IACP,OAAO;IACP,UAAU;IACV,QAAQ;IACR,aAAa;IACb,OAAO;IACP,UAAU;IACV,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,MAAM;IACN,SAAS;IACT,UAAU;IACV,SAAS;IACT,UAAU;CACX,CAAA;AAED,MAAM,mBAAmB,GAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAElF,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAA;AAElF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAa,EAAE,KAAK,GAAG,MAAM;IAChE,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,KAAK,gCAAgC,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,6GAA6G,CACtH,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAA;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,sEAAsE,CAAC,CAAA;IAC7F,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,uFAAuF;YAC7F,qGAAqG;YACrG,qCAAqC,CACxC,CAAA;IACH,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,kBAAkB,MAAM,iEAAiE;YAC/F,8BAA8B,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB;YACpG,uGAAuG,CAC1G,CAAA;IACH,CAAC;SAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAoB,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB;YACzE,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAC7D,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,uFAAuF,CAChG,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,GAAG,KAAK,YAAY,CAAC,GAAG,CAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,yDAAyD,CAAC,CAAA;YACnF,OAAM;QACR,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CACT,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAC5B,CAAC,CAAC,GAAG,UAAU,yGAAyG;gBACxH,CAAC,CAAC,GAAG,UAAU,mEAAmE,CACrF,CAAA;QACH,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,kEAAkE,CAAC,CAAA;QAC9F,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAqB,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CACT,GAAG,UAAU,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9G,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAA+E;IAE/E,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC3B,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO;YAAE,OAAM;QACtC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.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.61.0"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc",
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest'
|
|
2
|
+
|
|
3
|
+
// seed.js transitively imports cms-core helpers at module scope via mocks
|
|
4
|
+
// elsewhere; keep the same stub so importing DEMO_FORMS stays side-effect-free.
|
|
5
|
+
vi.mock('@actuate-media/cms-core', () => ({
|
|
6
|
+
extractPlainText: vi.fn(),
|
|
7
|
+
hashContent: vi.fn(),
|
|
8
|
+
sanitizeHtml: vi.fn(),
|
|
9
|
+
createInitialAdmin: vi.fn(),
|
|
10
|
+
}))
|
|
11
|
+
|
|
12
|
+
import { validateFormSeedData, validateFormSeeds } from '../utils/form-seed.js'
|
|
13
|
+
import { DEMO_FORMS } from '../commands/seed.js'
|
|
14
|
+
|
|
15
|
+
const validForm = () => ({
|
|
16
|
+
name: 'Contact',
|
|
17
|
+
slug: 'contact',
|
|
18
|
+
status: 'active',
|
|
19
|
+
fields: [{ id: 'f1', key: 'email', label: 'Email', type: 'email', required: true, sortOrder: 0 }],
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
describe('validateFormSeedData', () => {
|
|
23
|
+
it('accepts the canonical form shape', () => {
|
|
24
|
+
expect(validateFormSeedData(validForm())).toEqual([])
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('every DEMO_FORMS entry passes its own validation', () => {
|
|
28
|
+
for (const form of DEMO_FORMS) {
|
|
29
|
+
expect(validateFormSeedData(form, form.slug)).toEqual([])
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
it('explains the data.status vs document status split when status is missing', () => {
|
|
34
|
+
const { status: _status, ...form } = validForm()
|
|
35
|
+
const errors = validateFormSeedData(form)
|
|
36
|
+
expect(errors).toHaveLength(1)
|
|
37
|
+
expect(errors[0]).toContain('data.status to "active"')
|
|
38
|
+
expect(errors[0]).toContain('document envelope status')
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
it('catches a document-envelope status (PUBLISHED) used as the form status', () => {
|
|
42
|
+
const errors = validateFormSeedData({ ...validForm(), status: 'PUBLISHED' })
|
|
43
|
+
expect(errors).toHaveLength(1)
|
|
44
|
+
expect(errors[0]).toContain('looks like a document envelope status')
|
|
45
|
+
expect(errors[0]).toContain('"active" | "draft" | "archived"')
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
it('rejects unknown statuses with the allowed list', () => {
|
|
49
|
+
const errors = validateFormSeedData({ ...validForm(), status: 'live' })
|
|
50
|
+
expect(errors[0]).toContain('invalid data.status "live"')
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
it('requires slug, name, and a non-empty fields array', () => {
|
|
54
|
+
const errors = validateFormSeedData({ status: 'active' })
|
|
55
|
+
expect(errors.some((e) => e.includes('"slug"'))).toBe(true)
|
|
56
|
+
expect(errors.some((e) => e.includes('"name"'))).toBe(true)
|
|
57
|
+
expect(errors.some((e) => e.includes('"fields"'))).toBe(true)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('points "name"-keyed fields (the old demo shape) at key/label', () => {
|
|
61
|
+
const errors = validateFormSeedData({
|
|
62
|
+
...validForm(),
|
|
63
|
+
fields: [{ name: 'email', type: 'email' }],
|
|
64
|
+
})
|
|
65
|
+
expect(errors.some((e) => e.includes('Rename name → key'))).toBe(true)
|
|
66
|
+
expect(errors.some((e) => e.includes('"label"'))).toBe(true)
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
it('rejects unknown field types', () => {
|
|
70
|
+
const errors = validateFormSeedData({
|
|
71
|
+
...validForm(),
|
|
72
|
+
fields: [{ key: 'x', label: 'X', type: 'dropdown' }],
|
|
73
|
+
})
|
|
74
|
+
expect(errors[0]).toContain('invalid type "dropdown"')
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
describe('validateFormSeeds', () => {
|
|
79
|
+
it('only validates forms-collection documents and labels errors by slug', () => {
|
|
80
|
+
const errors = validateFormSeeds([
|
|
81
|
+
{ collection: 'pages', data: { title: 'Home' } },
|
|
82
|
+
{ collection: 'forms', data: { ...validForm(), slug: 'contact', status: 'PUBLISHED' } },
|
|
83
|
+
])
|
|
84
|
+
expect(errors).toHaveLength(1)
|
|
85
|
+
expect(errors[0]).toContain('forms "contact"')
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
it('returns no errors for a payload without forms', () => {
|
|
89
|
+
expect(validateFormSeeds([{ collection: 'pages', data: {} }])).toEqual([])
|
|
90
|
+
})
|
|
91
|
+
})
|