@plumix/core 0.2.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/panels/template.d.ts +5 -8
- package/dist/debug-bar/panels/template.d.ts.map +1 -1
- package/dist/debug-bar/panels/template.js +22 -8
- package/dist/debug-bar/panels/template.js.map +1 -1
- package/dist/debug-bar/primitives.d.ts +1 -1
- package/dist/debug-bar/primitives.d.ts.map +1 -1
- package/dist/debug-bar/primitives.js +1 -1
- package/dist/debug-bar/primitives.js.map +1 -1
- package/dist/debug-bar/styles.d.ts.map +1 -1
- package/dist/debug-bar/styles.js +9 -14
- package/dist/debug-bar/styles.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 -2
- package/dist/debug-bar/template-node-label.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- 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/render-template.d.ts +6 -4
- package/dist/route/render/render-template.d.ts.map +1 -1
- package/dist/route/render/render-template.js +36 -48
- package/dist/route/render/render-template.js.map +1 -1
- package/dist/route/render/resolved-entry.d.ts +46 -5
- package/dist/route/render/resolved-entry.d.ts.map +1 -1
- package/dist/route/render/template-builders.d.ts +124 -0
- package/dist/route/render/template-builders.d.ts.map +1 -0
- package/dist/route/render/template-builders.js +172 -0
- package/dist/route/render/template-builders.js.map +1 -0
- package/dist/route/render/template-hierarchy.d.ts +69 -38
- package/dist/route/render/template-hierarchy.d.ts.map +1 -1
- package/dist/route/render/template-hierarchy.js +150 -74
- package/dist/route/render/template-hierarchy.js.map +1 -1
- package/dist/route/resolve.d.ts +5 -3
- package/dist/route/resolve.d.ts.map +1 -1
- package/dist/route/resolve.js +177 -35
- 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/app.d.ts +0 -8
- package/dist/runtime/app.d.ts.map +1 -1
- package/dist/runtime/app.js +0 -38
- package/dist/runtime/app.js.map +1 -1
- package/dist/runtime/dispatcher.d.ts.map +1 -1
- package/dist/runtime/dispatcher.js +74 -13
- 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-deps.js +1 -1
- package/dist/template-registry.d.ts +87 -0
- package/dist/template-registry.d.ts.map +1 -0
- package/dist/template-registry.js +1 -0
- package/dist/template-registry.js.map +1 -0
- package/dist/template.d.ts +2 -2
- package/dist/test/default-theme.d.ts.map +1 -1
- package/dist/test/default-theme.js +10 -6
- 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-errors.d.ts +0 -3
- package/dist/theme-errors.d.ts.map +1 -1
- package/dist/theme-errors.js +7 -18
- package/dist/theme-errors.js.map +1 -1
- package/dist/theme.d.ts +67 -23
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +30 -10
- 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/dist/welcome-theme.d.ts +2 -2
- package/dist/welcome-theme.d.ts.map +1 -1
- package/dist/welcome-theme.js +7 -6
- package/dist/welcome-theme.js.map +1 -1
- package/package.json +7 -7
- package/dist/route/render/archive-props.d.ts +0 -39
- package/dist/route/render/archive-props.d.ts.map +0 -1
- package/dist/route/render/archive-props.js +0 -32
- package/dist/route/render/archive-props.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE;IACL,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,GACA,OAAO,CAAC,gBAAgB,CAAC,CA0C3B"}
|
package/dist/auth/bootstrap.js
CHANGED
|
@@ -1,27 +1,44 @@
|
|
|
1
|
-
import { sql } from "../db/index.js";
|
|
1
|
+
import { isUniqueConstraintErrorOn, sql } from "../db/index.js";
|
|
2
2
|
import { users } from "../db/schema/users.js";
|
|
3
|
+
import { deriveUserSlug, MAX_SLUG_ATTEMPTS } from "../users/slug.js";
|
|
3
4
|
export async function provisionUser(db, input) {
|
|
4
5
|
const defaultRole = input.defaultRole ?? "subscriber";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
6
|
+
for (let attempt = 1;; attempt++) {
|
|
7
|
+
const slug = await deriveUserSlug(db, input.name);
|
|
8
|
+
// Role is decided inside the INSERT so concurrent first-user provisioning
|
|
9
|
+
// can't elect two admins: SQLite serializes writers, and the subquery
|
|
10
|
+
// observes previously-inserted rows. Only the statement that runs when
|
|
11
|
+
// the table is empty gets `admin`.
|
|
12
|
+
let user;
|
|
13
|
+
try {
|
|
14
|
+
[user] = await db
|
|
15
|
+
.insert(users)
|
|
16
|
+
.values({
|
|
17
|
+
email: input.email,
|
|
18
|
+
slug,
|
|
19
|
+
name: input.name ?? null,
|
|
20
|
+
avatarUrl: input.avatarUrl ?? null,
|
|
21
|
+
role: sql `CASE WHEN (SELECT COUNT(*) FROM ${users}) = 0 THEN 'admin' ELSE ${defaultRole} END`,
|
|
22
|
+
emailVerifiedAt: input.emailVerified ? new Date() : null,
|
|
23
|
+
})
|
|
24
|
+
.returning();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
// Only a slug race is retryable; an email collision is a real conflict
|
|
28
|
+
// the caller must see, so re-throw it (and any other error) as-is.
|
|
29
|
+
if (attempt < MAX_SLUG_ATTEMPTS &&
|
|
30
|
+
isUniqueConstraintErrorOn(error, "users.slug")) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line no-restricted-syntax -- defensive driver-regression guard; migrate alongside auth errors in PR 2 (#234)
|
|
36
|
+
if (!user)
|
|
37
|
+
throw new Error("provisionUser: insert returned no row");
|
|
38
|
+
return {
|
|
39
|
+
user,
|
|
40
|
+
bootstrapped: user.role === "admin" && defaultRole !== "admin",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
26
43
|
}
|
|
27
44
|
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/auth/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAM,EACN,KAMC;IAED,MAAM,WAAW,GAAa,KAAK,CAAC,WAAW,IAAI,YAAY,CAAC;IAEhE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAElD,0EAA0E;QAC1E,sEAAsE;QACtE,uEAAuE;QACvE,mCAAmC;QACnC,IAAI,IAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;iBACd,MAAM,CAAC,KAAK,CAAC;iBACb,MAAM,CAAC;gBACN,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;gBAClC,IAAI,EAAE,GAAG,CAAU,mCAAmC,KAAK,2BAA2B,WAAW,MAAM;gBACvG,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;aACzD,CAAC;iBACD,SAAS,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uEAAuE;YACvE,mEAAmE;YACnE,IACE,OAAO,GAAG,iBAAiB;gBAC3B,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,EAC9C,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,mIAAmI;QACnI,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACpE,OAAO;YACL,IAAI;YACJ,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,WAAW,KAAK,OAAO;SAC/D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/cache/tags.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/cache/tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKtD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/C,mEAAmE;IACnE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACtD,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;CACtE;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/cache/tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKtD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/C,mEAAmE;IACnE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACtD,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;CACtE;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAyB1D;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE7E"}
|
package/dist/cache/tags.js
CHANGED
|
@@ -27,7 +27,16 @@ export function pageTags(sources) {
|
|
|
27
27
|
return sources.frontPageEntryTypes().map(typeTag);
|
|
28
28
|
case "taxonomy":
|
|
29
29
|
return sources.taxonomyEntryTypes(intent.taxonomy).map(typeTag);
|
|
30
|
+
case "author":
|
|
31
|
+
case "date":
|
|
32
|
+
// Author and date archives list the same public, non-hierarchical type
|
|
33
|
+
// set as the front page, so any publish of those types can change them.
|
|
34
|
+
return sources.frontPageEntryTypes().map(typeTag);
|
|
35
|
+
case "custom":
|
|
30
36
|
case "search":
|
|
37
|
+
// A plugin archive's content dependencies are unknown to core (as search
|
|
38
|
+
// results are), so it carries no coarse type tags — the plugin manages
|
|
39
|
+
// its own invalidation if it edge-caches.
|
|
31
40
|
return [];
|
|
32
41
|
}
|
|
33
42
|
}
|
package/dist/cache/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/cache/tags.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,UAAU,OAAO,CAAC,SAAiB;IACvC,OAAO,KAAK,SAAS,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAChC,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAuB;IAC9C,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAC3C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,cAAc,EAAE,IAAI,KAAK,OAAO;gBACrC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBAC1D,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,KAAK,UAAU;YACb,OAAO,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClE,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,OAAe;IAC/D,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,kBAAqC;IACjE,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/cache/tags.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,UAAU,OAAO,CAAC,SAAiB;IACvC,OAAO,KAAK,SAAS,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAChC,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAuB;IAC9C,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAC3C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,cAAc,EAAE,IAAI,KAAK,OAAO;gBACrC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBAC1D,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,KAAK,UAAU;YACb,OAAO,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClE,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,uEAAuE;YACvE,wEAAwE;YACxE,OAAO,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,yEAAyE;YACzE,uEAAuE;YACvE,0CAA0C;YAC1C,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,OAAe;IAC/D,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,kBAAqC;IACjE,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/db/errors.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
export declare function isUniqueConstraintError(error: unknown): boolean;
|
|
2
|
+
/**
|
|
3
|
+
* True when the unique violation is on a specific `table.column` constraint —
|
|
4
|
+
* e.g. `isUniqueConstraintErrorOn(err, "users.slug")` to tell a slug collision
|
|
5
|
+
* apart from an email one. Column identity only rides on SQLite's message
|
|
6
|
+
* (`UNIQUE constraint failed: users.slug`), so this is message-only, unlike the
|
|
7
|
+
* code-first `isUniqueConstraintError`; every driver surfaces that phrase.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isUniqueConstraintErrorOn(error: unknown, qualifiedColumn: string): boolean;
|
|
2
10
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/db/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"AA+DA,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU/D"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"AA+DA,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU/D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,MAAM,GACtB,OAAO,CAYT"}
|
package/dist/db/errors.js
CHANGED
|
@@ -66,4 +66,26 @@ export function isUniqueConstraintError(error) {
|
|
|
66
66
|
}
|
|
67
67
|
return false;
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* True when the unique violation is on a specific `table.column` constraint —
|
|
71
|
+
* e.g. `isUniqueConstraintErrorOn(err, "users.slug")` to tell a slug collision
|
|
72
|
+
* apart from an email one. Column identity only rides on SQLite's message
|
|
73
|
+
* (`UNIQUE constraint failed: users.slug`), so this is message-only, unlike the
|
|
74
|
+
* code-first `isUniqueConstraintError`; every driver surfaces that phrase.
|
|
75
|
+
*/
|
|
76
|
+
export function isUniqueConstraintErrorOn(error, qualifiedColumn) {
|
|
77
|
+
const needle = `UNIQUE constraint failed: ${qualifiedColumn}`;
|
|
78
|
+
const seen = new Set();
|
|
79
|
+
let current = error;
|
|
80
|
+
for (let depth = 0; depth < MAX_CAUSE_DEPTH && current; depth++) {
|
|
81
|
+
if (seen.has(current))
|
|
82
|
+
return false; // cycle guard
|
|
83
|
+
seen.add(current);
|
|
84
|
+
const message = current.message;
|
|
85
|
+
if (typeof message === "string" && message.includes(needle))
|
|
86
|
+
return true;
|
|
87
|
+
current = current.cause;
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
69
91
|
//# sourceMappingURL=errors.js.map
|
package/dist/db/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,qEAAqE;AACrE,0EAA0E;AAC1E,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,kCAAkC;AAElC,uEAAuE;AACvE,0EAA0E;AAC1E,6CAA6C;AAC7C,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,0BAA0B;IAC1B,8BAA8B;CAC/B,CAAC,CAAC;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEtD,8EAA8E;AAC9E,4EAA4E;AAC5E,+DAA+D;AAC/D,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,sEAAsE;AACtE,yEAAyE;AACzE,wEAAwE;AACxE,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,cAAc,CAAU,CAAC;AAC7D,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;AAEvE,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,mEAAmE;IACnE,2EAA2E;IAC3E,EAAE;IACF,qEAAqE;IACrE,qEAAqE;IACrE,iEAAiE;IACjE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,cAAc;QACnD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,aAAa,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/db/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from "drizzle-orm/sql";
|
|
2
2
|
export type { InferInsertModel, InferSelectModel } from "drizzle-orm";
|
|
3
|
-
export { isUniqueConstraintError } from "./errors.js";
|
|
3
|
+
export { isUniqueConstraintError, isUniqueConstraintErrorOn, } from "./errors.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/db/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
|
package/dist/db/index.js
CHANGED
package/dist/db/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
|
|
@@ -40,6 +40,25 @@ export declare const users: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
|
|
|
40
40
|
}, {}, {
|
|
41
41
|
length: undefined;
|
|
42
42
|
}>;
|
|
43
|
+
slug: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
44
|
+
name: "slug";
|
|
45
|
+
tableName: "users";
|
|
46
|
+
dataType: "string";
|
|
47
|
+
columnType: "SQLiteText";
|
|
48
|
+
data: string;
|
|
49
|
+
driverParam: string;
|
|
50
|
+
notNull: true;
|
|
51
|
+
hasDefault: false;
|
|
52
|
+
isPrimaryKey: false;
|
|
53
|
+
isAutoincrement: false;
|
|
54
|
+
hasRuntimeDefault: false;
|
|
55
|
+
enumValues: [string, ...string[]];
|
|
56
|
+
baseColumn: never;
|
|
57
|
+
identity: undefined;
|
|
58
|
+
generated: undefined;
|
|
59
|
+
}, {}, {
|
|
60
|
+
length: undefined;
|
|
61
|
+
}>;
|
|
43
62
|
name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
44
63
|
name: "name";
|
|
45
64
|
tableName: "users";
|
|
@@ -226,6 +245,25 @@ export declare const userInsertSchema: import("drizzle-valibot").BuildSchema<"in
|
|
|
226
245
|
}, {}, {
|
|
227
246
|
length: undefined;
|
|
228
247
|
}>;
|
|
248
|
+
slug: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
249
|
+
name: "slug";
|
|
250
|
+
tableName: "users";
|
|
251
|
+
dataType: "string";
|
|
252
|
+
columnType: "SQLiteText";
|
|
253
|
+
data: string;
|
|
254
|
+
driverParam: string;
|
|
255
|
+
notNull: true;
|
|
256
|
+
hasDefault: false;
|
|
257
|
+
isPrimaryKey: false;
|
|
258
|
+
isAutoincrement: false;
|
|
259
|
+
hasRuntimeDefault: false;
|
|
260
|
+
enumValues: [string, ...string[]];
|
|
261
|
+
baseColumn: never;
|
|
262
|
+
identity: undefined;
|
|
263
|
+
generated: undefined;
|
|
264
|
+
}, {}, {
|
|
265
|
+
length: undefined;
|
|
266
|
+
}>;
|
|
229
267
|
name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
230
268
|
name: "name";
|
|
231
269
|
tableName: "users";
|
|
@@ -408,6 +446,25 @@ export declare const userSelectSchema: import("drizzle-valibot").BuildSchema<"se
|
|
|
408
446
|
}, {}, {
|
|
409
447
|
length: undefined;
|
|
410
448
|
}>;
|
|
449
|
+
slug: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
450
|
+
name: "slug";
|
|
451
|
+
tableName: "users";
|
|
452
|
+
dataType: "string";
|
|
453
|
+
columnType: "SQLiteText";
|
|
454
|
+
data: string;
|
|
455
|
+
driverParam: string;
|
|
456
|
+
notNull: true;
|
|
457
|
+
hasDefault: false;
|
|
458
|
+
isPrimaryKey: false;
|
|
459
|
+
isAutoincrement: false;
|
|
460
|
+
hasRuntimeDefault: false;
|
|
461
|
+
enumValues: [string, ...string[]];
|
|
462
|
+
baseColumn: never;
|
|
463
|
+
identity: undefined;
|
|
464
|
+
generated: undefined;
|
|
465
|
+
}, {}, {
|
|
466
|
+
length: undefined;
|
|
467
|
+
}>;
|
|
411
468
|
name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
412
469
|
name: "name";
|
|
413
470
|
tableName: "users";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/db/schema/users.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,qEAMb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/db/schema/users.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,qEAMb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCjB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC;AAC7C,MAAM,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC;AAEhD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA4B,CAAC;AAC1D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA4B,CAAC"}
|
package/dist/db/schema/users.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sql } from "drizzle-orm";
|
|
2
|
-
import { sqliteTable } from "drizzle-orm/sqlite-core";
|
|
2
|
+
import { sqliteTable, uniqueIndex } from "drizzle-orm/sqlite-core";
|
|
3
3
|
import { createInsertSchema, createSelectSchema } from "drizzle-valibot";
|
|
4
4
|
export const USER_ROLES = [
|
|
5
5
|
"subscriber",
|
|
@@ -11,6 +11,11 @@ export const USER_ROLES = [
|
|
|
11
11
|
export const users = sqliteTable("users", (t) => ({
|
|
12
12
|
id: t.integer().primaryKey({ autoIncrement: true }),
|
|
13
13
|
email: t.text().notNull().unique(),
|
|
14
|
+
// URL-safe author-archive identifier (`/authors/{slug}`). Derived from
|
|
15
|
+
// `name` at creation and stable thereafter — a name edit never rewrites
|
|
16
|
+
// it, so author permalinks don't break. Globally unique via the index
|
|
17
|
+
// below (users have no parent to scope by, unlike terms/entries).
|
|
18
|
+
slug: t.text().notNull(),
|
|
14
19
|
name: t.text(),
|
|
15
20
|
avatarUrl: t.text(),
|
|
16
21
|
role: t.text({ enum: USER_ROLES }).notNull().default("subscriber"),
|
|
@@ -30,7 +35,10 @@ export const users = sqliteTable("users", (t) => ({
|
|
|
30
35
|
.notNull()
|
|
31
36
|
.default(sql `(unixepoch())`)
|
|
32
37
|
.$onUpdate(() => sql `(unixepoch())`),
|
|
33
|
-
})
|
|
38
|
+
}),
|
|
39
|
+
// Named unique index, mirroring `terms_taxonomy_slug_idx` /
|
|
40
|
+
// `entries_type_slug_idx` — single-column since the slug is global.
|
|
41
|
+
(table) => [uniqueIndex("users_slug_idx").on(table.slug)]);
|
|
34
42
|
export const userInsertSchema = createInsertSchema(users);
|
|
35
43
|
export const userSelectSchema = createSelectSchema(users);
|
|
36
44
|
//# sourceMappingURL=users.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/db/schema/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/db/schema/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,OAAO;CACC,CAAC;AAIX,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAC9B,OAAO,EACP,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;IAClC,uEAAuE;IACvE,wEAAwE;IACxE,sEAAsE;IACtE,kEAAkE;IAClE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;IACxB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAClE,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACtB,KAAK,EAA2B;SAChC,OAAO,EAAE;SACT,OAAO,CAAC,EAAE,CAAC;IACd,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC5C,SAAS,EAAE,CAAC;SACT,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SAC9B,OAAO,EAAE;SACT,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC;IAC9B,SAAS,EAAE,CAAC;SACT,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SAC9B,OAAO,EAAE;SACT,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC;SAC3B,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAA,eAAe,CAAC;CACvC,CAAC;AACF,4DAA4D;AAC5D,oEAAoE;AACpE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;AAKF,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
+
import type { ResolutionTrace } from "../../route/render/template-hierarchy.js";
|
|
1
2
|
import type { DebugPanel } from "../types.js";
|
|
2
3
|
/** Recorded by the renderer; read by the panel. */
|
|
3
|
-
export interface TemplateResolution {
|
|
4
|
+
export interface TemplateResolution extends ResolutionTrace {
|
|
4
5
|
/** Human label for the resolved route node, e.g. "post: hello-world". */
|
|
5
6
|
readonly nodeLabel: string;
|
|
6
|
-
/** Ordered candidate template names (after the `template:hierarchy` filter). */
|
|
7
|
-
readonly candidates: readonly string[];
|
|
8
|
-
/** The winning candidate — the template that rendered. */
|
|
9
|
-
readonly picked: string;
|
|
10
7
|
}
|
|
11
8
|
/**
|
|
12
|
-
* The Template panel:
|
|
13
|
-
*
|
|
14
|
-
* pages, which don't
|
|
9
|
+
* The Template panel: the full resolution walk for this request — every rule in
|
|
10
|
+
* the theme's `templates` array, which one matched, which were skipped, and
|
|
11
|
+
* which were never reached. Empty on error pages, which don't resolve a node.
|
|
15
12
|
*/
|
|
16
13
|
export declare const templatePanel: DebugPanel;
|
|
17
14
|
//# sourceMappingURL=template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/debug-bar/panels/template.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/debug-bar/panels/template.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,mDAAmD;AACnD,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAUD;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,UA4C3B,CAAC"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { DebugKV, DebugSection } from "../primitives.js";
|
|
2
|
+
import { DebugKV, DebugSection, DebugTable } from "../primitives.js";
|
|
3
3
|
import { TEMPLATE_PANEL_ID } from "../template-node-label.js";
|
|
4
|
+
/** How a predicate reads in the table — or an em dash when the rule has none. */
|
|
5
|
+
function predicateCell(predicate) {
|
|
6
|
+
if (predicate === undefined)
|
|
7
|
+
return "—";
|
|
8
|
+
// `fired` false means identity didn't match (or no data), so it never ran.
|
|
9
|
+
if (!predicate.fired)
|
|
10
|
+
return "n/a";
|
|
11
|
+
return predicate.result ? "passed" : "failed";
|
|
12
|
+
}
|
|
4
13
|
/**
|
|
5
|
-
* The Template panel:
|
|
6
|
-
*
|
|
7
|
-
* pages, which don't
|
|
14
|
+
* The Template panel: the full resolution walk for this request — every rule in
|
|
15
|
+
* the theme's `templates` array, which one matched, which were skipped, and
|
|
16
|
+
* which were never reached. Empty on error pages, which don't resolve a node.
|
|
8
17
|
*/
|
|
9
18
|
export const templatePanel = {
|
|
10
19
|
id: TEMPLATE_PANEL_ID,
|
|
@@ -17,10 +26,15 @@ export const templatePanel = {
|
|
|
17
26
|
}
|
|
18
27
|
return (_jsxs(_Fragment, { children: [_jsx(DebugSection, { title: "Resolution", children: _jsx(DebugKV, { rows: [
|
|
19
28
|
{ label: "Resolved", value: resolution.nodeLabel },
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
{
|
|
30
|
+
label: "Matched",
|
|
31
|
+
value: resolution.winner ?? "— (no match → 404)",
|
|
32
|
+
},
|
|
33
|
+
] }) }), _jsx(DebugSection, { title: "Rules", children: _jsx(DebugTable, { headers: ["Rule", "Status", "Predicate"], rows: resolution.steps.map((step) => [
|
|
34
|
+
step.label,
|
|
35
|
+
_jsx("span", { className: `plumix-debug-bar__status plumix-debug-bar__status--${step.status}`, children: step.status }),
|
|
36
|
+
predicateCell(step.predicate),
|
|
37
|
+
]) }) })] }));
|
|
24
38
|
},
|
|
25
39
|
};
|
|
26
40
|
//# sourceMappingURL=template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/debug-bar/panels/template.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/debug-bar/panels/template.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,iFAAiF;AACjF,SAAS,aAAa,CAAC,SAAsC;IAC3D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,2EAA2E;IAC3E,IAAI,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,CAAC,GAAe,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACrB,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CACL,YAAG,SAAS,EAAC,yBAAyB,4EAElC,CACL,CAAC;QACJ,CAAC;QACD,OAAO,CACL,8BACE,KAAC,YAAY,IAAC,KAAK,EAAC,YAAY,YAC9B,KAAC,OAAO,IACN,IAAI,EAAE;4BACJ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE;4BAClD;gCACE,KAAK,EAAE,SAAS;gCAChB,KAAK,EAAE,UAAU,CAAC,MAAM,IAAI,oBAAoB;6BACjD;yBACF,GACD,GACW,EACf,KAAC,YAAY,IAAC,KAAK,EAAC,OAAO,YACzB,KAAC,UAAU,IACT,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,EACxC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;4BACnC,IAAI,CAAC,KAAK;4BACV,eACE,SAAS,EAAE,sDAAsD,IAAI,CAAC,MAAM,EAAE,YAE7E,IAAI,CAAC,MAAM,GACP;4BACP,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;yBAC9B,CAAC,GACF,GACW,IACd,CACJ,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -16,7 +16,7 @@ export interface DebugKVRow {
|
|
|
16
16
|
export declare function DebugKV({ rows, }: {
|
|
17
17
|
readonly rows: readonly DebugKVRow[];
|
|
18
18
|
}): ReactNode;
|
|
19
|
-
/** A columnar table for list-shaped panel data (queries, spans,
|
|
19
|
+
/** A columnar table for list-shaped panel data (queries, spans, resolution rules). */
|
|
20
20
|
export declare function DebugTable({ headers, rows, }: {
|
|
21
21
|
readonly headers: readonly string[];
|
|
22
22
|
readonly rows: readonly (readonly ReactNode[])[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/debug-bar/primitives.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;GAKG;AAEH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B,GAAG,SAAS,CASZ;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,wBAAgB,OAAO,CAAC,EACtB,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;CACtC,GAAG,SAAS,CAaZ;AAED,
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/debug-bar/primitives.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;GAKG;AAEH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B,GAAG,SAAS,CASZ;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,wBAAgB,OAAO,CAAC,EACtB,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;CACtC,GAAG,SAAS,CAaZ;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,IAAI,GACL,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC;CAClD,GAAG,SAAS,CAyBZ"}
|
|
@@ -14,7 +14,7 @@ export function DebugKV({ rows, }) {
|
|
|
14
14
|
// grid (in CSS) aligns every value the same distance in across sections.
|
|
15
15
|
return (_jsx("dl", { className: "plumix-debug-bar__kv", children: rows.map((row) => (_jsxs(Fragment, { children: [_jsx("dt", { children: row.label }), _jsx("dd", { children: row.value })] }, row.label))) }));
|
|
16
16
|
}
|
|
17
|
-
/** A columnar table for list-shaped panel data (queries, spans,
|
|
17
|
+
/** A columnar table for list-shaped panel data (queries, spans, resolution rules). */
|
|
18
18
|
export function DebugTable({ headers, rows, }) {
|
|
19
19
|
return (_jsxs("table", { children: [_jsx("thead", { children: _jsx("tr", { children: headers.map((h) => (_jsx("th", { scope: "col", children: h }, h))) }) }), _jsx("tbody", { children: rows.map((cells, r) => (_jsx("tr", { children: cells.map((cell, c) => (_jsx("td", { className: "plumix-debug-bar__val", children: cell }, c))) }, r))) })] }));
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/debug-bar/primitives.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC;;;;;GAKG;AAEH,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,8BACG,KAAK,CAAC,CAAC,CAAC,CACP,YAAG,SAAS,EAAC,iCAAiC,YAAE,KAAK,GAAK,CAC3D,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACD,CACX,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,OAAO,CAAC,EACtB,IAAI,GAGL;IACC,6EAA6E;IAC7E,yEAAyE;IACzE,OAAO,CACL,aAAI,SAAS,EAAC,sBAAsB,YACjC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,MAAC,QAAQ,eACP,uBAAK,GAAG,CAAC,KAAK,GAAM,EACpB,uBAAK,GAAG,CAAC,KAAK,GAAM,KAFP,GAAG,CAAC,KAAK,CAGb,CACZ,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/debug-bar/primitives.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC;;;;;GAKG;AAEH,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,8BACG,KAAK,CAAC,CAAC,CAAC,CACP,YAAG,SAAS,EAAC,iCAAiC,YAAE,KAAK,GAAK,CAC3D,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACD,CACX,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,OAAO,CAAC,EACtB,IAAI,GAGL;IACC,6EAA6E;IAC7E,yEAAyE;IACzE,OAAO,CACL,aAAI,SAAS,EAAC,sBAAsB,YACjC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,MAAC,QAAQ,eACP,uBAAK,GAAG,CAAC,KAAK,GAAM,EACpB,uBAAK,GAAG,CAAC,KAAK,GAAM,KAFP,GAAG,CAAC,KAAK,CAGb,CACZ,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,IAAI,GAIL;IACC,OAAO,CACL,4BACE,0BACE,uBACG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,aAAY,KAAK,EAAC,KAAK,YACpB,CAAC,IADK,CAAC,CAEL,CACN,CAAC,GACC,GACC,EACR,0BACG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,uBACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,aAAY,SAAS,EAAC,uBAAuB,YAC1C,IAAI,IADE,CAAC,CAEL,CACN,CAAC,IALK,CAAC,CAML,CACN,CAAC,GACI,IACF,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/debug-bar/styles.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/debug-bar/styles.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,aAAa,QA0Ud,CAAC"}
|
package/dist/debug-bar/styles.js
CHANGED
|
@@ -246,23 +246,18 @@ export const DEBUG_BAR_CSS = css `
|
|
|
246
246
|
margin: 0;
|
|
247
247
|
color: #8a929a;
|
|
248
248
|
}
|
|
249
|
-
/* Template panel —
|
|
250
|
-
.plumix-debug-
|
|
251
|
-
|
|
252
|
-
margin: 0;
|
|
253
|
-
padding: 0;
|
|
254
|
-
}
|
|
255
|
-
.plumix-debug-bar__candidate {
|
|
256
|
-
padding: 1px 0 1px 14px;
|
|
257
|
-
color: #8a929a;
|
|
249
|
+
/* Template panel — per-rule resolution status */
|
|
250
|
+
.plumix-debug-bar__status {
|
|
251
|
+
font-weight: 600;
|
|
258
252
|
}
|
|
259
|
-
.plumix-debug-
|
|
253
|
+
.plumix-debug-bar__status--matched {
|
|
260
254
|
color: #7ee787;
|
|
261
|
-
font-weight: 600;
|
|
262
255
|
}
|
|
263
|
-
.plumix-debug-
|
|
264
|
-
|
|
265
|
-
|
|
256
|
+
.plumix-debug-bar__status--skipped {
|
|
257
|
+
color: #d29922;
|
|
258
|
+
}
|
|
259
|
+
.plumix-debug-bar__status--never-evaluated {
|
|
260
|
+
color: #8a929a;
|
|
266
261
|
}
|
|
267
262
|
/* Timeline panel — SVG waterfall */
|
|
268
263
|
.plumix-debug-bar__timeline {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/debug-bar/styles.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,uEAAuE;AACvE,gFAAgF;AAChF,8EAA8E;AAC9E,wEAAwE;AAExE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,0EAA0E;AAC1E,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,SAAS,QAAQ;IACf,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,iCAAiC;QACjC,GAAG,IAAI,wCAAwC,CAAC,8EAA8E,CAAC,kBAAkB,CAAC;QAClJ,2DAA2D;QAC3D,GAAG,IAAI,wCAAwC,CAAC,6DAA6D,CAAC,kCAAkC,CAAC;IACnJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;CAavB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GACxB,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/debug-bar/styles.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,uEAAuE;AACvE,gFAAgF;AAChF,8EAA8E;AAC9E,wEAAwE;AAExE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,0EAA0E;AAC1E,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,SAAS,QAAQ;IACf,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,iCAAiC;QACjC,GAAG,IAAI,wCAAwC,CAAC,8EAA8E,CAAC,kBAAkB,CAAC;QAClJ,2DAA2D;QAC3D,GAAG,IAAI,wCAAwC,CAAC,6DAA6D,CAAC,kCAAkC,CAAC;IACnJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;CAavB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GACxB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuUF;IACD,YAAY;IACZ,QAAQ,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-node-label.d.ts","sourceRoot":"","sources":["../../src/debug-bar/template-node-label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAE1E,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"template-node-label.d.ts","sourceRoot":"","sources":["../../src/debug-bar/template-node-label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAE1E,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAqB5D"}
|
|
@@ -7,12 +7,18 @@ export function templateNodeLabel(node) {
|
|
|
7
7
|
return `${node.entryType}: ${node.slug}`;
|
|
8
8
|
case "term":
|
|
9
9
|
return `${node.taxonomy}: ${node.slug}`;
|
|
10
|
+
case "author":
|
|
11
|
+
return `author: ${node.slug}`;
|
|
12
|
+
case "date":
|
|
13
|
+
return `date: ${[node.year, node.month, node.day]
|
|
14
|
+
.filter((v) => v !== null)
|
|
15
|
+
.join("-")}`;
|
|
16
|
+
case "custom":
|
|
17
|
+
return `archive: ${node.name}`;
|
|
10
18
|
case "content-type-archive":
|
|
11
19
|
return `${node.entryType} archive`;
|
|
12
20
|
case "front-page":
|
|
13
21
|
return "front page";
|
|
14
|
-
case "posts-page":
|
|
15
|
-
return "posts page";
|
|
16
22
|
case "search":
|
|
17
23
|
return "search";
|
|
18
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-node-label.js","sourceRoot":"","sources":["../../src/debug-bar/template-node-label.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE5C,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,MAAM;YACT,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,
|
|
1
|
+
{"version":3,"file":"template-node-label.js","sourceRoot":"","sources":["../../src/debug-bar/template-node-label.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE5C,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,MAAM;YACT,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;iBAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;iBACzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,KAAK,sBAAsB;YACzB,OAAO,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,8 +15,6 @@ export * from "./plugin/index.js";
|
|
|
15
15
|
export { isCurrentSource } from "./route/current.js";
|
|
16
16
|
export type { CurrentSource, ResolvedEntity } from "./route/current.js";
|
|
17
17
|
export type { RouteIntent, RouteRule } from "./route/intent.js";
|
|
18
|
-
export { isEntryArchive, isTaxonomy } from "./route/render/archive-props.js";
|
|
19
|
-
export type { ArchiveEntry, ArchiveProps, EntryArchiveProps, TaxonomyArchiveProps, } from "./route/render/archive-props.js";
|
|
20
18
|
export type { ResolvedNode } from "./route/render/template-hierarchy.js";
|
|
21
19
|
export * from "./rpc/index.js";
|
|
22
20
|
export type * from "./runtime/adapter.js";
|
|
@@ -27,18 +25,21 @@ export { createPlumixDispatcher } from "./runtime/dispatcher.js";
|
|
|
27
25
|
export type { PlumixDispatcher } from "./runtime/dispatcher.js";
|
|
28
26
|
export type { EnvInput } from "./runtime/env-input.js";
|
|
29
27
|
export { resolveEnvInput } from "./runtime/env-input.js";
|
|
30
|
-
export { forbidden, jsonResponse, methodNotAllowed
|
|
28
|
+
export { forbidden, jsonResponse, methodNotAllowed } from "./runtime/http.js";
|
|
31
29
|
export { memoryStorage } from "./runtime/memory-storage.js";
|
|
32
30
|
export type { MemoryStorageConfig } from "./runtime/memory-storage.js";
|
|
33
31
|
export { runScheduledTasks } from "./runtime/scheduled.js";
|
|
34
32
|
export type * from "./runtime/slots.js";
|
|
35
33
|
export { slugify } from "./slugify.js";
|
|
36
34
|
export { buildResolvedEntries } from "./route/render/build-resolved-entries.js";
|
|
37
|
-
export
|
|
35
|
+
export { archive, author, date, entry, fallback, forArchiveType, forAuthor, forDate, forEntryType, forTermTaxonomy, frontPage, NAMED_TEMPLATE_META_KEY, notFound, search, serverError, taxonomy, templateRules, } from "./route/render/template-builders.js";
|
|
36
|
+
export type { ArchiveDataOf, ArchiveTypeName, ArchiveTypeRegistry, EntryProjection, EntryTypeName, EntryTypeRegistry, MetaOf, TermMetaOf, TermTaxonomyName, TermTaxonomyRegistry, TermProjection, } from "./template-registry.js";
|
|
37
|
+
export { resolveErrorTemplate, resolveTemplate, } from "./route/render/template-hierarchy.js";
|
|
38
|
+
export type { ArchiveData, AuthorArchiveData, CustomArchiveData, DateArchiveData, EntryData, ErrorData, FrontPageData, Pagination, ResolvedAuthor, ResolvedEntry, ResolvedTerm, SearchData, TaxonomyData, } from "./route/render/resolved-entry.js";
|
|
38
39
|
export { defineTemplate } from "./template.js";
|
|
39
40
|
export type { Template, TemplateDepRegistry, TemplateRender, TemplateRenderArgs, } from "./template.js";
|
|
40
41
|
export type { TemplateDepLoader } from "./template-deps.js";
|
|
41
|
-
export { defineTheme } from "./theme.js";
|
|
42
|
-
export type { DocumentLink, DocumentManifest, DocumentMeta, DocumentScript, TemplateComponent, TemplateData, TemplateEntry,
|
|
42
|
+
export { defineTheme, isArchive, isAuthor, isCustom, isDate, isEntry, isError, isFrontPage, isSearch, isTaxonomy, } from "./theme.js";
|
|
43
|
+
export type { DocumentLink, DocumentManifest, DocumentMeta, DocumentScript, GenericTier, TargetMatcher, TemplateComponent, TemplateData, TemplateEntry, TemplateRule, ThemeDescriptor, } from "./theme.js";
|
|
43
44
|
export { ThemeError, ThemeRegistrationError } from "./theme-errors.js";
|
|
44
45
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAC;AAEjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAC;AAEjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,cAAc,gBAAgB,CAAC;AAC/B,mBAAmB,sBAAsB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,mBAAmB,uBAAuB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,mBAAmB,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,cAAc,EACd,SAAS,EACT,OAAO,EACP,YAAY,EACZ,eAAe,EACf,SAAS,EACT,uBAAuB,EACvB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,EACR,aAAa,GACd,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,GACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EACV,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|