@cogenta/cli 0.1.0 → 0.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/LICENSE +373 -0
- package/dist/admin-assets/assets/index-21ZcDkDC.css +1 -0
- package/dist/admin-assets/assets/index-CKLmd_Fi.js +23 -0
- package/dist/admin-assets/index.html +13 -0
- package/dist/bin.js +0 -0
- package/dist/commands/admin-assets.d.ts +24 -0
- package/dist/commands/admin-assets.d.ts.map +1 -0
- package/dist/commands/admin-assets.js +57 -0
- package/dist/commands/admin-assets.js.map +1 -0
- package/dist/commands/serve.d.ts +9 -0
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +55 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/theme-render.d.ts +42 -0
- package/dist/commands/theme-render.d.ts.map +1 -0
- package/dist/commands/theme-render.js +251 -0
- package/dist/commands/theme-render.js.map +1 -0
- package/package.json +20 -19
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="fr">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Cogenta</title>
|
|
7
|
+
<script type="module" crossorigin src="/admin/assets/index-CKLmd_Fi.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/admin/assets/index-21ZcDkDC.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
package/dist/bin.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface AdminAsset {
|
|
2
|
+
readonly body: Buffer;
|
|
3
|
+
readonly contentType: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Serves one file from the built admin SPA for a request under `/admin`. A
|
|
7
|
+
* real built asset (`/admin/assets/index-*.js`) gets that exact file, still
|
|
8
|
+
* a real 404 (via `null`) if it is missing — never silently swapped for
|
|
9
|
+
* `index.html`, which would make a missing script fail as confusing broken
|
|
10
|
+
* HTML in the browser instead of an honest 404. Any extension-less path
|
|
11
|
+
* (`/admin`, `/admin/collections/post`, …) gets `index.html`, so the SPA's
|
|
12
|
+
* own client-side router (`react-router`, `basename="/admin"`) resolves the
|
|
13
|
+
* deep link — the standard "serve the shell, let the client router take
|
|
14
|
+
* over" contract every SPA host needs. `null` also covers the case where the
|
|
15
|
+
* admin build simply is not present (running from source without a build).
|
|
16
|
+
*
|
|
17
|
+
* Path segments come from the URL, always `/`-separated regardless of OS —
|
|
18
|
+
* normalised with `path/posix`, then joined onto the real, OS-native
|
|
19
|
+
* `ADMIN_ASSETS_DIR` with `path.join`, which never lets a resolved segment
|
|
20
|
+
* escape it (an absolute-looking second argument is still appended, not
|
|
21
|
+
* substituted).
|
|
22
|
+
*/
|
|
23
|
+
export declare function serveAdminAsset(pathname: string, assetsDir?: string): Promise<AdminAsset | null>;
|
|
24
|
+
//# sourceMappingURL=admin-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-assets.d.ts","sourceRoot":"","sources":["../../src/commands/admin-assets.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAyB,GACnC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAa5B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { extname, join } from 'node:path';
|
|
3
|
+
import posixPath from 'node:path/posix';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
/**
|
|
6
|
+
* `@cogenta/admin`'s own `vite build` output, copied into this package's
|
|
7
|
+
* `dist/admin-assets` at build time (`package.json`'s `build` script) —
|
|
8
|
+
* never a real npm dependency, since `@cogenta/admin` is `private` and has
|
|
9
|
+
* no publishable version. Resolved relative to this compiled module's own
|
|
10
|
+
* location so it works the same whether `@cogenta/cli` is run from the
|
|
11
|
+
* workspace or from a real npm install.
|
|
12
|
+
*/
|
|
13
|
+
const ADMIN_ASSETS_DIR = fileURLToPath(new URL('../admin-assets', import.meta.url));
|
|
14
|
+
const CONTENT_TYPES = {
|
|
15
|
+
'.html': 'text/html; charset=utf-8',
|
|
16
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
17
|
+
'.css': 'text/css; charset=utf-8',
|
|
18
|
+
'.json': 'application/json; charset=utf-8',
|
|
19
|
+
'.svg': 'image/svg+xml',
|
|
20
|
+
'.png': 'image/png',
|
|
21
|
+
'.ico': 'image/x-icon',
|
|
22
|
+
'.woff2': 'font/woff2',
|
|
23
|
+
'.map': 'application/json; charset=utf-8',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Serves one file from the built admin SPA for a request under `/admin`. A
|
|
27
|
+
* real built asset (`/admin/assets/index-*.js`) gets that exact file, still
|
|
28
|
+
* a real 404 (via `null`) if it is missing — never silently swapped for
|
|
29
|
+
* `index.html`, which would make a missing script fail as confusing broken
|
|
30
|
+
* HTML in the browser instead of an honest 404. Any extension-less path
|
|
31
|
+
* (`/admin`, `/admin/collections/post`, …) gets `index.html`, so the SPA's
|
|
32
|
+
* own client-side router (`react-router`, `basename="/admin"`) resolves the
|
|
33
|
+
* deep link — the standard "serve the shell, let the client router take
|
|
34
|
+
* over" contract every SPA host needs. `null` also covers the case where the
|
|
35
|
+
* admin build simply is not present (running from source without a build).
|
|
36
|
+
*
|
|
37
|
+
* Path segments come from the URL, always `/`-separated regardless of OS —
|
|
38
|
+
* normalised with `path/posix`, then joined onto the real, OS-native
|
|
39
|
+
* `ADMIN_ASSETS_DIR` with `path.join`, which never lets a resolved segment
|
|
40
|
+
* escape it (an absolute-looking second argument is still appended, not
|
|
41
|
+
* substituted).
|
|
42
|
+
*/
|
|
43
|
+
export async function serveAdminAsset(pathname, assetsDir = ADMIN_ASSETS_DIR) {
|
|
44
|
+
const relative = pathname.slice('/admin'.length) || '/';
|
|
45
|
+
const normalized = posixPath.normalize(relative);
|
|
46
|
+
const hasExtension = posixPath.extname(normalized) !== '';
|
|
47
|
+
const targetPath = join(assetsDir, hasExtension ? normalized : 'index.html');
|
|
48
|
+
try {
|
|
49
|
+
const body = await readFile(targetPath);
|
|
50
|
+
const contentType = CONTENT_TYPES[extname(targetPath)] ?? 'application/octet-stream';
|
|
51
|
+
return { body, contentType };
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=admin-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-assets.js","sourceRoot":"","sources":["../../src/commands/admin-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAEnF,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,gCAAgC;IACvC,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,iCAAiC;CAC1C,CAAA;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,SAAS,GAAW,gBAAgB;IAEpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAA;IACvD,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAE5E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAA;QACvC,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,0BAA0B,CAAA;QACpF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
package/dist/commands/serve.d.ts
CHANGED
|
@@ -31,6 +31,15 @@ interface Site {
|
|
|
31
31
|
readonly gateway: ReturnType<typeof createContentGateway>;
|
|
32
32
|
/** `.cogenta/schema.json`'s in-memory twin — the admin's only view of the collections (never the schema modules themselves, which are Node code). */
|
|
33
33
|
readonly schemaDocument: SchemaDocument;
|
|
34
|
+
readonly collections: readonly CollectionDefinition[];
|
|
35
|
+
readonly site: {
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly url: string;
|
|
38
|
+
readonly locales: readonly string[];
|
|
39
|
+
readonly defaultLocale: string;
|
|
40
|
+
};
|
|
41
|
+
/** `null` when the project has no `theme.tokens.json` — the theme-render fallback serves unstyled HTML rather than refusing. */
|
|
42
|
+
readonly skinCss: string | null;
|
|
34
43
|
/** Live, not cached: a driver that just went down must show as down the next time this is called, not until the process restarts. */
|
|
35
44
|
readonly health: () => Promise<{
|
|
36
45
|
readonly database: HealthReport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/serve.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
1
2
|
import { createServer } from 'node:http';
|
|
2
3
|
import { dirname, join } from 'node:path';
|
|
3
4
|
import process from 'node:process';
|
|
@@ -6,6 +7,8 @@ import { buildContentSchema, createAgentsRouter, createAuditRouter, createAuthRo
|
|
|
6
7
|
import { createAuthStore } from '@cogenta/auth';
|
|
7
8
|
import { CogentaError, createDatabaseMediaStore, createDatabaseRegistry, createLogger, createStorageRegistry, isCogentaError, loadConfig, } from '@cogenta/core';
|
|
8
9
|
import { buildSchemaDocument, createContentStore, createRedirectStore, createSchemaTables, withReadOnlyStore, } from '@cogenta/schema';
|
|
10
|
+
import { serveAdminAsset } from './admin-assets.js';
|
|
11
|
+
import { loadSkinCss, renderRequestedPage } from './theme-render.js';
|
|
9
12
|
const SCHEMA_FILE_CANDIDATES = [
|
|
10
13
|
'cogenta.schema.ts',
|
|
11
14
|
'cogenta.schema.mts',
|
|
@@ -86,7 +89,9 @@ agents,
|
|
|
86
89
|
* instead of landing — wrapped once here, at the one place both transports'
|
|
87
90
|
* stores are actually constructed, so neither can bypass it.
|
|
88
91
|
*/
|
|
89
|
-
readOnly = false
|
|
92
|
+
readOnly = false,
|
|
93
|
+
/** `null` when `theme.tokens.json` is absent or invalid — see `loadSkinCss`. */
|
|
94
|
+
skinCss = null) {
|
|
90
95
|
await createSchemaTables(db, collections);
|
|
91
96
|
const stores = new Map();
|
|
92
97
|
const storeFor = (collection) => {
|
|
@@ -98,6 +103,14 @@ readOnly = false) {
|
|
|
98
103
|
stores.set(collection.name, stored);
|
|
99
104
|
return stored;
|
|
100
105
|
};
|
|
106
|
+
// The gateway (below) reads `stores` directly rather than through
|
|
107
|
+
// `storeFor` — REST's own lazy population left it empty for any
|
|
108
|
+
// collection no REST request had touched yet, which the theme-render
|
|
109
|
+
// fallback (an early GraphQL-gateway caller, not a REST one) hit on its
|
|
110
|
+
// very first request. Populating eagerly here means both callers see the
|
|
111
|
+
// same, already-complete map.
|
|
112
|
+
for (const collection of collections)
|
|
113
|
+
storeFor(collection);
|
|
101
114
|
const redirects = createRedirectStore({ db });
|
|
102
115
|
await redirects.ensureTable();
|
|
103
116
|
const permissions = createPermissionLayer({ collections });
|
|
@@ -131,6 +144,9 @@ readOnly = false) {
|
|
|
131
144
|
locales: site.locales,
|
|
132
145
|
defaultLocale: site.defaultLocale,
|
|
133
146
|
}),
|
|
147
|
+
collections,
|
|
148
|
+
site,
|
|
149
|
+
skinCss,
|
|
134
150
|
health,
|
|
135
151
|
dispose: async () => {
|
|
136
152
|
await db.close();
|
|
@@ -332,6 +348,25 @@ export function createRequestListener(site, logger) {
|
|
|
332
348
|
Array.isArray(value) ? value.join(', ') : value,
|
|
333
349
|
])));
|
|
334
350
|
const context = { actor };
|
|
351
|
+
// The admin SPA's own built shell — never permission-checked here: it
|
|
352
|
+
// is static HTML/JS, not data. Every real action it takes goes through
|
|
353
|
+
// the same `/api/*` routes below, which already enforce permissions on
|
|
354
|
+
// their own. GET only: there is nothing meaningful to POST to a static
|
|
355
|
+
// file.
|
|
356
|
+
if (url.pathname === '/admin' || url.pathname.startsWith('/admin/')) {
|
|
357
|
+
if (req.method !== 'GET') {
|
|
358
|
+
res.writeHead(405, { allow: 'GET' }).end();
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
const asset = await serveAdminAsset(url.pathname);
|
|
362
|
+
if (asset !== null) {
|
|
363
|
+
res.writeHead(200, { 'content-type': asset.contentType });
|
|
364
|
+
res.end(asset.body);
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
jsonError(res, 404, 'CONTENT_NOT_FOUND', 'No admin asset matches this path.');
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
335
370
|
if (url.pathname.startsWith('/api/auth/')) {
|
|
336
371
|
const body = req.method === 'GET' || req.method === 'DELETE' ? undefined : await readBody(req);
|
|
337
372
|
const request = toRestRequest(req, url, body);
|
|
@@ -424,6 +459,23 @@ export function createRequestListener(site, logger) {
|
|
|
424
459
|
res.end(JSON.stringify({ data: health }));
|
|
425
460
|
return;
|
|
426
461
|
}
|
|
462
|
+
// Real theme HTML for anything else — see `theme-render.ts`'s own
|
|
463
|
+
// doc comment for what this is and, as importantly, what it isn't
|
|
464
|
+
// (no Astro build, one theme, no image pipeline). GET only: rendering
|
|
465
|
+
// a page has no meaningful response to any other method.
|
|
466
|
+
if (req.method === 'GET') {
|
|
467
|
+
const html = await renderRequestedPage(url.pathname, {
|
|
468
|
+
collections: site.collections,
|
|
469
|
+
gateway: site.gateway,
|
|
470
|
+
site: site.site,
|
|
471
|
+
skinCss: site.skinCss,
|
|
472
|
+
}, context);
|
|
473
|
+
if (html !== null) {
|
|
474
|
+
res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
|
|
475
|
+
res.end(html);
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
427
479
|
res.writeHead(404, { 'content-type': 'application/json; charset=utf-8' });
|
|
428
480
|
res.end(JSON.stringify({
|
|
429
481
|
error: { code: 'CONTENT_NOT_FOUND', message: 'No route matches this path.' },
|
|
@@ -479,7 +531,8 @@ export async function runServe(options) {
|
|
|
479
531
|
}
|
|
480
532
|
const selection = await createDatabaseRegistry({ logger }).select(loaded.config.database);
|
|
481
533
|
const storageSelection = await createStorageRegistry({ logger }).select(loaded.config.storage);
|
|
482
|
-
const
|
|
534
|
+
const skinCss = await loadSkinCss((path) => readFile(path, 'utf8'), join(projectRoot, 'theme.tokens.json'));
|
|
535
|
+
const site = await assembleSite(selection.instance, collections, loaded.config.auth.signingKey, loaded.config.site, storageSelection.instance, async () => ({ database: await selection.health(), storage: await storageSelection.health() }), undefined, options.readOnly ?? false, skinCss);
|
|
483
536
|
const server = createServer(createRequestListener(site, logger));
|
|
484
537
|
const port = options.port ?? DEFAULT_PORT;
|
|
485
538
|
const host = options.host ?? DEFAULT_HOST;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { AccessContext, ContentGateway } from '@cogenta/api';
|
|
2
|
+
import { type CollectionDefinition } from '@cogenta/schema';
|
|
3
|
+
/**
|
|
4
|
+
* Real HTML for a matched route — the piece the lot's own gap notes named
|
|
5
|
+
* honestly ("`cogenta build`/`theme` not built yet"): until a real Astro site
|
|
6
|
+
* exists (ADR-0008, contract D's actual intended delivery plane), `cogenta
|
|
7
|
+
* serve` renders the one theme this codebase has, `@cogenta/theme-canonical`,
|
|
8
|
+
* directly against the same permission-checked `ContentGateway` every REST
|
|
9
|
+
* and GraphQL request already goes through. No secret, config or DB handle
|
|
10
|
+
* ever reaches theme code — only the same `ContentEntry` shape a real HTTP
|
|
11
|
+
* client would receive, so the data boundary R5 cares about holds even
|
|
12
|
+
* in-process. This is a deliberately scoped stand-in, not the Astro pipeline:
|
|
13
|
+
* one theme, no build step, no static generation.
|
|
14
|
+
*/
|
|
15
|
+
export interface ThemeRenderOptions {
|
|
16
|
+
readonly collections: readonly CollectionDefinition[];
|
|
17
|
+
readonly gateway: ContentGateway;
|
|
18
|
+
readonly site: {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly url: string;
|
|
21
|
+
readonly locales: readonly string[];
|
|
22
|
+
readonly defaultLocale: string;
|
|
23
|
+
};
|
|
24
|
+
/** `null` when the project has no `theme.tokens.json` — served unstyled rather than refused. */
|
|
25
|
+
readonly skinCss: string | null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolves `pathname` against the site's real routes and renders the real
|
|
29
|
+
* page, or returns `null` — never for "matched but nothing found", only for
|
|
30
|
+
* "no route matches" or "matched but nothing published there", both of which
|
|
31
|
+
* the caller turns into the same 404 an unmatched `/api/*` request already
|
|
32
|
+
* gets.
|
|
33
|
+
*/
|
|
34
|
+
export declare function renderRequestedPage(pathname: string, options: ThemeRenderOptions, context: AccessContext): Promise<string | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Reads `theme.tokens.json` next to the config and renders it through the
|
|
37
|
+
* real, already-tested `renderSkin` (contract D validation + `--cogenta-*`
|
|
38
|
+
* stylesheet) — never a second, hand-rolled token-to-CSS mapping. Absent or
|
|
39
|
+
* invalid tokens degrade to unstyled HTML rather than refusing to serve.
|
|
40
|
+
*/
|
|
41
|
+
export declare function loadSkinCss(readFile: (path: string) => Promise<string>, tokensPath: string): Promise<string | null>;
|
|
42
|
+
//# sourceMappingURL=theme-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-render.d.ts","sourceRoot":"","sources":["../../src/commands/theme-render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAA;AAIvF,OAAO,EAAa,KAAK,oBAAoB,EAAgC,MAAM,iBAAiB,CAAA;AAgEpG;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACrD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;QACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAC/B,CAAA;IACD,gGAAgG;IAChG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AA0GD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmHxB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC3C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { CogentaError } from '@cogenta/core';
|
|
2
|
+
import { renderSkin } from '@cogenta/render';
|
|
3
|
+
import { buildPath, matchPath } from '@cogenta/schema';
|
|
4
|
+
import { query as collectionListQuery, renderPage, serialize, } from '@cogenta/theme-canonical';
|
|
5
|
+
/**
|
|
6
|
+
* The theme's own `ContentEntry`/`QueryRequest` (`theme-contract.ts`) are a
|
|
7
|
+
* deliberately separate, minimal public contract — a theme never imports
|
|
8
|
+
* `@cogenta/api`'s richer internal types (that boundary is the whole point
|
|
9
|
+
* of ADR-0016). These two functions are the only place this file crosses it.
|
|
10
|
+
*/
|
|
11
|
+
function toThemeEntry(entry, collection) {
|
|
12
|
+
return {
|
|
13
|
+
id: entry.id,
|
|
14
|
+
collection,
|
|
15
|
+
locale: entry.locale,
|
|
16
|
+
status: entry.status,
|
|
17
|
+
...entry.values,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function toApiFilter(flat) {
|
|
21
|
+
if (flat === undefined)
|
|
22
|
+
return undefined;
|
|
23
|
+
const conditions = Object.entries(flat).map(([field, value]) => ({
|
|
24
|
+
field,
|
|
25
|
+
operator: 'eq',
|
|
26
|
+
value,
|
|
27
|
+
}));
|
|
28
|
+
if (conditions.length === 0)
|
|
29
|
+
return undefined;
|
|
30
|
+
return conditions.length === 1 ? conditions[0] : { and: conditions };
|
|
31
|
+
}
|
|
32
|
+
function toApiQueryRequest(request) {
|
|
33
|
+
const filter = toApiFilter(request.filter);
|
|
34
|
+
return {
|
|
35
|
+
collection: request.collection,
|
|
36
|
+
...(filter === undefined ? {} : { filter }),
|
|
37
|
+
...(request.sort === undefined ? {} : { sort: [request.sort] }),
|
|
38
|
+
...(request.limit === undefined ? {} : { limit: request.limit }),
|
|
39
|
+
...(request.cursor === undefined ? {} : { after: request.cursor }),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async function listAsTheme(gateway, request, context) {
|
|
43
|
+
const page = await gateway.list(toApiQueryRequest(request), context);
|
|
44
|
+
return {
|
|
45
|
+
items: page.items.map((entry) => toThemeEntry(entry, request.collection)),
|
|
46
|
+
nextCursor: page.nextCursor,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function fieldOfKind(collection, kind) {
|
|
50
|
+
return Object.entries(collection.fields).find(([, field]) => field.kind === kind)?.[0];
|
|
51
|
+
}
|
|
52
|
+
function toVocabularyBlocks(entry, collection) {
|
|
53
|
+
const blocksField = fieldOfKind(collection, 'blocks');
|
|
54
|
+
if (blocksField !== undefined) {
|
|
55
|
+
const zone = entry.blocks[blocksField] ?? [];
|
|
56
|
+
return zone.map((block) => ({
|
|
57
|
+
_key: block.key,
|
|
58
|
+
_type: block.type,
|
|
59
|
+
_version: '1.0.0',
|
|
60
|
+
...block.data,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
// No blocks field: a collection like `post`, whose body is `richText`
|
|
64
|
+
// rather than a block zone, gets its content wrapped in a single real
|
|
65
|
+
// `prose` block — the exact portable-text shape prose already renders,
|
|
66
|
+
// reused rather than a second serialiser for the same data.
|
|
67
|
+
const richTextField = fieldOfKind(collection, 'richText');
|
|
68
|
+
if (richTextField === undefined)
|
|
69
|
+
return [];
|
|
70
|
+
return [
|
|
71
|
+
{
|
|
72
|
+
_key: 'body',
|
|
73
|
+
_type: 'prose',
|
|
74
|
+
_version: '1.0.0',
|
|
75
|
+
body: entry.values[richTextField],
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
function entryTitle(entry) {
|
|
80
|
+
const value = entry.values['title'];
|
|
81
|
+
return typeof value === 'string' && value.trim() !== '' ? value : entry.id;
|
|
82
|
+
}
|
|
83
|
+
async function fetchOne(gateway, request, context) {
|
|
84
|
+
const page = await gateway.list({ ...request, limit: 1 }, context);
|
|
85
|
+
return page.items[0] ?? null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Matches `pathname` against the site's real routes and fetches the one
|
|
89
|
+
* published entry there, or `null` for "no route" or "nothing published" —
|
|
90
|
+
* the two callers (`renderRequestedPage` and its own `content.byPath`) share
|
|
91
|
+
* this rather than each re-deriving the same filter from `match.params`.
|
|
92
|
+
*
|
|
93
|
+
* `/` itself matches no collection's route (every `page` pattern is
|
|
94
|
+
* `/:slug`, which needs a real segment) — every `create-cogenta` blueprint
|
|
95
|
+
* seeds its home page at the real, consistent slug `home`, so `/` retries
|
|
96
|
+
* once as `/home` rather than 404ing on the one URL a real visitor always
|
|
97
|
+
* tries first. Not a magic redirect: a site with no page at that slug still
|
|
98
|
+
* 404s honestly, exactly like every other unmatched path.
|
|
99
|
+
*/
|
|
100
|
+
async function resolveEntry(pathname, options, context) {
|
|
101
|
+
const effectivePath = pathname === '/' ? '/home' : pathname;
|
|
102
|
+
const match = matchPath(options.collections, effectivePath, {
|
|
103
|
+
locales: options.site.locales,
|
|
104
|
+
defaultLocale: options.site.defaultLocale,
|
|
105
|
+
});
|
|
106
|
+
if (match === null)
|
|
107
|
+
return null;
|
|
108
|
+
const collection = options.collections.find((entry) => entry.name === match.collection);
|
|
109
|
+
if (collection === undefined)
|
|
110
|
+
return null;
|
|
111
|
+
const conditions = Object.entries(match.params).map(([field, value]) => ({
|
|
112
|
+
field,
|
|
113
|
+
operator: 'eq',
|
|
114
|
+
value,
|
|
115
|
+
}));
|
|
116
|
+
const filter = conditions.length === 1
|
|
117
|
+
? conditions[0]
|
|
118
|
+
: conditions.length > 1
|
|
119
|
+
? { and: conditions }
|
|
120
|
+
: undefined;
|
|
121
|
+
const entry = await fetchOne(options.gateway, {
|
|
122
|
+
collection: match.collection,
|
|
123
|
+
...(filter === undefined ? {} : { filter }),
|
|
124
|
+
...(match.locale === null ? {} : { locale: match.locale }),
|
|
125
|
+
}, context);
|
|
126
|
+
return entry === null ? null : { collection, entry };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Resolves `pathname` against the site's real routes and renders the real
|
|
130
|
+
* page, or returns `null` — never for "matched but nothing found", only for
|
|
131
|
+
* "no route matches" or "matched but nothing published there", both of which
|
|
132
|
+
* the caller turns into the same 404 an unmatched `/api/*` request already
|
|
133
|
+
* gets.
|
|
134
|
+
*/
|
|
135
|
+
export async function renderRequestedPage(pathname, options, context) {
|
|
136
|
+
const resolved = await resolveEntry(pathname, options, context);
|
|
137
|
+
if (resolved === null)
|
|
138
|
+
return null;
|
|
139
|
+
const { collection, entry } = resolved;
|
|
140
|
+
const blocks = toVocabularyBlocks(entry, collection);
|
|
141
|
+
// Every entry a `collectionList` block needs is fetched up front — the
|
|
142
|
+
// theme's own contract (`FetchedEntries`, `render-block.ts`) requires it:
|
|
143
|
+
// `renderBlock` is a pure, synchronous function, so nothing inside it can
|
|
144
|
+
// await a query, and `link()` below must resolve an id to a URL without one
|
|
145
|
+
// either.
|
|
146
|
+
const fetchedEntries = {};
|
|
147
|
+
const knownEntries = new Map([[entry.id, entry]]);
|
|
148
|
+
for (const block of blocks) {
|
|
149
|
+
if (block._type !== 'collectionList')
|
|
150
|
+
continue;
|
|
151
|
+
const themeQuery = collectionListQuery(block);
|
|
152
|
+
const results = await options.gateway.list(toApiQueryRequest(themeQuery), context);
|
|
153
|
+
fetchedEntries[block._key] = results.items.map((found) => toThemeEntry(found, themeQuery.collection));
|
|
154
|
+
for (const found of results.items)
|
|
155
|
+
knownEntries.set(found.id, found);
|
|
156
|
+
}
|
|
157
|
+
const collectionsByName = new Map(options.collections.map((entry) => [entry.name, entry]));
|
|
158
|
+
const link = (target) => {
|
|
159
|
+
if (typeof target === 'string')
|
|
160
|
+
return target;
|
|
161
|
+
if ('path' in target)
|
|
162
|
+
return target.path;
|
|
163
|
+
const found = knownEntries.get(target.id);
|
|
164
|
+
const targetCollection = collectionsByName.get(target.collection);
|
|
165
|
+
if (found === undefined || targetCollection === undefined) {
|
|
166
|
+
// Not among the entries this render already fetched — the honest
|
|
167
|
+
// answer is "unresolvable here", not a guess. A real Astro site would
|
|
168
|
+
// resolve this ahead of render from its own link-graph; this stand-in
|
|
169
|
+
// doesn't build one.
|
|
170
|
+
return '#';
|
|
171
|
+
}
|
|
172
|
+
return buildPath(targetCollection, Object.fromEntries(Object.entries(found.values).filter((pair) => typeof pair[1] === 'string')), found.locale ?? undefined);
|
|
173
|
+
};
|
|
174
|
+
const themeContext = {
|
|
175
|
+
site: options.site,
|
|
176
|
+
locale: entry.locale,
|
|
177
|
+
url: new URL(pathname, options.site.url),
|
|
178
|
+
t: (key) => key,
|
|
179
|
+
// No image pipeline exists yet (`@cogenta/render`'s `images/`) wired to
|
|
180
|
+
// this in-process path — a theme that asks for one gets a clear refusal,
|
|
181
|
+
// not a broken <img>.
|
|
182
|
+
image: () => {
|
|
183
|
+
throw new CogentaError({
|
|
184
|
+
code: 'THEME_IMAGE_UNSUPPORTED',
|
|
185
|
+
message: 'cogenta serve cannot render images yet.',
|
|
186
|
+
hint: 'No image pipeline is wired into this in-process rendering fallback (no real Astro build exists yet). Avoid mediaFigure/gallery blocks until it is.',
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
link,
|
|
190
|
+
content: {
|
|
191
|
+
entry: async (collectionName, id) => {
|
|
192
|
+
const found = knownEntries.get(id);
|
|
193
|
+
return found === undefined ? null : toThemeEntry(found, collectionName);
|
|
194
|
+
},
|
|
195
|
+
byPath: async (path) => {
|
|
196
|
+
const match = matchPath(options.collections, path, {
|
|
197
|
+
locales: options.site.locales,
|
|
198
|
+
defaultLocale: options.site.defaultLocale,
|
|
199
|
+
});
|
|
200
|
+
if (match === null)
|
|
201
|
+
return null;
|
|
202
|
+
const conditions = Object.entries(match.params).map(([field, value]) => ({
|
|
203
|
+
field,
|
|
204
|
+
operator: 'eq',
|
|
205
|
+
value,
|
|
206
|
+
}));
|
|
207
|
+
const found = await fetchOne(options.gateway, {
|
|
208
|
+
collection: match.collection,
|
|
209
|
+
...(conditions.length === 0
|
|
210
|
+
? {}
|
|
211
|
+
: { filter: conditions.length === 1 ? conditions[0] : { and: conditions } }),
|
|
212
|
+
...(match.locale === null ? {} : { locale: match.locale }),
|
|
213
|
+
}, context);
|
|
214
|
+
return found === null ? null : toThemeEntry(found, match.collection);
|
|
215
|
+
},
|
|
216
|
+
list: (request) => listAsTheme(options.gateway, request, context),
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
const pageContent = { title: entryTitle(entry), blocks };
|
|
220
|
+
const node = renderPage(pageContent, themeContext, fetchedEntries);
|
|
221
|
+
const bodyHtml = serialize(node);
|
|
222
|
+
return `<!doctype html>
|
|
223
|
+
<html lang="${themeContext.locale}">
|
|
224
|
+
<head>
|
|
225
|
+
<meta charset="utf-8">
|
|
226
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
227
|
+
<title>${pageContent.title} — ${options.site.name}</title>
|
|
228
|
+
${options.skinCss === null ? '' : `<style>${options.skinCss}</style>`}
|
|
229
|
+
</head>
|
|
230
|
+
<body>
|
|
231
|
+
${bodyHtml}
|
|
232
|
+
</body>
|
|
233
|
+
</html>
|
|
234
|
+
`;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Reads `theme.tokens.json` next to the config and renders it through the
|
|
238
|
+
* real, already-tested `renderSkin` (contract D validation + `--cogenta-*`
|
|
239
|
+
* stylesheet) — never a second, hand-rolled token-to-CSS mapping. Absent or
|
|
240
|
+
* invalid tokens degrade to unstyled HTML rather than refusing to serve.
|
|
241
|
+
*/
|
|
242
|
+
export async function loadSkinCss(readFile, tokensPath) {
|
|
243
|
+
try {
|
|
244
|
+
const raw = JSON.parse(await readFile(tokensPath));
|
|
245
|
+
return renderSkin(raw).css;
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=theme-render.js.map
|