@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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +15 -0
- package/CHANGELOG.md +12 -0
- package/dist/__tests__/init.test.d.ts +2 -0
- package/dist/__tests__/init.test.d.ts.map +1 -0
- package/dist/__tests__/init.test.js +25 -0
- package/dist/__tests__/init.test.js.map +1 -0
- package/dist/__tests__/seed.test.d.ts +2 -0
- package/dist/__tests__/seed.test.d.ts.map +1 -0
- package/dist/__tests__/seed.test.js +115 -0
- package/dist/__tests__/seed.test.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +31 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/seed.d.ts +18 -0
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +217 -97
- package/dist/commands/seed.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +10 -5
- package/src/__tests__/init.test.ts +30 -0
- package/src/__tests__/seed.test.ts +126 -0
- package/src/commands/init.ts +36 -0
- package/src/commands/seed.ts +277 -96
- package/src/index.ts +2 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
> @actuate-media/cli@0.3.1 test /home/runner/work/actuatecms/actuatecms/packages/cli
|
|
3
|
+
> vitest run
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/actuatecms/actuatecms/packages/cli[39m
|
|
7
|
+
|
|
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
|
+
|
|
11
|
+
[2m Test Files [22m [1m[32m2 passed[39m[22m[90m (2)[39m
|
|
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
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @actuate-media/cli
|
|
2
2
|
|
|
3
|
+
## 0.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- b224105: Fix post-release developer experience regressions in public site globals, scaffolded Prisma wiring, and seed/populate database initialization.
|
|
8
|
+
|
|
9
|
+
## 0.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 266b657: Add first-class public site helpers, CLI init/populate workflows, and generated frontend boilerplate for globals, document resolution, and media normalization.
|
|
14
|
+
|
|
3
15
|
## 0.2.5
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/init.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { describe, expect, it } from 'vitest';
|
|
4
|
+
import { buildCreateActuateArgs, registerInitCommand } from '../commands/init.js';
|
|
5
|
+
describe('init command', () => {
|
|
6
|
+
it('registers an init command that delegates to create-actuate-cms', () => {
|
|
7
|
+
const program = new Command();
|
|
8
|
+
registerInitCommand(program);
|
|
9
|
+
const command = program.commands.find((candidate) => candidate.name() === 'init');
|
|
10
|
+
expect(command).toBeDefined();
|
|
11
|
+
expect(buildCreateActuateArgs()).toEqual(['create', 'actuate-cms@latest']);
|
|
12
|
+
expect(buildCreateActuateArgs('maidpro-site')).toEqual([
|
|
13
|
+
'create',
|
|
14
|
+
'actuate-cms@latest',
|
|
15
|
+
'maidpro-site',
|
|
16
|
+
]);
|
|
17
|
+
});
|
|
18
|
+
it('exposes an actuate-cms bin alias for installed CLI usage', async () => {
|
|
19
|
+
const raw = await readFile(new URL('../../package.json', import.meta.url), 'utf-8');
|
|
20
|
+
const pkg = JSON.parse(raw);
|
|
21
|
+
expect(pkg.bin?.actuate).toBe('dist/index.js');
|
|
22
|
+
expect(pkg.bin?.['actuate-cms']).toBe('dist/index.js');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=init.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/__tests__/init.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAElF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;QAElF,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,QAAQ;YACR,oBAAoB;YACpB,cAAc;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqC,CAAC;QAEhE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/seed.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
});
|
|
12
|
+
describe('seed payload normalization', () => {
|
|
13
|
+
it('separates globals from collection documents', () => {
|
|
14
|
+
const normalized = normalizeSeedPayload({
|
|
15
|
+
globals: {
|
|
16
|
+
'site-settings': {
|
|
17
|
+
siteName: 'MaidPro',
|
|
18
|
+
phone: '555-0100',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
collections: {
|
|
22
|
+
pages: [
|
|
23
|
+
{
|
|
24
|
+
data: { title: 'Home', slug: 'home' },
|
|
25
|
+
status: 'PUBLISHED',
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
expect(normalized.globals).toEqual([
|
|
31
|
+
{
|
|
32
|
+
slug: 'site-settings',
|
|
33
|
+
data: { siteName: 'MaidPro', phone: '555-0100' },
|
|
34
|
+
},
|
|
35
|
+
]);
|
|
36
|
+
expect(normalized.documents).toEqual([
|
|
37
|
+
{
|
|
38
|
+
collection: 'pages',
|
|
39
|
+
data: { title: 'Home', slug: 'home' },
|
|
40
|
+
status: 'PUBLISHED',
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
it('keeps backwards-compatible collection-key seed files', () => {
|
|
45
|
+
const normalized = normalizeSeedPayload({
|
|
46
|
+
pages: [{ title: 'Home', slug: 'home' }],
|
|
47
|
+
});
|
|
48
|
+
expect(normalized.globals).toEqual([]);
|
|
49
|
+
expect(normalized.documents).toEqual([
|
|
50
|
+
{
|
|
51
|
+
collection: 'pages',
|
|
52
|
+
data: { title: 'Home', slug: 'home' },
|
|
53
|
+
status: 'DRAFT',
|
|
54
|
+
},
|
|
55
|
+
]);
|
|
56
|
+
});
|
|
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
|
+
});
|
|
115
|
+
//# sourceMappingURL=seed.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.test.js","sourceRoot":"","sources":["../../src/__tests__/seed.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIrE;AAsBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAK1D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
export function buildCreateActuateArgs(projectName) {
|
|
4
|
+
const args = ['create', 'actuate-cms@latest'];
|
|
5
|
+
if (projectName)
|
|
6
|
+
args.push(projectName);
|
|
7
|
+
return args;
|
|
8
|
+
}
|
|
9
|
+
function npmCommand() {
|
|
10
|
+
return process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
11
|
+
}
|
|
12
|
+
async function runInit(projectName) {
|
|
13
|
+
const child = spawn(npmCommand(), buildCreateActuateArgs(projectName), {
|
|
14
|
+
stdio: 'inherit',
|
|
15
|
+
});
|
|
16
|
+
const exitCode = await new Promise((resolve, reject) => {
|
|
17
|
+
child.once('error', reject);
|
|
18
|
+
child.once('exit', resolve);
|
|
19
|
+
});
|
|
20
|
+
if (exitCode && exitCode !== 0) {
|
|
21
|
+
logger.error(`Project initialization failed with exit code ${exitCode}.`);
|
|
22
|
+
process.exit(exitCode);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function registerInitCommand(program) {
|
|
26
|
+
program
|
|
27
|
+
.command('init [project-name]')
|
|
28
|
+
.description('Scaffold a new Actuate CMS project')
|
|
29
|
+
.action(runInit);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,UAAU,sBAAsB,CAAC,WAAoB;IACzD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IAC9C,IAAI,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,WAAoB;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,sBAAsB,CAAC,WAAW,CAAC,EAAE;QACrE,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,gDAAgD,QAAQ,GAAG,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC"}
|
package/dist/commands/seed.d.ts
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
export interface NormalizedSeedDocument {
|
|
3
|
+
collection: string;
|
|
4
|
+
data: Record<string, unknown>;
|
|
5
|
+
status: string;
|
|
6
|
+
}
|
|
7
|
+
export interface NormalizedSeedGlobal {
|
|
8
|
+
slug: string;
|
|
9
|
+
data: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface NormalizedSeedPayload {
|
|
12
|
+
documents: NormalizedSeedDocument[];
|
|
13
|
+
globals: NormalizedSeedGlobal[];
|
|
14
|
+
}
|
|
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>;
|
|
2
20
|
export declare function registerSeedCommand(program: Command): void;
|
|
3
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"}
|