@actuate-media/cli 0.3.1 → 0.4.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 +16 -7
- package/CHANGELOG.md +12 -0
- package/dist/__tests__/deployment-diagnostics.test.d.ts +2 -0
- package/dist/__tests__/deployment-diagnostics.test.d.ts.map +1 -0
- package/dist/__tests__/deployment-diagnostics.test.js +116 -0
- package/dist/__tests__/deployment-diagnostics.test.js.map +1 -0
- package/dist/__tests__/schema-fragment.test.d.ts +2 -0
- package/dist/__tests__/schema-fragment.test.d.ts.map +1 -0
- package/dist/__tests__/schema-fragment.test.js +40 -0
- package/dist/__tests__/schema-fragment.test.js.map +1 -0
- package/dist/commands/db-init.d.ts +4 -0
- package/dist/commands/db-init.d.ts.map +1 -1
- package/dist/commands/db-init.js +81 -2
- package/dist/commands/db-init.js.map +1 -1
- package/dist/commands/db-status.d.ts.map +1 -1
- package/dist/commands/db-status.js +2 -12
- package/dist/commands/db-status.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +163 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +3 -1
- package/dist/commands/seed.js.map +1 -1
- package/dist/deployment/diagnostics.d.ts +60 -0
- package/dist/deployment/diagnostics.d.ts.map +1 -0
- package/dist/deployment/diagnostics.js +198 -0
- package/dist/deployment/diagnostics.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/deployment-diagnostics.test.ts +130 -0
- package/src/__tests__/schema-fragment.test.ts +47 -0
- package/src/commands/db-init.ts +85 -2
- package/src/commands/db-status.ts +2 -13
- package/src/commands/doctor.ts +169 -0
- package/src/commands/seed.ts +3 -1
- package/src/deployment/diagnostics.ts +238 -0
- package/src/index.ts +8 -0
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
|
|
2
|
-
> @actuate-media/cli@0.
|
|
2
|
+
> @actuate-media/cli@0.4.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__/
|
|
9
|
-
[32m✓[39m src/__tests__/
|
|
8
|
+
[32m✓[39m src/__tests__/deployment-diagnostics.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 73[2mms[22m[39m
|
|
9
|
+
[32m✓[39m src/__tests__/seed.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 89[2mms[22m[39m
|
|
10
|
+
- Reading Prisma schema...
|
|
11
|
+
✔ Actuate CMS models added to schema.
|
|
12
|
+
[90mstdout[2m | src/__tests__/schema-fragment.test.ts[2m > [22m[2mdb:init schema fragment[2m > [22m[2minjects all deploy-critical Actuate models
|
|
13
|
+
[22m[39m✔ Prisma client generated.
|
|
14
|
+
ℹ Run `npx prisma migrate dev --name actuate-cms` to create the migration.
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
[
|
|
13
|
-
[2m
|
|
14
|
-
|
|
16
|
+
- Running prisma generate...
|
|
17
|
+
[32m✓[39m src/__tests__/schema-fragment.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 129[2mms[22m[39m
|
|
18
|
+
[32m✓[39m src/__tests__/init.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 58[2mms[22m[39m
|
|
19
|
+
|
|
20
|
+
[2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
|
|
21
|
+
[2m Tests [22m [1m[32m12 passed[39m[22m[90m (12)[39m
|
|
22
|
+
[2m Start at [22m 12:55:07
|
|
23
|
+
[2m Duration [22m 8.20s[2m (transform 862ms, setup 0ms, collect 1.68s, tests 349ms, environment 1ms, prepare 1.99s)[22m
|
|
15
24
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @actuate-media/cli
|
|
2
2
|
|
|
3
|
+
## 0.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 58bf2e6: Warn during deployment diagnostics when designed marketing pages appear to be modeled as flat fields instead of page-builder content.
|
|
8
|
+
|
|
9
|
+
## 0.4.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- e2fabee: Add AI-friendly deployment diagnostics, align generated schemas with first-run admin features, and harden setup guidance for design-first deployments.
|
|
14
|
+
|
|
3
15
|
## 0.3.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-diagnostics.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/deployment-diagnostics.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { buildDeploymentManifest, createDiagnosticReport, REQUIRED_CMS_MODELS, REQUIRED_ENV_VARS, } from '../deployment/diagnostics.js';
|
|
3
|
+
describe('deployment diagnostics', () => {
|
|
4
|
+
it('tracks deploy-critical models used by first-run admin features', () => {
|
|
5
|
+
expect(REQUIRED_CMS_MODELS).toEqual(expect.arrayContaining([
|
|
6
|
+
'User',
|
|
7
|
+
'Session',
|
|
8
|
+
'Document',
|
|
9
|
+
'Media',
|
|
10
|
+
'Version',
|
|
11
|
+
'Folder',
|
|
12
|
+
'Redirect',
|
|
13
|
+
'FormSubmission',
|
|
14
|
+
'AuditLog',
|
|
15
|
+
'PasswordResetToken',
|
|
16
|
+
'MediaUsage',
|
|
17
|
+
'ScriptTag',
|
|
18
|
+
'PageTemplate',
|
|
19
|
+
'SavedSection',
|
|
20
|
+
]));
|
|
21
|
+
});
|
|
22
|
+
it('reports missing models and env vars with exact fix commands', () => {
|
|
23
|
+
const report = createDiagnosticReport({
|
|
24
|
+
schemaModels: new Set(['User', 'Session', 'Document']),
|
|
25
|
+
schemaContent: '',
|
|
26
|
+
env: {
|
|
27
|
+
DATABASE_URL: 'postgresql://example',
|
|
28
|
+
},
|
|
29
|
+
packageManager: 'pnpm',
|
|
30
|
+
schemaPath: 'prisma/schema.prisma',
|
|
31
|
+
});
|
|
32
|
+
expect(report.status).toBe('fail');
|
|
33
|
+
expect(report.checks).toEqual(expect.arrayContaining([
|
|
34
|
+
expect.objectContaining({
|
|
35
|
+
id: 'schema-models',
|
|
36
|
+
status: 'fail',
|
|
37
|
+
fix: 'Run `actuate db:init --schema prisma/schema.prisma` for new schemas, or update the existing Actuate block from the database setup docs, then create and apply a Prisma migration.',
|
|
38
|
+
}),
|
|
39
|
+
expect.objectContaining({
|
|
40
|
+
id: 'environment',
|
|
41
|
+
status: 'fail',
|
|
42
|
+
fix: 'Set missing environment variables before deploying: CMS_SECRET, CMS_ENCRYPTION_KEY, NEXT_PUBLIC_SITE_URL.',
|
|
43
|
+
}),
|
|
44
|
+
]));
|
|
45
|
+
});
|
|
46
|
+
it('requires migration connection details for deploy checks', () => {
|
|
47
|
+
const report = createDiagnosticReport({
|
|
48
|
+
schemaModels: new Set(REQUIRED_CMS_MODELS),
|
|
49
|
+
schemaContent: '',
|
|
50
|
+
env: {
|
|
51
|
+
DATABASE_URL: 'postgresql://example',
|
|
52
|
+
CMS_SECRET: 'secret',
|
|
53
|
+
CMS_ENCRYPTION_KEY: 'a'.repeat(64),
|
|
54
|
+
NEXT_PUBLIC_SITE_URL: 'https://example.com',
|
|
55
|
+
},
|
|
56
|
+
packageManager: 'pnpm',
|
|
57
|
+
schemaPath: 'prisma/schema.prisma',
|
|
58
|
+
mode: 'deploy',
|
|
59
|
+
});
|
|
60
|
+
expect(report.status).toBe('fail');
|
|
61
|
+
expect(report.checks).toEqual(expect.arrayContaining([
|
|
62
|
+
expect.objectContaining({
|
|
63
|
+
id: 'environment',
|
|
64
|
+
message: expect.stringContaining('DIRECT_DATABASE_URL'),
|
|
65
|
+
}),
|
|
66
|
+
]));
|
|
67
|
+
});
|
|
68
|
+
it('warns when designed marketing pages appear to use flat fields instead of page-builder content', () => {
|
|
69
|
+
const report = createDiagnosticReport({
|
|
70
|
+
schemaModels: new Set(REQUIRED_CMS_MODELS),
|
|
71
|
+
schemaContent: '',
|
|
72
|
+
configContent: `
|
|
73
|
+
export default defineConfig({
|
|
74
|
+
collections: {
|
|
75
|
+
pages: {
|
|
76
|
+
slug: 'pages',
|
|
77
|
+
fields: {
|
|
78
|
+
title: { type: 'text' },
|
|
79
|
+
slug: { type: 'slug' },
|
|
80
|
+
heroHeadline: { type: 'text' },
|
|
81
|
+
heroSubheadline: { type: 'text' },
|
|
82
|
+
heroImage: { type: 'media' },
|
|
83
|
+
bodyContent: { type: 'richText' },
|
|
84
|
+
ctaButtonText: { type: 'text' }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
`,
|
|
90
|
+
env: {
|
|
91
|
+
DATABASE_URL: 'postgresql://example',
|
|
92
|
+
CMS_SECRET: 'secret',
|
|
93
|
+
CMS_ENCRYPTION_KEY: 'a'.repeat(64),
|
|
94
|
+
NEXT_PUBLIC_SITE_URL: 'https://example.com',
|
|
95
|
+
},
|
|
96
|
+
packageManager: 'pnpm',
|
|
97
|
+
schemaPath: 'prisma/schema.prisma',
|
|
98
|
+
});
|
|
99
|
+
expect(report.status).toBe('warn');
|
|
100
|
+
expect(report.checks).toEqual(expect.arrayContaining([
|
|
101
|
+
expect.objectContaining({
|
|
102
|
+
id: 'design-first-page-builder',
|
|
103
|
+
status: 'warn',
|
|
104
|
+
docs: 'https://actuatecms.dev/docs/design-first-page-builder',
|
|
105
|
+
}),
|
|
106
|
+
]));
|
|
107
|
+
});
|
|
108
|
+
it('exposes machine-readable deployment metadata', () => {
|
|
109
|
+
const manifest = buildDeploymentManifest();
|
|
110
|
+
expect(manifest.requiredModels).toEqual(REQUIRED_CMS_MODELS);
|
|
111
|
+
expect(manifest.requiredEnv).toEqual(REQUIRED_ENV_VARS);
|
|
112
|
+
expect(manifest.routes.apiHealth).toBe('/api/cms/health');
|
|
113
|
+
expect(manifest.crons.scheduledPublish).toBe('/api/cms/cron/publish');
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=deployment-diagnostics.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-diagnostics.test.js","sourceRoot":"","sources":["../../src/__tests__/deployment-diagnostics.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-fragment.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/schema-fragment.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
6
|
+
import { registerDbInitCommand, resetDbInitCommandRunner, setDbInitCommandRunner } from '../commands/db-init.js';
|
|
7
|
+
import { REQUIRED_CMS_MODELS } from '../deployment/diagnostics.js';
|
|
8
|
+
function baseSchema() {
|
|
9
|
+
return `generator client {
|
|
10
|
+
provider = "prisma-client-js"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
datasource db {
|
|
14
|
+
provider = "postgresql"
|
|
15
|
+
url = env("DATABASE_URL")
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
}
|
|
19
|
+
describe('db:init schema fragment', () => {
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
resetDbInitCommandRunner();
|
|
22
|
+
vi.restoreAllMocks();
|
|
23
|
+
});
|
|
24
|
+
it('injects all deploy-critical Actuate models', async () => {
|
|
25
|
+
const tempRoot = await mkdtemp(path.join(tmpdir(), 'actuate-db-init-'));
|
|
26
|
+
const schemaPath = path.join(tempRoot, 'schema.prisma');
|
|
27
|
+
await writeFile(schemaPath, baseSchema());
|
|
28
|
+
vi.spyOn(process, 'cwd').mockReturnValue(tempRoot);
|
|
29
|
+
setDbInitCommandRunner(() => undefined);
|
|
30
|
+
const command = new Command();
|
|
31
|
+
registerDbInitCommand(command);
|
|
32
|
+
await command.parseAsync(['node', 'actuate', 'db:init', '--schema', 'schema.prisma']);
|
|
33
|
+
const schema = await readFile(schemaPath, 'utf-8');
|
|
34
|
+
for (const model of REQUIRED_CMS_MODELS) {
|
|
35
|
+
expect(schema).toContain(`model ${model} `);
|
|
36
|
+
}
|
|
37
|
+
await rm(tempRoot, { recursive: true, force: true });
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=schema-fragment.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-fragment.test.js","sourceRoot":"","sources":["../../src/__tests__/schema-fragment.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACjH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,SAAS,UAAU;IACjB,OAAO;;;;;;;;CAQR,CAAC;AACF,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,wBAAwB,EAAE,CAAC;QAC3B,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxD,MAAM,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAE1C,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnD,sBAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE/B,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAEtF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
import { type ExecSyncOptions } from "node:child_process";
|
|
3
|
+
export declare let runDbInitCommand: (command: string, options: ExecSyncOptions) => void;
|
|
4
|
+
export declare function setDbInitCommandRunner(runner: typeof runDbInitCommand): void;
|
|
5
|
+
export declare function resetDbInitCommandRunner(): void;
|
|
2
6
|
export declare function registerDbInitCommand(program: Command): void;
|
|
3
7
|
//# sourceMappingURL=db-init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-init.d.ts","sourceRoot":"","sources":["../../src/commands/db-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"db-init.d.ts","sourceRoot":"","sources":["../../src/commands/db-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMpE,eAAO,IAAI,gBAAgB,GAAI,SAAS,MAAM,EAAE,SAAS,eAAe,KAAG,IAE1E,CAAC;AAIF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,gBAAgB,GAAG,IAAI,CAE5E;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AA8RD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E5D"}
|
package/dist/commands/db-init.js
CHANGED
|
@@ -4,6 +4,16 @@ import { execSync } from "node:child_process";
|
|
|
4
4
|
import ora from "ora";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
6
|
const CMS_SCHEMA_MARKER = "// ── Actuate CMS models";
|
|
7
|
+
export let runDbInitCommand = (command, options) => {
|
|
8
|
+
execSync(command, options);
|
|
9
|
+
};
|
|
10
|
+
const defaultDbInitCommandRunner = runDbInitCommand;
|
|
11
|
+
export function setDbInitCommandRunner(runner) {
|
|
12
|
+
runDbInitCommand = runner;
|
|
13
|
+
}
|
|
14
|
+
export function resetDbInitCommandRunner() {
|
|
15
|
+
runDbInitCommand = defaultDbInitCommandRunner;
|
|
16
|
+
}
|
|
7
17
|
async function fileExists(filePath) {
|
|
8
18
|
try {
|
|
9
19
|
await access(filePath);
|
|
@@ -216,6 +226,75 @@ model AuditLog {
|
|
|
216
226
|
@@index([userId])
|
|
217
227
|
@@index([createdAt])
|
|
218
228
|
}
|
|
229
|
+
|
|
230
|
+
model PasswordResetToken {
|
|
231
|
+
id String @id @default(cuid())
|
|
232
|
+
userId String
|
|
233
|
+
tokenHash String
|
|
234
|
+
expiresAt DateTime
|
|
235
|
+
usedAt DateTime?
|
|
236
|
+
createdAt DateTime @default(now())
|
|
237
|
+
|
|
238
|
+
@@index([tokenHash])
|
|
239
|
+
@@index([userId])
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
model MediaUsage {
|
|
243
|
+
id String @id @default(cuid())
|
|
244
|
+
mediaId String
|
|
245
|
+
documentId String
|
|
246
|
+
fieldPath String?
|
|
247
|
+
createdAt DateTime @default(now())
|
|
248
|
+
|
|
249
|
+
@@unique([mediaId, documentId, fieldPath])
|
|
250
|
+
@@index([mediaId])
|
|
251
|
+
@@index([documentId])
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
model ScriptTag {
|
|
255
|
+
id String @id @default(cuid())
|
|
256
|
+
name String
|
|
257
|
+
code String @db.Text
|
|
258
|
+
placement String
|
|
259
|
+
scope String
|
|
260
|
+
targetPaths String[]
|
|
261
|
+
priority Int @default(100)
|
|
262
|
+
enabled Boolean @default(true)
|
|
263
|
+
createdAt DateTime @default(now())
|
|
264
|
+
updatedAt DateTime @updatedAt
|
|
265
|
+
|
|
266
|
+
@@index([enabled])
|
|
267
|
+
@@index([placement])
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
model PageTemplate {
|
|
271
|
+
id String @id @default(cuid())
|
|
272
|
+
name String
|
|
273
|
+
description String?
|
|
274
|
+
category String @default("content")
|
|
275
|
+
tree Json
|
|
276
|
+
thumbnail String?
|
|
277
|
+
builtIn Boolean @default(false)
|
|
278
|
+
createdAt DateTime @default(now())
|
|
279
|
+
updatedAt DateTime @updatedAt
|
|
280
|
+
|
|
281
|
+
@@index([category])
|
|
282
|
+
@@index([builtIn])
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
model SavedSection {
|
|
286
|
+
id String @id @default(cuid())
|
|
287
|
+
name String
|
|
288
|
+
description String?
|
|
289
|
+
category String @default("content")
|
|
290
|
+
tree Json
|
|
291
|
+
thumbnail String?
|
|
292
|
+
usageCount Int @default(0)
|
|
293
|
+
createdAt DateTime @default(now())
|
|
294
|
+
updatedAt DateTime @updatedAt
|
|
295
|
+
|
|
296
|
+
@@index([category])
|
|
297
|
+
}
|
|
219
298
|
`;
|
|
220
299
|
}
|
|
221
300
|
export function registerDbInitCommand(program) {
|
|
@@ -269,7 +348,7 @@ export function registerDbInitCommand(program) {
|
|
|
269
348
|
const genSpinner = ora("Running prisma generate...").start();
|
|
270
349
|
try {
|
|
271
350
|
genSpinner.stop();
|
|
272
|
-
|
|
351
|
+
runDbInitCommand("npx prisma generate", execOpts);
|
|
273
352
|
logger.success("Prisma client generated.");
|
|
274
353
|
}
|
|
275
354
|
catch {
|
|
@@ -279,7 +358,7 @@ export function registerDbInitCommand(program) {
|
|
|
279
358
|
const migSpinner = ora("Running prisma migrate dev...").start();
|
|
280
359
|
try {
|
|
281
360
|
migSpinner.stop();
|
|
282
|
-
|
|
361
|
+
runDbInitCommand("npx prisma migrate dev --name actuate-cms-init", execOpts);
|
|
283
362
|
logger.success("Migration created and applied.");
|
|
284
363
|
}
|
|
285
364
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../src/commands/db-init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAwB,MAAM,oBAAoB,CAAC;AACpE,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAErD,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO
|
|
1
|
+
{"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../src/commands/db-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-status.d.ts","sourceRoot":"","sources":["../../src/commands/db-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"db-status.d.ts","sourceRoot":"","sources":["../../src/commands/db-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG9D"}
|
|
@@ -4,17 +4,7 @@ import { resolve } from "node:path";
|
|
|
4
4
|
import ora from "ora";
|
|
5
5
|
import chalk from "chalk";
|
|
6
6
|
import { logger } from "../utils/logger.js";
|
|
7
|
-
|
|
8
|
-
"User",
|
|
9
|
-
"Session",
|
|
10
|
-
"Document",
|
|
11
|
-
"Media",
|
|
12
|
-
"Version",
|
|
13
|
-
"Folder",
|
|
14
|
-
"Redirect",
|
|
15
|
-
"FormSubmission",
|
|
16
|
-
"AuditLog",
|
|
17
|
-
];
|
|
7
|
+
import { REQUIRED_CMS_MODELS } from "../deployment/diagnostics.js";
|
|
18
8
|
const CMS_SCHEMA_MARKER = "// ── Actuate CMS models";
|
|
19
9
|
async function fileExists(filePath) {
|
|
20
10
|
try {
|
|
@@ -63,7 +53,7 @@ export function registerDbStatusCommand(program) {
|
|
|
63
53
|
console.log();
|
|
64
54
|
let present = 0;
|
|
65
55
|
let missing = 0;
|
|
66
|
-
for (const model of
|
|
56
|
+
for (const model of REQUIRED_CMS_MODELS) {
|
|
67
57
|
if (schemaModels.has(model)) {
|
|
68
58
|
console.log(` ${chalk.green("✓")} ${model}`);
|
|
69
59
|
present++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-status.js","sourceRoot":"","sources":["../../src/commands/db-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"db-status.js","sourceRoot":"","sources":["../../src/commands/db-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export declare function registerDoctorCommand(program: Command): void;
|
|
3
|
+
export declare function registerDeployCheckCommand(program: Command): void;
|
|
4
|
+
export declare function registerVerifyCommand(program: Command): void;
|
|
5
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmFpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgB5D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBjE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD5D"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { access, readdir, readFile } from "node:fs/promises";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { buildDeploymentManifest, createDiagnosticReport, detectPackageManager, } from "../deployment/diagnostics.js";
|
|
5
|
+
async function fileExists(path) {
|
|
6
|
+
try {
|
|
7
|
+
await access(path);
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async function readSchemaModels(schemaPath) {
|
|
15
|
+
if (!(await fileExists(schemaPath)))
|
|
16
|
+
return new Set();
|
|
17
|
+
const schema = await readFile(schemaPath, "utf-8");
|
|
18
|
+
const models = new Set();
|
|
19
|
+
const modelRegex = /^model\s+(\w+)\s*\{/gm;
|
|
20
|
+
let match;
|
|
21
|
+
while ((match = modelRegex.exec(schema)) !== null) {
|
|
22
|
+
models.add(match[1]);
|
|
23
|
+
}
|
|
24
|
+
return models;
|
|
25
|
+
}
|
|
26
|
+
async function readSchemaContent(schemaPath) {
|
|
27
|
+
if (!(await fileExists(schemaPath)))
|
|
28
|
+
return "";
|
|
29
|
+
return readFile(schemaPath, "utf-8");
|
|
30
|
+
}
|
|
31
|
+
async function readOptionalFile(path) {
|
|
32
|
+
if (!(await fileExists(path)))
|
|
33
|
+
return "";
|
|
34
|
+
return readFile(path, "utf-8");
|
|
35
|
+
}
|
|
36
|
+
async function detectProjectPackageManager() {
|
|
37
|
+
const entries = new Set(await readdir(process.cwd()));
|
|
38
|
+
return detectPackageManager(entries);
|
|
39
|
+
}
|
|
40
|
+
function printReport(title, report) {
|
|
41
|
+
console.log();
|
|
42
|
+
console.log(chalk.bold(title));
|
|
43
|
+
console.log(chalk.dim("─────────────────────────────────"));
|
|
44
|
+
for (const check of report.checks) {
|
|
45
|
+
const icon = check.status === "pass" ? chalk.green("PASS") : check.status === "warn" ? chalk.yellow("WARN") : chalk.red("FAIL");
|
|
46
|
+
console.log(`${icon} ${check.label}: ${check.message}`);
|
|
47
|
+
if (check.fix)
|
|
48
|
+
console.log(chalk.dim(` Fix: ${check.fix}`));
|
|
49
|
+
if (check.docs)
|
|
50
|
+
console.log(chalk.dim(` Docs: ${check.docs}`));
|
|
51
|
+
}
|
|
52
|
+
console.log(chalk.dim("─────────────────────────────────"));
|
|
53
|
+
console.log(`Status: ${report.status.toUpperCase()}`);
|
|
54
|
+
console.log();
|
|
55
|
+
}
|
|
56
|
+
async function buildReport(schemaPath, configPath, mode = "doctor") {
|
|
57
|
+
const resolvedSchema = resolve(process.cwd(), schemaPath);
|
|
58
|
+
const resolvedConfig = resolve(process.cwd(), configPath);
|
|
59
|
+
const [schemaModels, schemaContent, configContent, packageManager] = await Promise.all([
|
|
60
|
+
readSchemaModels(resolvedSchema),
|
|
61
|
+
readSchemaContent(resolvedSchema),
|
|
62
|
+
readOptionalFile(resolvedConfig),
|
|
63
|
+
detectProjectPackageManager(),
|
|
64
|
+
]);
|
|
65
|
+
return createDiagnosticReport({
|
|
66
|
+
schemaModels,
|
|
67
|
+
schemaContent,
|
|
68
|
+
configContent,
|
|
69
|
+
env: process.env,
|
|
70
|
+
packageManager,
|
|
71
|
+
schemaPath,
|
|
72
|
+
mode,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
export function registerDoctorCommand(program) {
|
|
76
|
+
program
|
|
77
|
+
.command("doctor")
|
|
78
|
+
.description("Run AI-friendly preflight checks for an Actuate CMS project")
|
|
79
|
+
.option("--schema <path>", "Path to schema.prisma", "prisma/schema.prisma")
|
|
80
|
+
.option("--config <path>", "Path to actuate.config.ts", "actuate.config.ts")
|
|
81
|
+
.option("--json", "Print machine-readable JSON")
|
|
82
|
+
.action(async (opts) => {
|
|
83
|
+
const report = await buildReport(opts.schema, opts.config, "doctor");
|
|
84
|
+
if (opts.json) {
|
|
85
|
+
console.log(JSON.stringify(report, null, 2));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
printReport("Actuate Doctor", report);
|
|
89
|
+
}
|
|
90
|
+
if (report.status === "fail")
|
|
91
|
+
process.exitCode = 1;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
export function registerDeployCheckCommand(program) {
|
|
95
|
+
program
|
|
96
|
+
.command("deploy:check")
|
|
97
|
+
.description("Check production deployment readiness for Actuate CMS")
|
|
98
|
+
.option("--schema <path>", "Path to schema.prisma", "prisma/schema.prisma")
|
|
99
|
+
.option("--config <path>", "Path to actuate.config.ts", "actuate.config.ts")
|
|
100
|
+
.option("--json", "Print machine-readable JSON")
|
|
101
|
+
.action(async (opts) => {
|
|
102
|
+
const report = await buildReport(opts.schema, opts.config, "deploy");
|
|
103
|
+
if (opts.json) {
|
|
104
|
+
console.log(JSON.stringify({ ...report, manifest: buildDeploymentManifest() }, null, 2));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
printReport("Actuate Deploy Check", report);
|
|
108
|
+
console.log(chalk.dim("Run `actuate verify --full` after deployment succeeds."));
|
|
109
|
+
}
|
|
110
|
+
if (report.status === "fail")
|
|
111
|
+
process.exitCode = 1;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
export function registerVerifyCommand(program) {
|
|
115
|
+
program
|
|
116
|
+
.command("verify")
|
|
117
|
+
.description("Verify an installed or deployed Actuate CMS project")
|
|
118
|
+
.option("--full", "Run the full verification checklist")
|
|
119
|
+
.option("--url <origin>", "Deployed site origin to verify, for example https://example.com")
|
|
120
|
+
.option("--json", "Print the deployment manifest as JSON")
|
|
121
|
+
.action(async (opts) => {
|
|
122
|
+
const manifest = buildDeploymentManifest();
|
|
123
|
+
if (opts.json) {
|
|
124
|
+
console.log(JSON.stringify(manifest, null, 2));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
console.log();
|
|
128
|
+
console.log(chalk.bold(opts.full ? "Actuate Full Verification" : "Actuate Verification"));
|
|
129
|
+
console.log(chalk.dim("─────────────────────────────────"));
|
|
130
|
+
console.log(`PASS Manifest generated for ${manifest.packageScope} packages.`);
|
|
131
|
+
if (!opts.url) {
|
|
132
|
+
console.log("WARN No --url provided, so remote health/admin endpoints were not checked.");
|
|
133
|
+
console.log(chalk.dim("Run `actuate verify --full --url https://your-site.com` after deployment."));
|
|
134
|
+
console.log();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const origin = opts.url.replace(/\/$/, "");
|
|
138
|
+
const healthUrl = `${origin}${manifest.routes.apiHealth}`;
|
|
139
|
+
const adminUrl = `${origin}${manifest.routes.adminDefault}`;
|
|
140
|
+
let failed = false;
|
|
141
|
+
for (const [label, url] of [['Health', healthUrl], ['Admin', adminUrl]]) {
|
|
142
|
+
try {
|
|
143
|
+
const response = await fetch(url, { method: 'GET' });
|
|
144
|
+
if (response.ok || response.status === 302 || response.status === 401) {
|
|
145
|
+
console.log(`PASS ${label} route responded at ${url}.`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
failed = true;
|
|
149
|
+
console.log(`FAIL ${label} route returned HTTP ${response.status} at ${url}.`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
failed = true;
|
|
154
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
155
|
+
console.log(`FAIL ${label} route could not be reached at ${url}: ${message}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
console.log();
|
|
159
|
+
if (failed)
|
|
160
|
+
process.exitCode = 1;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,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;
|
|
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;AA2HD,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"}
|