@commonpub/server 2.57.0 → 2.59.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/README.md +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/custom-page-validate.d.ts +41 -0
- package/dist/layout/custom-page-validate.d.ts.map +1 -0
- package/dist/layout/custom-page-validate.js +105 -0
- package/dist/layout/custom-page-validate.js.map +1 -0
- package/dist/layout/layout.d.ts +11 -1
- package/dist/layout/layout.d.ts.map +1 -1
- package/dist/layout/layout.js +74 -18
- package/dist/layout/layout.js.map +1 -1
- package/dist/layout/migrate-homepage.d.ts +32 -0
- package/dist/layout/migrate-homepage.d.ts.map +1 -0
- package/dist/layout/migrate-homepage.js +323 -0
- package/dist/layout/migrate-homepage.js.map +1 -0
- package/dist/layout/path-normalize.d.ts +49 -0
- package/dist/layout/path-normalize.d.ts.map +1 -0
- package/dist/layout/path-normalize.js +91 -0
- package/dist/layout/path-normalize.js.map +1 -0
- package/package.json +10 -6
package/README.md
CHANGED
|
@@ -43,6 +43,7 @@ const published = await getContentBySlug(db, 'my-project', userId, 'alice');
|
|
|
43
43
|
| `profile` | User profile updates |
|
|
44
44
|
| `security` | CSP builder, security headers |
|
|
45
45
|
| `oauthCodes` | Authorization code store with TTL |
|
|
46
|
+
| `layout` | Layout engine CRUD — `listLayouts`, `getLayoutByScope`, `getLayoutById`, `saveLayout` (transactional whole-layout replace), `deleteLayout`, `publishLayout` (snapshots into `layout_versions`), `listLayoutVersions`, `revertToVersion`, `seedHomepageLayout` (idempotent bootstrap), `migrateHomepageSectionsToLayout` (legacy JSON → layout row), `pathNormalize`, `validateCustomPageScope` |
|
|
46
47
|
|
|
47
48
|
## Dependencies
|
|
48
49
|
|
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,12 @@ export { listLayouts, getLayoutByScope, getLayoutById, saveLayout, deleteLayout,
|
|
|
35
35
|
export type { LayoutScope, LayoutInput, LayoutRecord, LayoutZone, LayoutZoneInput, LayoutRowInput, LayoutRowResolved, LayoutSectionInput, LayoutSectionResolved, LayoutVersionRecord, LayoutPageMeta, } from './layout/layout.js';
|
|
36
36
|
export { seedHomepageLayout } from './layout/seed.js';
|
|
37
37
|
export type { SeedHomepageResult } from './layout/seed.js';
|
|
38
|
+
export { migrateHomepageSectionsToLayout } from './layout/migrate-homepage.js';
|
|
39
|
+
export type { MigrateHomepageResult, MigrateHomepageOptions, MigrateHomepageReason, } from './layout/migrate-homepage.js';
|
|
40
|
+
export { pathNormalize, RESERVED_PREFIXES, RESERVED_EXACT } from './layout/path-normalize.js';
|
|
41
|
+
export type { NormalisePathResult, NormalisePathRejection, } from './layout/path-normalize.js';
|
|
42
|
+
export { validateCustomPageScope, FILE_ROUTE_PREFIXES } from './layout/custom-page-validate.js';
|
|
43
|
+
export type { CustomPageValidateResult, CustomPageRejectReason, ValidateCustomPageOptions, } from './layout/custom-page-validate.js';
|
|
38
44
|
export { getOrCreateActorKeypair, getOrCreateInstanceKeypair, buildInstanceActor, resolveRemoteActor, searchRemoteActor, getRemoteActorProfile, sendFollow, acceptFollow, rejectFollow, unfollowRemote, federateContent, federateUpdate, federateDelete, federateLike, federateUnlike, buildContentUri, resolveContentObjectUri, getContentSlugById, getFollowers, getFollowing, listFederationActivity, createInboxHandlers, deliverPendingActivities, listFederatedTimeline, getFederatedContent, likeRemoteContent, boostRemoteContent, federateReply, listRemoteReplies, incrementFederatedViewCount, searchFederatedContent, getHubActorUri, getOrCreateHubKeypair, buildHubGroupActor, handleHubFollow, handleHubUnfollow, getHubFederatedFollowers, federateHubActor, federateHubPost, federateHubShare, federateHubPostDelete, federateHubPostUpdate, federateHubPostLike, federateHubPostUnlike, federateHubPostReply, federateHubUpdate, sendPostToRemoteHub, getHubPostNoteUri, createMirror, activateMirror, pauseMirror, resumeMirror, cancelMirror, listMirrors, getMirror, type MirrorConfig, processAuthorize, processTokenExchange, registerOAuthClient, linkFederatedAccount, findUserByFederatedAccount, listOAuthClients, resolveRemoteHandle, federateDirectMessage, isFederatedHandle, processDynamicRegistration, storeOAuthState, consumeOAuthState, exchangeCodeForToken, createFederatedSession, storePendingLink, consumePendingLink, getStoredTrustedInstances, addTrustedInstance, removeTrustedInstance, isDomainTrusted, type AuthorizeResult, type TokenResult, type OAuthLoginState, type FederatedSessionResult, type PendingLinkData, type RemoteActorProfile, type FederatedContentItem, type FederatedTimelineOptions, repairFederatedContentTypes, type InboxHandlerOptions, type DeliveryResult, type DeliveryOptions, cleanupDeliveredActivities, backfillFromOutbox, type BackfillResult, countOutboxItems, countInstanceOutboxItems, getOutboxPage, getInstanceOutboxPage, countHubOutboxItems, getHubOutboxPage, isCircuitOpen, recordDeliverySuccess, recordDeliveryFailure, getDeliveryHealth, listFederatedHubs, getFederatedHub, getFederatedHubByActorUri, followRemoteHub, sendHubFollow, acceptHubFollow, unfollowRemoteHub, autoDiscoverHub, ingestFederatedHubPost, getFederatedHubPost, listFederatedHubPosts, listFederatedHubMembers, upsertFederatedHubMember, deleteFederatedHubPost, likeFederatedHubPost, unlikeFederatedHubPost, createFederatedHubPostReply, listFederatedHubPostReplies, backfillHubFromOutbox, fetchRemoteHubFollowers, repairFederatedHubPostActors, refreshFederatedHubMetadata, toggleFederatedHubPostLike, joinFederatedHub, getFederatedHubFollowStatus, getLikedFederatedHubPostIds, } from './federation/index.js';
|
|
39
45
|
export { storeAuthCode, consumeAuthCode, cleanupExpiredCodes } from './oauthCodes.js';
|
|
40
46
|
export { listContests, getContestBySlug, createContest, updateContest, listContestEntries, submitContestEntry, judgeContestEntry, deleteContest, transitionContestStatus, calculateContestRanks, withdrawContestEntry, } from './contest/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -35,6 +35,11 @@ export { resolveTheme, getCustomTokenOverrides, setUserTheme, listCustomThemes,
|
|
|
35
35
|
export { listLayouts, getLayoutByScope, getLayoutById, saveLayout, deleteLayout, publishLayout, listLayoutVersions, revertToVersion, } from './layout/layout.js';
|
|
36
36
|
// Layout engine — homepage seed helper (Phase 1c — session 158)
|
|
37
37
|
export { seedHomepageLayout } from './layout/seed.js';
|
|
38
|
+
// Layout engine — legacy homepage migration (Phase 1c — session 159)
|
|
39
|
+
export { migrateHomepageSectionsToLayout } from './layout/migrate-homepage.js';
|
|
40
|
+
// Layout engine — custom-page Phase 2 (path normalisation + scope validation)
|
|
41
|
+
export { pathNormalize, RESERVED_PREFIXES, RESERVED_EXACT } from './layout/path-normalize.js';
|
|
42
|
+
export { validateCustomPageScope, FILE_ROUTE_PREFIXES } from './layout/custom-page-validate.js';
|
|
38
43
|
// Federation
|
|
39
44
|
export { getOrCreateActorKeypair, getOrCreateInstanceKeypair, buildInstanceActor, resolveRemoteActor, searchRemoteActor, getRemoteActorProfile, sendFollow, acceptFollow, rejectFollow, unfollowRemote, federateContent, federateUpdate, federateDelete, federateLike, federateUnlike, buildContentUri, resolveContentObjectUri, getContentSlugById, getFollowers, getFollowing, listFederationActivity, createInboxHandlers, deliverPendingActivities, listFederatedTimeline, getFederatedContent, likeRemoteContent, boostRemoteContent, federateReply, listRemoteReplies, incrementFederatedViewCount, searchFederatedContent, getHubActorUri, getOrCreateHubKeypair, buildHubGroupActor, handleHubFollow, handleHubUnfollow, getHubFederatedFollowers, federateHubActor, federateHubPost, federateHubShare, federateHubPostDelete, federateHubPostUpdate, federateHubPostLike, federateHubPostUnlike, federateHubPostReply, federateHubUpdate, sendPostToRemoteHub, getHubPostNoteUri, createMirror, activateMirror, pauseMirror, resumeMirror, cancelMirror, listMirrors, getMirror, processAuthorize, processTokenExchange, registerOAuthClient, linkFederatedAccount, findUserByFederatedAccount, listOAuthClients, resolveRemoteHandle, federateDirectMessage, isFederatedHandle, processDynamicRegistration, storeOAuthState, consumeOAuthState, exchangeCodeForToken, createFederatedSession, storePendingLink, consumePendingLink, getStoredTrustedInstances, addTrustedInstance, removeTrustedInstance, isDomainTrusted, repairFederatedContentTypes, cleanupDeliveredActivities, backfillFromOutbox, countOutboxItems, countInstanceOutboxItems, getOutboxPage, getInstanceOutboxPage, countHubOutboxItems, getHubOutboxPage, isCircuitOpen, recordDeliverySuccess, recordDeliveryFailure, getDeliveryHealth,
|
|
40
45
|
// Hub mirroring
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type NormalisePathRejection } from './path-normalize.js';
|
|
2
|
+
import type { LayoutScope } from './layout.js';
|
|
3
|
+
import type { DB } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Top-level path segments owned by file-defined routes in the layer.
|
|
6
|
+
* Generated from `ls layers/base/pages/` (session 159), trimmed to the
|
|
7
|
+
* names that occupy URL space (not the dynamic segments like `[type]`
|
|
8
|
+
* or the catch-all `[...customPath]`).
|
|
9
|
+
*
|
|
10
|
+
* **A custom page CANNOT claim any path that starts with one of these.**
|
|
11
|
+
* A thin app that ADDS new pages should add their top-level segment
|
|
12
|
+
* here too — Phase 3's startup scanner will obsolete this list.
|
|
13
|
+
*/
|
|
14
|
+
export declare const FILE_ROUTE_PREFIXES: ReadonlySet<string>;
|
|
15
|
+
export type CustomPageRejectReason = NormalisePathRejection | 'file-route-conflict' | 'custom-page-already-exists';
|
|
16
|
+
export type CustomPageValidateResult = {
|
|
17
|
+
ok: true;
|
|
18
|
+
scope: Extract<LayoutScope, {
|
|
19
|
+
type: 'custom-page';
|
|
20
|
+
}>;
|
|
21
|
+
} | {
|
|
22
|
+
ok: false;
|
|
23
|
+
reason: CustomPageRejectReason;
|
|
24
|
+
message: string;
|
|
25
|
+
};
|
|
26
|
+
export interface ValidateCustomPageOptions {
|
|
27
|
+
/**
|
|
28
|
+
* Layout id being updated. If provided, an existing layout at the
|
|
29
|
+
* same path with this id passes (the admin is editing the page they
|
|
30
|
+
* already own); otherwise the duplicate check fires. Omit for
|
|
31
|
+
* create-mode.
|
|
32
|
+
*/
|
|
33
|
+
excludeLayoutId?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Override the file-routes manifest. Tests + thin apps can inject a
|
|
36
|
+
* specific list; default is `FILE_ROUTE_PREFIXES`.
|
|
37
|
+
*/
|
|
38
|
+
fileRoutePrefixes?: ReadonlySet<string>;
|
|
39
|
+
}
|
|
40
|
+
export declare function validateCustomPageScope(db: DB, rawPath: unknown, opts?: ValidateCustomPageOptions): Promise<CustomPageValidateResult>;
|
|
41
|
+
//# sourceMappingURL=custom-page-validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-page-validate.d.ts","sourceRoot":"","sources":["../../src/layout/custom-page-validate.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CA6BlD,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,qBAAqB,GACrB,4BAA4B,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;CAAE,GAClE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CA6CnC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom-page scope validation — conflict detection.
|
|
3
|
+
*
|
|
4
|
+
* Spec: docs/plans/layout-and-pages.md §6.2.
|
|
5
|
+
*
|
|
6
|
+
* Called from the admin save handler BEFORE saveLayout(). Three checks:
|
|
7
|
+
* 1. Path normalises cleanly (delegates to pathNormalize)
|
|
8
|
+
* 2. Path doesn't collide with a file-defined Nuxt route
|
|
9
|
+
* 3. Path doesn't collide with another custom-page layout
|
|
10
|
+
*
|
|
11
|
+
* Returns `{ok:true, normalisedScope}` or `{ok:false, reason, message}`.
|
|
12
|
+
* Admin handler maps reasons to HTTP status codes (400 for malformed,
|
|
13
|
+
* 409 for collision).
|
|
14
|
+
*
|
|
15
|
+
* **File-routes manifest**: Phase 2 ships a hardcoded list of the
|
|
16
|
+
* layer's known top-level route names. Phase 3 will replace with a
|
|
17
|
+
* Nitro plugin that scans Nuxt's compiled route table at startup +
|
|
18
|
+
* publishes via event.context. The hardcoded list is the conservative
|
|
19
|
+
* floor — a custom page can't claim any of these top-level segments
|
|
20
|
+
* even if the consumer app removes one (avoids surprise breaks for
|
|
21
|
+
* thin apps that re-add the route in a future bump).
|
|
22
|
+
*/
|
|
23
|
+
import { sql } from 'drizzle-orm';
|
|
24
|
+
import { pathNormalize } from './path-normalize.js';
|
|
25
|
+
/**
|
|
26
|
+
* Top-level path segments owned by file-defined routes in the layer.
|
|
27
|
+
* Generated from `ls layers/base/pages/` (session 159), trimmed to the
|
|
28
|
+
* names that occupy URL space (not the dynamic segments like `[type]`
|
|
29
|
+
* or the catch-all `[...customPath]`).
|
|
30
|
+
*
|
|
31
|
+
* **A custom page CANNOT claim any path that starts with one of these.**
|
|
32
|
+
* A thin app that ADDS new pages should add their top-level segment
|
|
33
|
+
* here too — Phase 3's startup scanner will obsolete this list.
|
|
34
|
+
*/
|
|
35
|
+
export const FILE_ROUTE_PREFIXES = new Set([
|
|
36
|
+
'about',
|
|
37
|
+
'admin',
|
|
38
|
+
'auth',
|
|
39
|
+
'authorize_interaction',
|
|
40
|
+
'cert',
|
|
41
|
+
'contests',
|
|
42
|
+
'cookies',
|
|
43
|
+
'create',
|
|
44
|
+
'dashboard',
|
|
45
|
+
'docs',
|
|
46
|
+
'events',
|
|
47
|
+
'explore',
|
|
48
|
+
'federated-hubs',
|
|
49
|
+
'federation',
|
|
50
|
+
'feed',
|
|
51
|
+
'hubs',
|
|
52
|
+
'learn',
|
|
53
|
+
'messages',
|
|
54
|
+
'mirror',
|
|
55
|
+
'notifications',
|
|
56
|
+
'privacy',
|
|
57
|
+
'products',
|
|
58
|
+
'search',
|
|
59
|
+
'settings',
|
|
60
|
+
'tags',
|
|
61
|
+
'terms',
|
|
62
|
+
'u',
|
|
63
|
+
'videos',
|
|
64
|
+
]);
|
|
65
|
+
export async function validateCustomPageScope(db, rawPath, opts = {}) {
|
|
66
|
+
// 1. Normalise
|
|
67
|
+
const norm = pathNormalize(rawPath);
|
|
68
|
+
if (!norm.ok) {
|
|
69
|
+
return {
|
|
70
|
+
ok: false,
|
|
71
|
+
reason: norm.reason,
|
|
72
|
+
message: `Invalid custom-page path: ${norm.reason}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// 2. File-route conflict — check the first segment
|
|
76
|
+
const prefixes = opts.fileRoutePrefixes ?? FILE_ROUTE_PREFIXES;
|
|
77
|
+
const topSegment = norm.path.slice(1).split('/')[0];
|
|
78
|
+
if (topSegment && prefixes.has(topSegment)) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
reason: 'file-route-conflict',
|
|
82
|
+
message: `Path /${topSegment} is owned by a built-in route; custom pages can't override it`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// 3. Existing custom-page at this path — raw query against the layouts
|
|
86
|
+
// table since this is a read-only validation that doesn't fit the
|
|
87
|
+
// full saveLayout payload shape.
|
|
88
|
+
const existing = await db.execute(sql `SELECT id FROM layouts WHERE scope_type = 'custom-page' AND scope_key = ${norm.path} LIMIT 1`);
|
|
89
|
+
const rows = Array.isArray(existing) ? existing :
|
|
90
|
+
Array.isArray(existing.rows) ? existing.rows :
|
|
91
|
+
[];
|
|
92
|
+
const conflicting = rows[0];
|
|
93
|
+
if (conflicting && conflicting.id !== opts.excludeLayoutId) {
|
|
94
|
+
return {
|
|
95
|
+
ok: false,
|
|
96
|
+
reason: 'custom-page-already-exists',
|
|
97
|
+
message: `A custom page at ${norm.path} already exists`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
ok: true,
|
|
102
|
+
scope: { type: 'custom-page', path: norm.path },
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=custom-page-validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-page-validate.js","sourceRoot":"","sources":["../../src/layout/custom-page-validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,aAAa,EAA+B,MAAM,qBAAqB,CAAC;AAIjF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IAC9D,OAAO;IACP,OAAO;IACP,MAAM;IACN,uBAAuB;IACvB,MAAM;IACN,UAAU;IACV,SAAS;IACT,QAAQ;IACR,WAAW;IACX,MAAM;IACN,QAAQ;IACR,SAAS;IACT,gBAAgB;IAChB,YAAY;IACZ,MAAM;IACN,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,eAAe;IACf,SAAS;IACT,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,OAAO;IACP,GAAG;IACH,QAAQ;CACT,CAAC,CAAC;AA0BH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,EAAM,EACN,OAAgB,EAChB,OAAkC,EAAE;IAEpC,eAAe;IACf,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,6BAA6B,IAAI,CAAC,MAAM,EAAE;SACpD,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,IAAI,mBAAmB,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,SAAS,UAAU,+DAA+D;SAC5F,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,qEAAqE;IACrE,oCAAoC;IACpC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAC/B,GAAG,CAAA,2EAA2E,IAAI,CAAC,IAAI,UAAU,CAClG,CAAC;IACF,MAAM,IAAI,GACR,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpC,KAAK,CAAC,OAAO,CAAE,QAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,QAA4C,CAAC,IAAI,CAAC,CAAC;YAC7G,EAAE,CAAC;IACL,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,WAAW,IAAI,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,4BAA4B;YACpC,OAAO,EAAE,oBAAoB,IAAI,CAAC,IAAI,iBAAiB;SACxD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;KAChD,CAAC;AACJ,CAAC"}
|
package/dist/layout/layout.d.ts
CHANGED
|
@@ -108,7 +108,17 @@ export interface LayoutVersionRecord {
|
|
|
108
108
|
export declare function getLayoutByScope(db: DB, scope: LayoutScope): Promise<LayoutRecord | null>;
|
|
109
109
|
/** Fetch a layout by its uuid. */
|
|
110
110
|
export declare function getLayoutById(db: DB, id: string): Promise<LayoutRecord | null>;
|
|
111
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* List all layouts, optionally filtered by scope type.
|
|
113
|
+
*
|
|
114
|
+
* Session 162 P2.2 — used to be 1 + 2N queries (one assembleLayout per
|
|
115
|
+
* layout, each making 2 child selects). For an instance with 50
|
|
116
|
+
* layouts that was 101 round-trips per list-page render. Now a flat
|
|
117
|
+
* 3 queries regardless of N: layouts → rows IN (layoutIds) → sections
|
|
118
|
+
* IN (rowIds), assembled in memory. Per-layout invariants preserved
|
|
119
|
+
* (cross-layout sort by scopeType/scopeKey, zone-stable row order,
|
|
120
|
+
* position-stable section order).
|
|
121
|
+
*/
|
|
112
122
|
export declare function listLayouts(db: DB, opts?: {
|
|
113
123
|
scopeType?: 'route' | 'virtual' | 'custom-page';
|
|
114
124
|
}): Promise<LayoutRecord[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/layout/layout.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/layout/layout.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAItC,uEAAuE;AACvE,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,CAAC;CAC9F;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;KACjC,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAClC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;QACvC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KAC/C,CAAC;IACF,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IACpD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAoCD,wFAAwF;AACxF,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQ/F;AAED,kCAAkC;AAClC,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAIpF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,EAAE,EACN,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,CAAA;CAAO,GAC7D,OAAO,CAAC,YAAY,EAAE,CAAC,CAuCzB;AA8ED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,YAAY,CAAC,CAqIvB;AAED,2EAA2E;AAC3E,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAID;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,MAAM,EACV,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,mBAAmB,CAAC,CAoC9B;AAED,gDAAgD;AAChD,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAejG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,OAAO,CAAC,YAAY,CAAC,CAwCvB"}
|
package/dist/layout/layout.js
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* `invalidateLayoutCache()` after any write — see `instanceLayouts.ts`
|
|
26
26
|
* in `layers/base/server/utils/` (next phase).
|
|
27
27
|
*/
|
|
28
|
-
import { and, asc, desc, eq } from 'drizzle-orm';
|
|
28
|
+
import { and, asc, desc, eq, inArray } from 'drizzle-orm';
|
|
29
29
|
import { layouts, layoutRows, layoutSections, layoutVersions, } from '@commonpub/schema';
|
|
30
30
|
// ---- Helpers ------------------------------------------------------------
|
|
31
31
|
function unpackScope(scopeType, scopeKey) {
|
|
@@ -75,36 +75,92 @@ export async function getLayoutById(db, id) {
|
|
|
75
75
|
return null;
|
|
76
76
|
return assembleLayout(db, row);
|
|
77
77
|
}
|
|
78
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* List all layouts, optionally filtered by scope type.
|
|
80
|
+
*
|
|
81
|
+
* Session 162 P2.2 — used to be 1 + 2N queries (one assembleLayout per
|
|
82
|
+
* layout, each making 2 child selects). For an instance with 50
|
|
83
|
+
* layouts that was 101 round-trips per list-page render. Now a flat
|
|
84
|
+
* 3 queries regardless of N: layouts → rows IN (layoutIds) → sections
|
|
85
|
+
* IN (rowIds), assembled in memory. Per-layout invariants preserved
|
|
86
|
+
* (cross-layout sort by scopeType/scopeKey, zone-stable row order,
|
|
87
|
+
* position-stable section order).
|
|
88
|
+
*/
|
|
79
89
|
export async function listLayouts(db, opts = {}) {
|
|
80
|
-
const
|
|
90
|
+
const layoutRowsTop = opts.scopeType
|
|
81
91
|
? await db.select().from(layouts).where(eq(layouts.scopeType, opts.scopeType))
|
|
82
92
|
: await db.select().from(layouts);
|
|
83
|
-
|
|
93
|
+
if (layoutRowsTop.length === 0)
|
|
94
|
+
return [];
|
|
95
|
+
const layoutIds = layoutRowsTop.map((l) => l.id);
|
|
96
|
+
const allRowsForAllLayouts = await db
|
|
97
|
+
.select()
|
|
98
|
+
.from(layoutRows)
|
|
99
|
+
.where(inArray(layoutRows.layoutId, layoutIds))
|
|
100
|
+
.orderBy(asc(layoutRows.zone), asc(layoutRows.position));
|
|
101
|
+
const allRowIds = allRowsForAllLayouts.map((r) => r.id);
|
|
102
|
+
const allSections = allRowIds.length > 0
|
|
103
|
+
? await db
|
|
104
|
+
.select()
|
|
105
|
+
.from(layoutSections)
|
|
106
|
+
.where(inArray(layoutSections.rowId, allRowIds))
|
|
107
|
+
.orderBy(asc(layoutSections.position))
|
|
108
|
+
: [];
|
|
109
|
+
// Bucket child rows by parent id once. assembleFromParts does no I/O.
|
|
110
|
+
const rowsByLayoutId = new Map();
|
|
111
|
+
for (const r of allRowsForAllLayouts) {
|
|
112
|
+
const arr = rowsByLayoutId.get(r.layoutId) ?? [];
|
|
113
|
+
arr.push(r);
|
|
114
|
+
rowsByLayoutId.set(r.layoutId, arr);
|
|
115
|
+
}
|
|
116
|
+
const sectionsByRowId = new Map();
|
|
117
|
+
for (const s of allSections) {
|
|
118
|
+
const arr = sectionsByRowId.get(s.rowId) ?? [];
|
|
119
|
+
arr.push(s);
|
|
120
|
+
sectionsByRowId.set(s.rowId, arr);
|
|
121
|
+
}
|
|
122
|
+
return layoutRowsTop.map((l) => assembleFromParts(l, rowsByLayoutId.get(l.id) ?? [], sectionsByRowId));
|
|
84
123
|
}
|
|
85
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* Inner helper: take a layout-table row + fetch its rows + sections,
|
|
126
|
+
* return assembled record. Used by single-record reads (getLayoutByScope,
|
|
127
|
+
* getLayoutById, publishLayout). List reads use assembleFromParts directly
|
|
128
|
+
* to avoid the N+1.
|
|
129
|
+
*/
|
|
86
130
|
async function assembleLayout(db, row) {
|
|
87
131
|
const rowsForLayout = await db
|
|
88
132
|
.select()
|
|
89
133
|
.from(layoutRows)
|
|
90
134
|
.where(eq(layoutRows.layoutId, row.id))
|
|
91
135
|
.orderBy(asc(layoutRows.zone), asc(layoutRows.position));
|
|
136
|
+
// R4 audit fix (P0-perf): WHERE clause on rowId. Without it Drizzle
|
|
137
|
+
// ran SELECT * FROM layout_sections (no filter) on every layout fetch
|
|
138
|
+
// — full table scan on the by-route hot path. The idx_layout_sections_row
|
|
139
|
+
// index is now actually used by this query.
|
|
92
140
|
const sectionRowIds = rowsForLayout.map((r) => r.id);
|
|
93
141
|
const allSections = sectionRowIds.length > 0
|
|
94
142
|
? await db
|
|
95
143
|
.select()
|
|
96
144
|
.from(layoutSections)
|
|
145
|
+
.where(inArray(layoutSections.rowId, sectionRowIds))
|
|
97
146
|
.orderBy(asc(layoutSections.position))
|
|
98
147
|
: [];
|
|
99
148
|
const sectionsByRow = new Map();
|
|
100
149
|
for (const s of allSections) {
|
|
101
|
-
if (!sectionRowIds.includes(s.rowId))
|
|
102
|
-
continue;
|
|
103
150
|
const arr = sectionsByRow.get(s.rowId) ?? [];
|
|
104
|
-
arr.push(
|
|
151
|
+
arr.push(s);
|
|
105
152
|
sectionsByRow.set(s.rowId, arr);
|
|
106
153
|
}
|
|
107
|
-
|
|
154
|
+
return assembleFromParts(row, rowsForLayout, sectionsByRow);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Pure assembler: given a layout row + its pre-fetched child rows +
|
|
158
|
+
* sections keyed by rowId, produce the resolved LayoutRecord. No I/O.
|
|
159
|
+
* Lets listLayouts batch fetch once and assemble N records without
|
|
160
|
+
* re-querying per record.
|
|
161
|
+
*/
|
|
162
|
+
function assembleFromParts(layout, rowsForLayout, sectionsByRowId) {
|
|
163
|
+
// Group rows by zone preserving order (already ordered by zone, position).
|
|
108
164
|
const zoneMap = new Map();
|
|
109
165
|
for (const r of rowsForLayout) {
|
|
110
166
|
const list = zoneMap.get(r.zone) ?? [];
|
|
@@ -112,21 +168,21 @@ async function assembleLayout(db, row) {
|
|
|
112
168
|
id: r.id,
|
|
113
169
|
order: r.position,
|
|
114
170
|
config: (r.config ?? null),
|
|
115
|
-
sections:
|
|
171
|
+
sections: (sectionsByRowId.get(r.id) ?? []).map(rowToSection),
|
|
116
172
|
});
|
|
117
173
|
zoneMap.set(r.zone, list);
|
|
118
174
|
}
|
|
119
175
|
const zones = [...zoneMap.entries()].map(([zone, rs]) => ({ zone, rows: rs }));
|
|
120
176
|
return {
|
|
121
|
-
id:
|
|
122
|
-
scope: unpackScope(
|
|
123
|
-
name:
|
|
124
|
-
pageMeta: (
|
|
125
|
-
state:
|
|
126
|
-
publishedVersionId:
|
|
177
|
+
id: layout.id,
|
|
178
|
+
scope: unpackScope(layout.scopeType, layout.scopeKey),
|
|
179
|
+
name: layout.name,
|
|
180
|
+
pageMeta: (layout.pageMeta ?? null),
|
|
181
|
+
state: layout.state,
|
|
182
|
+
publishedVersionId: layout.publishedVersionId,
|
|
127
183
|
zones,
|
|
128
|
-
createdAt:
|
|
129
|
-
updatedAt:
|
|
184
|
+
createdAt: layout.createdAt.toISOString(),
|
|
185
|
+
updatedAt: layout.updatedAt.toISOString(),
|
|
130
186
|
};
|
|
131
187
|
}
|
|
132
188
|
// ---- Writes -------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/layout/layout.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/layout/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { DB } from '../types.js';
|
|
2
|
+
export type MigrateHomepageReason = 'no-legacy-data' | 'layout-already-exists' | 'no-enabled-sections';
|
|
3
|
+
export interface MigrateHomepageResult {
|
|
4
|
+
/** True if a new layout was created from the legacy sections. */
|
|
5
|
+
migrated: boolean;
|
|
6
|
+
/** Layout id (existing or newly created). Absent only when no layout exists in either state. */
|
|
7
|
+
layoutId?: string;
|
|
8
|
+
/** Number of legacy sections converted to layout sections. */
|
|
9
|
+
sectionsConverted: number;
|
|
10
|
+
/** Number of legacy sections that were skipped (disabled, unknown type). */
|
|
11
|
+
sectionsSkipped: number;
|
|
12
|
+
/** Per-skip reasons keyed by legacy section id (for operator audit). */
|
|
13
|
+
skipReasons?: Record<string, 'disabled' | 'unknown-type'>;
|
|
14
|
+
/** Reason for not migrating (set when `migrated: false`). */
|
|
15
|
+
reason?: MigrateHomepageReason;
|
|
16
|
+
}
|
|
17
|
+
export interface MigrateHomepageOptions {
|
|
18
|
+
/** User id to attribute creation + publish to (set in createdBy/publishedBy). */
|
|
19
|
+
adminId?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Replace an existing layout at `('route','/')` instead of skipping.
|
|
22
|
+
* Used by admin UI's "re-run migration" affordance. Cascades through
|
|
23
|
+
* rows + sections + versions per `deleteLayout`'s FK behavior.
|
|
24
|
+
*/
|
|
25
|
+
force?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read `instance_settings.homepage.sections`, convert to a layout row,
|
|
29
|
+
* save + publish. See module header for behavior contract.
|
|
30
|
+
*/
|
|
31
|
+
export declare function migrateHomepageSectionsToLayout(db: DB, opts?: MigrateHomepageOptions): Promise<MigrateHomepageResult>;
|
|
32
|
+
//# sourceMappingURL=migrate-homepage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-homepage.d.ts","sourceRoot":"","sources":["../../src/layout/migrate-homepage.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAItC,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,QAAQ,EAAE,OAAO,CAAC;IAClB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC;IAC1D,6DAA6D;IAC7D,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAmLD;;;GAGG;AACH,wBAAsB,+BAA+B,CACnD,EAAE,EAAE,EAAE,EACN,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,qBAAqB,CAAC,CAuJhC"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legacy homepage migration — converts the configurable
|
|
3
|
+
* `instance_settings.homepage.sections` JSON into a real layout row.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists (vs. the simpler `seedHomepageLayout` from session 158):
|
|
6
|
+
* - `seedHomepageLayout` creates a stub layout (hero + content-feed only).
|
|
7
|
+
* Useful for fresh instances bootstrapping the layout engine; not
|
|
8
|
+
* useful for established instances that have customised
|
|
9
|
+
* `homepage.sections` with 5–10 sections.
|
|
10
|
+
* - This function reads the operator's existing customisation and
|
|
11
|
+
* produces a layout row that matches the rendered legacy homepage
|
|
12
|
+
* 1-for-1: same sections, same zones, same order.
|
|
13
|
+
* - Once successful, flipping `features.layoutEngine: true` becomes
|
|
14
|
+
* a no-visible-change operation. That's the canary contract.
|
|
15
|
+
*
|
|
16
|
+
* Zone mapping mirrors `HomepageSectionRenderer.vue` (the legacy
|
|
17
|
+
* dispatcher) exactly:
|
|
18
|
+
* - FULL_WIDTH = {hero}
|
|
19
|
+
* - SIDEBAR = {stats, contests, hubs}
|
|
20
|
+
* - MAIN = everything else
|
|
21
|
+
*
|
|
22
|
+
* Type mapping for type-renames (Phase 6b will collapse these aliases):
|
|
23
|
+
* - `content-grid` → `content-feed` (same query shape)
|
|
24
|
+
* - `content-carousel` → `content-feed` (no carousel section yet)
|
|
25
|
+
* - All other types map 1:1 (hero, editorial, contests, hubs, stats,
|
|
26
|
+
* learning, custom-html)
|
|
27
|
+
*
|
|
28
|
+
* Visibility:
|
|
29
|
+
* - Per-section `visibility.features` set for types that have a
|
|
30
|
+
* feature-flag gate. This makes a placed `contests` section hide
|
|
31
|
+
* entirely when `features.contests` is off (LayoutSlot honours it),
|
|
32
|
+
* matching the legacy `isFeatureEnabled(featureGate)` skip in
|
|
33
|
+
* `HomepageSectionRenderer.vue:42`.
|
|
34
|
+
*
|
|
35
|
+
* Idempotent: by default, returns `{migrated:false, reason:
|
|
36
|
+
* 'layout-already-exists', layoutId}` when a layout already exists at
|
|
37
|
+
* scope `('route', '/')`. Pass `force: true` to replace it (an admin
|
|
38
|
+
* UI "re-run migration" affordance would set this).
|
|
39
|
+
*/
|
|
40
|
+
import { sql } from 'drizzle-orm';
|
|
41
|
+
import { saveLayout, publishLayout, getLayoutByScope } from './layout.js';
|
|
42
|
+
// ---- Mapping tables -----------------------------------------------------
|
|
43
|
+
/** Legacy type slug → registered section type slug. */
|
|
44
|
+
const TYPE_MAP = {
|
|
45
|
+
hero: 'hero',
|
|
46
|
+
editorial: 'editorial',
|
|
47
|
+
'content-grid': 'content-feed', // shape-equivalent
|
|
48
|
+
'content-carousel': 'content-feed', // no carousel section yet — degrade
|
|
49
|
+
contests: 'contests',
|
|
50
|
+
hubs: 'hubs',
|
|
51
|
+
learning: 'learning',
|
|
52
|
+
stats: 'stats',
|
|
53
|
+
'custom-html': 'custom-html',
|
|
54
|
+
};
|
|
55
|
+
/** Section types that go in the full-width zone (above the 2-col split). */
|
|
56
|
+
const FULL_WIDTH_TYPES = new Set(['hero']);
|
|
57
|
+
/** Section types that go in the sidebar zone. */
|
|
58
|
+
const SIDEBAR_TYPES = new Set(['stats', 'contests', 'hubs']);
|
|
59
|
+
/** Feature flags each type requires to render. Empty = no gate. */
|
|
60
|
+
const REQUIRED_FEATURES = {
|
|
61
|
+
contests: ['contests'],
|
|
62
|
+
hubs: ['hubs'],
|
|
63
|
+
learning: ['learning'],
|
|
64
|
+
};
|
|
65
|
+
// ---- Per-type config mappers ---------------------------------------------
|
|
66
|
+
/**
|
|
67
|
+
* Build a registered section's config from a legacy section. Each new
|
|
68
|
+
* section type has a default-filled config; we lay the legacy values on
|
|
69
|
+
* top, dropping unknown keys.
|
|
70
|
+
*
|
|
71
|
+
* The legacy `title` field (top-level) maps to the new `config.heading`.
|
|
72
|
+
* Legacy `featureGate` lives inside `config` and is read separately for
|
|
73
|
+
* the visibility wiring — not copied into the new config.
|
|
74
|
+
*/
|
|
75
|
+
function buildConfig(newType, legacy) {
|
|
76
|
+
const legacyConfig = legacy.config ?? {};
|
|
77
|
+
const heading = legacy.title ?? '';
|
|
78
|
+
switch (newType) {
|
|
79
|
+
case 'hero': {
|
|
80
|
+
// **Important**: legacy `homepage.sections[].title` is the EDITOR
|
|
81
|
+
// DISPLAY NAME shown in admin UI ("Hero Banner") — NOT the user-
|
|
82
|
+
// facing content. The actual legacy hero copy was hardcoded in
|
|
83
|
+
// `layers/base/components/homepage/HeroSection.vue`:
|
|
84
|
+
//
|
|
85
|
+
// eyebrow: "Open Source" badge
|
|
86
|
+
// title: "Build. Document. Share."
|
|
87
|
+
// subtitle: "CommonPub is an open platform for maker communities..."
|
|
88
|
+
// CTAs: "Start Building" → /create, "Explore" → /explore
|
|
89
|
+
//
|
|
90
|
+
// When the legacy hero only set `variant: 'default'` (which is
|
|
91
|
+
// common — most operators never customised because the legacy
|
|
92
|
+
// editor didn't expose these fields), copying `legacy.title` into
|
|
93
|
+
// `new.config.title` gives the user a hero that says literally
|
|
94
|
+
// "Hero Banner" on the live page. That's the session-159 canary
|
|
95
|
+
// bug.
|
|
96
|
+
//
|
|
97
|
+
// Fix: prefer legacyConfig.title/subtitle/etc if explicitly set;
|
|
98
|
+
// otherwise fall through to the canonical hardcoded defaults that
|
|
99
|
+
// match what the legacy HeroSection.vue rendered. legacy.title
|
|
100
|
+
// (the display name) is intentionally IGNORED for these fields.
|
|
101
|
+
// Legacy admin editor exposes `customTitle`/`customSubtitle` fields
|
|
102
|
+
// (per layers/base/server/api/admin/homepage/sections.put.ts schema);
|
|
103
|
+
// some operator workflows write directly as `title`/`subtitle`. Check
|
|
104
|
+
// both naming conventions before falling through to defaults.
|
|
105
|
+
const legacyTitle = (legacyConfig.customTitle ?? legacyConfig.title);
|
|
106
|
+
const legacySubtitle = (legacyConfig.customSubtitle ?? legacyConfig.subtitle);
|
|
107
|
+
const legacyEyebrow = legacyConfig.eyebrow;
|
|
108
|
+
// Field NAMES match hero section's configSchema (Stage E.4): the
|
|
109
|
+
// unified hero uses customTitle/customSubtitle (mirrors the legacy
|
|
110
|
+
// admin form's field names), not title/subtitle. ctas optional.
|
|
111
|
+
const hasLegacyContent = !!(legacyTitle || legacySubtitle || legacyEyebrow);
|
|
112
|
+
if (hasLegacyContent) {
|
|
113
|
+
return {
|
|
114
|
+
variant: legacyConfig.variant ?? 'default',
|
|
115
|
+
customTitle: legacyTitle ?? '',
|
|
116
|
+
customSubtitle: legacySubtitle ?? '',
|
|
117
|
+
ctas: Array.isArray(legacyConfig.ctas) ? legacyConfig.ctas : [],
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// No legacy customisation — produce an empty config; HeroSection
|
|
121
|
+
// applies its hardcoded "Build. Document. Share." defaults when
|
|
122
|
+
// customTitle/Subtitle are empty (Stage E hero extension).
|
|
123
|
+
return {
|
|
124
|
+
variant: legacyConfig.variant ?? 'default',
|
|
125
|
+
customTitle: '',
|
|
126
|
+
customSubtitle: '',
|
|
127
|
+
ctas: [],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
case 'editorial':
|
|
131
|
+
return {
|
|
132
|
+
heading: heading || 'Staff Picks',
|
|
133
|
+
limit: clamp(legacyConfig.limit ?? 3, 1, 12),
|
|
134
|
+
columns: clampToColumns(legacyConfig.columns ?? 3),
|
|
135
|
+
};
|
|
136
|
+
case 'content-feed':
|
|
137
|
+
return {
|
|
138
|
+
heading: heading || '',
|
|
139
|
+
contentType: legacyConfig.contentType ?? '',
|
|
140
|
+
sort: (legacyConfig.sort ?? 'recent'),
|
|
141
|
+
limit: clamp(legacyConfig.limit ?? 12, 1, 24),
|
|
142
|
+
columns: clampToColumns(legacyConfig.columns ?? 3),
|
|
143
|
+
tag: legacyConfig.tag ?? '',
|
|
144
|
+
featured: legacyConfig.featured ?? false,
|
|
145
|
+
};
|
|
146
|
+
case 'stats':
|
|
147
|
+
return { heading: heading || 'Platform Stats' };
|
|
148
|
+
case 'hubs':
|
|
149
|
+
return {
|
|
150
|
+
heading: heading || 'Trending Hubs',
|
|
151
|
+
limit: clamp(legacyConfig.limit ?? 4, 1, 20),
|
|
152
|
+
};
|
|
153
|
+
case 'contests':
|
|
154
|
+
return {
|
|
155
|
+
heading: heading || 'Active Contests',
|
|
156
|
+
limit: clamp(legacyConfig.limit ?? 3, 1, 10),
|
|
157
|
+
};
|
|
158
|
+
case 'learning':
|
|
159
|
+
return {
|
|
160
|
+
heading: heading || 'Learning Paths',
|
|
161
|
+
limit: clamp(legacyConfig.limit ?? 6, 1, 12),
|
|
162
|
+
columns: clampToColumns(legacyConfig.columns ?? 3),
|
|
163
|
+
};
|
|
164
|
+
case 'custom-html':
|
|
165
|
+
return {
|
|
166
|
+
heading: heading || '',
|
|
167
|
+
html: legacyConfig.html ?? '',
|
|
168
|
+
};
|
|
169
|
+
default:
|
|
170
|
+
// Unreachable — TYPE_MAP keys are the only types passed here, and
|
|
171
|
+
// every key has a case branch. Fall through to a safe empty config.
|
|
172
|
+
return { heading };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function clamp(n, lo, hi) {
|
|
176
|
+
return Math.min(Math.max(n, lo), hi);
|
|
177
|
+
}
|
|
178
|
+
function clampToColumns(n) {
|
|
179
|
+
const c = clamp(Math.round(n), 1, 4);
|
|
180
|
+
return c;
|
|
181
|
+
}
|
|
182
|
+
// ---- The migration -------------------------------------------------------
|
|
183
|
+
/**
|
|
184
|
+
* Read `instance_settings.homepage.sections`, convert to a layout row,
|
|
185
|
+
* save + publish. See module header for behavior contract.
|
|
186
|
+
*/
|
|
187
|
+
export async function migrateHomepageSectionsToLayout(db, opts = {}) {
|
|
188
|
+
// 1. Read legacy data — direct SQL because instance_settings doesn't
|
|
189
|
+
// have a server-package helper today. Single row by `key` column.
|
|
190
|
+
const rows = await db.execute(sql `SELECT value FROM instance_settings WHERE key = 'homepage.sections' LIMIT 1`);
|
|
191
|
+
// node-postgres returns { rows: [...] }; pglite returns the array
|
|
192
|
+
// directly. Handle both shapes.
|
|
193
|
+
const allRows = Array.isArray(rows) ? rows :
|
|
194
|
+
Array.isArray(rows.rows) ? rows.rows :
|
|
195
|
+
[];
|
|
196
|
+
const legacyValue = allRows[0]?.value;
|
|
197
|
+
if (!legacyValue || !Array.isArray(legacyValue)) {
|
|
198
|
+
return { migrated: false, sectionsConverted: 0, sectionsSkipped: 0, reason: 'no-legacy-data' };
|
|
199
|
+
}
|
|
200
|
+
const legacySections = legacyValue;
|
|
201
|
+
// 2. Idempotency check — existing layout at ('route','/').
|
|
202
|
+
const existing = await getLayoutByScope(db, { type: 'route', path: '/' });
|
|
203
|
+
if (existing && !opts.force) {
|
|
204
|
+
return {
|
|
205
|
+
migrated: false,
|
|
206
|
+
layoutId: existing.id,
|
|
207
|
+
sectionsConverted: 0,
|
|
208
|
+
sectionsSkipped: 0,
|
|
209
|
+
reason: 'layout-already-exists',
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// Note: we DO NOT delete `existing` here, even with force=true. Deleting
|
|
213
|
+
// the layout would cascade through `layout_versions` (FK ON DELETE CASCADE),
|
|
214
|
+
// destroying the operator's entire publish history. Instead, force passes
|
|
215
|
+
// `existing.id` to saveLayout below — saveLayout updates the layout row
|
|
216
|
+
// in-place, rewrites the rows + sections, and the cascade chain stops at
|
|
217
|
+
// those children. Publish snapshots survive.
|
|
218
|
+
// (R4 P1 fix, session 161. Previously this branch did `await deleteLayout(db, existing.id)`.)
|
|
219
|
+
// 3. Filter + map legacy sections.
|
|
220
|
+
const skipReasons = {};
|
|
221
|
+
const mapped = [];
|
|
222
|
+
for (const legacy of legacySections) {
|
|
223
|
+
const id = legacy.id ?? `unknown-${Math.random().toString(36).slice(2, 8)}`;
|
|
224
|
+
if (legacy.enabled === false) {
|
|
225
|
+
skipReasons[id] = 'disabled';
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const legacyType = legacy.type ?? '';
|
|
229
|
+
const newType = TYPE_MAP[legacyType];
|
|
230
|
+
if (!newType) {
|
|
231
|
+
skipReasons[id] = 'unknown-type';
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
mapped.push({ newType, legacy });
|
|
235
|
+
}
|
|
236
|
+
if (mapped.length === 0) {
|
|
237
|
+
return {
|
|
238
|
+
migrated: false,
|
|
239
|
+
sectionsConverted: 0,
|
|
240
|
+
sectionsSkipped: legacySections.length,
|
|
241
|
+
skipReasons,
|
|
242
|
+
reason: 'no-enabled-sections',
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// 4. Group by zone, preserving legacy `order`. Within a zone, sections
|
|
246
|
+
// are ordered by legacy.order (or array position if no order set).
|
|
247
|
+
// Typed as a `Map` so TS knows every key access is defined for the
|
|
248
|
+
// three known zones we initialise (vs. `Record`'s index signature
|
|
249
|
+
// return type of `T | undefined`).
|
|
250
|
+
const byZone = new Map([
|
|
251
|
+
['full-width', []],
|
|
252
|
+
['main', []],
|
|
253
|
+
['sidebar', []],
|
|
254
|
+
]);
|
|
255
|
+
for (const m of mapped) {
|
|
256
|
+
const zone = FULL_WIDTH_TYPES.has(m.newType) ? 'full-width' :
|
|
257
|
+
SIDEBAR_TYPES.has(m.newType) ? 'sidebar' :
|
|
258
|
+
'main';
|
|
259
|
+
byZone.get(zone).push(m); // ! safe — Map was initialised with all 3 keys above
|
|
260
|
+
}
|
|
261
|
+
for (const list of byZone.values()) {
|
|
262
|
+
list.sort((a, b) => (a.legacy.order ?? 0) - (b.legacy.order ?? 0));
|
|
263
|
+
}
|
|
264
|
+
// 5. Build the LayoutInput. One row per zone, all sections of that zone
|
|
265
|
+
// sit in that one row at colSpan 12 (each takes the full zone width
|
|
266
|
+
// — matches the legacy single-column-per-zone render).
|
|
267
|
+
const zones = [];
|
|
268
|
+
for (const zoneName of ['full-width', 'main', 'sidebar']) {
|
|
269
|
+
const list = byZone.get(zoneName);
|
|
270
|
+
if (list.length === 0)
|
|
271
|
+
continue;
|
|
272
|
+
const sections = list.map((m, idx) => {
|
|
273
|
+
const requiredFeatures = REQUIRED_FEATURES[m.newType];
|
|
274
|
+
const section = {
|
|
275
|
+
order: idx,
|
|
276
|
+
type: m.newType,
|
|
277
|
+
config: buildConfig(m.newType, m.legacy),
|
|
278
|
+
colSpan: 12,
|
|
279
|
+
enabled: true,
|
|
280
|
+
schemaVersion: 1,
|
|
281
|
+
};
|
|
282
|
+
if (requiredFeatures) {
|
|
283
|
+
section.visibility = { features: requiredFeatures };
|
|
284
|
+
}
|
|
285
|
+
return section;
|
|
286
|
+
});
|
|
287
|
+
const row = {
|
|
288
|
+
order: 0,
|
|
289
|
+
config: { gap: zoneName === 'full-width' ? 'none' : 'md' },
|
|
290
|
+
sections,
|
|
291
|
+
};
|
|
292
|
+
zones.push({ zone: zoneName, rows: [row] });
|
|
293
|
+
}
|
|
294
|
+
const input = {
|
|
295
|
+
scope: { type: 'route', path: '/' },
|
|
296
|
+
name: 'Homepage (migrated from legacy)',
|
|
297
|
+
pageMeta: { title: 'Homepage', access: 'public' },
|
|
298
|
+
state: 'draft', // publishLayout below flips to published
|
|
299
|
+
zones,
|
|
300
|
+
};
|
|
301
|
+
// 6. Save + publish atomically. publishLayout takes a snapshot into
|
|
302
|
+
// layout_versions so the operator can revert if needed.
|
|
303
|
+
//
|
|
304
|
+
// When `existing` is set (force=true path), pass its id to saveLayout
|
|
305
|
+
// so the layout row is updated in-place — preserves prior
|
|
306
|
+
// `layout_versions` snapshots that delete+create would have cascaded
|
|
307
|
+
// away. (R4 P1 fix, session 161.)
|
|
308
|
+
const saveOpts = { userId: opts.adminId };
|
|
309
|
+
if (existing)
|
|
310
|
+
saveOpts.id = existing.id;
|
|
311
|
+
const saved = await saveLayout(db, input, saveOpts);
|
|
312
|
+
await publishLayout(db, saved.id, { publishedBy: opts.adminId });
|
|
313
|
+
const sectionsConverted = mapped.length;
|
|
314
|
+
const sectionsSkipped = legacySections.length - sectionsConverted;
|
|
315
|
+
return {
|
|
316
|
+
migrated: true,
|
|
317
|
+
layoutId: saved.id,
|
|
318
|
+
sectionsConverted,
|
|
319
|
+
sectionsSkipped,
|
|
320
|
+
skipReasons: Object.keys(skipReasons).length > 0 ? skipReasons : undefined,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=migrate-homepage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-homepage.js","sourceRoot":"","sources":["../../src/layout/migrate-homepage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path normalisation for custom-page layouts.
|
|
3
|
+
*
|
|
4
|
+
* Spec: docs/plans/layout-and-pages.md §6.3.
|
|
5
|
+
*
|
|
6
|
+
* Normalises an input path to its canonical form, OR rejects with a
|
|
7
|
+
* specific reason if it violates structural rules.
|
|
8
|
+
*
|
|
9
|
+
* Why centralised: the rules apply at three call sites (admin save
|
|
10
|
+
* handler, Nuxt catch-all page, the `useLayout` lookup), and divergence
|
|
11
|
+
* between them would let admins save a `/About` layout that never gets
|
|
12
|
+
* served because the catch-all looked up `/about`. Single source of
|
|
13
|
+
* truth here, used everywhere.
|
|
14
|
+
*
|
|
15
|
+
* Examples (also pinned in tests):
|
|
16
|
+
* /about → ok '/about'
|
|
17
|
+
* /about/ → ok '/about' (trailing slash stripped)
|
|
18
|
+
* about → ok '/about' (leading slash added)
|
|
19
|
+
* /About → ok '/about' (lowercased)
|
|
20
|
+
* //a//b// → ok '/a/b' (collapsed double slashes)
|
|
21
|
+
* ' /about ' → ok '/about' (trimmed)
|
|
22
|
+
* /about?x=1 → reject 'has-query'
|
|
23
|
+
* /about#anchor → reject 'has-fragment'
|
|
24
|
+
* /api/foo → reject 'reserved-prefix'
|
|
25
|
+
* / → reject 'reserved-prefix' (root is route-scope, not custom-page)
|
|
26
|
+
* '' → reject 'empty'
|
|
27
|
+
* /a/../b → reject 'has-dot-segment'
|
|
28
|
+
* /a//b → ok '/a/b' (after collapse)
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Path prefixes that custom pages CANNOT claim. These either map to
|
|
32
|
+
* framework internals or to built-in route-scope layouts.
|
|
33
|
+
*/
|
|
34
|
+
export declare const RESERVED_PREFIXES: ReadonlyArray<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Single-segment paths that are RESERVED (route-scope, not custom-page).
|
|
37
|
+
* The homepage `/` lives in the route-scope layout, not custom-page.
|
|
38
|
+
*/
|
|
39
|
+
export declare const RESERVED_EXACT: ReadonlyArray<string>;
|
|
40
|
+
export type NormalisePathRejection = 'empty' | 'has-query' | 'has-fragment' | 'has-dot-segment' | 'reserved-prefix' | 'invalid-char';
|
|
41
|
+
export type NormalisePathResult = {
|
|
42
|
+
ok: true;
|
|
43
|
+
path: string;
|
|
44
|
+
} | {
|
|
45
|
+
ok: false;
|
|
46
|
+
reason: NormalisePathRejection;
|
|
47
|
+
};
|
|
48
|
+
export declare function pathNormalize(input: unknown): NormalisePathResult;
|
|
49
|
+
//# sourceMappingURL=path-normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-normalize.d.ts","sourceRoot":"","sources":["../../src/layout/path-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAKnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,MAAM,CAAS,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAC9B,OAAO,GACP,WAAW,GACX,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,CAAC;AAEnB,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAUlD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAoCjE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path normalisation for custom-page layouts.
|
|
3
|
+
*
|
|
4
|
+
* Spec: docs/plans/layout-and-pages.md §6.3.
|
|
5
|
+
*
|
|
6
|
+
* Normalises an input path to its canonical form, OR rejects with a
|
|
7
|
+
* specific reason if it violates structural rules.
|
|
8
|
+
*
|
|
9
|
+
* Why centralised: the rules apply at three call sites (admin save
|
|
10
|
+
* handler, Nuxt catch-all page, the `useLayout` lookup), and divergence
|
|
11
|
+
* between them would let admins save a `/About` layout that never gets
|
|
12
|
+
* served because the catch-all looked up `/about`. Single source of
|
|
13
|
+
* truth here, used everywhere.
|
|
14
|
+
*
|
|
15
|
+
* Examples (also pinned in tests):
|
|
16
|
+
* /about → ok '/about'
|
|
17
|
+
* /about/ → ok '/about' (trailing slash stripped)
|
|
18
|
+
* about → ok '/about' (leading slash added)
|
|
19
|
+
* /About → ok '/about' (lowercased)
|
|
20
|
+
* //a//b// → ok '/a/b' (collapsed double slashes)
|
|
21
|
+
* ' /about ' → ok '/about' (trimmed)
|
|
22
|
+
* /about?x=1 → reject 'has-query'
|
|
23
|
+
* /about#anchor → reject 'has-fragment'
|
|
24
|
+
* /api/foo → reject 'reserved-prefix'
|
|
25
|
+
* / → reject 'reserved-prefix' (root is route-scope, not custom-page)
|
|
26
|
+
* '' → reject 'empty'
|
|
27
|
+
* /a/../b → reject 'has-dot-segment'
|
|
28
|
+
* /a//b → ok '/a/b' (after collapse)
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Path prefixes that custom pages CANNOT claim. These either map to
|
|
32
|
+
* framework internals or to built-in route-scope layouts.
|
|
33
|
+
*/
|
|
34
|
+
export const RESERVED_PREFIXES = [
|
|
35
|
+
'/api',
|
|
36
|
+
'/_nuxt',
|
|
37
|
+
'/__nuxt',
|
|
38
|
+
'/.well-known',
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Single-segment paths that are RESERVED (route-scope, not custom-page).
|
|
42
|
+
* The homepage `/` lives in the route-scope layout, not custom-page.
|
|
43
|
+
*/
|
|
44
|
+
export const RESERVED_EXACT = ['/'];
|
|
45
|
+
/**
|
|
46
|
+
* Allowed character set for a single path segment. Conservative — letters,
|
|
47
|
+
* digits, hyphen, underscore. No dots (would conflict with .well-known
|
|
48
|
+
* convention + complicates filename-based routing) — file extensions
|
|
49
|
+
* have no place in custom-page paths.
|
|
50
|
+
*/
|
|
51
|
+
const SEGMENT_RE = /^[a-z0-9_-]+$/;
|
|
52
|
+
export function pathNormalize(input) {
|
|
53
|
+
if (typeof input !== 'string')
|
|
54
|
+
return { ok: false, reason: 'empty' };
|
|
55
|
+
const trimmed = input.trim();
|
|
56
|
+
if (trimmed.length === 0)
|
|
57
|
+
return { ok: false, reason: 'empty' };
|
|
58
|
+
// Reject any URL-special chars early — these shouldn't reach a custom-page path
|
|
59
|
+
if (trimmed.includes('?'))
|
|
60
|
+
return { ok: false, reason: 'has-query' };
|
|
61
|
+
if (trimmed.includes('#'))
|
|
62
|
+
return { ok: false, reason: 'has-fragment' };
|
|
63
|
+
// Lowercase + ensure leading slash + collapse runs of slashes + strip trailing
|
|
64
|
+
let p = '/' + trimmed.toLowerCase().replace(/^\/+/, '').replace(/\/+/g, '/');
|
|
65
|
+
if (p.length > 1 && p.endsWith('/'))
|
|
66
|
+
p = p.slice(0, -1);
|
|
67
|
+
// After normalisation, '/' is the only single-slash result
|
|
68
|
+
if (p === '/')
|
|
69
|
+
return { ok: false, reason: 'reserved-prefix' };
|
|
70
|
+
// Reserved-prefix check FIRST — some reserved paths contain characters
|
|
71
|
+
// (dots in `.well-known`) that segment validation would reject with the
|
|
72
|
+
// wrong reason. Operator gets the more specific 'reserved-prefix' error.
|
|
73
|
+
for (const prefix of RESERVED_PREFIXES) {
|
|
74
|
+
if (p === prefix || p.startsWith(prefix + '/')) {
|
|
75
|
+
return { ok: false, reason: 'reserved-prefix' };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (RESERVED_EXACT.includes(p)) {
|
|
79
|
+
return { ok: false, reason: 'reserved-prefix' };
|
|
80
|
+
}
|
|
81
|
+
// Now validate each segment is well-formed
|
|
82
|
+
const segments = p.slice(1).split('/');
|
|
83
|
+
for (const seg of segments) {
|
|
84
|
+
if (seg === '.' || seg === '..')
|
|
85
|
+
return { ok: false, reason: 'has-dot-segment' };
|
|
86
|
+
if (!SEGMENT_RE.test(seg))
|
|
87
|
+
return { ok: false, reason: 'invalid-char' };
|
|
88
|
+
}
|
|
89
|
+
return { ok: true, path: p };
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=path-normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-normalize.js","sourceRoot":"","sources":["../../src/layout/path-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0B;IACtD,MAAM;IACN,QAAQ;IACR,SAAS;IACT,cAAc;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA0B,CAAC,GAAG,CAAC,CAAC;AAc3D;;;;;GAKG;AACH,MAAM,UAAU,GAAG,eAAe,CAAC;AAEnC,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACrE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAEhE,gFAAgF;IAChF,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACrE,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAExE,+EAA+E;IAC/E,IAAI,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7E,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExD,2DAA2D;IAC3D,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAE/D,uEAAuE;IACvE,wEAAwE;IACxE,yEAAyE;IACzE,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IACD,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAClD,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commonpub/server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.59.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Framework-agnostic business logic for CommonPub instances",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
@@ -91,6 +91,10 @@
|
|
|
91
91
|
"types": "./dist/federation/index.d.ts",
|
|
92
92
|
"import": "./dist/federation/index.js"
|
|
93
93
|
},
|
|
94
|
+
"./layout/*": {
|
|
95
|
+
"types": "./dist/layout/*.d.ts",
|
|
96
|
+
"import": "./dist/layout/*.js"
|
|
97
|
+
},
|
|
94
98
|
"./import": {
|
|
95
99
|
"types": "./dist/import/index.d.ts",
|
|
96
100
|
"import": "./dist/import/index.js"
|
|
@@ -111,13 +115,13 @@
|
|
|
111
115
|
"megalodon": "^10.3.0",
|
|
112
116
|
"turndown": "^7.2.4",
|
|
113
117
|
"@commonpub/auth": "0.6.0",
|
|
114
|
-
"@commonpub/
|
|
115
|
-
"@commonpub/config": "0.15.0",
|
|
118
|
+
"@commonpub/schema": "0.18.0",
|
|
116
119
|
"@commonpub/learning": "0.5.2",
|
|
117
|
-
"@commonpub/
|
|
120
|
+
"@commonpub/docs": "0.6.3",
|
|
118
121
|
"@commonpub/protocol": "0.12.0",
|
|
119
|
-
"@commonpub/
|
|
120
|
-
"@commonpub/infra": "0.8.0"
|
|
122
|
+
"@commonpub/editor": "0.7.11",
|
|
123
|
+
"@commonpub/infra": "0.8.0",
|
|
124
|
+
"@commonpub/config": "0.15.0"
|
|
121
125
|
},
|
|
122
126
|
"peerDependencies": {
|
|
123
127
|
"drizzle-orm": "^0.45.1"
|