@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.
@@ -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"}
@@ -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":"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"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -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 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);
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":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAML,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EAKd,YAAY,GACb,MAAM,cAAc,CAAA;AACrB,OAAO,EAAkB,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EAGrB,cAAc,EAEd,UAAU,GAGX,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,mBAAmB,EAGnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAElB,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AAIxB,MAAM,sBAAsB,GAAG;IAC7B,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;CACpB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB;IAEnB,KAAK,MAAM,SAAS,IAAI,sBAAsB,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QACzC,IAAI,MAA6B,CAAA;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAA0B,CAAA;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;gBAAE,SAAQ;YAC3C,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,kBAAkB,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC5F,IAAI,EAAE,gFAAgF;gBACtF,KAAK,EAAE,KAAK;aACb,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAA;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,GAAG,IAAI,+CAA+C;gBAC/D,IAAI,EAAE,gGAAgG;aACvG,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,WAAqC,CAAA;IAC9C,CAAC;IAED,MAAM,IAAI,YAAY,CAAC;QACrB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,8DAA8D,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC5G,IAAI,EAAE,gGAAgG;KACvG,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAc,EAAE,IAAY;IACpD,IACE,CAAC,CACC,KAAK,YAAY,KAAK;QACtB,MAAM,IAAI,KAAK;QACd,KAA+B,CAAC,IAAI,KAAK,sBAAsB,CACjE,EACD,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,wEAAwE;IACxE,yEAAyE;IACzE,mEAAmE;IACnE,qEAAqE;IACrE,2EAA2E;IAC3E,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACzF,CAAC;AA0BD,yFAAyF;AACzF,SAAS,iBAAiB,CAAC,IAAqD;IAC9E,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAA;IACvC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAA;AAChF,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,EAAkB,EAClB,WAA4C,EAC5C,UAAkB,EAClB,IAKC,EACD,OAAsB,EACtB,MAA0F;AAC1F,0JAA0J;AAC1J,MAA4B;AAC5B;;;;;GAKG;AACH,QAAQ,GAAG,KAAK;IAEhB,MAAM,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IAEzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC9C,MAAM,QAAQ,GAAG,CAAC,UAAgC,EAAgB,EAAE;QAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAA;QAC3C,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QAC9D,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACnC,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC7C,MAAM,SAAS,CAAC,WAAW,EAAE,CAAA;IAE7B,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,oBAAoB,CAAC;QACnC,WAAW;QACX,WAAW;QACX,QAAQ;QACR,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE;KACjF,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;QACjC,EAAE;QACF,UAAU;QACV,WAAW;QACX,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC;KAClC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,wBAAwB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAEnD,OAAO;QACL,EAAE;QACF,IAAI;QACJ,UAAU,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5D,UAAU,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC;QACtC,WAAW,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC9D,WAAW,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACrD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7E,UAAU;QACV,OAAO;QACP,aAAa,EAAE,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;QAClD,OAAO,EAAE,oBAAoB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnE,cAAc,EAAE,mBAAmB,CAAC,WAAW,EAAE;YAC/C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;QACF,MAAM;QACN,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAoB;IAC1C,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAA;IAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACnD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC9C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,qCAAqC;YAC9C,IAAI,EAAE,mEAAmE;SAC1E,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAoB,EAAE,GAAQ,EAAE,IAAa;IAClE,MAAM,KAAK,GAA2D,EAAE,CAAA;IACxE,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC3C,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,OAAO,GAAuC,EAAE,CAAA;IACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAChE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;QAC3B,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,KAAK;QACL,OAAO;QACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;KACxC,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAsB;IACxC,MAAM,IAAI,GAAI,QAAQ,CAAC,IAA6D,EAAE,IAAI,CAAA;IAC1F,OAAO,OAAO,IAAI,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAU,EACV,KAA6B,EAC7B,MAAc,EACd,QAAgB,EAChB,IAAa,EACb,QAAsB,EACtB,MAAc;IAEd,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;QAAE,OAAM;IAC3D,MAAM,QAAQ,GAAG,QAAQ;SACtB,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;SAClC,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAA;IAC5C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,GAAG;QAAE,OAAM;IAE1D,MAAM,MAAM,GACV,SAAS,KAAK,SAAS;QACrB,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,SAAS,KAAK,SAAS;YACvB,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,SAAS,KAAK,SAAS;gBACvB,CAAC,CAAC,IAAI,CAAC,8CAA8C;gBACrD,CAAC,CAAC,MAAM,KAAK,MAAM;oBACjB,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,KAAK;wBACtC,CAAC,CAAC,gBAAgB;wBAClB,CAAC,CAAC,MAAM,KAAK,QAAQ;4BACnB,CAAC,CAAC,gBAAgB;4BAClB,CAAC,CAAC,IAAI,CAAA;IACpB,IAAI,MAAM,KAAK,IAAI;QAAE,OAAM;IAE3B,MAAM,OAAO,GAAG,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,MAAM,GACV,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI;QAC3D,CAAC,CAAE,IAAsD,CAAC,MAAM;QAChE,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK;SAClB,MAAM,CAAC;QACN,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,UAAU,EAAE,KAAK,CAAC,KAAK;QACvB,MAAM;QACN,UAAU;QACV,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAClD,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,IAAU,EACV,KAA6B,EAC7B,MAAc,EACd,QAAgB,EAChB,QAAsB,EACtB,MAAc;IAEd,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;QAAE,OAAM;IAC3D,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ;SAClB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAE1C,MAAM,MAAM,GACV,MAAM,KAAK,MAAM;QACf,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,KAAK;YACtC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,MAAM,KAAK,QAAQ;gBACnB,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,IAAI,CAAA;IACd,IAAI,MAAM,KAAK,IAAI;QAAE,OAAM;IAE3B,MAAM,OAAO,GAAG,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAE1C,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK;SAClB,MAAM,CAAC;QACN,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,UAAU,EAAE,KAAK,CAAC,KAAK;QACvB,MAAM;QACN,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC9C,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAU,EACV,KAA6B,EAC7B,MAAc,EACd,QAAgB,EAChB,QAAsB,EACtB,MAAc;IAEd,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;QAAE,OAAM;IAE3D,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK;aAClB,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;aAC7E,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3F,OAAM;IACR,CAAC;IAED,uEAAuE;IACvE,mEAAmE;IACnE,oDAAoD;IACpD,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAiE,EAAE,IAAI,CAAA;IAC9F,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS;QAAE,OAAM;IACtC,MAAM,IAAI,GAAI,IAAgF;SAC3F,IAAI,CAAA;IACP,MAAM,MAAM,GAAG,OAAO,IAAI,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,KAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;IAExE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK;SAClB,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;SACpE,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAmB,EAAE,QAAsB;IACpE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChD,GAAG,CAAC,GAAG,CACL,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;QACnD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAClC,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAY,EAAE,OAAe;IACnF,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAA;IAC5E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACvD,CAAC;AAED,kGAAkG;AAClG,KAAK,UAAU,cAAc,CAC3B,IAAU,EACV,KAA6B,EAC7B,EAAU,EACV,GAAoB,EACpB,GAAmB;IAEnB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QAC1C,OAAM;IACR,CAAC;IACD,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACtB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,CAAA;QAChE,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,IAAI,CAAC,CAAA;QACzE,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACvD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,KAAK,CAAC,QAAQ;QAC9B,eAAe,EAAE,uBAAuB;KACzC,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACvC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAU,EACV,MAAc;IAEd,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAA;QAEvD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAC9B,IAAI,CAAC,IAAI,EACT,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBAChD,GAAG;gBACH,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;aAChD,CAAC,CACH,CACF,CAAA;YACD,MAAM,OAAO,GAAkB,EAAE,KAAK,EAAE,CAAA;YAExC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,GACR,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;gBACnF,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBACtD,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;gBAChC,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACvF,OAAM;YACR,CAAC;YAED,sEAAsE;YACtE,kEAAkE;YAClE,gEAAgE;YAChE,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;oBAC1C,OAAM;gBACR,CAAC;gBACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAA;gBACzE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;gBACtD,OAAM;YACR,CAAC;YAED,yEAAyE;YACzE,wEAAwE;YACxE,+DAA+D;YAC/D,MAAM,SAAS,GAAG,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACnF,OAAM;YACR,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;oBAC3C,OAAM;gBACR,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAEpB,CAAA;gBACb,MAAM,KAAK,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC/D,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC;oBACE,KAAK;oBACL,SAAS,EACP,OAAO,IAAI,EAAE,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;wBAC5D,CAAC,CAAE,IAAI,CAAC,SAAqC;wBAC7C,CAAC,CAAC,SAAS;oBACf,aAAa,EAAE,OAAO,IAAI,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBACxF,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAC/E,CAAA;gBACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAA;gBACzE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC/B,OAAM;YACR,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,GACR,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;gBACnF,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBAC/D,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;gBAChC,MAAM,kBAAkB,CACtB,IAAI,EACJ,KAAK,EACL,GAAG,CAAC,MAAM,IAAI,KAAK,EACnB,GAAG,CAAC,QAAQ,EACZ,IAAI,EACJ,QAAQ,EACR,MAAM,CACP,CAAA;gBACD,OAAM;YACR,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,GACR,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;gBACnF,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBACtE,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;gBAChC,MAAM,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACxF,OAAM;YACR,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;gBAClD,iBAAiB,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC7E,OAAM;YACR,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC9E,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;gBAClD,iBAAiB,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC9E,OAAM;YACR,CAAC;YAED,mEAAmE;YACnE,qEAAqE;YACrE,8DAA8D;YAC9D,sEAAsE;YACtE,mEAAmE;YACnE,sCAAsC;YACtC,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;oBAC1C,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,2CAA2C,CAAC,CAAA;oBAC7E,OAAM;gBACR,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;gBAClC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAA;gBACzE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;gBACzC,OAAM;YACR,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAA;YACzE,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,6BAA6B,EAAE;aAC7E,CAAC,CACH,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAC7B,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAA;YACF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAA;YACzE,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,qCAAqC,EAAE;aAC5E,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAuBD,MAAM,YAAY,GAAG,IAAI,CAAA;AACzB,MAAM,YAAY,GAAG,WAAW,CAAA;AAEhC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IAElE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;QAC9B,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,GAAG;KACJ,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEhG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAChD,MAAM,CAAC,wCAAwC,CAAC,CAAA;QAChD,MAAM,CAAC,oFAAoF,CAAC,CAAA;QAC5F,MAAM,CAAC,wDAAwD,CAAC,CAAA;QAChE,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,WAA4C,CAAA;IAChD,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAA;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAA;YAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrE,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACzF,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9F,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,SAAS,CAAC,QAAQ,EAClB,WAAW,EACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAClB,gBAAgB,CAAC,QAAQ,EACzB,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,EAC9F,SAAS,EACT,OAAO,CAAC,QAAQ,IAAI,KAAK,CAC1B,CAAA;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAA;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAA;IAEzC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC3B,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;IAChC,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,GAAG,CAAC,EAAE,CAAC,uBAAuB,IAAI,IAAI,SAAS,EAAE,CAAC,CAAA;IAClD,GAAG,CAAC,MAAM,CACR,GAAG,WAAW,CAAC,MAAM,8BAA8B,SAAS,CAAC,MAAM,qBAAqB,gBAAgB,CAAC,MAAM,EAAE,CAClH,CAAA;IACD,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEhD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAM;QACxC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAA;YACT,OAAM;QACR,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IACF,MAAM,SAAS,CAAC,OAAO,EAAE,CAAA;IACzB,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAA;IAChC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA,CAAC,qDAAqD;IAEjG,OAAO,CAAC,CAAA;AACV,CAAC"}
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