@cogenta/cli 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin-assets/assets/index-Buwdj1V2.js +71 -0
- package/dist/admin-assets/assets/index-Csef0SiA.css +1 -0
- package/dist/admin-assets/index.html +2 -2
- package/dist/commands/assistant.d.ts +65 -0
- package/dist/commands/assistant.d.ts.map +1 -0
- package/dist/commands/assistant.js +207 -0
- package/dist/commands/assistant.js.map +1 -0
- package/dist/commands/content-webhooks.d.ts +41 -0
- package/dist/commands/content-webhooks.d.ts.map +1 -0
- package/dist/commands/content-webhooks.js +61 -0
- package/dist/commands/content-webhooks.js.map +1 -0
- package/dist/commands/http-security.d.ts +39 -0
- package/dist/commands/http-security.d.ts.map +1 -0
- package/dist/commands/http-security.js +153 -0
- package/dist/commands/http-security.js.map +1 -0
- package/dist/commands/links.d.ts +24 -0
- package/dist/commands/links.d.ts.map +1 -0
- package/dist/commands/links.js +109 -0
- package/dist/commands/links.js.map +1 -0
- package/dist/commands/media-images.d.ts +67 -0
- package/dist/commands/media-images.d.ts.map +1 -0
- package/dist/commands/media-images.js +107 -0
- package/dist/commands/media-images.js.map +1 -0
- package/dist/commands/search-page.d.ts +40 -0
- package/dist/commands/search-page.d.ts.map +1 -0
- package/dist/commands/search-page.js +104 -0
- package/dist/commands/search-page.js.map +1 -0
- package/dist/commands/security-alerts.d.ts +24 -0
- package/dist/commands/security-alerts.d.ts.map +1 -0
- package/dist/commands/security-alerts.js +82 -0
- package/dist/commands/security-alerts.js.map +1 -0
- package/dist/commands/seo.d.ts +88 -0
- package/dist/commands/seo.d.ts.map +1 -0
- package/dist/commands/seo.js +155 -0
- package/dist/commands/seo.js.map +1 -0
- package/dist/commands/serve.d.ts +87 -4
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +740 -40
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/site-plan.d.ts +86 -0
- package/dist/commands/site-plan.d.ts.map +1 -0
- package/dist/commands/site-plan.js +235 -0
- package/dist/commands/site-plan.js.map +1 -0
- package/dist/commands/theme-css.d.ts +54 -0
- package/dist/commands/theme-css.d.ts.map +1 -0
- package/dist/commands/theme-css.js +121 -0
- package/dist/commands/theme-css.js.map +1 -0
- package/dist/commands/theme-render.d.ts +78 -4
- package/dist/commands/theme-render.d.ts.map +1 -1
- package/dist/commands/theme-render.js +170 -16
- package/dist/commands/theme-render.js.map +1 -1
- package/dist/commands/users.d.ts +7 -1
- package/dist/commands/users.d.ts.map +1 -1
- package/dist/commands/users.js +159 -15
- package/dist/commands/users.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -1
- package/package.json +12 -10
- package/dist/admin-assets/assets/index-21ZcDkDC.css +0 -1
- package/dist/admin-assets/assets/index-BXVsXHD2.js +0 -23
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The theme's stylesheet, flattened and minified for `cogenta serve`.
|
|
3
|
+
*
|
|
4
|
+
* `@cogenta/theme-canonical` ships `src/styles/theme.css` as three `@import`ed
|
|
5
|
+
* layers — tokens, base, blocks. A real Astro build flattens those; this
|
|
6
|
+
* fallback has no build, so it does the same one thing a bundler would and
|
|
7
|
+
* nothing more: resolve the relative imports, drop the comments, squeeze the
|
|
8
|
+
* whitespace. No rewriting of selectors, no reordering, no autoprefixing —
|
|
9
|
+
* anything cleverer than that would make the served CSS differ from the CSS the
|
|
10
|
+
* theme's own tests assert on.
|
|
11
|
+
*
|
|
12
|
+
* Until this existed, `cogenta serve` sent only the generated `--cogenta-*`
|
|
13
|
+
* custom properties and never the sheet that *uses* them, so every page was
|
|
14
|
+
* rendered by the browser's default stylesheet with a skin defined and unused.
|
|
15
|
+
*/
|
|
16
|
+
function squeeze(code) {
|
|
17
|
+
return (code
|
|
18
|
+
.replace(/\s+/g, ' ')
|
|
19
|
+
// Only around the three separators that can never be part of a value or a
|
|
20
|
+
// combinator. `:` is left alone: removing the space in `@media
|
|
21
|
+
// (min-width: 60rem)` is safe but removing it in a selector is not, and
|
|
22
|
+
// telling the two apart needs a parser this deliberately is not.
|
|
23
|
+
.replace(/\s*([{};,])\s*/g, '$1')
|
|
24
|
+
.replace(/;}/g, '}'));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One pass over the sheet, in which a comment, a string and code are three
|
|
28
|
+
* different things and none of them is found with a regular expression.
|
|
29
|
+
*
|
|
30
|
+
* Both halves of that matter and each was a real bug first: an apostrophe in a
|
|
31
|
+
* prose comment ("the editor's intent") opens a string for any scanner that
|
|
32
|
+
* looks at quotes before comments, and swallows the rest of the file; and a
|
|
33
|
+
* `content: " — "` whose spaces are squeezed loses the separator it draws.
|
|
34
|
+
*/
|
|
35
|
+
export function minifyCss(css) {
|
|
36
|
+
let out = '';
|
|
37
|
+
let code = '';
|
|
38
|
+
let index = 0;
|
|
39
|
+
while (index < css.length) {
|
|
40
|
+
if (css.startsWith('/*', index)) {
|
|
41
|
+
const end = css.indexOf('*/', index + 2);
|
|
42
|
+
index = end === -1 ? css.length : end + 2;
|
|
43
|
+
// A comment is whitespace, not nothing: `.a/* x */.b` must not become
|
|
44
|
+
// `.a.b`, which selects something else entirely.
|
|
45
|
+
code += ' ';
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const character = css[index];
|
|
49
|
+
if (character !== '"' && character !== "'") {
|
|
50
|
+
code += character;
|
|
51
|
+
index += 1;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
out += squeeze(code);
|
|
55
|
+
code = '';
|
|
56
|
+
let end = index + 1;
|
|
57
|
+
while (end < css.length && css[end] !== character) {
|
|
58
|
+
end += css[end] === '\\' ? 2 : 1;
|
|
59
|
+
}
|
|
60
|
+
out += css.slice(index, Math.min(end + 1, css.length));
|
|
61
|
+
index = end + 1;
|
|
62
|
+
}
|
|
63
|
+
return (out + squeeze(code)).trim();
|
|
64
|
+
}
|
|
65
|
+
const IMPORT = /@import\s+(?:url\()?["']([^"']+)["']\)?\s*;/g;
|
|
66
|
+
/**
|
|
67
|
+
* Replaces every `@import "./x.css";` with the file's contents, recursively.
|
|
68
|
+
*
|
|
69
|
+
* Relative only, on purpose: a bare-specifier or `http(s)` import would let a
|
|
70
|
+
* theme's stylesheet pull in a third party at render time, which is exactly the
|
|
71
|
+
* kind of outside reach contract D refuses a theme elsewhere. Those are left
|
|
72
|
+
* untouched for the browser to refuse or fetch as it sees fit.
|
|
73
|
+
*/
|
|
74
|
+
export async function inlineImports(entry, options) {
|
|
75
|
+
const depth = options.depth ?? 8;
|
|
76
|
+
const css = await options.read(entry);
|
|
77
|
+
if (depth <= 0)
|
|
78
|
+
return css;
|
|
79
|
+
const parts = [];
|
|
80
|
+
let cursor = 0;
|
|
81
|
+
for (const match of css.matchAll(IMPORT)) {
|
|
82
|
+
const specifier = match[1];
|
|
83
|
+
if (!specifier.startsWith('.'))
|
|
84
|
+
continue;
|
|
85
|
+
const index = match.index ?? 0;
|
|
86
|
+
parts.push(css.slice(cursor, index));
|
|
87
|
+
parts.push(await inlineImports(new URL(specifier, entry), { read: options.read, depth: depth - 1 }));
|
|
88
|
+
cursor = index + match[0].length;
|
|
89
|
+
}
|
|
90
|
+
parts.push(css.slice(cursor));
|
|
91
|
+
return parts.join('\n');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The whole theme stylesheet as one minified string, or `null` when the theme
|
|
95
|
+
* package cannot be resolved — a site then renders with the skin's custom
|
|
96
|
+
* properties alone rather than refusing to serve, the same degradation
|
|
97
|
+
* `loadSkinCss` already chose for a missing `theme.tokens.json`.
|
|
98
|
+
*/
|
|
99
|
+
/**
|
|
100
|
+
* FNV-1a, 32 bits. A cache key, never a security boundary — and deliberately
|
|
101
|
+
* not `node:crypto`, to match the hash `@cogenta/render` already uses for the
|
|
102
|
+
* skin sheet's ETag rather than introduce a second convention beside it.
|
|
103
|
+
*/
|
|
104
|
+
export function cssEtag(css) {
|
|
105
|
+
let value = 0x811c9dc5;
|
|
106
|
+
for (let index = 0; index < css.length; index++) {
|
|
107
|
+
value ^= css.charCodeAt(index);
|
|
108
|
+
value = Math.imul(value, 0x01000193) >>> 0;
|
|
109
|
+
}
|
|
110
|
+
return `"${value.toString(16).padStart(8, '0')}"`;
|
|
111
|
+
}
|
|
112
|
+
export async function loadThemeCss(options) {
|
|
113
|
+
try {
|
|
114
|
+
const entry = new URL(import.meta.resolve('@cogenta/theme-canonical/styles/theme.css'));
|
|
115
|
+
return minifyCss(await inlineImports(entry, options));
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=theme-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-css.js","sourceRoot":"","sources":["../../src/commands/theme-css.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type
|
|
1
|
+
import { type AccessContext, type ContentGateway } from '@cogenta/api';
|
|
2
|
+
import { type MediaAsset as RenderMediaAsset } from '@cogenta/render';
|
|
3
|
+
import { type BlockZones, type CollectionDefinition } from '@cogenta/schema';
|
|
3
4
|
/**
|
|
4
5
|
* Real HTML for a matched route — the piece the lot's own gap notes named
|
|
5
6
|
* honestly ("`cogenta build`/`theme` not built yet"): until a real Astro site
|
|
@@ -12,6 +13,8 @@ import { type CollectionDefinition } from '@cogenta/schema';
|
|
|
12
13
|
* in-process. This is a deliberately scoped stand-in, not the Astro pipeline:
|
|
13
14
|
* one theme, no build step, no static generation.
|
|
14
15
|
*/
|
|
16
|
+
/** Where `cogenta serve` publishes image variants. Public: a visitor's browser fetches them. */
|
|
17
|
+
export declare const DEFAULT_IMAGE_ENDPOINT = "/_image";
|
|
15
18
|
export interface ThemeRenderOptions {
|
|
16
19
|
readonly collections: readonly CollectionDefinition[];
|
|
17
20
|
readonly gateway: ContentGateway;
|
|
@@ -21,9 +24,39 @@ export interface ThemeRenderOptions {
|
|
|
21
24
|
readonly locales: readonly string[];
|
|
22
25
|
readonly defaultLocale: string;
|
|
23
26
|
};
|
|
24
|
-
/**
|
|
25
|
-
|
|
27
|
+
/**
|
|
28
|
+
* The whole stylesheet: the skin's generated `--cogenta-*` custom properties
|
|
29
|
+
* followed by the theme's own sheet, already flattened and minified (see
|
|
30
|
+
* `theme-css.ts`). `null` when neither could be loaded — served unstyled
|
|
31
|
+
* rather than refused.
|
|
32
|
+
*
|
|
33
|
+
* The sheet is *linked*, not inlined: only the presence of one is needed
|
|
34
|
+
* here, so that a site with no stylesheet emits no dead `<link>`.
|
|
35
|
+
*/
|
|
36
|
+
readonly styles: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Loads the media a render references, in one batch, before rendering.
|
|
39
|
+
*
|
|
40
|
+
* It has to be a batch: `renderBlock` is pure and synchronous (contract D),
|
|
41
|
+
* and `@cogenta/seo`'s `SeoResolvers.media` is synchronous too, so neither
|
|
42
|
+
* `ctx.image()` nor an `og:image` can await a lookup. Which ids a page
|
|
43
|
+
* needs is answered by `collectDependencies` — the same walk `/api/content`
|
|
44
|
+
* already uses to declare a response's media dependencies — rather than by
|
|
45
|
+
* a fresh heuristic over block JSON.
|
|
46
|
+
*
|
|
47
|
+
* Absent means no images: `ctx.image()` refuses clearly, exactly as it did
|
|
48
|
+
* before the pipeline existed.
|
|
49
|
+
*/
|
|
50
|
+
readonly loadMedia?: (ids: readonly string[]) => Promise<ReadonlyMap<string, RenderMediaAsset>>;
|
|
51
|
+
/** Where image variants are served from. Defaults to `/_image`. */
|
|
52
|
+
readonly imageEndpoint?: string;
|
|
26
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Where the served stylesheet lives. Under `/_cogenta/` for the same reason
|
|
56
|
+
* `Base.astro` puts the skin there: it is a namespace no collection route can
|
|
57
|
+
* ever claim, since every route pattern starts from a collection's own path.
|
|
58
|
+
*/
|
|
59
|
+
export declare const STYLESHEET_PATH = "/_cogenta/styles.css";
|
|
27
60
|
/**
|
|
28
61
|
* Resolves `pathname` against the site's real routes and renders the real
|
|
29
62
|
* page, or returns `null` — never for "matched but nothing found", only for
|
|
@@ -32,6 +65,38 @@ export interface ThemeRenderOptions {
|
|
|
32
65
|
* gets.
|
|
33
66
|
*/
|
|
34
67
|
export declare function renderRequestedPage(pathname: string, options: ThemeRenderOptions, context: AccessContext): Promise<string | null>;
|
|
68
|
+
/**
|
|
69
|
+
* An entry that is not what the database holds — the block list an editor has
|
|
70
|
+
* on screen and has not saved yet.
|
|
71
|
+
*
|
|
72
|
+
* `blocks` is the whole zone map, exactly the shape the admin already keeps
|
|
73
|
+
* and already sends to `PUT /api/content/:collection/:id`; nothing here is a
|
|
74
|
+
* second, builder-only serialisation of a page.
|
|
75
|
+
*/
|
|
76
|
+
export interface DraftPage {
|
|
77
|
+
readonly collection: string;
|
|
78
|
+
readonly entryId: string;
|
|
79
|
+
readonly blocks: BlockZones;
|
|
80
|
+
/** Only the typed fields that changed. Absent fields keep the stored value. */
|
|
81
|
+
readonly values?: Readonly<Record<string, unknown>>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Renders an in-progress draft through the *same* function that renders the
|
|
85
|
+
* published page — the single reason this export exists.
|
|
86
|
+
*
|
|
87
|
+
* The visual page builder (L16 task 1) shows this HTML in an iframe rather
|
|
88
|
+
* than re-implementing the twelve blocks in React. The whole point of that
|
|
89
|
+
* choice is that there is no second renderer to drift, so this must not
|
|
90
|
+
* become one: it reads the stored entry through the same permission-checked
|
|
91
|
+
* gateway, overlays the unsaved blocks and values on it, and then hands the
|
|
92
|
+
* result to `renderEntryPage` unchanged. Handed a draft that equals what is
|
|
93
|
+
* stored, it returns the published page byte for byte — which is exactly what
|
|
94
|
+
* `theme-render-fidelity.test.ts` asserts.
|
|
95
|
+
*
|
|
96
|
+
* `null` means the entry does not exist or this actor may not read it. The
|
|
97
|
+
* caller turns both into the same 404, and neither says which.
|
|
98
|
+
*/
|
|
99
|
+
export declare function renderDraftPage(draft: DraftPage, options: ThemeRenderOptions, context: AccessContext): Promise<string | null>;
|
|
35
100
|
/**
|
|
36
101
|
* Reads `theme.tokens.json` next to the config and renders it through the
|
|
37
102
|
* real, already-tested `renderSkin` (contract D validation + `--cogenta-*`
|
|
@@ -39,4 +104,13 @@ export declare function renderRequestedPage(pathname: string, options: ThemeRend
|
|
|
39
104
|
* invalid tokens degrade to unstyled HTML rather than refusing to serve.
|
|
40
105
|
*/
|
|
41
106
|
export declare function loadSkinCss(readFile: (path: string) => Promise<string>, tokensPath: string): Promise<string | null>;
|
|
107
|
+
/**
|
|
108
|
+
* The two sheets a page needs, in the only order that works: the skin's
|
|
109
|
+
* generated custom properties first, then the theme's stylesheet that reads
|
|
110
|
+
* them. Either half may be missing — a project with no `theme.tokens.json`
|
|
111
|
+
* still gets the theme's layout, and a theme package that cannot be resolved
|
|
112
|
+
* still gets the skin's properties — and a page with neither is served
|
|
113
|
+
* unstyled rather than refused.
|
|
114
|
+
*/
|
|
115
|
+
export declare function joinStyles(skinCss: string | null, themeCss: string | null): string | null;
|
|
42
116
|
//# sourceMappingURL=theme-render.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-render.d.ts","sourceRoot":"","sources":["../../src/commands/theme-render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"theme-render.d.ts","sourceRoot":"","sources":["../../src/commands/theme-render.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EAIpB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAiB,KAAK,UAAU,IAAI,gBAAgB,EAAc,MAAM,iBAAiB,CAAA;AAChG,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,oBAAoB,EAG1B,MAAM,iBAAiB,CAAA;AAoExB;;;;;;;;;;;GAWG;AAEH,gGAAgG;AAChG,eAAO,MAAM,sBAAsB,YAAY,CAAA;AAE/C,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;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAC/F,mEAAmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,yBAAyB,CAAA;AA0GrD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACpD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BxB;AAyND;;;;;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;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAMzF"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { collectDependencies, } from '@cogenta/api';
|
|
1
2
|
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';
|
|
3
|
+
import { describeMedia, renderSkin } from '@cogenta/render';
|
|
4
|
+
import { buildPath, matchPath, } from '@cogenta/schema';
|
|
5
|
+
import { query as collectionListQuery, escapeAttribute, renderPage, serialize, } from '@cogenta/theme-canonical';
|
|
6
|
+
import { alternatesForEntry, renderSeoHead, seoSiteFor } from './seo.js';
|
|
7
|
+
import { minifyCss } from './theme-css.js';
|
|
5
8
|
/**
|
|
6
9
|
* The theme's own `ContentEntry`/`QueryRequest` (`theme-contract.ts`) are a
|
|
7
10
|
* deliberately separate, minimal public contract — a theme never imports
|
|
@@ -46,6 +49,26 @@ async function listAsTheme(gateway, request, context) {
|
|
|
46
49
|
nextCursor: page.nextCursor,
|
|
47
50
|
};
|
|
48
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Real HTML for a matched route — the piece the lot's own gap notes named
|
|
54
|
+
* honestly ("`cogenta build`/`theme` not built yet"): until a real Astro site
|
|
55
|
+
* exists (ADR-0008, contract D's actual intended delivery plane), `cogenta
|
|
56
|
+
* serve` renders the one theme this codebase has, `@cogenta/theme-canonical`,
|
|
57
|
+
* directly against the same permission-checked `ContentGateway` every REST
|
|
58
|
+
* and GraphQL request already goes through. No secret, config or DB handle
|
|
59
|
+
* ever reaches theme code — only the same `ContentEntry` shape a real HTTP
|
|
60
|
+
* client would receive, so the data boundary R5 cares about holds even
|
|
61
|
+
* in-process. This is a deliberately scoped stand-in, not the Astro pipeline:
|
|
62
|
+
* one theme, no build step, no static generation.
|
|
63
|
+
*/
|
|
64
|
+
/** Where `cogenta serve` publishes image variants. Public: a visitor's browser fetches them. */
|
|
65
|
+
export const DEFAULT_IMAGE_ENDPOINT = '/_image';
|
|
66
|
+
/**
|
|
67
|
+
* Where the served stylesheet lives. Under `/_cogenta/` for the same reason
|
|
68
|
+
* `Base.astro` puts the skin there: it is a namespace no collection route can
|
|
69
|
+
* ever claim, since every route pattern starts from a collection's own path.
|
|
70
|
+
*/
|
|
71
|
+
export const STYLESHEET_PATH = '/_cogenta/styles.css';
|
|
49
72
|
function fieldOfKind(collection, kind) {
|
|
50
73
|
return Object.entries(collection.fields).find(([, field]) => field.kind === kind)?.[0];
|
|
51
74
|
}
|
|
@@ -136,7 +159,50 @@ export async function renderRequestedPage(pathname, options, context) {
|
|
|
136
159
|
const resolved = await resolveEntry(pathname, options, context);
|
|
137
160
|
if (resolved === null)
|
|
138
161
|
return null;
|
|
139
|
-
|
|
162
|
+
return renderEntryPage(pathname, resolved.collection, resolved.entry, options, context);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Renders an in-progress draft through the *same* function that renders the
|
|
166
|
+
* published page — the single reason this export exists.
|
|
167
|
+
*
|
|
168
|
+
* The visual page builder (L16 task 1) shows this HTML in an iframe rather
|
|
169
|
+
* than re-implementing the twelve blocks in React. The whole point of that
|
|
170
|
+
* choice is that there is no second renderer to drift, so this must not
|
|
171
|
+
* become one: it reads the stored entry through the same permission-checked
|
|
172
|
+
* gateway, overlays the unsaved blocks and values on it, and then hands the
|
|
173
|
+
* result to `renderEntryPage` unchanged. Handed a draft that equals what is
|
|
174
|
+
* stored, it returns the published page byte for byte — which is exactly what
|
|
175
|
+
* `theme-render-fidelity.test.ts` asserts.
|
|
176
|
+
*
|
|
177
|
+
* `null` means the entry does not exist or this actor may not read it. The
|
|
178
|
+
* caller turns both into the same 404, and neither says which.
|
|
179
|
+
*/
|
|
180
|
+
export async function renderDraftPage(draft, options, context) {
|
|
181
|
+
const collection = options.collections.find((entry) => entry.name === draft.collection);
|
|
182
|
+
if (collection === undefined)
|
|
183
|
+
return null;
|
|
184
|
+
const stored = await options.gateway.read(draft.collection, draft.entryId, context);
|
|
185
|
+
if (stored === null)
|
|
186
|
+
return null;
|
|
187
|
+
const entry = {
|
|
188
|
+
...stored,
|
|
189
|
+
values: { ...stored.values, ...(draft.values ?? {}) },
|
|
190
|
+
blocks: draft.blocks,
|
|
191
|
+
};
|
|
192
|
+
// The path the entry really lives at, built from the same `buildPath` the
|
|
193
|
+
// public route uses — never a synthetic `/preview/...` URL. A canonical
|
|
194
|
+
// link, an `og:url` and a `collectionList` link all have to come out of
|
|
195
|
+
// this render identical to the published page's, and they are all derived
|
|
196
|
+
// from this one string.
|
|
197
|
+
const pathname = buildPath(collection, Object.fromEntries(Object.entries(entry.values).filter((pair) => typeof pair[1] === 'string')), entry.locale ?? undefined);
|
|
198
|
+
return renderEntryPage(pathname, collection, entry, options, context);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* The one page renderer. Both `renderRequestedPage` (published) and
|
|
202
|
+
* `renderDraftPage` (unsaved) end here, having only differed in how they got
|
|
203
|
+
* hold of an entry.
|
|
204
|
+
*/
|
|
205
|
+
async function renderEntryPage(pathname, collection, entry, options, context) {
|
|
140
206
|
const blocks = toVocabularyBlocks(entry, collection);
|
|
141
207
|
// Every entry a `collectionList` block needs is fetched up front — the
|
|
142
208
|
// theme's own contract (`FetchedEntries`, `render-block.ts`) requires it:
|
|
@@ -145,16 +211,39 @@ export async function renderRequestedPage(pathname, options, context) {
|
|
|
145
211
|
// either.
|
|
146
212
|
const fetchedEntries = {};
|
|
147
213
|
const knownEntries = new Map([[entry.id, entry]]);
|
|
214
|
+
/** Which collection each known entry came from — a `ContentEntry` does not say. */
|
|
215
|
+
const entryCollections = new Map([[entry.id, collection.name]]);
|
|
148
216
|
for (const block of blocks) {
|
|
149
217
|
if (block._type !== 'collectionList')
|
|
150
218
|
continue;
|
|
151
219
|
const themeQuery = collectionListQuery(block);
|
|
152
220
|
const results = await options.gateway.list(toApiQueryRequest(themeQuery), context);
|
|
153
221
|
fetchedEntries[block._key] = results.items.map((found) => toThemeEntry(found, themeQuery.collection));
|
|
154
|
-
for (const found of results.items)
|
|
222
|
+
for (const found of results.items) {
|
|
155
223
|
knownEntries.set(found.id, found);
|
|
224
|
+
entryCollections.set(found.id, themeQuery.collection);
|
|
225
|
+
}
|
|
156
226
|
}
|
|
157
227
|
const collectionsByName = new Map(options.collections.map((entry) => [entry.name, entry]));
|
|
228
|
+
// Which media this page references, from the same walk `/api/content` uses
|
|
229
|
+
// to declare a response's dependencies (`collectDependencies`): declared
|
|
230
|
+
// `media` fields *and* the media inside every block, resolved through the
|
|
231
|
+
// block registry rather than guessed at from the JSON. A `ContentEntry`
|
|
232
|
+
// plus its collection name is exactly a `SerialisedEntry`, which is why
|
|
233
|
+
// this reuse costs nothing.
|
|
234
|
+
const mediaAssets = new Map();
|
|
235
|
+
if (options.loadMedia !== undefined) {
|
|
236
|
+
const dependencies = collectDependencies([...knownEntries].map(([id, found]) => ({
|
|
237
|
+
...found,
|
|
238
|
+
collection: entryCollections.get(id) ?? collection.name,
|
|
239
|
+
})), { collection: (name) => collectionsByName.get(name) });
|
|
240
|
+
if (dependencies.media.length > 0) {
|
|
241
|
+
for (const [id, asset] of await options.loadMedia(dependencies.media)) {
|
|
242
|
+
mediaAssets.set(id, asset);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const imageEndpoint = options.imageEndpoint ?? DEFAULT_IMAGE_ENDPOINT;
|
|
158
247
|
const link = (target) => {
|
|
159
248
|
if (typeof target === 'string')
|
|
160
249
|
return target;
|
|
@@ -176,14 +265,23 @@ export async function renderRequestedPage(pathname, options, context) {
|
|
|
176
265
|
locale: entry.locale,
|
|
177
266
|
url: new URL(pathname, options.site.url),
|
|
178
267
|
t: (key) => key,
|
|
179
|
-
//
|
|
180
|
-
//
|
|
181
|
-
//
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
268
|
+
// The real `srcset`, from `@cogenta/render`'s own `describeMedia` (L10
|
|
269
|
+
// task 5). Pure and synchronous, as contract D requires: the asset was
|
|
270
|
+
// loaded before this render started, and this only builds URLs against
|
|
271
|
+
// the variants the upload already wrote.
|
|
272
|
+
image: (media, imageOptions) => {
|
|
273
|
+
const asset = mediaAssets.get(media);
|
|
274
|
+
if (asset === undefined) {
|
|
275
|
+
throw new CogentaError({
|
|
276
|
+
code: 'THEME_IMAGE_UNSUPPORTED',
|
|
277
|
+
message: `No media asset "${media}" is available to this render.`,
|
|
278
|
+
hint: 'The image must be referenced by a media field or a block of this page — those are the ones loaded before rendering. Check that the asset still exists in the media library.',
|
|
279
|
+
details: { media },
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
return describeMedia(asset, imageOptions ?? {}, {
|
|
283
|
+
endpoint: imageEndpoint,
|
|
284
|
+
mediaEndpoint: imageEndpoint,
|
|
187
285
|
});
|
|
188
286
|
},
|
|
189
287
|
link,
|
|
@@ -219,16 +317,57 @@ export async function renderRequestedPage(pathname, options, context) {
|
|
|
219
317
|
const pageContent = { title: entryTitle(entry), blocks };
|
|
220
318
|
const node = renderPage(pageContent, themeContext, fetchedEntries);
|
|
221
319
|
const bodyHtml = serialize(node);
|
|
320
|
+
// The head is `@cogenta/seo`'s, not this file's: title, description,
|
|
321
|
+
// canonical, hreflang, Open Graph, Twitter Card and JSON-LD, all derived
|
|
322
|
+
// from the real entry and the real collection (L10 task 1). Nothing here
|
|
323
|
+
// decides what is indexable — `buildMetaTags` asks `isPublished` itself, so
|
|
324
|
+
// a preview render carries `noindex` without this caller remembering to.
|
|
325
|
+
const seoSite = seoSiteFor(options.site);
|
|
326
|
+
const resource = { collection, entry };
|
|
327
|
+
const alternates = await alternatesForEntry(seoSite, collection, entry, options.gateway, context, options.site.locales);
|
|
328
|
+
// `og:image` and JSON-LD's `image` come from the same assets the page just
|
|
329
|
+
// rendered, resolved to an absolute URL — a social crawler never sends a
|
|
330
|
+
// session and never follows a relative path.
|
|
331
|
+
const seoMedia = (id) => {
|
|
332
|
+
const asset = mediaAssets.get(id);
|
|
333
|
+
if (asset === undefined || asset.kind !== 'image')
|
|
334
|
+
return null;
|
|
335
|
+
if (asset.width === undefined || asset.height === undefined)
|
|
336
|
+
return null;
|
|
337
|
+
const source = describeMedia(asset, {}, { endpoint: imageEndpoint, mediaEndpoint: imageEndpoint });
|
|
338
|
+
return {
|
|
339
|
+
url: new URL(source.src, options.site.url).toString(),
|
|
340
|
+
width: source.width,
|
|
341
|
+
height: source.height,
|
|
342
|
+
...(source.alt === '' ? {} : { alt: source.alt }),
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
// `head` already carries a real `<title>` (`renderSeoHead`, above) — no
|
|
346
|
+
// second one is written into the template below.
|
|
347
|
+
const head = renderSeoHead(seoSite, resource, {
|
|
348
|
+
...(alternates.length === 0 ? {} : { alternates }),
|
|
349
|
+
...(mediaAssets.size === 0 ? {} : { media: seoMedia }),
|
|
350
|
+
});
|
|
351
|
+
const siteName = escapeAttribute(options.site.name);
|
|
352
|
+
// The same frame `Base.astro` builds for a real Astro build: a skip link
|
|
353
|
+
// first, the site name as a header, the content, a footer. Rendering the
|
|
354
|
+
// `<main>` alone — which this did until the theme's own stylesheet started
|
|
355
|
+
// being served — left every page with no landmark to skip to and no way back
|
|
356
|
+
// to the home page.
|
|
222
357
|
return `<!doctype html>
|
|
223
|
-
<html lang="${themeContext.locale}">
|
|
358
|
+
<html lang="${themeContext.locale}" dir="auto">
|
|
224
359
|
<head>
|
|
225
360
|
<meta charset="utf-8">
|
|
226
361
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
227
|
-
<
|
|
228
|
-
${
|
|
362
|
+
<meta name="color-scheme" content="light dark">
|
|
363
|
+
${head}
|
|
364
|
+
${options.styles === null ? '' : `<link rel="stylesheet" href="${STYLESHEET_PATH}">`}
|
|
229
365
|
</head>
|
|
230
366
|
<body>
|
|
367
|
+
<a class="cg-skip-link" href="#cg-main">Skip to content</a>
|
|
368
|
+
<header class="cg-site-header"><div class="cg-site-header__inner"><a class="cg-site-header__home" href="/">${siteName}</a></div></header>
|
|
231
369
|
${bodyHtml}
|
|
370
|
+
<footer class="cg-site-footer"><div class="cg-site-footer__inner">${siteName}</div></footer>
|
|
232
371
|
</body>
|
|
233
372
|
</html>
|
|
234
373
|
`;
|
|
@@ -248,4 +387,19 @@ export async function loadSkinCss(readFile, tokensPath) {
|
|
|
248
387
|
return null;
|
|
249
388
|
}
|
|
250
389
|
}
|
|
390
|
+
/**
|
|
391
|
+
* The two sheets a page needs, in the only order that works: the skin's
|
|
392
|
+
* generated custom properties first, then the theme's stylesheet that reads
|
|
393
|
+
* them. Either half may be missing — a project with no `theme.tokens.json`
|
|
394
|
+
* still gets the theme's layout, and a theme package that cannot be resolved
|
|
395
|
+
* still gets the skin's properties — and a page with neither is served
|
|
396
|
+
* unstyled rather than refused.
|
|
397
|
+
*/
|
|
398
|
+
export function joinStyles(skinCss, themeCss) {
|
|
399
|
+
const sheets = [
|
|
400
|
+
skinCss === null ? null : minifyCss(skinCss),
|
|
401
|
+
themeCss === null ? null : minifyCss(themeCss),
|
|
402
|
+
].filter((sheet) => sheet !== null);
|
|
403
|
+
return sheets.length === 0 ? null : sheets.join('\n');
|
|
404
|
+
}
|
|
251
405
|
//# sourceMappingURL=theme-render.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-render.js","sourceRoot":"","sources":["../../src/commands/theme-render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme-render.js","sourceRoot":"","sources":["../../src/commands/theme-render.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/users.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Logger } from '@cogenta/core';
|
|
2
2
|
import type { Output, Writer } from '../output.js';
|
|
3
|
-
export type UsersSubcommand = 'create';
|
|
3
|
+
export type UsersSubcommand = 'create' | 'reset-password';
|
|
4
4
|
export interface UsersOptions {
|
|
5
5
|
readonly subcommand: string | undefined;
|
|
6
6
|
readonly cwd?: string;
|
|
@@ -11,6 +11,12 @@ export interface UsersOptions {
|
|
|
11
11
|
readonly email?: string;
|
|
12
12
|
readonly roles?: string;
|
|
13
13
|
readonly admin?: boolean;
|
|
14
|
+
/** `reset-password`: the token from the mail, redeeming the reset. */
|
|
15
|
+
readonly token?: string;
|
|
16
|
+
/** `reset-password`: the new password. Generated and printed once when absent. */
|
|
17
|
+
readonly password?: string;
|
|
18
|
+
/** Where the outgoing mail is written. Defaults to `.cogenta/mail` under the project. */
|
|
19
|
+
readonly mailDir?: string;
|
|
14
20
|
}
|
|
15
21
|
/**
|
|
16
22
|
* Runs one `users` subcommand and returns its exit code.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"AAWA,OAAO,EAKL,KAAK,MAAM,EAEZ,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAElD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,gBAAgB,CAAA;AAEzD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AA6MD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAwErE"}
|