@prenta/core 1.1.1 → 2.2.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/CHANGELOG.md +18 -0
- package/dist/api/handlers.d.ts.map +1 -1
- package/dist/api/handlers.js +0 -2
- package/dist/api/handlers.js.map +1 -1
- package/dist/api/routes/media.d.ts.map +1 -1
- package/dist/api/routes/media.js +73 -104
- package/dist/api/routes/media.js.map +1 -1
- package/dist/api/routes/saved-sections.d.ts.map +1 -1
- package/dist/api/routes/saved-sections.js +20 -300
- package/dist/api/routes/saved-sections.js.map +1 -1
- package/dist/appearance/resolve.js +1 -1
- package/dist/appearance/resolve.js.map +1 -1
- package/dist/collections/presets.d.ts +2 -2
- package/dist/collections/presets.js +2 -2
- package/dist/config/runtime.d.ts +1 -2
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js.map +1 -1
- package/dist/config/types.d.ts +0 -3
- package/dist/config/types.d.ts.map +1 -1
- package/dist/db/model-types.d.ts +67 -26
- package/dist/db/model-types.d.ts.map +1 -1
- package/dist/generated/browser.d.ts +16 -0
- package/dist/generated/client.d.ts +16 -0
- package/dist/generated/commonInputTypes.d.ts +30 -0
- package/dist/generated/internal/class.d.ts +33 -0
- package/dist/generated/internal/class.js +4 -4
- package/dist/generated/internal/prismaNamespace.d.ts +294 -1
- package/dist/generated/internal/prismaNamespace.js +55 -1
- package/dist/generated/internal/prismaNamespaceBrowser.d.ts +60 -0
- package/dist/generated/internal/prismaNamespaceBrowser.js +55 -1
- package/dist/generated/models/DocumentCRDT.d.ts +1110 -0
- package/dist/generated/models/DocumentCRDT.js +1 -0
- package/dist/generated/models/DocumentComment.d.ts +1722 -0
- package/dist/generated/models/DocumentComment.js +1 -0
- package/dist/generated/models/DocumentNotification.d.ts +1289 -0
- package/dist/generated/models/DocumentNotification.js +1 -0
- package/dist/generated/models/User.d.ts +552 -0
- package/dist/generated/models.d.ts +3 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/media/index.d.ts +2 -0
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +1 -0
- package/dist/media/index.js.map +1 -1
- package/dist/media/optimize.d.ts.map +1 -1
- package/dist/media/optimize.js +19 -12
- package/dist/media/optimize.js.map +1 -1
- package/dist/media/reoptimize.d.ts +61 -0
- package/dist/media/reoptimize.d.ts.map +1 -0
- package/dist/media/reoptimize.js +371 -0
- package/dist/media/reoptimize.js.map +1 -0
- package/dist/sections/index.d.ts +1 -2
- package/dist/sections/index.d.ts.map +1 -1
- package/dist/sections/index.js +1 -2
- package/dist/sections/index.js.map +1 -1
- package/dist/sections/types.d.ts +2 -3
- package/dist/sections/types.d.ts.map +1 -1
- package/dist/sections/types.js +2 -3
- package/dist/sections/types.js.map +1 -1
- package/dist/security/api-key-enhanced.d.ts +2 -2
- package/package.json +1 -6
- package/prisma/migrations/0013_document_collab_models/migration.sql +68 -0
- package/prisma/schema.prisma +66 -5
- package/dist/api/routes/page-templates.d.ts +0 -3
- package/dist/api/routes/page-templates.d.ts.map +0 -1
- package/dist/api/routes/page-templates.js +0 -265
- package/dist/api/routes/page-templates.js.map +0 -1
- package/dist/page-builder/a11y-fix.d.ts +0 -20
- package/dist/page-builder/a11y-fix.d.ts.map +0 -1
- package/dist/page-builder/a11y-fix.js +0 -182
- package/dist/page-builder/a11y-fix.js.map +0 -1
- package/dist/page-builder/ai-pipeline.d.ts +0 -43
- package/dist/page-builder/ai-pipeline.d.ts.map +0 -1
- package/dist/page-builder/ai-pipeline.js +0 -165
- package/dist/page-builder/ai-pipeline.js.map +0 -1
- package/dist/page-builder/blocks.d.ts +0 -27
- package/dist/page-builder/blocks.d.ts.map +0 -1
- package/dist/page-builder/blocks.js +0 -313
- package/dist/page-builder/blocks.js.map +0 -1
- package/dist/page-builder/design-scorer.d.ts +0 -27
- package/dist/page-builder/design-scorer.d.ts.map +0 -1
- package/dist/page-builder/design-scorer.js +0 -612
- package/dist/page-builder/design-scorer.js.map +0 -1
- package/dist/page-builder/index.d.ts +0 -16
- package/dist/page-builder/index.d.ts.map +0 -1
- package/dist/page-builder/index.js +0 -18
- package/dist/page-builder/index.js.map +0 -1
- package/dist/page-builder/schema.d.ts +0 -107
- package/dist/page-builder/schema.d.ts.map +0 -1
- package/dist/page-builder/schema.js +0 -90
- package/dist/page-builder/schema.js.map +0 -1
- package/dist/page-builder/templates.d.ts +0 -9
- package/dist/page-builder/templates.d.ts.map +0 -1
- package/dist/page-builder/templates.js +0 -742
- package/dist/page-builder/templates.js.map +0 -1
- package/dist/page-builder/tree.d.ts +0 -17
- package/dist/page-builder/tree.d.ts.map +0 -1
- package/dist/page-builder/tree.js +0 -160
- package/dist/page-builder/tree.js.map +0 -1
- package/dist/page-builder/types.d.ts +0 -112
- package/dist/page-builder/types.d.ts.map +0 -1
- package/dist/page-builder/types.js +0 -4
- package/dist/page-builder/types.js.map +0 -1
- package/dist/page-builder/validate.d.ts +0 -6
- package/dist/page-builder/validate.d.ts.map +0 -1
- package/dist/page-builder/validate.js +0 -87
- package/dist/page-builder/validate.js.map +0 -1
package/prisma/schema.prisma
CHANGED
|
@@ -125,11 +125,13 @@ model User {
|
|
|
125
125
|
updatedDocuments Document[] @relation("UpdatedDocuments")
|
|
126
126
|
versions Version[]
|
|
127
127
|
media Media[]
|
|
128
|
-
contentLocks
|
|
129
|
-
notifications
|
|
130
|
-
contentTemplates
|
|
131
|
-
workflowAssigned
|
|
132
|
-
passwordResetTokens
|
|
128
|
+
contentLocks ContentLock[]
|
|
129
|
+
notifications InAppNotification[]
|
|
130
|
+
contentTemplates ContentTemplate[]
|
|
131
|
+
workflowAssigned WorkflowState[]
|
|
132
|
+
passwordResetTokens PasswordResetToken[]
|
|
133
|
+
documentComments DocumentComment[]
|
|
134
|
+
documentNotifications DocumentNotification[]
|
|
133
135
|
|
|
134
136
|
@@map("prenta_users")
|
|
135
137
|
}
|
|
@@ -993,3 +995,62 @@ model ContentIssue {
|
|
|
993
995
|
@@index([documentId])
|
|
994
996
|
@@map("prenta_content_issues")
|
|
995
997
|
}
|
|
998
|
+
|
|
999
|
+
/// Persisted Yjs state for a document (`@prenta/realtime`). Optional: empty
|
|
1000
|
+
/// when collaboration is unused. Cms-core queries this from `/realtime/sync`.
|
|
1001
|
+
model DocumentCRDT {
|
|
1002
|
+
documentId String @id
|
|
1003
|
+
state Bytes
|
|
1004
|
+
stateVector Bytes
|
|
1005
|
+
version Int @default(0)
|
|
1006
|
+
lastUpdatedAt DateTime @default(now()) @updatedAt
|
|
1007
|
+
lastUpdatedById String?
|
|
1008
|
+
createdAt DateTime @default(now())
|
|
1009
|
+
|
|
1010
|
+
@@index([lastUpdatedAt])
|
|
1011
|
+
@@map("prenta_document_crdts")
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
/// Threaded inline comment. Soft-deletes keep replies attached. Optional.
|
|
1015
|
+
model DocumentComment {
|
|
1016
|
+
id String @id @default(cuid())
|
|
1017
|
+
documentId String
|
|
1018
|
+
parentId String?
|
|
1019
|
+
parent DocumentComment? @relation("CommentThread", fields: [parentId], references: [id], onDelete: Cascade)
|
|
1020
|
+
replies DocumentComment[] @relation("CommentThread")
|
|
1021
|
+
userId String?
|
|
1022
|
+
user User? @relation(fields: [userId], references: [id], onDelete: SetNull)
|
|
1023
|
+
body String @db.Text
|
|
1024
|
+
anchor Json?
|
|
1025
|
+
resolvedAt DateTime?
|
|
1026
|
+
resolvedById String?
|
|
1027
|
+
deletedAt DateTime?
|
|
1028
|
+
createdAt DateTime @default(now())
|
|
1029
|
+
updatedAt DateTime @updatedAt
|
|
1030
|
+
|
|
1031
|
+
@@index([documentId])
|
|
1032
|
+
@@index([documentId, resolvedAt])
|
|
1033
|
+
@@index([parentId])
|
|
1034
|
+
@@index([userId])
|
|
1035
|
+
@@index([createdAt])
|
|
1036
|
+
@@map("prenta_document_comments")
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
/// Per-user notification feed for collaboration events.
|
|
1040
|
+
model DocumentNotification {
|
|
1041
|
+
id String @id @default(cuid())
|
|
1042
|
+
userId String
|
|
1043
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
1044
|
+
kind String
|
|
1045
|
+
documentId String?
|
|
1046
|
+
commentId String?
|
|
1047
|
+
payload Json
|
|
1048
|
+
readAt DateTime?
|
|
1049
|
+
createdAt DateTime @default(now())
|
|
1050
|
+
|
|
1051
|
+
@@index([userId, readAt])
|
|
1052
|
+
@@index([userId, createdAt])
|
|
1053
|
+
@@index([documentId])
|
|
1054
|
+
@@index([commentId])
|
|
1055
|
+
@@map("prenta_document_notifications")
|
|
1056
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"page-templates.d.ts","sourceRoot":"","sources":["../../../src/api/routes/page-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAiB7C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwQlE"}
|
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
import { logEvent } from '../../security/audit.js';
|
|
2
|
-
import { BUILT_IN_TEMPLATES } from '../../page-builder/templates.js';
|
|
3
|
-
import { validateTree } from '../../page-builder/validate.js';
|
|
4
|
-
import { guardedDb } from '../guarded-db.js';
|
|
5
|
-
import { json, errorResponse, internalError, hasModel, modelNotAvailable, safeCount, requireAuth, ADMIN_ROLES, requireRole, } from '../route-helpers.js';
|
|
6
|
-
export function registerPageTemplateRoutes(router) {
|
|
7
|
-
const db = guardedDb;
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
// Page Templates
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
async function seedBuiltInTemplates(d) {
|
|
12
|
-
for (const [key, template] of Object.entries(BUILT_IN_TEMPLATES)) {
|
|
13
|
-
await d.pageTemplate.upsert({
|
|
14
|
-
where: { id: `builtin-${key}` },
|
|
15
|
-
create: {
|
|
16
|
-
id: `builtin-${key}`,
|
|
17
|
-
name: template.name,
|
|
18
|
-
description: template.description,
|
|
19
|
-
category: template.category,
|
|
20
|
-
tree: template.tree,
|
|
21
|
-
builtIn: true,
|
|
22
|
-
},
|
|
23
|
-
update: {
|
|
24
|
-
name: template.name,
|
|
25
|
-
description: template.description,
|
|
26
|
-
category: template.category,
|
|
27
|
-
tree: template.tree,
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
router.get('/page-templates', async (request) => {
|
|
33
|
-
try {
|
|
34
|
-
const auth = await requireAuth(request);
|
|
35
|
-
if (auth.error)
|
|
36
|
-
return auth.error;
|
|
37
|
-
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
38
|
-
if (roleErr)
|
|
39
|
-
return roleErr;
|
|
40
|
-
const d = db();
|
|
41
|
-
if (!hasModel(d, 'pageTemplate'))
|
|
42
|
-
return modelNotAvailable('PageTemplate');
|
|
43
|
-
const url = new URL(request.url, 'http://localhost');
|
|
44
|
-
const category = url.searchParams.get('category');
|
|
45
|
-
const collection = url.searchParams.get('collection');
|
|
46
|
-
const builtInCount = await safeCount(d.pageTemplate, { builtIn: true });
|
|
47
|
-
if (builtInCount === 0) {
|
|
48
|
-
await seedBuiltInTemplates(d);
|
|
49
|
-
}
|
|
50
|
-
const where = {};
|
|
51
|
-
if (category)
|
|
52
|
-
where.category = category;
|
|
53
|
-
const templates = await d.pageTemplate.findMany({
|
|
54
|
-
where,
|
|
55
|
-
orderBy: [{ builtIn: 'desc' }, { updatedAt: 'desc' }],
|
|
56
|
-
});
|
|
57
|
-
// When a `collection` filter is supplied, reorder the response so the
|
|
58
|
-
// suggested templates for that collection bubble to the top. The admin
|
|
59
|
-
// "Create new" picker uses this so blog posts default to `blog-post`,
|
|
60
|
-
// case studies to `case-study`, etc., without forcing the user to scan
|
|
61
|
-
// every template alphabetically.
|
|
62
|
-
if (collection) {
|
|
63
|
-
const { getTemplatesForCollection } = await import('../../collections/presets.js');
|
|
64
|
-
const { primary, alternates } = getTemplatesForCollection(collection);
|
|
65
|
-
const suggestionOrder = new Map();
|
|
66
|
-
if (primary)
|
|
67
|
-
suggestionOrder.set(`builtin-${primary}`, 0);
|
|
68
|
-
alternates.forEach((alt, i) => suggestionOrder.set(`builtin-${alt}`, i + 1));
|
|
69
|
-
templates.sort((a, b) => {
|
|
70
|
-
const ai = suggestionOrder.has(a.id) ? suggestionOrder.get(a.id) : 100;
|
|
71
|
-
const bi = suggestionOrder.has(b.id) ? suggestionOrder.get(b.id) : 100;
|
|
72
|
-
return ai - bi;
|
|
73
|
-
});
|
|
74
|
-
const annotated = templates.map((t) => ({
|
|
75
|
-
...t,
|
|
76
|
-
suggested: suggestionOrder.has(t.id),
|
|
77
|
-
suggestionRank: suggestionOrder.get(t.id) ?? null,
|
|
78
|
-
}));
|
|
79
|
-
return json({
|
|
80
|
-
data: annotated,
|
|
81
|
-
suggestion: {
|
|
82
|
-
collection,
|
|
83
|
-
primary: primary ? `builtin-${primary}` : null,
|
|
84
|
-
alternates: alternates.map((a) => `builtin-${a}`),
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
return json({ data: templates });
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
return internalError(err, 'page-templates list');
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
router.get('/page-templates/:id', async (request, params) => {
|
|
95
|
-
try {
|
|
96
|
-
const auth = await requireAuth(request);
|
|
97
|
-
if (auth.error)
|
|
98
|
-
return auth.error;
|
|
99
|
-
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
100
|
-
if (roleErr)
|
|
101
|
-
return roleErr;
|
|
102
|
-
const d = db();
|
|
103
|
-
if (!hasModel(d, 'pageTemplate'))
|
|
104
|
-
return modelNotAvailable('PageTemplate');
|
|
105
|
-
const template = await d.pageTemplate.findUnique({ where: { id: params.id } });
|
|
106
|
-
if (!template)
|
|
107
|
-
return errorResponse('Template not found', 404);
|
|
108
|
-
return json({ data: template });
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
return internalError(err, 'page-templates get');
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
router.post('/page-templates', async (request) => {
|
|
115
|
-
try {
|
|
116
|
-
const auth = await requireAuth(request);
|
|
117
|
-
if (auth.error)
|
|
118
|
-
return auth.error;
|
|
119
|
-
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
120
|
-
if (roleErr)
|
|
121
|
-
return roleErr;
|
|
122
|
-
const d = db();
|
|
123
|
-
if (!hasModel(d, 'pageTemplate'))
|
|
124
|
-
return modelNotAvailable('PageTemplate');
|
|
125
|
-
const body = (await request.json());
|
|
126
|
-
if (!body.name)
|
|
127
|
-
return errorResponse('name is required', 400);
|
|
128
|
-
if (!body.tree)
|
|
129
|
-
return errorResponse('tree is required', 400);
|
|
130
|
-
const validation = validateTree(body.tree);
|
|
131
|
-
if (!validation.valid) {
|
|
132
|
-
return errorResponse(`Invalid tree: ${validation.errors.join('; ')}`, 400);
|
|
133
|
-
}
|
|
134
|
-
const validCategories = ['landing', 'content', 'utility'];
|
|
135
|
-
const category = body.category || 'content';
|
|
136
|
-
if (!validCategories.includes(category)) {
|
|
137
|
-
return errorResponse('category must be landing, content, or utility', 400);
|
|
138
|
-
}
|
|
139
|
-
const template = await d.pageTemplate.create({
|
|
140
|
-
data: {
|
|
141
|
-
name: body.name,
|
|
142
|
-
description: body.description || null,
|
|
143
|
-
category,
|
|
144
|
-
tree: body.tree,
|
|
145
|
-
thumbnail: body.thumbnail || null,
|
|
146
|
-
builtIn: false,
|
|
147
|
-
},
|
|
148
|
-
});
|
|
149
|
-
await logEvent({
|
|
150
|
-
event: 'settings_changed',
|
|
151
|
-
userId: auth.session.userId,
|
|
152
|
-
details: { action: 'page_template_created', templateId: template.id, name: template.name },
|
|
153
|
-
});
|
|
154
|
-
return json({ data: template }, 201);
|
|
155
|
-
}
|
|
156
|
-
catch (err) {
|
|
157
|
-
return internalError(err, 'page-templates create');
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
router.put('/page-templates/:id', async (request, params) => {
|
|
161
|
-
try {
|
|
162
|
-
const auth = await requireAuth(request);
|
|
163
|
-
if (auth.error)
|
|
164
|
-
return auth.error;
|
|
165
|
-
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
166
|
-
if (roleErr)
|
|
167
|
-
return roleErr;
|
|
168
|
-
const d = db();
|
|
169
|
-
if (!hasModel(d, 'pageTemplate'))
|
|
170
|
-
return modelNotAvailable('PageTemplate');
|
|
171
|
-
const existing = await d.pageTemplate.findUnique({ where: { id: params.id } });
|
|
172
|
-
if (!existing)
|
|
173
|
-
return errorResponse('Template not found', 404);
|
|
174
|
-
if (existing.builtIn)
|
|
175
|
-
return errorResponse('Cannot update built-in templates', 403);
|
|
176
|
-
const body = (await request.json());
|
|
177
|
-
const update = {};
|
|
178
|
-
if (body.name !== undefined)
|
|
179
|
-
update.name = body.name;
|
|
180
|
-
if (body.description !== undefined)
|
|
181
|
-
update.description = body.description;
|
|
182
|
-
if (body.thumbnail !== undefined)
|
|
183
|
-
update.thumbnail = body.thumbnail;
|
|
184
|
-
if (body.category !== undefined) {
|
|
185
|
-
const validCategories = ['landing', 'content', 'utility'];
|
|
186
|
-
if (!validCategories.includes(body.category)) {
|
|
187
|
-
return errorResponse('category must be landing, content, or utility', 400);
|
|
188
|
-
}
|
|
189
|
-
update.category = body.category;
|
|
190
|
-
}
|
|
191
|
-
if (body.tree !== undefined) {
|
|
192
|
-
const validation = validateTree(body.tree);
|
|
193
|
-
if (!validation.valid) {
|
|
194
|
-
return errorResponse(`Invalid tree: ${validation.errors.join('; ')}`, 400);
|
|
195
|
-
}
|
|
196
|
-
update.tree = body.tree;
|
|
197
|
-
}
|
|
198
|
-
const template = await d.pageTemplate.update({
|
|
199
|
-
where: { id: params.id },
|
|
200
|
-
data: update,
|
|
201
|
-
});
|
|
202
|
-
await logEvent({
|
|
203
|
-
event: 'settings_changed',
|
|
204
|
-
userId: auth.session.userId,
|
|
205
|
-
details: { action: 'page_template_updated', templateId: template.id, name: template.name },
|
|
206
|
-
});
|
|
207
|
-
return json({ data: template });
|
|
208
|
-
}
|
|
209
|
-
catch (err) {
|
|
210
|
-
return internalError(err, 'page-templates update');
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
router.delete('/page-templates/:id', async (request, params) => {
|
|
214
|
-
try {
|
|
215
|
-
const auth = await requireAuth(request);
|
|
216
|
-
if (auth.error)
|
|
217
|
-
return auth.error;
|
|
218
|
-
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
219
|
-
if (roleErr)
|
|
220
|
-
return roleErr;
|
|
221
|
-
const d = db();
|
|
222
|
-
if (!hasModel(d, 'pageTemplate'))
|
|
223
|
-
return modelNotAvailable('PageTemplate');
|
|
224
|
-
const existing = await d.pageTemplate.findUnique({ where: { id: params.id } });
|
|
225
|
-
if (!existing)
|
|
226
|
-
return errorResponse('Template not found', 404);
|
|
227
|
-
if (existing.builtIn)
|
|
228
|
-
return errorResponse('Cannot delete built-in templates', 403);
|
|
229
|
-
await d.pageTemplate.delete({ where: { id: params.id } });
|
|
230
|
-
await logEvent({
|
|
231
|
-
event: 'settings_changed',
|
|
232
|
-
userId: auth.session.userId,
|
|
233
|
-
details: { action: 'page_template_deleted', templateId: existing.id, name: existing.name },
|
|
234
|
-
});
|
|
235
|
-
return json({ data: { deleted: true } });
|
|
236
|
-
}
|
|
237
|
-
catch (err) {
|
|
238
|
-
return internalError(err, 'page-templates delete');
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
router.post('/page-templates/seed', async (request) => {
|
|
242
|
-
try {
|
|
243
|
-
const auth = await requireAuth(request);
|
|
244
|
-
if (auth.error)
|
|
245
|
-
return auth.error;
|
|
246
|
-
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
247
|
-
if (roleErr)
|
|
248
|
-
return roleErr;
|
|
249
|
-
const d = db();
|
|
250
|
-
if (!hasModel(d, 'pageTemplate'))
|
|
251
|
-
return modelNotAvailable('PageTemplate');
|
|
252
|
-
await seedBuiltInTemplates(d);
|
|
253
|
-
await logEvent({
|
|
254
|
-
event: 'settings_changed',
|
|
255
|
-
userId: auth.session.userId,
|
|
256
|
-
details: { action: 'page_templates_seeded' },
|
|
257
|
-
});
|
|
258
|
-
return json({ data: { seeded: Object.keys(BUILT_IN_TEMPLATES).length } });
|
|
259
|
-
}
|
|
260
|
-
catch (err) {
|
|
261
|
-
return internalError(err, 'page-templates seed');
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
//# sourceMappingURL=page-templates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"page-templates.js","sourceRoot":"","sources":["../../../src/api/routes/page-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { PageNode } from './types.js';
|
|
2
|
-
export interface A11yIssue {
|
|
3
|
-
id: string;
|
|
4
|
-
blockId: string;
|
|
5
|
-
type: 'missing-alt' | 'heading-skip' | 'missing-label' | 'missing-aria' | 'small-touch-target';
|
|
6
|
-
severity: 'error' | 'warning';
|
|
7
|
-
message: string;
|
|
8
|
-
autoFixable: boolean;
|
|
9
|
-
}
|
|
10
|
-
export interface A11yReport {
|
|
11
|
-
issues: A11yIssue[];
|
|
12
|
-
fixedCount: number;
|
|
13
|
-
remainingCount: number;
|
|
14
|
-
}
|
|
15
|
-
export declare function auditAccessibility(tree: PageNode): A11yIssue[];
|
|
16
|
-
export declare function fixAccessibility(tree: PageNode): {
|
|
17
|
-
tree: PageNode;
|
|
18
|
-
report: A11yReport;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=a11y-fix.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-fix.d.ts","sourceRoot":"","sources":["../../src/page-builder/a11y-fix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,YAAY,CAAA;AAKlE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,oBAAoB,CAAA;IAC9F,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;CACvB;AAgCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,CAqG9D;AAQD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAiEvF"}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { hasChildren } from './types.js';
|
|
2
|
-
// ─── Internal Helpers ────────────────────────────────────────────────
|
|
3
|
-
let issueCounter = 0;
|
|
4
|
-
function nextIssueId() {
|
|
5
|
-
return `a11y_${++issueCounter}`;
|
|
6
|
-
}
|
|
7
|
-
function collectBlocks(node, blocks) {
|
|
8
|
-
if (node.type === 'block') {
|
|
9
|
-
blocks.push(node);
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
if (hasChildren(node)) {
|
|
13
|
-
for (const child of node.children) {
|
|
14
|
-
collectBlocks(child, blocks);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function getHeadingLevel(block) {
|
|
19
|
-
if (block.settings.blockType !== 'text')
|
|
20
|
-
return null;
|
|
21
|
-
const level = block.data.headingLevel;
|
|
22
|
-
if (!level)
|
|
23
|
-
return null;
|
|
24
|
-
const match = /^h(\d)$/.exec(level);
|
|
25
|
-
return match ? parseInt(match[1], 10) : null;
|
|
26
|
-
}
|
|
27
|
-
// ─── Audit ───────────────────────────────────────────────────────────
|
|
28
|
-
export function auditAccessibility(tree) {
|
|
29
|
-
issueCounter = 0;
|
|
30
|
-
const blocks = [];
|
|
31
|
-
collectBlocks(tree, blocks);
|
|
32
|
-
const issues = [];
|
|
33
|
-
let lastHeadingLevel = 1;
|
|
34
|
-
for (const block of blocks) {
|
|
35
|
-
const blockType = block.settings.blockType;
|
|
36
|
-
if (blockType === 'image') {
|
|
37
|
-
if (!block.data.alt) {
|
|
38
|
-
issues.push({
|
|
39
|
-
id: nextIssueId(),
|
|
40
|
-
blockId: block.id,
|
|
41
|
-
type: 'missing-alt',
|
|
42
|
-
severity: 'error',
|
|
43
|
-
message: 'Image block is missing alt text',
|
|
44
|
-
autoFixable: false,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (blockType === 'hero') {
|
|
49
|
-
if (block.data.image && !block.data.imageAlt && !block.data.alt) {
|
|
50
|
-
issues.push({
|
|
51
|
-
id: nextIssueId(),
|
|
52
|
-
blockId: block.id,
|
|
53
|
-
type: 'missing-alt',
|
|
54
|
-
severity: 'error',
|
|
55
|
-
message: 'Hero block image is missing alt text',
|
|
56
|
-
autoFixable: false,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (blockType === 'gallery') {
|
|
61
|
-
const images = block.data.images;
|
|
62
|
-
if (images) {
|
|
63
|
-
for (const img of images) {
|
|
64
|
-
if (!img.alt) {
|
|
65
|
-
issues.push({
|
|
66
|
-
id: nextIssueId(),
|
|
67
|
-
blockId: block.id,
|
|
68
|
-
type: 'missing-alt',
|
|
69
|
-
severity: 'error',
|
|
70
|
-
message: 'Gallery image is missing alt text',
|
|
71
|
-
autoFixable: false,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (blockType === 'text') {
|
|
78
|
-
const level = getHeadingLevel(block);
|
|
79
|
-
if (level !== null) {
|
|
80
|
-
if (level > lastHeadingLevel + 1) {
|
|
81
|
-
issues.push({
|
|
82
|
-
id: nextIssueId(),
|
|
83
|
-
blockId: block.id,
|
|
84
|
-
type: 'heading-skip',
|
|
85
|
-
severity: 'warning',
|
|
86
|
-
message: `Heading level skips from h${lastHeadingLevel} to h${level}`,
|
|
87
|
-
autoFixable: true,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
lastHeadingLevel = level;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (blockType === 'form') {
|
|
94
|
-
if (!block.data.formId) {
|
|
95
|
-
issues.push({
|
|
96
|
-
id: nextIssueId(),
|
|
97
|
-
blockId: block.id,
|
|
98
|
-
type: 'missing-label',
|
|
99
|
-
severity: 'warning',
|
|
100
|
-
message: 'Form block is missing a linked form with field labels',
|
|
101
|
-
autoFixable: false,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (blockType === 'cta') {
|
|
106
|
-
const buttonText = block.data.buttonText;
|
|
107
|
-
if (!buttonText) {
|
|
108
|
-
issues.push({
|
|
109
|
-
id: nextIssueId(),
|
|
110
|
-
blockId: block.id,
|
|
111
|
-
type: 'missing-aria',
|
|
112
|
-
severity: 'warning',
|
|
113
|
-
message: 'CTA block is missing button text for aria-label',
|
|
114
|
-
autoFixable: true,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return issues;
|
|
120
|
-
}
|
|
121
|
-
// ─── Fix ─────────────────────────────────────────────────────────────
|
|
122
|
-
function deepClone(obj) {
|
|
123
|
-
return JSON.parse(JSON.stringify(obj));
|
|
124
|
-
}
|
|
125
|
-
export function fixAccessibility(tree) {
|
|
126
|
-
const fixedTree = deepClone(tree);
|
|
127
|
-
const blocks = [];
|
|
128
|
-
collectBlocks(fixedTree, blocks);
|
|
129
|
-
const issues = auditAccessibility(tree);
|
|
130
|
-
let fixedCount = 0;
|
|
131
|
-
let lastHeadingLevel = 1;
|
|
132
|
-
for (const block of blocks) {
|
|
133
|
-
const blockType = block.settings.blockType;
|
|
134
|
-
if (blockType === 'image' && !block.data.alt) {
|
|
135
|
-
block.data.alt = `Image in ${blockType} section`;
|
|
136
|
-
fixedCount++;
|
|
137
|
-
}
|
|
138
|
-
if (blockType === 'hero' && block.data.image && !block.data.imageAlt && !block.data.alt) {
|
|
139
|
-
block.data.alt = 'Image in hero section';
|
|
140
|
-
fixedCount++;
|
|
141
|
-
}
|
|
142
|
-
if (blockType === 'gallery') {
|
|
143
|
-
const images = block.data.images;
|
|
144
|
-
if (images) {
|
|
145
|
-
for (const img of images) {
|
|
146
|
-
if (!img.alt) {
|
|
147
|
-
img.alt = 'Image in gallery section';
|
|
148
|
-
fixedCount++;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (blockType === 'text') {
|
|
154
|
-
const level = getHeadingLevel(block);
|
|
155
|
-
if (level !== null) {
|
|
156
|
-
if (level > lastHeadingLevel + 1) {
|
|
157
|
-
const corrected = lastHeadingLevel + 1;
|
|
158
|
-
block.data.headingLevel = `h${corrected}`;
|
|
159
|
-
lastHeadingLevel = corrected;
|
|
160
|
-
fixedCount++;
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
lastHeadingLevel = level;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
if (blockType === 'cta' && !block.data.buttonText) {
|
|
168
|
-
block.data.ariaLabel = block.data.heading || 'Call to action';
|
|
169
|
-
fixedCount++;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
const remainingCount = issues.length - fixedCount;
|
|
173
|
-
return {
|
|
174
|
-
tree: fixedTree,
|
|
175
|
-
report: {
|
|
176
|
-
issues,
|
|
177
|
-
fixedCount,
|
|
178
|
-
remainingCount: remainingCount < 0 ? 0 : remainingCount,
|
|
179
|
-
},
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=a11y-fix.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-fix.js","sourceRoot":"","sources":["../../src/page-builder/a11y-fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { PageNode } from './types.js';
|
|
2
|
-
export type GenerationStep = 'structure' | 'content' | 'seo' | 'accessibility';
|
|
3
|
-
export interface GenerationContext {
|
|
4
|
-
prompt: string;
|
|
5
|
-
template?: string;
|
|
6
|
-
context?: {
|
|
7
|
-
businessName?: string;
|
|
8
|
-
phone?: string;
|
|
9
|
-
address?: string;
|
|
10
|
-
services?: string[];
|
|
11
|
-
industry?: string;
|
|
12
|
-
[key: string]: unknown;
|
|
13
|
-
};
|
|
14
|
-
steps: GenerationStep[];
|
|
15
|
-
tone?: 'professional' | 'casual' | 'friendly' | 'technical' | 'luxury';
|
|
16
|
-
}
|
|
17
|
-
export interface StepResult {
|
|
18
|
-
step: GenerationStep;
|
|
19
|
-
tree: PageNode;
|
|
20
|
-
metadata: {
|
|
21
|
-
tokensUsed: number;
|
|
22
|
-
durationMs: number;
|
|
23
|
-
changes: string[];
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
export interface GenerationResult {
|
|
27
|
-
tree: PageNode;
|
|
28
|
-
steps: StepResult[];
|
|
29
|
-
totalTokensUsed: number;
|
|
30
|
-
totalDurationMs: number;
|
|
31
|
-
}
|
|
32
|
-
export interface GenerationProgress {
|
|
33
|
-
currentStep: GenerationStep;
|
|
34
|
-
completedSteps: GenerationStep[];
|
|
35
|
-
totalSteps: number;
|
|
36
|
-
message: string;
|
|
37
|
-
}
|
|
38
|
-
export declare const PAGE_TREE_SCHEMA_REFERENCE: string;
|
|
39
|
-
export declare function buildStructurePrompt(ctx: GenerationContext, templateTree?: PageNode): string;
|
|
40
|
-
export declare function buildContentPrompt(ctx: GenerationContext, tree: PageNode): string;
|
|
41
|
-
export declare function buildSEOPrompt(ctx: GenerationContext, tree: PageNode): string;
|
|
42
|
-
export declare function buildAccessibilityPrompt(tree: PageNode): string;
|
|
43
|
-
//# sourceMappingURL=ai-pipeline.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-pipeline.d.ts","sourceRoot":"","sources":["../../src/page-builder/ai-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAI1C,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,SAAS,GAAG,KAAK,GAAG,eAAe,CAAA;AAE9E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;IACD,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAA;CACvE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,cAAc,CAAA;IAC3B,cAAc,EAAE,cAAc,EAAE,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,0BAA0B,QA4C/B,CAAA;AAuBR,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAyB5F;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAuBjF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyB7E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAmB/D"}
|