@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.
Files changed (167) hide show
  1. package/dist/auth/bootstrap.d.ts.map +1 -1
  2. package/dist/auth/bootstrap.js +39 -22
  3. package/dist/auth/bootstrap.js.map +1 -1
  4. package/dist/cache/tags.d.ts.map +1 -1
  5. package/dist/cache/tags.js +9 -0
  6. package/dist/cache/tags.js.map +1 -1
  7. package/dist/db/errors.d.ts +8 -0
  8. package/dist/db/errors.d.ts.map +1 -1
  9. package/dist/db/errors.js +22 -0
  10. package/dist/db/errors.js.map +1 -1
  11. package/dist/db/index.d.ts +1 -1
  12. package/dist/db/index.d.ts.map +1 -1
  13. package/dist/db/index.js +1 -1
  14. package/dist/db/index.js.map +1 -1
  15. package/dist/db/schema/users.d.ts +57 -0
  16. package/dist/db/schema/users.d.ts.map +1 -1
  17. package/dist/db/schema/users.js +10 -2
  18. package/dist/db/schema/users.js.map +1 -1
  19. package/dist/debug-bar/panels/template.d.ts +5 -8
  20. package/dist/debug-bar/panels/template.d.ts.map +1 -1
  21. package/dist/debug-bar/panels/template.js +22 -8
  22. package/dist/debug-bar/panels/template.js.map +1 -1
  23. package/dist/debug-bar/primitives.d.ts +1 -1
  24. package/dist/debug-bar/primitives.d.ts.map +1 -1
  25. package/dist/debug-bar/primitives.js +1 -1
  26. package/dist/debug-bar/primitives.js.map +1 -1
  27. package/dist/debug-bar/styles.d.ts.map +1 -1
  28. package/dist/debug-bar/styles.js +9 -14
  29. package/dist/debug-bar/styles.js.map +1 -1
  30. package/dist/debug-bar/template-node-label.d.ts.map +1 -1
  31. package/dist/debug-bar/template-node-label.js +8 -2
  32. package/dist/debug-bar/template-node-label.js.map +1 -1
  33. package/dist/index.d.ts +7 -6
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/plugin/manifest.d.ts +34 -0
  38. package/dist/plugin/manifest.d.ts.map +1 -1
  39. package/dist/plugin/manifest.js +1 -0
  40. package/dist/plugin/manifest.js.map +1 -1
  41. package/dist/plugin/setup-context.d.ts +10 -1
  42. package/dist/plugin/setup-context.d.ts.map +1 -1
  43. package/dist/plugin/setup-context.js +12 -0
  44. package/dist/plugin/setup-context.js.map +1 -1
  45. package/dist/route/compile.d.ts +21 -0
  46. package/dist/route/compile.d.ts.map +1 -1
  47. package/dist/route/compile.js +63 -1
  48. package/dist/route/compile.js.map +1 -1
  49. package/dist/route/current.d.ts +5 -3
  50. package/dist/route/current.d.ts.map +1 -1
  51. package/dist/route/date-range.d.ts +12 -0
  52. package/dist/route/date-range.d.ts.map +1 -0
  53. package/dist/route/date-range.js +39 -0
  54. package/dist/route/date-range.js.map +1 -0
  55. package/dist/route/intent.d.ts +7 -3
  56. package/dist/route/intent.d.ts.map +1 -1
  57. package/dist/route/match.d.ts +1 -0
  58. package/dist/route/match.d.ts.map +1 -1
  59. package/dist/route/match.js +1 -1
  60. package/dist/route/match.js.map +1 -1
  61. package/dist/route/render/build-resolved-entries.d.ts.map +1 -1
  62. package/dist/route/render/build-resolved-entries.js +6 -1
  63. package/dist/route/render/build-resolved-entries.js.map +1 -1
  64. package/dist/route/render/render-template.d.ts +6 -4
  65. package/dist/route/render/render-template.d.ts.map +1 -1
  66. package/dist/route/render/render-template.js +36 -48
  67. package/dist/route/render/render-template.js.map +1 -1
  68. package/dist/route/render/resolved-entry.d.ts +46 -5
  69. package/dist/route/render/resolved-entry.d.ts.map +1 -1
  70. package/dist/route/render/template-builders.d.ts +124 -0
  71. package/dist/route/render/template-builders.d.ts.map +1 -0
  72. package/dist/route/render/template-builders.js +172 -0
  73. package/dist/route/render/template-builders.js.map +1 -0
  74. package/dist/route/render/template-hierarchy.d.ts +69 -38
  75. package/dist/route/render/template-hierarchy.d.ts.map +1 -1
  76. package/dist/route/render/template-hierarchy.js +150 -74
  77. package/dist/route/render/template-hierarchy.js.map +1 -1
  78. package/dist/route/resolve.d.ts +5 -3
  79. package/dist/route/resolve.d.ts.map +1 -1
  80. package/dist/route/resolve.js +177 -35
  81. package/dist/route/resolve.js.map +1 -1
  82. package/dist/rpc/procedures/entry/create.d.ts +2 -2
  83. package/dist/rpc/procedures/entry/delete-permanent.d.ts +2 -2
  84. package/dist/rpc/procedures/entry/duplicate.d.ts +2 -2
  85. package/dist/rpc/procedures/entry/get.d.ts +2 -2
  86. package/dist/rpc/procedures/entry/index.d.ts +22 -22
  87. package/dist/rpc/procedures/entry/list.d.ts +2 -2
  88. package/dist/rpc/procedures/entry/publish.d.ts +2 -2
  89. package/dist/rpc/procedures/entry/restore.d.ts +2 -2
  90. package/dist/rpc/procedures/entry/revisions.d.ts +8 -8
  91. package/dist/rpc/procedures/entry/trash.d.ts +2 -2
  92. package/dist/rpc/procedures/entry/update.d.ts +2 -2
  93. package/dist/rpc/procedures/term/create.d.ts +2 -2
  94. package/dist/rpc/procedures/term/delete.d.ts +2 -2
  95. package/dist/rpc/procedures/term/get.d.ts +2 -2
  96. package/dist/rpc/procedures/term/index.d.ts +10 -10
  97. package/dist/rpc/procedures/term/list.d.ts +2 -2
  98. package/dist/rpc/procedures/term/update.d.ts +2 -2
  99. package/dist/rpc/procedures/user/delete.d.ts +2 -0
  100. package/dist/rpc/procedures/user/delete.d.ts.map +1 -1
  101. package/dist/rpc/procedures/user/disable.d.ts +2 -0
  102. package/dist/rpc/procedures/user/disable.d.ts.map +1 -1
  103. package/dist/rpc/procedures/user/enable.d.ts +2 -0
  104. package/dist/rpc/procedures/user/enable.d.ts.map +1 -1
  105. package/dist/rpc/procedures/user/get.d.ts +2 -0
  106. package/dist/rpc/procedures/user/get.d.ts.map +1 -1
  107. package/dist/rpc/procedures/user/index.d.ts +12 -0
  108. package/dist/rpc/procedures/user/index.d.ts.map +1 -1
  109. package/dist/rpc/procedures/user/invite.d.ts.map +1 -1
  110. package/dist/rpc/procedures/user/invite.js +28 -15
  111. package/dist/rpc/procedures/user/invite.js.map +1 -1
  112. package/dist/rpc/procedures/user/list.d.ts +2 -0
  113. package/dist/rpc/procedures/user/list.d.ts.map +1 -1
  114. package/dist/rpc/procedures/user/list.js +1 -0
  115. package/dist/rpc/procedures/user/list.js.map +1 -1
  116. package/dist/rpc/procedures/user/update.d.ts +2 -0
  117. package/dist/rpc/procedures/user/update.d.ts.map +1 -1
  118. package/dist/rpc/router.d.ts +44 -32
  119. package/dist/rpc/router.d.ts.map +1 -1
  120. package/dist/runtime/app.d.ts +0 -8
  121. package/dist/runtime/app.d.ts.map +1 -1
  122. package/dist/runtime/app.js +0 -38
  123. package/dist/runtime/app.js.map +1 -1
  124. package/dist/runtime/dispatcher.d.ts.map +1 -1
  125. package/dist/runtime/dispatcher.js +74 -13
  126. package/dist/runtime/dispatcher.js.map +1 -1
  127. package/dist/seo/feed.d.ts +19 -4
  128. package/dist/seo/feed.d.ts.map +1 -1
  129. package/dist/seo/feed.js +49 -12
  130. package/dist/seo/feed.js.map +1 -1
  131. package/dist/seo/head-defaults.d.ts.map +1 -1
  132. package/dist/seo/head-defaults.js +6 -3
  133. package/dist/seo/head-defaults.js.map +1 -1
  134. package/dist/template-deps.js +1 -1
  135. package/dist/template-registry.d.ts +87 -0
  136. package/dist/template-registry.d.ts.map +1 -0
  137. package/dist/template-registry.js +1 -0
  138. package/dist/template-registry.js.map +1 -0
  139. package/dist/template.d.ts +2 -2
  140. package/dist/test/default-theme.d.ts.map +1 -1
  141. package/dist/test/default-theme.js +10 -6
  142. package/dist/test/default-theme.js.map +1 -1
  143. package/dist/test/factories.d.ts +39 -21
  144. package/dist/test/factories.d.ts.map +1 -1
  145. package/dist/test/factories.js +1 -0
  146. package/dist/test/factories.js.map +1 -1
  147. package/dist/theme-errors.d.ts +0 -3
  148. package/dist/theme-errors.d.ts.map +1 -1
  149. package/dist/theme-errors.js +7 -18
  150. package/dist/theme-errors.js.map +1 -1
  151. package/dist/theme.d.ts +67 -23
  152. package/dist/theme.d.ts.map +1 -1
  153. package/dist/theme.js +30 -10
  154. package/dist/theme.js.map +1 -1
  155. package/dist/users/slug.d.ts +12 -0
  156. package/dist/users/slug.d.ts.map +1 -0
  157. package/dist/users/slug.js +32 -0
  158. package/dist/users/slug.js.map +1 -0
  159. package/dist/welcome-theme.d.ts +2 -2
  160. package/dist/welcome-theme.d.ts.map +1 -1
  161. package/dist/welcome-theme.js +7 -6
  162. package/dist/welcome-theme.js.map +1 -1
  163. package/package.json +7 -7
  164. package/dist/route/render/archive-props.d.ts +0 -39
  165. package/dist/route/render/archive-props.d.ts.map +0 -1
  166. package/dist/route/render/archive-props.js +0 -32
  167. 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;AAI5D,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,CAwB3B"}
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"}
@@ -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
- // Role is decided inside the INSERT so concurrent first-user provisioning
6
- // can't elect two admins: SQLite serializes writers, and the subquery
7
- // observes previously-inserted rows. Only the statement that runs when
8
- // the table is empty gets `admin`.
9
- const [user] = await db
10
- .insert(users)
11
- .values({
12
- email: input.email,
13
- name: input.name ?? null,
14
- avatarUrl: input.avatarUrl ?? null,
15
- role: sql `CASE WHEN (SELECT COUNT(*) FROM ${users}) = 0 THEN 'admin' ELSE ${defaultRole} END`,
16
- emailVerifiedAt: input.emailVerified ? new Date() : null,
17
- })
18
- .returning();
19
- // eslint-disable-next-line no-restricted-syntax -- defensive driver-regression guard; migrate alongside auth errors in PR 2 (#234)
20
- if (!user)
21
- throw new Error("provisionUser: insert returned no row");
22
- return {
23
- user,
24
- bootstrapped: user.role === "admin" && defaultRole !== "admin",
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;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAO9C,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAM,EACN,KAMC;IAED,MAAM,WAAW,GAAa,KAAK,CAAC,WAAW,IAAI,YAAY,CAAC;IAEhE,0EAA0E;IAC1E,sEAAsE;IACtE,uEAAuE;IACvE,mCAAmC;IACnC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;SACpB,MAAM,CAAC,KAAK,CAAC;SACb,MAAM,CAAC;QACN,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,IAAI,EAAE,GAAG,CAAU,mCAAmC,KAAK,2BAA2B,WAAW,MAAM;QACvG,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;KACzD,CAAC;SACD,SAAS,EAAE,CAAC;IAEf,mIAAmI;IACnI,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACpE,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,WAAW,KAAK,OAAO;KAC/D,CAAC;AACJ,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"}
@@ -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,CAgB1D;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"}
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"}
@@ -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
  }
@@ -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"}
@@ -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
@@ -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
@@ -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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"}
@@ -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
@@ -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,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC"}
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
@@ -1,3 +1,3 @@
1
1
  export * from "drizzle-orm/sql";
2
- export { isUniqueConstraintError } from "./errors.js";
2
+ export { isUniqueConstraintError, isUniqueConstraintErrorOn, } from "./errors.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBf,CAAC;AAEJ,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"}
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"}
@@ -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;AACtD,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,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,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,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,CAAC,CAAC;AAKJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,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: how the WordPress-style template hierarchy resolved for
13
- * this request — the ordered candidate list and which one won. Empty on error
14
- * pages, which don't run the hierarchy.
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,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,UA2C3B,CAAC"}
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: how the WordPress-style template hierarchy resolved for
6
- * this request — the ordered candidate list and which one won. Empty on error
7
- * pages, which don't run the hierarchy.
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
- { label: "Matched", value: resolution.picked },
21
- ] }) }), _jsx(DebugSection, { title: "Candidates", children: _jsx("ol", { className: "plumix-debug-bar__candidates", children: resolution.candidates.map((candidate) => (_jsx("li", { className: `plumix-debug-bar__candidate ${candidate === resolution.picked
22
- ? "plumix-debug-bar__candidate--picked"
23
- : ""}`, children: candidate }, candidate))) }) })] }));
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":";AAEA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAY9D;;;;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,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE;yBAC/C,GACD,GACW,EACf,KAAC,YAAY,IAAC,KAAK,EAAC,YAAY,YAC9B,aAAI,SAAS,EAAC,8BAA8B,YACzC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CACxC,aAEE,SAAS,EAAE,+BACT,SAAS,KAAK,UAAU,CAAC,MAAM;gCAC7B,CAAC,CAAC,qCAAqC;gCACvC,CAAC,CAAC,EACN,EAAE,YAED,SAAS,IAPL,SAAS,CAQX,CACN,CAAC,GACC,GACQ,IACd,CACJ,CAAC;IACJ,CAAC;CACF,CAAC"}
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, candidates). */
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,gFAAgF;AAChF,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"}
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, candidates). */
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,gFAAgF;AAChF,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
+ {"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,QA+Ud,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/debug-bar/styles.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,aAAa,QA0Ud,CAAC"}
@@ -246,23 +246,18 @@ export const DEBUG_BAR_CSS = css `
246
246
  margin: 0;
247
247
  color: #8a929a;
248
248
  }
249
- /* Template panel — candidate hierarchy */
250
- .plumix-debug-bar__candidates {
251
- list-style: none;
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-bar__candidate--picked {
253
+ .plumix-debug-bar__status--matched {
260
254
  color: #7ee787;
261
- font-weight: 600;
262
255
  }
263
- .plumix-debug-bar__candidate--picked::before {
264
- content: "▸ ";
265
- margin-left: -14px;
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4UF;IACD,YAAY;IACZ,QAAQ,EAAE,CAAC"}
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,CAe5D"}
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,sBAAsB;YACzB,OAAO,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,YAAY,CAAC;QACtB,KAAK,YAAY;YACf,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC"}
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, notFound, } from "./runtime/http.js";
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 type { ArchiveData, ErrorData, FrontPageData, Pagination, ResolvedAuthor, ResolvedEntry, SearchData, SingleData, TaxonomyData, } from "./route/render/resolved-entry.js";
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, TemplateRegistry, ThemeDescriptor, } from "./theme.js";
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
@@ -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,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AACzC,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,EACL,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,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,YAAY,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,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,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}