@actuate-media/cms-core 0.7.0 → 0.9.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/dist/api/handlers.d.ts.map +1 -1
- package/dist/api/handlers.js +530 -0
- package/dist/api/handlers.js.map +1 -1
- package/dist/config/types.d.ts +3 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/page-builder/__tests__/a11y-fix.test.d.ts +2 -0
- package/dist/page-builder/__tests__/a11y-fix.test.d.ts.map +1 -0
- package/dist/page-builder/__tests__/a11y-fix.test.js +246 -0
- package/dist/page-builder/__tests__/a11y-fix.test.js.map +1 -0
- package/dist/page-builder/__tests__/blocks.test.d.ts +2 -0
- package/dist/page-builder/__tests__/blocks.test.d.ts.map +1 -0
- package/dist/page-builder/__tests__/blocks.test.js +87 -0
- package/dist/page-builder/__tests__/blocks.test.js.map +1 -0
- package/dist/page-builder/__tests__/design-scorer.test.d.ts +2 -0
- package/dist/page-builder/__tests__/design-scorer.test.d.ts.map +1 -0
- package/dist/page-builder/__tests__/design-scorer.test.js +268 -0
- package/dist/page-builder/__tests__/design-scorer.test.js.map +1 -0
- package/dist/page-builder/__tests__/schema.test.d.ts +2 -0
- package/dist/page-builder/__tests__/schema.test.d.ts.map +1 -0
- package/dist/page-builder/__tests__/schema.test.js +191 -0
- package/dist/page-builder/__tests__/schema.test.js.map +1 -0
- package/dist/page-builder/__tests__/seo-analyzer.test.d.ts +2 -0
- package/dist/page-builder/__tests__/seo-analyzer.test.d.ts.map +1 -0
- package/dist/page-builder/__tests__/seo-analyzer.test.js +332 -0
- package/dist/page-builder/__tests__/seo-analyzer.test.js.map +1 -0
- package/dist/page-builder/__tests__/tree.test.d.ts +2 -0
- package/dist/page-builder/__tests__/tree.test.d.ts.map +1 -0
- package/dist/page-builder/__tests__/tree.test.js +257 -0
- package/dist/page-builder/__tests__/tree.test.js.map +1 -0
- package/dist/page-builder/a11y-fix.d.ts +20 -0
- package/dist/page-builder/a11y-fix.d.ts.map +1 -0
- package/dist/page-builder/a11y-fix.js +182 -0
- package/dist/page-builder/a11y-fix.js.map +1 -0
- package/dist/page-builder/ai-pipeline.d.ts +43 -0
- package/dist/page-builder/ai-pipeline.d.ts.map +1 -0
- package/dist/page-builder/ai-pipeline.js +167 -0
- package/dist/page-builder/ai-pipeline.js.map +1 -0
- package/dist/page-builder/blocks.d.ts +10 -0
- package/dist/page-builder/blocks.d.ts.map +1 -0
- package/dist/page-builder/blocks.js +252 -0
- package/dist/page-builder/blocks.js.map +1 -0
- package/dist/page-builder/design-scorer.d.ts +27 -0
- package/dist/page-builder/design-scorer.d.ts.map +1 -0
- package/dist/page-builder/design-scorer.js +404 -0
- package/dist/page-builder/design-scorer.js.map +1 -0
- package/dist/page-builder/index.d.ts +18 -0
- package/dist/page-builder/index.d.ts.map +1 -0
- package/dist/page-builder/index.js +20 -0
- package/dist/page-builder/index.js.map +1 -0
- package/dist/page-builder/schema.d.ts +107 -0
- package/dist/page-builder/schema.d.ts.map +1 -0
- package/dist/page-builder/schema.js +90 -0
- package/dist/page-builder/schema.js.map +1 -0
- package/dist/page-builder/seo-analyzer.d.ts +61 -0
- package/dist/page-builder/seo-analyzer.d.ts.map +1 -0
- package/dist/page-builder/seo-analyzer.js +582 -0
- package/dist/page-builder/seo-analyzer.js.map +1 -0
- package/dist/page-builder/templates.d.ts +9 -0
- package/dist/page-builder/templates.d.ts.map +1 -0
- package/dist/page-builder/templates.js +401 -0
- package/dist/page-builder/templates.js.map +1 -0
- package/dist/page-builder/tree.d.ts +17 -0
- package/dist/page-builder/tree.d.ts.map +1 -0
- package/dist/page-builder/tree.js +160 -0
- package/dist/page-builder/tree.js.map +1 -0
- package/dist/page-builder/types.d.ts +112 -0
- package/dist/page-builder/types.d.ts.map +1 -0
- package/dist/page-builder/types.js +4 -0
- package/dist/page-builder/types.js.map +1 -0
- package/dist/page-builder/validate.d.ts +6 -0
- package/dist/page-builder/validate.d.ts.map +1 -0
- package/dist/page-builder/validate.js +87 -0
- package/dist/page-builder/validate.js.map +1 -0
- package/package.json +6 -1
- package/prisma/migrations/0006_page_builder/migration.sql +38 -0
- package/prisma/schema.prisma +31 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { FieldDefinition } from '../config/types.js';
|
|
2
|
+
export interface SectionSettings {
|
|
3
|
+
background?: string;
|
|
4
|
+
backgroundImage?: string;
|
|
5
|
+
backgroundGradient?: string;
|
|
6
|
+
paddingTop?: string;
|
|
7
|
+
paddingBottom?: string;
|
|
8
|
+
marginTop?: string;
|
|
9
|
+
marginBottom?: string;
|
|
10
|
+
visibility?: 'visible' | 'hidden';
|
|
11
|
+
htmlId?: string;
|
|
12
|
+
htmlClass?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ContainerSettings {
|
|
15
|
+
maxWidth?: string;
|
|
16
|
+
alignment?: 'left' | 'center' | 'right';
|
|
17
|
+
padding?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface RowSettings {
|
|
20
|
+
gap?: string;
|
|
21
|
+
verticalAlign?: 'top' | 'center' | 'bottom' | 'stretch';
|
|
22
|
+
reverseOnMobile?: boolean;
|
|
23
|
+
wrapOnMobile?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface ColumnSettings {
|
|
26
|
+
width: number;
|
|
27
|
+
verticalAlign?: 'top' | 'center' | 'bottom';
|
|
28
|
+
padding?: string;
|
|
29
|
+
background?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface BlockSettings {
|
|
32
|
+
blockType: string;
|
|
33
|
+
variant?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface SavedSectionRefSettings {
|
|
36
|
+
refId: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ResponsiveOverrides {
|
|
39
|
+
mobile?: Record<string, unknown>;
|
|
40
|
+
tablet?: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
interface BaseNode {
|
|
43
|
+
id: string;
|
|
44
|
+
responsive?: ResponsiveOverrides;
|
|
45
|
+
}
|
|
46
|
+
export interface PageNode extends BaseNode {
|
|
47
|
+
type: 'page';
|
|
48
|
+
children: (SectionNode | SavedSectionRefNode)[];
|
|
49
|
+
}
|
|
50
|
+
export interface SectionNode extends BaseNode {
|
|
51
|
+
type: 'section';
|
|
52
|
+
settings: SectionSettings;
|
|
53
|
+
children: (ContainerNode | RowNode)[];
|
|
54
|
+
}
|
|
55
|
+
export interface ContainerNode extends BaseNode {
|
|
56
|
+
type: 'container';
|
|
57
|
+
settings: ContainerSettings;
|
|
58
|
+
children: RowNode[];
|
|
59
|
+
}
|
|
60
|
+
export interface RowNode extends BaseNode {
|
|
61
|
+
type: 'row';
|
|
62
|
+
settings: RowSettings;
|
|
63
|
+
children: ColumnNode[];
|
|
64
|
+
}
|
|
65
|
+
export interface ColumnNode extends BaseNode {
|
|
66
|
+
type: 'column';
|
|
67
|
+
settings: ColumnSettings;
|
|
68
|
+
children: (BlockNode | ContainerNode)[];
|
|
69
|
+
}
|
|
70
|
+
export interface BlockNode extends BaseNode {
|
|
71
|
+
type: 'block';
|
|
72
|
+
settings: BlockSettings;
|
|
73
|
+
data: Record<string, unknown>;
|
|
74
|
+
}
|
|
75
|
+
export interface SavedSectionRefNode extends BaseNode {
|
|
76
|
+
type: 'savedSectionRef';
|
|
77
|
+
settings: SavedSectionRefSettings;
|
|
78
|
+
}
|
|
79
|
+
export type BuilderNode = PageNode | SectionNode | ContainerNode | RowNode | ColumnNode | BlockNode | SavedSectionRefNode;
|
|
80
|
+
export type NodeType = BuilderNode['type'];
|
|
81
|
+
export interface VariantDefinition {
|
|
82
|
+
name: string;
|
|
83
|
+
label: string;
|
|
84
|
+
description: string;
|
|
85
|
+
thumbnail?: string;
|
|
86
|
+
defaultSettings?: Record<string, unknown>;
|
|
87
|
+
defaultData?: Record<string, unknown>;
|
|
88
|
+
}
|
|
89
|
+
export interface BlockTypeDefinition {
|
|
90
|
+
type: string;
|
|
91
|
+
label: string;
|
|
92
|
+
icon: string;
|
|
93
|
+
description?: string;
|
|
94
|
+
variants: VariantDefinition[];
|
|
95
|
+
fields: Record<string, FieldDefinition>;
|
|
96
|
+
defaultData?: Record<string, unknown>;
|
|
97
|
+
}
|
|
98
|
+
export interface PreviewTheme {
|
|
99
|
+
fontFamily?: string;
|
|
100
|
+
headingFontFamily?: string;
|
|
101
|
+
primaryColor?: string;
|
|
102
|
+
secondaryColor?: string;
|
|
103
|
+
borderRadius?: string;
|
|
104
|
+
}
|
|
105
|
+
export interface PageBuilderConfig {
|
|
106
|
+
blocks?: BlockTypeDefinition[];
|
|
107
|
+
previewTheme?: PreviewTheme;
|
|
108
|
+
}
|
|
109
|
+
export type ParentNode = PageNode | SectionNode | ContainerNode | RowNode | ColumnNode;
|
|
110
|
+
export declare function hasChildren(node: BuilderNode): node is ParentNode;
|
|
111
|
+
export {};
|
|
112
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/page-builder/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/page-builder/types.ts"],"names":[],"mappings":"AAuJA,MAAM,UAAU,WAAW,CAAC,IAAiB;IAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAA;AACjE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/page-builder/validate.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CA8BhE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { pageNodeSchema } from './schema.js';
|
|
2
|
+
const MAX_DEPTH = 9;
|
|
3
|
+
export function validateTree(tree) {
|
|
4
|
+
const errors = [];
|
|
5
|
+
if (tree === null ||
|
|
6
|
+
tree === undefined ||
|
|
7
|
+
typeof tree !== 'object' ||
|
|
8
|
+
!('type' in tree) ||
|
|
9
|
+
tree.type !== 'page') {
|
|
10
|
+
errors.push('Root node must be of type "page"');
|
|
11
|
+
return { valid: false, errors };
|
|
12
|
+
}
|
|
13
|
+
const result = pageNodeSchema.safeParse(tree);
|
|
14
|
+
if (!result.success) {
|
|
15
|
+
for (const issue of result.error.issues) {
|
|
16
|
+
const path = issue.path.length > 0 ? ` at ${issue.path.join('.')}` : '';
|
|
17
|
+
errors.push(`${issue.message}${path}`);
|
|
18
|
+
}
|
|
19
|
+
return { valid: false, errors };
|
|
20
|
+
}
|
|
21
|
+
const pageNode = tree;
|
|
22
|
+
checkColumnWidths(pageNode, errors);
|
|
23
|
+
checkDepth(pageNode, 1, errors);
|
|
24
|
+
checkBlockNoChildren(pageNode, errors);
|
|
25
|
+
checkNestingRules(pageNode, errors);
|
|
26
|
+
return { valid: errors.length === 0, errors };
|
|
27
|
+
}
|
|
28
|
+
function checkColumnWidths(node, errors) {
|
|
29
|
+
if (!node || typeof node !== 'object')
|
|
30
|
+
return;
|
|
31
|
+
const n = node;
|
|
32
|
+
if (n.type === 'row' && Array.isArray(n.children)) {
|
|
33
|
+
const columns = n.children;
|
|
34
|
+
const sum = columns.reduce((acc, col) => acc + (col.settings?.width ?? 0), 0);
|
|
35
|
+
if (sum !== 12) {
|
|
36
|
+
errors.push(`Row "${n.id}" columns sum to ${sum}, expected 12`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if ('children' in n && Array.isArray(n.children)) {
|
|
40
|
+
for (const child of n.children) {
|
|
41
|
+
checkColumnWidths(child, errors);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function checkDepth(node, depth, errors) {
|
|
46
|
+
if (!node || typeof node !== 'object')
|
|
47
|
+
return;
|
|
48
|
+
const n = node;
|
|
49
|
+
if (depth > MAX_DEPTH) {
|
|
50
|
+
errors.push(`Maximum nesting depth of ${MAX_DEPTH} exceeded at node "${n.id}"`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if ('children' in n && Array.isArray(n.children)) {
|
|
54
|
+
for (const child of n.children) {
|
|
55
|
+
checkDepth(child, depth + 1, errors);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function checkBlockNoChildren(node, errors) {
|
|
60
|
+
if (!node || typeof node !== 'object')
|
|
61
|
+
return;
|
|
62
|
+
const n = node;
|
|
63
|
+
if (n.type === 'block' &&
|
|
64
|
+
'children' in n &&
|
|
65
|
+
Array.isArray(n.children) &&
|
|
66
|
+
n.children.length > 0) {
|
|
67
|
+
errors.push(`Block node "${n.id}" must not have children`);
|
|
68
|
+
}
|
|
69
|
+
if ('children' in n && Array.isArray(n.children)) {
|
|
70
|
+
for (const child of n.children) {
|
|
71
|
+
checkBlockNoChildren(child, errors);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function checkNestingRules(node, errors) {
|
|
76
|
+
if (!node || typeof node !== 'object')
|
|
77
|
+
return;
|
|
78
|
+
const n = node;
|
|
79
|
+
if (n.type === 'page' && Array.isArray(n.children)) {
|
|
80
|
+
for (const child of n.children) {
|
|
81
|
+
if (child.type !== 'section' && child.type !== 'savedSectionRef') {
|
|
82
|
+
errors.push(`Page node can only contain section or savedSectionRef children, found "${child.type}" ("${child.id}")`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/page-builder/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cms-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/actuate-media/actuatecms.git",
|
|
@@ -49,6 +49,11 @@
|
|
|
49
49
|
"import": "./dist/api/index.js",
|
|
50
50
|
"default": "./dist/api/index.js"
|
|
51
51
|
},
|
|
52
|
+
"./page-builder": {
|
|
53
|
+
"types": "./dist/page-builder/index.d.ts",
|
|
54
|
+
"import": "./dist/page-builder/index.js",
|
|
55
|
+
"default": "./dist/page-builder/index.js"
|
|
56
|
+
},
|
|
52
57
|
"./generated/client": {
|
|
53
58
|
"types": "./generated/client.d.ts",
|
|
54
59
|
"import": "./generated/client.js",
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "actuate_page_templates" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"name" TEXT NOT NULL,
|
|
5
|
+
"description" TEXT,
|
|
6
|
+
"category" TEXT NOT NULL DEFAULT 'content',
|
|
7
|
+
"tree" JSONB NOT NULL,
|
|
8
|
+
"thumbnail" TEXT,
|
|
9
|
+
"builtIn" BOOLEAN NOT NULL DEFAULT false,
|
|
10
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
11
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
12
|
+
|
|
13
|
+
CONSTRAINT "actuate_page_templates_pkey" PRIMARY KEY ("id")
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
-- CreateTable
|
|
17
|
+
CREATE TABLE "actuate_saved_sections" (
|
|
18
|
+
"id" TEXT NOT NULL,
|
|
19
|
+
"name" TEXT NOT NULL,
|
|
20
|
+
"description" TEXT,
|
|
21
|
+
"category" TEXT NOT NULL DEFAULT 'content',
|
|
22
|
+
"tree" JSONB NOT NULL,
|
|
23
|
+
"thumbnail" TEXT,
|
|
24
|
+
"usageCount" INTEGER NOT NULL DEFAULT 0,
|
|
25
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
26
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
27
|
+
|
|
28
|
+
CONSTRAINT "actuate_saved_sections_pkey" PRIMARY KEY ("id")
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
-- CreateIndex
|
|
32
|
+
CREATE INDEX "actuate_page_templates_category_idx" ON "actuate_page_templates"("category");
|
|
33
|
+
|
|
34
|
+
-- CreateIndex
|
|
35
|
+
CREATE INDEX "actuate_page_templates_builtIn_idx" ON "actuate_page_templates"("builtIn");
|
|
36
|
+
|
|
37
|
+
-- CreateIndex
|
|
38
|
+
CREATE INDEX "actuate_saved_sections_category_idx" ON "actuate_saved_sections"("category");
|
package/prisma/schema.prisma
CHANGED
|
@@ -516,3 +516,34 @@ model ScriptTag {
|
|
|
516
516
|
@@index([placement])
|
|
517
517
|
@@map("actuate_script_tags")
|
|
518
518
|
}
|
|
519
|
+
|
|
520
|
+
model PageTemplate {
|
|
521
|
+
id String @id @default(cuid())
|
|
522
|
+
name String
|
|
523
|
+
description String?
|
|
524
|
+
category String @default("content")
|
|
525
|
+
tree Json
|
|
526
|
+
thumbnail String?
|
|
527
|
+
builtIn Boolean @default(false)
|
|
528
|
+
createdAt DateTime @default(now())
|
|
529
|
+
updatedAt DateTime @updatedAt
|
|
530
|
+
|
|
531
|
+
@@index([category])
|
|
532
|
+
@@index([builtIn])
|
|
533
|
+
@@map("actuate_page_templates")
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
model SavedSection {
|
|
537
|
+
id String @id @default(cuid())
|
|
538
|
+
name String
|
|
539
|
+
description String?
|
|
540
|
+
category String @default("content")
|
|
541
|
+
tree Json
|
|
542
|
+
thumbnail String?
|
|
543
|
+
usageCount Int @default(0)
|
|
544
|
+
createdAt DateTime @default(now())
|
|
545
|
+
updatedAt DateTime @updatedAt
|
|
546
|
+
|
|
547
|
+
@@index([category])
|
|
548
|
+
@@map("actuate_saved_sections")
|
|
549
|
+
}
|