@plumix/core 0.3.0 → 0.4.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/auth/bootstrap.d.ts.map +1 -1
- package/dist/auth/bootstrap.js +39 -22
- package/dist/auth/bootstrap.js.map +1 -1
- package/dist/cache/tags.d.ts.map +1 -1
- package/dist/cache/tags.js +9 -0
- package/dist/cache/tags.js.map +1 -1
- package/dist/db/errors.d.ts +8 -0
- package/dist/db/errors.d.ts.map +1 -1
- package/dist/db/errors.js +22 -0
- package/dist/db/errors.js.map +1 -1
- package/dist/db/index.d.ts +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema/users.d.ts +57 -0
- package/dist/db/schema/users.d.ts.map +1 -1
- package/dist/db/schema/users.js +10 -2
- package/dist/db/schema/users.js.map +1 -1
- package/dist/debug-bar/template-node-label.d.ts.map +1 -1
- package/dist/debug-bar/template-node-label.js +8 -0
- package/dist/debug-bar/template-node-label.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/plugin/manifest.d.ts +34 -0
- package/dist/plugin/manifest.d.ts.map +1 -1
- package/dist/plugin/manifest.js +1 -0
- package/dist/plugin/manifest.js.map +1 -1
- package/dist/plugin/setup-context.d.ts +10 -1
- package/dist/plugin/setup-context.d.ts.map +1 -1
- package/dist/plugin/setup-context.js +12 -0
- package/dist/plugin/setup-context.js.map +1 -1
- package/dist/route/compile.d.ts +21 -0
- package/dist/route/compile.d.ts.map +1 -1
- package/dist/route/compile.js +63 -1
- package/dist/route/compile.js.map +1 -1
- package/dist/route/current.d.ts +5 -3
- package/dist/route/current.d.ts.map +1 -1
- package/dist/route/date-range.d.ts +12 -0
- package/dist/route/date-range.d.ts.map +1 -0
- package/dist/route/date-range.js +39 -0
- package/dist/route/date-range.js.map +1 -0
- package/dist/route/intent.d.ts +7 -3
- package/dist/route/intent.d.ts.map +1 -1
- package/dist/route/match.d.ts +1 -0
- package/dist/route/match.d.ts.map +1 -1
- package/dist/route/match.js +1 -1
- package/dist/route/match.js.map +1 -1
- package/dist/route/render/build-resolved-entries.d.ts.map +1 -1
- package/dist/route/render/build-resolved-entries.js +6 -1
- package/dist/route/render/build-resolved-entries.js.map +1 -1
- package/dist/route/render/resolved-entry.d.ts +36 -0
- package/dist/route/render/resolved-entry.d.ts.map +1 -1
- package/dist/route/render/template-builders.d.ts +54 -2
- package/dist/route/render/template-builders.d.ts.map +1 -1
- package/dist/route/render/template-builders.js +63 -4
- package/dist/route/render/template-builders.js.map +1 -1
- package/dist/route/render/template-hierarchy.d.ts +17 -1
- package/dist/route/render/template-hierarchy.d.ts.map +1 -1
- package/dist/route/render/template-hierarchy.js +23 -0
- package/dist/route/render/template-hierarchy.js.map +1 -1
- package/dist/route/resolve.d.ts +3 -1
- package/dist/route/resolve.d.ts.map +1 -1
- package/dist/route/resolve.js +148 -4
- package/dist/route/resolve.js.map +1 -1
- package/dist/rpc/procedures/entry/create.d.ts +2 -2
- package/dist/rpc/procedures/entry/delete-permanent.d.ts +2 -2
- package/dist/rpc/procedures/entry/duplicate.d.ts +2 -2
- package/dist/rpc/procedures/entry/get.d.ts +2 -2
- package/dist/rpc/procedures/entry/index.d.ts +22 -22
- package/dist/rpc/procedures/entry/list.d.ts +2 -2
- package/dist/rpc/procedures/entry/publish.d.ts +2 -2
- package/dist/rpc/procedures/entry/restore.d.ts +2 -2
- package/dist/rpc/procedures/entry/revisions.d.ts +8 -8
- package/dist/rpc/procedures/entry/trash.d.ts +2 -2
- package/dist/rpc/procedures/entry/update.d.ts +2 -2
- package/dist/rpc/procedures/term/create.d.ts +2 -2
- package/dist/rpc/procedures/term/delete.d.ts +2 -2
- package/dist/rpc/procedures/term/get.d.ts +2 -2
- package/dist/rpc/procedures/term/index.d.ts +10 -10
- package/dist/rpc/procedures/term/list.d.ts +2 -2
- package/dist/rpc/procedures/term/update.d.ts +2 -2
- package/dist/rpc/procedures/user/delete.d.ts +2 -0
- package/dist/rpc/procedures/user/delete.d.ts.map +1 -1
- package/dist/rpc/procedures/user/disable.d.ts +2 -0
- package/dist/rpc/procedures/user/disable.d.ts.map +1 -1
- package/dist/rpc/procedures/user/enable.d.ts +2 -0
- package/dist/rpc/procedures/user/enable.d.ts.map +1 -1
- package/dist/rpc/procedures/user/get.d.ts +2 -0
- package/dist/rpc/procedures/user/get.d.ts.map +1 -1
- package/dist/rpc/procedures/user/index.d.ts +12 -0
- package/dist/rpc/procedures/user/index.d.ts.map +1 -1
- package/dist/rpc/procedures/user/invite.d.ts.map +1 -1
- package/dist/rpc/procedures/user/invite.js +28 -15
- package/dist/rpc/procedures/user/invite.js.map +1 -1
- package/dist/rpc/procedures/user/list.d.ts +2 -0
- package/dist/rpc/procedures/user/list.d.ts.map +1 -1
- package/dist/rpc/procedures/user/list.js +1 -0
- package/dist/rpc/procedures/user/list.js.map +1 -1
- package/dist/rpc/procedures/user/update.d.ts +2 -0
- package/dist/rpc/procedures/user/update.d.ts.map +1 -1
- package/dist/rpc/router.d.ts +44 -32
- package/dist/rpc/router.d.ts.map +1 -1
- package/dist/runtime/dispatcher.d.ts.map +1 -1
- package/dist/runtime/dispatcher.js +70 -6
- package/dist/runtime/dispatcher.js.map +1 -1
- package/dist/seo/feed.d.ts +19 -4
- package/dist/seo/feed.d.ts.map +1 -1
- package/dist/seo/feed.js +49 -12
- package/dist/seo/feed.js.map +1 -1
- package/dist/seo/head-defaults.d.ts.map +1 -1
- package/dist/seo/head-defaults.js +6 -3
- package/dist/seo/head-defaults.js.map +1 -1
- package/dist/template-registry.d.ts +31 -1
- package/dist/template-registry.d.ts.map +1 -1
- package/dist/test/default-theme.d.ts.map +1 -1
- package/dist/test/default-theme.js +3 -0
- package/dist/test/default-theme.js.map +1 -1
- package/dist/test/factories.d.ts +39 -21
- package/dist/test/factories.d.ts.map +1 -1
- package/dist/test/factories.js +1 -0
- package/dist/test/factories.js.map +1 -1
- package/dist/theme.d.ts +15 -7
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +9 -0
- package/dist/theme.js.map +1 -1
- package/dist/users/slug.d.ts +12 -0
- package/dist/users/slug.d.ts.map +1 -0
- package/dist/users/slug.js +32 -0
- package/dist/users/slug.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current.d.ts","sourceRoot":"","sources":["../../src/route/current.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"current.d.ts","sourceRoot":"","sources":["../../src/route/current.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,aAAa,GACpB,OAAO,CAOT"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The half-open `[start, end)` UTC instant range a `/YYYY[/MM[/DD]]` archive
|
|
3
|
+
* covers, or `null` when the components don't form a real date (month 13,
|
|
4
|
+
* Feb 30, …) so the caller 404s. `month`/`day` are 1-based; `null` = a coarser
|
|
5
|
+
* granularity (a year has `month`/`day` null). Shared by the date-archive
|
|
6
|
+
* resolver and the date feed so both agree on boundaries and validation.
|
|
7
|
+
*/
|
|
8
|
+
export declare function dateRange(year: number, month: number | null, day: number | null): {
|
|
9
|
+
readonly start: Date;
|
|
10
|
+
readonly end: Date;
|
|
11
|
+
} | null;
|
|
12
|
+
//# sourceMappingURL=date-range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range.d.ts","sourceRoot":"","sources":["../../src/route/date-range.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAsBrD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Midnight UTC for the given components, via `setUTCFullYear` rather than
|
|
2
|
+
// `Date.UTC`/`new Date(y, …)` — the latter two remap a 0–99 year to 1900–1999,
|
|
3
|
+
// which would send `/0050` to 1950. `setUTCFullYear` takes the literal year and
|
|
4
|
+
// still overflows an out-of-range month/day, which the callers rely on.
|
|
5
|
+
function utcMidnight(year, monthIndex, day) {
|
|
6
|
+
const d = new Date(0);
|
|
7
|
+
d.setUTCFullYear(year, monthIndex, day);
|
|
8
|
+
return d;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The half-open `[start, end)` UTC instant range a `/YYYY[/MM[/DD]]` archive
|
|
12
|
+
* covers, or `null` when the components don't form a real date (month 13,
|
|
13
|
+
* Feb 30, …) so the caller 404s. `month`/`day` are 1-based; `null` = a coarser
|
|
14
|
+
* granularity (a year has `month`/`day` null). Shared by the date-archive
|
|
15
|
+
* resolver and the date feed so both agree on boundaries and validation.
|
|
16
|
+
*/
|
|
17
|
+
export function dateRange(year, month, day) {
|
|
18
|
+
if (month === null) {
|
|
19
|
+
return { start: utcMidnight(year, 0, 1), end: utcMidnight(year + 1, 0, 1) };
|
|
20
|
+
}
|
|
21
|
+
if (month < 1 || month > 12)
|
|
22
|
+
return null;
|
|
23
|
+
if (day === null) {
|
|
24
|
+
return {
|
|
25
|
+
start: utcMidnight(year, month - 1, 1),
|
|
26
|
+
end: utcMidnight(year, month, 1),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const start = utcMidnight(year, month - 1, day);
|
|
30
|
+
// An out-of-range day overflows into the next month; reject when the
|
|
31
|
+
// round-trip doesn't match, catching Feb 30, Apr 31, etc.
|
|
32
|
+
if (start.getUTCFullYear() !== year ||
|
|
33
|
+
start.getUTCMonth() !== month - 1 ||
|
|
34
|
+
start.getUTCDate() !== day) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return { start, end: utcMidnight(year, month - 1, day + 1) };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=date-range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range.js","sourceRoot":"","sources":["../../src/route/date-range.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,+EAA+E;AAC/E,gFAAgF;AAChF,wEAAwE;AACxE,SAAS,WAAW,CAAC,IAAY,EAAE,UAAkB,EAAE,GAAW;IAChE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,KAAoB,EACpB,GAAkB;IAElB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACjC,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAChD,qEAAqE;IACrE,0DAA0D;IAC1D,IACE,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI;QAC/B,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC;QACjC,KAAK,CAAC,UAAU,EAAE,KAAK,GAAG,EAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC"}
|
package/dist/route/intent.d.ts
CHANGED
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
* into a Response by the public-route resolver. URL params (slug, term,
|
|
4
4
|
* page) live on `RouteMatch.params`, not on the intent itself — the
|
|
5
5
|
* intent describes the *route shape*, the match carries the request.
|
|
6
|
-
*
|
|
7
|
-
* `search` / `front-page` / `handler` / `redirect` land when a plugin
|
|
8
|
-
* actually needs them.
|
|
9
6
|
*/
|
|
10
7
|
export type RouteIntent = {
|
|
11
8
|
readonly kind: "single";
|
|
@@ -16,10 +13,17 @@ export type RouteIntent = {
|
|
|
16
13
|
} | {
|
|
17
14
|
readonly kind: "taxonomy";
|
|
18
15
|
readonly taxonomy: string;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: "author";
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: "date";
|
|
19
20
|
} | {
|
|
20
21
|
readonly kind: "front-page";
|
|
21
22
|
} | {
|
|
22
23
|
readonly kind: "search";
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: "custom";
|
|
26
|
+
readonly name: string;
|
|
23
27
|
};
|
|
24
28
|
/**
|
|
25
29
|
* Compiled rule. `priority` preserves arch-doc ordering semantics — lower
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/route/intent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/route/intent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAI3B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B"}
|
package/dist/route/match.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export interface RouteMatch {
|
|
|
4
4
|
readonly params: Record<string, string>;
|
|
5
5
|
}
|
|
6
6
|
export declare function matchRoute(url: URL, rules: readonly RouteRule[]): RouteMatch | null;
|
|
7
|
+
export declare function extractParams(pathname: URLPatternComponentResult): Record<string, string>;
|
|
7
8
|
//# sourceMappingURL=match.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/route/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,SAAS,EAAE,GAC1B,UAAU,GAAG,IAAI,CAOnB"}
|
|
1
|
+
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/route/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,SAAS,EAAE,GAC1B,UAAU,GAAG,IAAI,CAOnB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,yBAAyB,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB"}
|
package/dist/route/match.js
CHANGED
package/dist/route/match.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/route/match.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,UAAU,CACxB,GAAQ,EACR,KAA2B;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/route/match.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,UAAU,CACxB,GAAQ,EACR,KAA2B;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAmC;IAEnC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-resolved-entries.d.ts","sourceRoot":"","sources":["../../../src/route/render/build-resolved-entries.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASzD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,SAAS,KAAK,EAAE,GACrB,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"build-resolved-entries.d.ts","sourceRoot":"","sources":["../../../src/route/render/build-resolved-entries.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASzD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,SAAS,KAAK,EAAE,GACrB,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CA0DnC"}
|
|
@@ -17,7 +17,12 @@ export async function buildResolvedEntries(ctx, rows) {
|
|
|
17
17
|
const authorIds = Array.from(new Set(rows.map((r) => r.authorId)));
|
|
18
18
|
const [authorRows, joinRows] = await Promise.all([
|
|
19
19
|
ctx.db
|
|
20
|
-
.select({
|
|
20
|
+
.select({
|
|
21
|
+
id: users.id,
|
|
22
|
+
slug: users.slug,
|
|
23
|
+
name: users.name,
|
|
24
|
+
avatarUrl: users.avatarUrl,
|
|
25
|
+
})
|
|
21
26
|
.from(users)
|
|
22
27
|
.where(inArray(users.id, authorIds)),
|
|
23
28
|
ctx.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-resolved-entries.js","sourceRoot":"","sources":["../../../src/route/render/build-resolved-entries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMhD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAe,EACf,IAAsB;IAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/C,GAAG,CAAC,EAAE;aACH,MAAM,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"build-resolved-entries.js","sourceRoot":"","sources":["../../../src/route/render/build-resolved-entries.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { Term } from "../../db/schema/terms.js";
|
|
|
4
4
|
/** Public-safe author projection — query select narrows away email + auth columns. */
|
|
5
5
|
export interface ResolvedAuthor {
|
|
6
6
|
readonly id: number;
|
|
7
|
+
readonly slug: string;
|
|
7
8
|
readonly name: string | null;
|
|
8
9
|
readonly avatarUrl: string | null;
|
|
9
10
|
}
|
|
@@ -39,6 +40,29 @@ export interface TaxonomyData<TTerm extends ResolvedTerm = ResolvedTerm, TEntry
|
|
|
39
40
|
readonly entries: readonly TEntry[];
|
|
40
41
|
readonly pagination: Pagination;
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Payload for an author archive (`/authors/{slug}`). Carries the resolved author
|
|
45
|
+
* as the subject (like `TaxonomyData.term`) plus their published entries.
|
|
46
|
+
*/
|
|
47
|
+
export interface AuthorArchiveData<TEntry extends ResolvedEntry = ResolvedEntry> {
|
|
48
|
+
readonly kind: "author";
|
|
49
|
+
readonly author: ResolvedAuthor;
|
|
50
|
+
readonly entries: readonly TEntry[];
|
|
51
|
+
readonly pagination: Pagination;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Payload for a date archive (`/YYYY[/MM[/DD]]`). `year` is always set;
|
|
55
|
+
* `month`/`day` are 1-based and `null` at a coarser granularity (a year archive
|
|
56
|
+
* has `month: null, day: null`).
|
|
57
|
+
*/
|
|
58
|
+
export interface DateArchiveData<TEntry extends ResolvedEntry = ResolvedEntry> {
|
|
59
|
+
readonly kind: "date";
|
|
60
|
+
readonly year: number;
|
|
61
|
+
readonly month: number | null;
|
|
62
|
+
readonly day: number | null;
|
|
63
|
+
readonly entries: readonly TEntry[];
|
|
64
|
+
readonly pagination: Pagination;
|
|
65
|
+
}
|
|
42
66
|
export interface FrontPageData<TEntry extends ResolvedEntry = ResolvedEntry> {
|
|
43
67
|
readonly kind: "frontPage";
|
|
44
68
|
readonly entries: readonly TEntry[];
|
|
@@ -50,6 +74,18 @@ export interface SearchData<TEntry extends ResolvedEntry = ResolvedEntry> {
|
|
|
50
74
|
readonly entries: readonly TEntry[];
|
|
51
75
|
readonly pagination: Pagination;
|
|
52
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Base payload for a plugin-registered archive (`registerArchiveType`). The
|
|
79
|
+
* `kind`/`name` discriminate it; a plugin extends this with its own fields
|
|
80
|
+
* (entries, pagination, whatever the archive lists) and declares the extended
|
|
81
|
+
* shape in `ArchiveTypeRegistry` so `forArchiveType(name)` types `data`. Core
|
|
82
|
+
* only ever sees the base — the resolver and template come from the plugin.
|
|
83
|
+
*/
|
|
84
|
+
export interface CustomArchiveData {
|
|
85
|
+
readonly kind: "custom";
|
|
86
|
+
/** The registered archive-type name (`registerArchiveType(name, …)`). */
|
|
87
|
+
readonly name: string;
|
|
88
|
+
}
|
|
53
89
|
/**
|
|
54
90
|
* Payload threaded to a theme's `404` / `500` template. Public-safe by
|
|
55
91
|
* shape — there is no Error field, so internal exception messages have
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolved-entry.d.ts","sourceRoot":"","sources":["../../../src/route/render/resolved-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAKD,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAQD,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,QAAQ,CAAC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAMD,MAAM,WAAW,SAAS,CAAC,MAAM,SAAS,aAAa,GAAG,aAAa;IACrE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW,CAAC,MAAM,SAAS,aAAa,GAAG,aAAa;IACvE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,YAAY,CAC3B,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,MAAM,SAAS,aAAa,GAAG,aAAa;IAE5C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,aAAa,GAAG,aAAa;IACzE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,aAAa,GAAG,aAAa;IACtE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"resolved-entry.d.ts","sourceRoot":"","sources":["../../../src/route/render/resolved-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { EntryProjection, EntryTypeName, MetaOf, TermProjection, TermTaxonomyName } from "../../template-registry.js";
|
|
1
|
+
import type { ArchiveDataOf, ArchiveTypeName, EntryProjection, EntryTypeName, MetaOf, TermMetaOf, TermProjection, TermTaxonomyName } from "../../template-registry.js";
|
|
2
2
|
import type { TemplateData, TemplateEntry, TemplateRule, ThemeDescriptor } from "../../theme.js";
|
|
3
|
-
import type { ArchiveData, EntryData, ErrorData, FrontPageData, SearchData, TaxonomyData } from "./resolved-entry.js";
|
|
3
|
+
import type { ArchiveData, AuthorArchiveData, DateArchiveData, EntryData, ErrorData, FrontPageData, SearchData, TaxonomyData } from "./resolved-entry.js";
|
|
4
4
|
/** Universal catch-all — matches any resolved node. */
|
|
5
5
|
export declare function fallback(template: TemplateEntry<TemplateData>): TemplateRule;
|
|
6
6
|
/** A single entry (any type). */
|
|
@@ -9,6 +9,10 @@ export declare function entry(template: TemplateEntry<EntryData>): TemplateRule;
|
|
|
9
9
|
export declare function archive(template: TemplateEntry<ArchiveData>): TemplateRule;
|
|
10
10
|
/** A term archive (any taxonomy). */
|
|
11
11
|
export declare function taxonomy(template: TemplateEntry<TaxonomyData>): TemplateRule;
|
|
12
|
+
/** An author archive (any author). */
|
|
13
|
+
export declare function author(template: TemplateEntry<AuthorArchiveData>): TemplateRule;
|
|
14
|
+
/** A date archive (any year/month/day). */
|
|
15
|
+
export declare function date(template: TemplateEntry<DateArchiveData>): TemplateRule;
|
|
12
16
|
/** The static front page. */
|
|
13
17
|
export declare function frontPage(template: TemplateEntry<FrontPageData>): TemplateRule;
|
|
14
18
|
/** Search results. */
|
|
@@ -62,11 +66,59 @@ interface TermTaxonomyBuilder<K extends TermTaxonomyName> extends TaxonomySelect
|
|
|
62
66
|
slug(slug: string): TaxonomySelector<K>;
|
|
63
67
|
/** Narrow to one term by numeric id. */
|
|
64
68
|
id(id: number): TaxonomySelector<K>;
|
|
69
|
+
/** Narrow by a term-meta value, typed against the taxonomy's meta projection. */
|
|
70
|
+
whereMeta<M extends keyof TermMetaOf<K>>(key: M, value: TermMetaOf<K>[M]): TaxonomySelector<K>;
|
|
71
|
+
/** Narrow by an arbitrary predicate over the resolved taxonomy data. */
|
|
72
|
+
where(predicate: (data: TaxonomyData<TermProjection<K>>) => boolean): TaxonomySelector<K>;
|
|
73
|
+
/** Register an author-selectable template, matched from stored term meta. */
|
|
74
|
+
named(id: string, label: string): TaxonomySelector<K>;
|
|
65
75
|
}
|
|
66
76
|
/**
|
|
67
77
|
* Target a registered taxonomy. `name` autocompletes and rejects typos; the
|
|
68
78
|
* template's `data.term` is typed from the taxonomy's term projection.
|
|
69
79
|
*/
|
|
70
80
|
export declare function forTermTaxonomy<K extends TermTaxonomyName>(name: K): TermTaxonomyBuilder<K>;
|
|
81
|
+
interface AuthorSelector {
|
|
82
|
+
/** Bind the template for the selected author. */
|
|
83
|
+
template(t: TemplateEntry<AuthorArchiveData>): TemplateRule;
|
|
84
|
+
}
|
|
85
|
+
interface AuthorBuilder extends AuthorSelector {
|
|
86
|
+
/** Narrow to one author by slug. */
|
|
87
|
+
slug(slug: string): AuthorSelector;
|
|
88
|
+
/** Narrow to one author by numeric id. */
|
|
89
|
+
id(id: number): AuthorSelector;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Target author archives. There is a single author "kind" (no registry to
|
|
93
|
+
* autocomplete), so `forAuthor()` takes no name — chain `.slug(...)` / `.id(...)`
|
|
94
|
+
* to narrow to one author, mirroring `forEntryType` / `forTermTaxonomy`. The
|
|
95
|
+
* bare `.template()` matches every author archive (like the `author()` tier).
|
|
96
|
+
*/
|
|
97
|
+
export declare function forAuthor(): AuthorBuilder;
|
|
98
|
+
interface DateSelector {
|
|
99
|
+
/** Bind the template for the selected period. */
|
|
100
|
+
template(t: TemplateEntry<DateArchiveData>): TemplateRule;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Target one date archive. Date components are hierarchical (a month has no
|
|
104
|
+
* meaning without a year), so `forDate` takes them positionally and matches the
|
|
105
|
+
* archive of that exact granularity: `forDate(2026)` → the year archive,
|
|
106
|
+
* `forDate(2026, 7)` → that month, `forDate(2026, 7, 21)` → that day. The
|
|
107
|
+
* generic `date()` tier styles every date archive.
|
|
108
|
+
*/
|
|
109
|
+
export declare function forDate(year: number): DateSelector;
|
|
110
|
+
export declare function forDate(year: number, month: number): DateSelector;
|
|
111
|
+
export declare function forDate(year: number, month: number, day: number): DateSelector;
|
|
112
|
+
interface ArchiveTypeSelector<K extends ArchiveTypeName> {
|
|
113
|
+
/** Bind the template for the selected archive type. */
|
|
114
|
+
template(t: TemplateEntry<ArchiveDataOf<K>>): TemplateRule;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Target a plugin-registered archive type (`registerArchiveType`). `name`
|
|
118
|
+
* autocompletes against `ArchiveTypeRegistry` and types the template's `data`
|
|
119
|
+
* from the registered projection — the same shape as `forEntryType` /
|
|
120
|
+
* `forTermTaxonomy`, for archives that live in a plugin rather than core.
|
|
121
|
+
*/
|
|
122
|
+
export declare function forArchiveType<K extends ArchiveTypeName>(name: K): ArchiveTypeSelector<K>;
|
|
71
123
|
export {};
|
|
72
124
|
//# sourceMappingURL=template-builders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-builders.d.ts","sourceRoot":"","sources":["../../../src/route/render/template-builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,MAAM,EACN,cAAc,EACd,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAGV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,qBAAqB,CAAC;AAc7B,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,YAAY,CAE5E;AAED,iCAAiC;AACjC,wBAAgB,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,YAAY,CAEtE;AAED,sCAAsC;AACtC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,YAAY,CAE1E;AAED,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,YAAY,CAE5E;AAED,6BAA6B;AAC7B,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GACrC,YAAY,CAEd;AAED,sBAAsB;AACtB,wBAAgB,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,YAAY,CAExE;AAED,uBAAuB;AACvB,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,YAAY,CAEzE;AAED,uBAAuB;AACvB,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,YAAY,CAE5E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,GACtC,SAAS,YAAY,EAAE,CAMzB;AAiBD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"template-builders.d.ts","sourceRoot":"","sources":["../../../src/route/render/template-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,14 @@ export function archive(template) {
|
|
|
22
22
|
export function taxonomy(template) {
|
|
23
23
|
return rule("taxonomy", template);
|
|
24
24
|
}
|
|
25
|
+
/** An author archive (any author). */
|
|
26
|
+
export function author(template) {
|
|
27
|
+
return rule("author", template);
|
|
28
|
+
}
|
|
29
|
+
/** A date archive (any year/month/day). */
|
|
30
|
+
export function date(template) {
|
|
31
|
+
return rule("date", template);
|
|
32
|
+
}
|
|
25
33
|
/** The static front page. */
|
|
26
34
|
export function frontPage(template) {
|
|
27
35
|
return rule("frontPage", template);
|
|
@@ -68,6 +76,10 @@ export const NAMED_TEMPLATE_META_KEY = "__plumix_template";
|
|
|
68
76
|
function metaEquals(key, value) {
|
|
69
77
|
return (data) => "entry" in data && data.entry.meta[key] === value;
|
|
70
78
|
}
|
|
79
|
+
/** A predicate matching when a resolved term's meta value equals `value`. */
|
|
80
|
+
function termMetaEquals(key, value) {
|
|
81
|
+
return (data) => "term" in data && data.term.meta[key] === value;
|
|
82
|
+
}
|
|
71
83
|
/**
|
|
72
84
|
* Target a registered entry type. `name` autocompletes and rejects typos
|
|
73
85
|
* (`keyof EntryTypeRegistry`); the template's `data.entry` is typed from the
|
|
@@ -100,14 +112,61 @@ export function forEntryType(name) {
|
|
|
100
112
|
* template's `data.term` is typed from the taxonomy's term projection.
|
|
101
113
|
*/
|
|
102
114
|
export function forTermTaxonomy(name) {
|
|
115
|
+
// Each selector adds its narrowing to the shared term-node prefix.
|
|
116
|
+
const term = (extra) => ({
|
|
117
|
+
template: (t) => matchRule({ nodeKind: "term", type: name, ...extra }, t),
|
|
118
|
+
});
|
|
103
119
|
return {
|
|
104
120
|
template: (t) => matchRule({ nodeKind: "term", type: name }, t),
|
|
105
|
-
slug: (slug) => ({
|
|
106
|
-
|
|
121
|
+
slug: (slug) => term({ slug }),
|
|
122
|
+
id: (id) => term({ id }),
|
|
123
|
+
whereMeta: (key, value) => term({ predicate: termMetaEquals(String(key), value) }),
|
|
124
|
+
where: (predicate) => term({
|
|
125
|
+
predicate: predicate,
|
|
107
126
|
}),
|
|
108
|
-
|
|
109
|
-
|
|
127
|
+
named: (id, label) => term({
|
|
128
|
+
named: { id, label },
|
|
129
|
+
predicate: termMetaEquals(NAMED_TEMPLATE_META_KEY, id),
|
|
110
130
|
}),
|
|
111
131
|
};
|
|
112
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Target author archives. There is a single author "kind" (no registry to
|
|
135
|
+
* autocomplete), so `forAuthor()` takes no name — chain `.slug(...)` / `.id(...)`
|
|
136
|
+
* to narrow to one author, mirroring `forEntryType` / `forTermTaxonomy`. The
|
|
137
|
+
* bare `.template()` matches every author archive (like the `author()` tier).
|
|
138
|
+
*/
|
|
139
|
+
export function forAuthor() {
|
|
140
|
+
// Each selector adds its narrowing to the shared author-node prefix.
|
|
141
|
+
const authorNode = (extra) => ({
|
|
142
|
+
template: (t) => matchRule({ nodeKind: "author", type: "author", ...extra }, t),
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
template: (t) => matchRule({ nodeKind: "author", type: "author" }, t),
|
|
146
|
+
slug: (slug) => authorNode({ slug }),
|
|
147
|
+
id: (id) => authorNode({ id }),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export function forDate(year, month, day) {
|
|
151
|
+
return {
|
|
152
|
+
template: (t) => matchRule({
|
|
153
|
+
nodeKind: "date",
|
|
154
|
+
type: "date",
|
|
155
|
+
year,
|
|
156
|
+
...(month !== undefined ? { month } : {}),
|
|
157
|
+
...(day !== undefined ? { day } : {}),
|
|
158
|
+
}, t),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Target a plugin-registered archive type (`registerArchiveType`). `name`
|
|
163
|
+
* autocompletes against `ArchiveTypeRegistry` and types the template's `data`
|
|
164
|
+
* from the registered projection — the same shape as `forEntryType` /
|
|
165
|
+
* `forTermTaxonomy`, for archives that live in a plugin rather than core.
|
|
166
|
+
*/
|
|
167
|
+
export function forArchiveType(name) {
|
|
168
|
+
return {
|
|
169
|
+
template: (t) => matchRule({ nodeKind: "custom", type: name }, t),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
113
172
|
//# sourceMappingURL=template-builders.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-builders.js","sourceRoot":"","sources":["../../../src/route/render/template-builders.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-builders.js","sourceRoot":"","sources":["../../../src/route/render/template-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,13 +8,29 @@
|
|
|
8
8
|
* type + slug/id).
|
|
9
9
|
*/
|
|
10
10
|
import type { TemplateData, TemplateRule } from "../../theme.js";
|
|
11
|
-
export type ResolvedNode = ResolvedTermNode | ResolvedContentNode | ResolvedContentTypeArchive | ResolvedFrontPage | ResolvedSearch;
|
|
11
|
+
export type ResolvedNode = ResolvedTermNode | ResolvedContentNode | ResolvedContentTypeArchive | ResolvedAuthorNode | ResolvedDateNode | ResolvedCustomNode | ResolvedFrontPage | ResolvedSearch;
|
|
12
12
|
interface ResolvedTermNode {
|
|
13
13
|
readonly kind: "term";
|
|
14
14
|
readonly taxonomy: string;
|
|
15
15
|
readonly slug: string;
|
|
16
16
|
readonly databaseId: number;
|
|
17
17
|
}
|
|
18
|
+
interface ResolvedAuthorNode {
|
|
19
|
+
readonly kind: "author";
|
|
20
|
+
readonly slug: string;
|
|
21
|
+
readonly databaseId: number;
|
|
22
|
+
}
|
|
23
|
+
interface ResolvedDateNode {
|
|
24
|
+
readonly kind: "date";
|
|
25
|
+
readonly year: number;
|
|
26
|
+
readonly month: number | null;
|
|
27
|
+
readonly day: number | null;
|
|
28
|
+
}
|
|
29
|
+
interface ResolvedCustomNode {
|
|
30
|
+
readonly kind: "custom";
|
|
31
|
+
/** The registered archive-type name (`registerArchiveType`). */
|
|
32
|
+
readonly name: string;
|
|
33
|
+
}
|
|
18
34
|
interface ResolvedContentNode {
|
|
19
35
|
readonly kind: "content";
|
|
20
36
|
readonly entryType: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-hierarchy.d.ts","sourceRoot":"","sources":["../../../src/route/render/template-hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAGV,YAAY,EACZ,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,YAAY,GACpB,gBAAgB,GAChB,mBAAmB,GACnB,0BAA0B,GAC1B,iBAAiB,GACjB,cAAc,CAAC;AAEnB,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"template-hierarchy.d.ts","sourceRoot":"","sources":["../../../src/route/render/template-hierarchy.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,11 @@ const GENERIC_TIER_FOR_NODE = {
|
|
|
14
14
|
content: "entry",
|
|
15
15
|
"content-type-archive": "archive",
|
|
16
16
|
term: "taxonomy",
|
|
17
|
+
author: "author",
|
|
18
|
+
date: "date",
|
|
19
|
+
// Plugin archives have no dedicated generic tier — they template via a
|
|
20
|
+
// `forArchiveType(name)` targeted rule, else the universal `fallback`.
|
|
21
|
+
custom: "fallback",
|
|
17
22
|
"front-page": "frontPage",
|
|
18
23
|
search: "search",
|
|
19
24
|
};
|
|
@@ -35,6 +40,24 @@ function matchesIdentity(match, node) {
|
|
|
35
40
|
return (match.type === node.taxonomy &&
|
|
36
41
|
(match.slug === undefined || match.slug === node.slug) &&
|
|
37
42
|
(match.id === undefined || match.id === node.databaseId));
|
|
43
|
+
case "author":
|
|
44
|
+
// Author matchers carry a fixed `type` of "author"; identity narrows by
|
|
45
|
+
// slug/id like a term.
|
|
46
|
+
return (match.type === "author" &&
|
|
47
|
+
(match.slug === undefined || match.slug === node.slug) &&
|
|
48
|
+
(match.id === undefined || match.id === node.databaseId));
|
|
49
|
+
case "date":
|
|
50
|
+
// Date matchers carry a fixed `type` of "date" and match one exact
|
|
51
|
+
// granularity: an unset component (`forDate(2026)` has no month/day)
|
|
52
|
+
// requires the node's component to be null, so a year matcher matches the
|
|
53
|
+
// year archive only, not that year's month/day archives.
|
|
54
|
+
return (match.type === "date" &&
|
|
55
|
+
match.year === node.year &&
|
|
56
|
+
(match.month ?? null) === node.month &&
|
|
57
|
+
(match.day ?? null) === node.day);
|
|
58
|
+
case "custom":
|
|
59
|
+
// A `forArchiveType(name)` matcher carries the archive-type name as `type`.
|
|
60
|
+
return match.type === node.name;
|
|
38
61
|
default:
|
|
39
62
|
return false;
|
|
40
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-hierarchy.js","sourceRoot":"","sources":["../../../src/route/render/template-hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"template-hierarchy.js","sourceRoot":"","sources":["../../../src/route/render/template-hierarchy.ts"],"names":[],"mappings":"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"}
|
package/dist/route/resolve.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ import type { RegisteredTemplateDep } from "../template-deps.js";
|
|
|
3
3
|
import type { DocumentManifest, ThemeDescriptor } from "../theme.js";
|
|
4
4
|
import type { RouteMatch } from "./match.js";
|
|
5
5
|
import type { AssetManifest } from "./render/asset-manifest.js";
|
|
6
|
-
import type { ArchiveData, EntryData, FrontPageData, SearchData, TaxonomyData } from "./render/resolved-entry.js";
|
|
6
|
+
import type { ArchiveData, AuthorArchiveData, DateArchiveData, EntryData, FrontPageData, SearchData, TaxonomyData } from "./render/resolved-entry.js";
|
|
7
7
|
declare module "../hooks/types.js" {
|
|
8
8
|
interface FilterRegistry {
|
|
9
9
|
"resolve:single:data": (data: EntryData) => EntryData | Promise<EntryData>;
|
|
10
10
|
"resolve:archive:data": (data: ArchiveData) => ArchiveData | Promise<ArchiveData>;
|
|
11
11
|
"resolve:term:data": (data: TaxonomyData) => TaxonomyData | Promise<TaxonomyData>;
|
|
12
|
+
"resolve:author:data": (data: AuthorArchiveData) => AuthorArchiveData | Promise<AuthorArchiveData>;
|
|
13
|
+
"resolve:date:data": (data: DateArchiveData) => DateArchiveData | Promise<DateArchiveData>;
|
|
12
14
|
"resolve:front-page:data": (data: FrontPageData) => FrontPageData | Promise<FrontPageData>;
|
|
13
15
|
"resolve:search:data": (data: SearchData) => SearchData | Promise<SearchData>;
|
|
14
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/route/resolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/route/resolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AA+BpC,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAU,cAAc;QACtB,qBAAqB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3E,sBAAsB,EAAE,CACtB,IAAI,EAAE,WAAW,KACd,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACxC,mBAAmB,EAAE,CACnB,IAAI,EAAE,YAAY,KACf,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,qBAAqB,EAAE,CACrB,IAAI,EAAE,iBAAiB,KACpB,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACpD,mBAAmB,EAAE,CACnB,IAAI,EAAE,eAAe,KAClB,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAChD,yBAAyB,EAAE,CACzB,IAAI,EAAE,aAAa,KAChB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAC5C,qBAAqB,EAAE,CACrB,IAAI,EAAE,UAAU,KACb,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;KACvC;CACF;AAyBD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,EACxD,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,QAAQ,CAAC,CA+EnB"}
|