@plumix/core 0.3.0 → 0.5.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 (304) hide show
  1. package/dist/auth/authenticator.d.ts +8 -1
  2. package/dist/auth/authenticator.d.ts.map +1 -1
  3. package/dist/auth/authenticator.js +15 -0
  4. package/dist/auth/authenticator.js.map +1 -1
  5. package/dist/auth/bearer.js +2 -2
  6. package/dist/auth/bearer.js.map +1 -1
  7. package/dist/auth/bootstrap.d.ts.map +1 -1
  8. package/dist/auth/bootstrap.js +39 -22
  9. package/dist/auth/bootstrap.js.map +1 -1
  10. package/dist/cache/decision.d.ts +7 -3
  11. package/dist/cache/decision.d.ts.map +1 -1
  12. package/dist/cache/decision.js +8 -6
  13. package/dist/cache/decision.js.map +1 -1
  14. package/dist/cache/read-through.d.ts +3 -0
  15. package/dist/cache/read-through.d.ts.map +1 -1
  16. package/dist/cache/read-through.js +14 -7
  17. package/dist/cache/read-through.js.map +1 -1
  18. package/dist/cache/tags.d.ts.map +1 -1
  19. package/dist/cache/tags.js +9 -0
  20. package/dist/cache/tags.js.map +1 -1
  21. package/dist/config.d.ts +9 -0
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +1 -0
  24. package/dist/config.js.map +1 -1
  25. package/dist/context/app.d.ts +38 -6
  26. package/dist/context/app.d.ts.map +1 -1
  27. package/dist/context/app.js +41 -8
  28. package/dist/context/app.js.map +1 -1
  29. package/dist/context/collector.d.ts +9 -0
  30. package/dist/context/collector.d.ts.map +1 -0
  31. package/dist/context/collector.js +130 -0
  32. package/dist/context/collector.js.map +1 -0
  33. package/dist/context/index.d.ts +1 -0
  34. package/dist/context/index.d.ts.map +1 -1
  35. package/dist/context/index.js +1 -0
  36. package/dist/context/index.js.map +1 -1
  37. package/dist/context/stores.d.ts +2 -9
  38. package/dist/context/stores.d.ts.map +1 -1
  39. package/dist/context/stores.js.map +1 -1
  40. package/dist/context/telemetry.d.ts +148 -0
  41. package/dist/context/telemetry.d.ts.map +1 -0
  42. package/dist/context/telemetry.js +20 -0
  43. package/dist/context/telemetry.js.map +1 -0
  44. package/dist/context/traced-fetch.d.ts +14 -0
  45. package/dist/context/traced-fetch.d.ts.map +1 -0
  46. package/dist/context/traced-fetch.js +33 -0
  47. package/dist/context/traced-fetch.js.map +1 -0
  48. package/dist/db/errors.d.ts +8 -0
  49. package/dist/db/errors.d.ts.map +1 -1
  50. package/dist/db/errors.js +22 -0
  51. package/dist/db/errors.js.map +1 -1
  52. package/dist/db/index.d.ts +1 -1
  53. package/dist/db/index.d.ts.map +1 -1
  54. package/dist/db/index.js +1 -1
  55. package/dist/db/index.js.map +1 -1
  56. package/dist/db/libsql.d.ts.map +1 -1
  57. package/dist/db/libsql.js +6 -12
  58. package/dist/db/libsql.js.map +1 -1
  59. package/dist/db/query-kind.d.ts +8 -0
  60. package/dist/db/query-kind.d.ts.map +1 -0
  61. package/dist/db/query-kind.js +11 -0
  62. package/dist/db/query-kind.js.map +1 -0
  63. package/dist/db/schema/users.d.ts +57 -0
  64. package/dist/db/schema/users.d.ts.map +1 -1
  65. package/dist/db/schema/users.js +10 -2
  66. package/dist/db/schema/users.js.map +1 -1
  67. package/dist/db/trace-libsql.d.ts +15 -0
  68. package/dist/db/trace-libsql.d.ts.map +1 -0
  69. package/dist/db/trace-libsql.js +37 -0
  70. package/dist/db/trace-libsql.js.map +1 -0
  71. package/dist/db/trace.d.ts +21 -0
  72. package/dist/db/trace.d.ts.map +1 -0
  73. package/dist/db/trace.js +64 -0
  74. package/dist/db/trace.js.map +1 -0
  75. package/dist/debug-bar/consumer.d.ts +12 -0
  76. package/dist/debug-bar/consumer.d.ts.map +1 -0
  77. package/dist/debug-bar/consumer.js +13 -0
  78. package/dist/debug-bar/consumer.js.map +1 -0
  79. package/dist/debug-bar/format-param.d.ts +6 -4
  80. package/dist/debug-bar/format-param.d.ts.map +1 -1
  81. package/dist/debug-bar/format-param.js +6 -9
  82. package/dist/debug-bar/format-param.js.map +1 -1
  83. package/dist/debug-bar/highlight-sql.d.ts +0 -3
  84. package/dist/debug-bar/highlight-sql.d.ts.map +1 -1
  85. package/dist/debug-bar/highlight-sql.js +0 -6
  86. package/dist/debug-bar/highlight-sql.js.map +1 -1
  87. package/dist/debug-bar/panels/database.d.ts +6 -4
  88. package/dist/debug-bar/panels/database.d.ts.map +1 -1
  89. package/dist/debug-bar/panels/database.js +44 -8
  90. package/dist/debug-bar/panels/database.js.map +1 -1
  91. package/dist/debug-bar/panels/template.d.ts +1 -1
  92. package/dist/debug-bar/panels/template.d.ts.map +1 -1
  93. package/dist/debug-bar/panels/template.js +16 -2
  94. package/dist/debug-bar/panels/template.js.map +1 -1
  95. package/dist/debug-bar/panels/timeline.js +1 -1
  96. package/dist/debug-bar/panels/timeline.js.map +1 -1
  97. package/dist/debug-bar/styles.d.ts.map +1 -1
  98. package/dist/debug-bar/styles.js +5 -0
  99. package/dist/debug-bar/styles.js.map +1 -1
  100. package/dist/debug-bar/template-node-label.d.ts.map +1 -1
  101. package/dist/debug-bar/template-node-label.js +8 -0
  102. package/dist/debug-bar/template-node-label.js.map +1 -1
  103. package/dist/debug-bar/timeline-model.d.ts +3 -3
  104. package/dist/debug-bar/timeline-model.d.ts.map +1 -1
  105. package/dist/debug-bar/timeline-model.js +1 -1
  106. package/dist/debug-bar/timeline-model.js.map +1 -1
  107. package/dist/debug-bar/types.d.ts +1 -1
  108. package/dist/hooks/registry.d.ts.map +1 -1
  109. package/dist/hooks/registry.js +21 -3
  110. package/dist/hooks/registry.js.map +1 -1
  111. package/dist/index.d.ts +7 -5
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +5 -5
  114. package/dist/index.js.map +1 -1
  115. package/dist/mcp/server.d.ts.map +1 -1
  116. package/dist/mcp/server.js +9 -3
  117. package/dist/mcp/server.js.map +1 -1
  118. package/dist/plugin/manifest.d.ts +51 -0
  119. package/dist/plugin/manifest.d.ts.map +1 -1
  120. package/dist/plugin/manifest.js +8 -2
  121. package/dist/plugin/manifest.js.map +1 -1
  122. package/dist/plugin/provides-context.d.ts.map +1 -1
  123. package/dist/plugin/provides-context.js +5 -0
  124. package/dist/plugin/provides-context.js.map +1 -1
  125. package/dist/plugin/setup-context.d.ts +10 -1
  126. package/dist/plugin/setup-context.d.ts.map +1 -1
  127. package/dist/plugin/setup-context.js +12 -0
  128. package/dist/plugin/setup-context.js.map +1 -1
  129. package/dist/rest/build-handler.d.ts.map +1 -1
  130. package/dist/rest/build-handler.js +14 -1
  131. package/dist/rest/build-handler.js.map +1 -1
  132. package/dist/revisions/snapshot-envelope.d.ts +4 -2
  133. package/dist/revisions/snapshot-envelope.d.ts.map +1 -1
  134. package/dist/revisions/snapshot-envelope.js +6 -3
  135. package/dist/revisions/snapshot-envelope.js.map +1 -1
  136. package/dist/route/compile.d.ts +21 -0
  137. package/dist/route/compile.d.ts.map +1 -1
  138. package/dist/route/compile.js +63 -1
  139. package/dist/route/compile.js.map +1 -1
  140. package/dist/route/current.d.ts +5 -3
  141. package/dist/route/current.d.ts.map +1 -1
  142. package/dist/route/date-range.d.ts +12 -0
  143. package/dist/route/date-range.d.ts.map +1 -0
  144. package/dist/route/date-range.js +39 -0
  145. package/dist/route/date-range.js.map +1 -0
  146. package/dist/route/intent.d.ts +7 -3
  147. package/dist/route/intent.d.ts.map +1 -1
  148. package/dist/route/match.d.ts +1 -0
  149. package/dist/route/match.d.ts.map +1 -1
  150. package/dist/route/match.js +1 -1
  151. package/dist/route/match.js.map +1 -1
  152. package/dist/route/render/build-resolved-entries.d.ts.map +1 -1
  153. package/dist/route/render/build-resolved-entries.js +6 -1
  154. package/dist/route/render/build-resolved-entries.js.map +1 -1
  155. package/dist/route/render/render-template.d.ts.map +1 -1
  156. package/dist/route/render/render-template.js +23 -14
  157. package/dist/route/render/render-template.js.map +1 -1
  158. package/dist/route/render/resolved-entry.d.ts +36 -0
  159. package/dist/route/render/resolved-entry.d.ts.map +1 -1
  160. package/dist/route/render/template-builders.d.ts +66 -2
  161. package/dist/route/render/template-builders.d.ts.map +1 -1
  162. package/dist/route/render/template-builders.js +83 -4
  163. package/dist/route/render/template-builders.js.map +1 -1
  164. package/dist/route/render/template-hierarchy.d.ts +17 -1
  165. package/dist/route/render/template-hierarchy.d.ts.map +1 -1
  166. package/dist/route/render/template-hierarchy.js +23 -0
  167. package/dist/route/render/template-hierarchy.js.map +1 -1
  168. package/dist/route/resolve.d.ts +3 -1
  169. package/dist/route/resolve.d.ts.map +1 -1
  170. package/dist/route/resolve.js +152 -5
  171. package/dist/route/resolve.js.map +1 -1
  172. package/dist/rpc/authenticated.d.ts.map +1 -1
  173. package/dist/rpc/authenticated.js +2 -1
  174. package/dist/rpc/authenticated.js.map +1 -1
  175. package/dist/rpc/build-handler.d.ts.map +1 -1
  176. package/dist/rpc/build-handler.js +12 -0
  177. package/dist/rpc/build-handler.js.map +1 -1
  178. package/dist/rpc/procedures/auth/session.d.ts.map +1 -1
  179. package/dist/rpc/procedures/auth/session.js +2 -1
  180. package/dist/rpc/procedures/auth/session.js.map +1 -1
  181. package/dist/rpc/procedures/entry/create.d.ts +2 -2
  182. package/dist/rpc/procedures/entry/delete-permanent.d.ts +2 -2
  183. package/dist/rpc/procedures/entry/duplicate.d.ts +2 -2
  184. package/dist/rpc/procedures/entry/get.d.ts +2 -2
  185. package/dist/rpc/procedures/entry/helpers.d.ts +21 -0
  186. package/dist/rpc/procedures/entry/helpers.d.ts.map +1 -1
  187. package/dist/rpc/procedures/entry/helpers.js +44 -0
  188. package/dist/rpc/procedures/entry/helpers.js.map +1 -1
  189. package/dist/rpc/procedures/entry/index.d.ts +23 -22
  190. package/dist/rpc/procedures/entry/index.d.ts.map +1 -1
  191. package/dist/rpc/procedures/entry/list.d.ts +2 -2
  192. package/dist/rpc/procedures/entry/publish.d.ts +2 -2
  193. package/dist/rpc/procedures/entry/restore.d.ts +2 -2
  194. package/dist/rpc/procedures/entry/revisions.d.ts +8 -8
  195. package/dist/rpc/procedures/entry/schemas.d.ts +2 -0
  196. package/dist/rpc/procedures/entry/schemas.d.ts.map +1 -1
  197. package/dist/rpc/procedures/entry/schemas.js +7 -0
  198. package/dist/rpc/procedures/entry/schemas.js.map +1 -1
  199. package/dist/rpc/procedures/entry/trash.d.ts +2 -2
  200. package/dist/rpc/procedures/entry/update.d.ts +3 -2
  201. package/dist/rpc/procedures/entry/update.d.ts.map +1 -1
  202. package/dist/rpc/procedures/entry/update.js +10 -5
  203. package/dist/rpc/procedures/entry/update.js.map +1 -1
  204. package/dist/rpc/procedures/term/create.d.ts +2 -2
  205. package/dist/rpc/procedures/term/delete.d.ts +2 -2
  206. package/dist/rpc/procedures/term/get.d.ts +2 -2
  207. package/dist/rpc/procedures/term/index.d.ts +10 -10
  208. package/dist/rpc/procedures/term/list.d.ts +2 -2
  209. package/dist/rpc/procedures/term/update.d.ts +2 -2
  210. package/dist/rpc/procedures/user/delete.d.ts +2 -0
  211. package/dist/rpc/procedures/user/delete.d.ts.map +1 -1
  212. package/dist/rpc/procedures/user/disable.d.ts +2 -0
  213. package/dist/rpc/procedures/user/disable.d.ts.map +1 -1
  214. package/dist/rpc/procedures/user/enable.d.ts +2 -0
  215. package/dist/rpc/procedures/user/enable.d.ts.map +1 -1
  216. package/dist/rpc/procedures/user/get.d.ts +2 -0
  217. package/dist/rpc/procedures/user/get.d.ts.map +1 -1
  218. package/dist/rpc/procedures/user/index.d.ts +13 -0
  219. package/dist/rpc/procedures/user/index.d.ts.map +1 -1
  220. package/dist/rpc/procedures/user/invite.d.ts.map +1 -1
  221. package/dist/rpc/procedures/user/invite.js +28 -15
  222. package/dist/rpc/procedures/user/invite.js.map +1 -1
  223. package/dist/rpc/procedures/user/list.d.ts +2 -0
  224. package/dist/rpc/procedures/user/list.d.ts.map +1 -1
  225. package/dist/rpc/procedures/user/list.js +1 -0
  226. package/dist/rpc/procedures/user/list.js.map +1 -1
  227. package/dist/rpc/procedures/user/schemas.d.ts +1 -0
  228. package/dist/rpc/procedures/user/schemas.d.ts.map +1 -1
  229. package/dist/rpc/procedures/user/schemas.js +5 -0
  230. package/dist/rpc/procedures/user/schemas.js.map +1 -1
  231. package/dist/rpc/procedures/user/update.d.ts +3 -0
  232. package/dist/rpc/procedures/user/update.d.ts.map +1 -1
  233. package/dist/rpc/procedures/user/update.js +10 -1
  234. package/dist/rpc/procedures/user/update.js.map +1 -1
  235. package/dist/rpc/router.d.ts +46 -32
  236. package/dist/rpc/router.d.ts.map +1 -1
  237. package/dist/rpc/schemas.js +6 -6
  238. package/dist/rpc/schemas.js.map +1 -1
  239. package/dist/rpc/validation.d.ts +10 -0
  240. package/dist/rpc/validation.d.ts.map +1 -1
  241. package/dist/rpc/validation.js +10 -0
  242. package/dist/rpc/validation.js.map +1 -1
  243. package/dist/runtime/dispatcher.d.ts.map +1 -1
  244. package/dist/runtime/dispatcher.js +105 -14
  245. package/dist/runtime/dispatcher.js.map +1 -1
  246. package/dist/runtime/load-user-for-public-request.d.ts.map +1 -1
  247. package/dist/runtime/load-user-for-public-request.js +2 -2
  248. package/dist/runtime/load-user-for-public-request.js.map +1 -1
  249. package/dist/runtime/scheduled.d.ts +3 -1
  250. package/dist/runtime/scheduled.d.ts.map +1 -1
  251. package/dist/runtime/scheduled.js +16 -2
  252. package/dist/runtime/scheduled.js.map +1 -1
  253. package/dist/runtime/telemetry-delivery.d.ts +14 -0
  254. package/dist/runtime/telemetry-delivery.d.ts.map +1 -0
  255. package/dist/runtime/telemetry-delivery.js +39 -0
  256. package/dist/runtime/telemetry-delivery.js.map +1 -0
  257. package/dist/seo/feed.d.ts +19 -4
  258. package/dist/seo/feed.d.ts.map +1 -1
  259. package/dist/seo/feed.js +49 -12
  260. package/dist/seo/feed.js.map +1 -1
  261. package/dist/seo/head-defaults.d.ts.map +1 -1
  262. package/dist/seo/head-defaults.js +6 -3
  263. package/dist/seo/head-defaults.js.map +1 -1
  264. package/dist/template-registry.d.ts +31 -1
  265. package/dist/template-registry.d.ts.map +1 -1
  266. package/dist/test/default-theme.d.ts.map +1 -1
  267. package/dist/test/default-theme.js +3 -0
  268. package/dist/test/default-theme.js.map +1 -1
  269. package/dist/test/dispatcher.d.ts +13 -0
  270. package/dist/test/dispatcher.d.ts.map +1 -1
  271. package/dist/test/dispatcher.js +9 -3
  272. package/dist/test/dispatcher.js.map +1 -1
  273. package/dist/test/factories.d.ts +39 -21
  274. package/dist/test/factories.d.ts.map +1 -1
  275. package/dist/test/factories.js +1 -0
  276. package/dist/test/factories.js.map +1 -1
  277. package/dist/test/harness.d.ts.map +1 -1
  278. package/dist/test/harness.js +4 -12
  279. package/dist/test/harness.js.map +1 -1
  280. package/dist/theme.d.ts +15 -7
  281. package/dist/theme.d.ts.map +1 -1
  282. package/dist/theme.js +9 -0
  283. package/dist/theme.js.map +1 -1
  284. package/dist/users/slug.d.ts +12 -0
  285. package/dist/users/slug.d.ts.map +1 -0
  286. package/dist/users/slug.js +32 -0
  287. package/dist/users/slug.js.map +1 -0
  288. package/package.json +2 -2
  289. package/dist/context/debug.d.ts +0 -25
  290. package/dist/context/debug.d.ts.map +0 -1
  291. package/dist/context/debug.js +0 -13
  292. package/dist/context/debug.js.map +0 -1
  293. package/dist/debug-bar/collector.d.ts +0 -9
  294. package/dist/debug-bar/collector.d.ts.map +0 -1
  295. package/dist/debug-bar/collector.js +0 -80
  296. package/dist/debug-bar/collector.js.map +0 -1
  297. package/dist/debug-bar/db-query.d.ts +0 -21
  298. package/dist/debug-bar/db-query.d.ts.map +0 -1
  299. package/dist/debug-bar/db-query.js +0 -23
  300. package/dist/debug-bar/db-query.js.map +0 -1
  301. package/dist/debug-bar/trace-libsql.d.ts +0 -18
  302. package/dist/debug-bar/trace-libsql.d.ts.map +0 -1
  303. package/dist/debug-bar/trace-libsql.js +0 -42
  304. package/dist/debug-bar/trace-libsql.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/runtime/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA0G1C,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,GAAG,gBAAgB,CAmBvE;AAwaD,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,mBAAmB,GAAG,IAAI,CAoB5B"}
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/runtime/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAqH1C,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,GAAG,gBAAgB,CA0BvE;AA4fD,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;CACpC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,mBAAmB,GAAG,IAAI,CAoB5B"}
@@ -1,3 +1,4 @@
1
+ import { authenticateTraced } from "../auth/authenticator.js";
1
2
  import { readSessionCookie } from "../auth/cookies.js";
2
3
  import { hasCsrfHeader, hasMatchingOrigin } from "../auth/csrf.js";
3
4
  import { parseOAuthPath } from "../auth/oauth/match.js";
@@ -8,7 +9,8 @@ import { pageTags } from "../cache/tags.js";
8
9
  import { interfaceEnabled } from "../config.js";
9
10
  import { withUser } from "../context/app.js";
10
11
  import { resolveLocale } from "../i18n/resolve-locale.js";
11
- import { matchRoute } from "../route/match.js";
12
+ import { exposesHierarchicalUrls } from "../route/compile.js";
13
+ import { extractParams, matchRoute } from "../route/match.js";
12
14
  import { renderErrorThroughTheme } from "../route/render/render-template.js";
13
15
  import { resolvePublicRoute } from "../route/resolve.js";
14
16
  import { canonicalRedirectTarget } from "../seo/canonical.js";
@@ -18,6 +20,7 @@ import { handleSitemapIndex, handleSubSitemap } from "../seo/sitemap.js";
18
20
  import { injectAdminBaseHref, rewriteAdminShellLangDir, } from "./admin-shell.js";
19
21
  import { forbidden, jsonResponse, methodNotAllowed, notFound, permanentRedirect, } from "./http.js";
20
22
  import { loadUserForPublicRequest } from "./load-user-for-public-request.js";
23
+ import { deliverTelemetrySnapshot } from "./telemetry-delivery.js";
21
24
  const RPC_PREFIX = "/_plumix/rpc";
22
25
  const ADMIN_PREFIX = "/_plumix/admin";
23
26
  const AUTH_PREFIX = "/_plumix/auth/";
@@ -33,8 +36,15 @@ const SUB_SITEMAP_PATTERN = /^\/sitemap-(.+)-(\d+)\.xml$/;
33
36
  // leading segment is the entry-type scope; `/feed*` reserves these paths the
34
37
  // way WordPress does, so a page slugged "feed" can't shadow them.
35
38
  const FEED_PATTERN = /^\/(?:([^/]+)\/)?feed(\/atom)?$/;
36
- // `/<taxonomy>/<term>/feed` (+ `/atom`) — the term-scoped feed.
37
- const TERM_FEED_PATTERN = /^\/([^/]+)\/([^/]+)\/feed(\/atom)?$/;
39
+ // `/authors/<slug>/feed` (+ `/atom`) — the author-scoped feed. Checked before
40
+ // the generic term-feed shape since `/authors/*` is a reserved framework space.
41
+ const AUTHOR_FEED_PATTERN = /^\/authors\/([^/]+)\/feed(\/atom)?$/;
42
+ // `/YYYY[/MM[/DD]]/feed` (+ `/atom`) — the date-scoped feed. Numeric-constrained
43
+ // (like the date route rules) and checked before the generic term-feed shape.
44
+ const DATE_FEED_PATTERN = /^\/(\d{4})(?:\/(\d{2}))?(?:\/(\d{2}))?\/feed(\/atom)?$/;
45
+ // `/<taxonomy>/<term-path>/feed` (+ `/atom`) — the term-scoped feed. The path
46
+ // is one segment for a top-level term, `parent/child` for a nested one.
47
+ const TERM_FEED_PATTERN = /^\/([^/]+)\/(.+)\/feed(\/atom)?$/;
38
48
  // MCP is cold-path-exclusive (an agent endpoint, never the public render path).
39
49
  // Dynamic-import its handler so the tool registry and the MCP SDK it pulls in
40
50
  // stay off the public render and cold-start paths, evaluating only on the first
@@ -80,14 +90,19 @@ const MAGIC_LINK_VERIFY_PATH = "/_plumix/auth/magic-link/verify";
80
90
  const EMAIL_CHANGE_VERIFY_PATH = "/_plumix/auth/verify-email";
81
91
  export function createPlumixDispatcher(app) {
82
92
  return async (ctx) => {
93
+ const startedAt = Date.now();
94
+ let response;
83
95
  try {
84
- // Dev-only: the top-level Timeline span. `ctx.debug` is the no-op
85
- // collector in prod, so span() is a pass-through with no timing.
86
- const response = await ctx.debug.span("dispatch", () => route(app, ctx));
96
+ // The top-level span. `ctx.telemetry` is the no-op collector unless a
97
+ // consumer sampled this request, so span() is then a pass-through.
98
+ response = await ctx.telemetry.span("dispatch", async (s) => {
99
+ const routed = await route(app, ctx);
100
+ s.set("http.response.status_code", routed.status);
101
+ return routed;
102
+ });
87
103
  // Request-end seam: fire one batched edge-cache purge for whatever
88
104
  // entry mutations this request accumulated.
89
105
  flushPurgeTags(ctx);
90
- return response;
91
106
  }
92
107
  catch (error) {
93
108
  ctx.logger.error("dispatch_failed", {
@@ -95,8 +110,10 @@ export function createPlumixDispatcher(app) {
95
110
  url: ctx.request.url,
96
111
  method: ctx.request.method,
97
112
  });
98
- return jsonResponse({ error: "internal_error" }, { status: 500 });
113
+ response = jsonResponse({ error: "internal_error" }, { status: 500 });
99
114
  }
115
+ deliverTelemetrySnapshot(ctx, response.status, startedAt);
116
+ return response;
100
117
  };
101
118
  }
102
119
  function enforcePlumixCsrf(app, ctx) {
@@ -319,13 +336,43 @@ async function tryPublicRoutes(app, ctx, url) {
319
336
  return handleFeed(ctx, { kind: "type", type }, feed[2] ? "atom" : "rss2");
320
337
  }
321
338
  }
339
+ const authorFeed = AUTHOR_FEED_PATTERN.exec(pathname);
340
+ if (authorFeed) {
341
+ // `collectFeedItems` 404s an unknown slug, so a bogus `/authors/x/feed`
342
+ // returns 404 rather than falling through to the public router.
343
+ return handleFeed(ctx, { kind: "author", slug: authorFeed[1] ?? "" }, authorFeed[2] ? "atom" : "rss2");
344
+ }
345
+ const dateFeed = DATE_FEED_PATTERN.exec(pathname);
346
+ if (dateFeed) {
347
+ // An impossible date (Feb 30) yields a null filter → 404 in `handleFeed`.
348
+ return handleFeed(ctx, {
349
+ kind: "date",
350
+ year: Number(dateFeed[1]),
351
+ month: dateFeed[2] === undefined ? null : Number(dateFeed[2]),
352
+ day: dateFeed[3] === undefined ? null : Number(dateFeed[3]),
353
+ }, dateFeed[4] ? "atom" : "rss2");
354
+ }
355
+ // Plugin-registered archive feeds (`registerArchiveType({ feed })`). Gated on
356
+ // the `/feed` suffix so the URLPattern match only runs for feed-shaped URLs,
357
+ // never the hot public-render path; checked before the generic term feed so a
358
+ // custom `/x/y/feed` isn't misread as a term feed.
359
+ if (pathname.endsWith("/feed") || pathname.endsWith("/feed/atom")) {
360
+ const archiveFeed = matchArchiveFeed(ctx, pathname);
361
+ if (archiveFeed) {
362
+ return handleFeed(ctx, { kind: "custom", name: archiveFeed.name, params: archiveFeed.params }, archiveFeed.atom ? "atom" : "rss2");
363
+ }
364
+ }
322
365
  const termFeed = TERM_FEED_PATTERN.exec(pathname);
323
366
  if (termFeed) {
324
- // Only a public taxonomy's archive space owns `/<taxonomy>/<term>/feed`;
367
+ // Only a public taxonomy's archive space owns `/<taxonomy>/<path>/feed`;
325
368
  // anything else (e.g. a nested page) falls through to the public router.
326
369
  const taxonomy = publicTaxonomyByBaseSlug(ctx, termFeed[1] ?? "");
327
- if (taxonomy) {
328
- return handleFeed(ctx, { kind: "term", taxonomy: taxonomy.name, term: termFeed[2] ?? "" }, termFeed[3] ? "atom" : "rss2");
370
+ const path = (termFeed[2] ?? "").split("/");
371
+ // A nested (multi-segment) path is only a term feed when the taxonomy
372
+ // exposes hierarchical URLs — mirrors the archive route, which only emits
373
+ // `:path+` for hierarchical taxonomies.
374
+ if (taxonomy && (path.length === 1 || exposesHierarchicalUrls(taxonomy))) {
375
+ return handleFeed(ctx, { kind: "term", taxonomy: taxonomy.name, path }, termFeed[3] ? "atom" : "rss2");
329
376
  }
330
377
  }
331
378
  // Normalize a public page URL to its canonical (slash-less) shape before
@@ -335,6 +382,32 @@ async function tryPublicRoutes(app, ctx, url) {
335
382
  return permanentRedirect(canonical);
336
383
  return dispatchPublicRoute(app, ctx, url);
337
384
  }
385
+ // Match a `/…/feed[/atom]` request against every registered archive feed route.
386
+ // The `/atom` variant of each route is matched too, so a plugin declares only
387
+ // the base feed route to get both formats. Returns the archive name + captured
388
+ // params, or null when no archive feed owns the path.
389
+ function matchArchiveFeed(ctx, pathname) {
390
+ // The caller only enters on the `/feed[/atom]` suffix, and routes are declared
391
+ // base-only, so the format is fixed here — no need to try both variants.
392
+ const atom = pathname.endsWith("/atom");
393
+ for (const archive of ctx.plugins.archiveTypes.values()) {
394
+ if (!archive.feed)
395
+ continue;
396
+ for (const route of archive.feed.routes) {
397
+ const result = new URLPattern({
398
+ pathname: atom ? `${route}/atom` : route,
399
+ }).exec({ pathname });
400
+ if (!result)
401
+ continue;
402
+ return {
403
+ name: archive.name,
404
+ params: extractParams(result.pathname),
405
+ atom,
406
+ };
407
+ }
408
+ }
409
+ return null;
410
+ }
338
411
  // The public route intent for a resolved match: an unmatched root is the front
339
412
  // page, any other unmatched URL is a 404 (never cached).
340
413
  function publicIntent(match, url) {
@@ -364,6 +437,7 @@ async function dispatchPublicRoute(app, ctx, url) {
364
437
  intentKind: intent?.kind ?? null,
365
438
  cache,
366
439
  defer: ctx.defer,
440
+ telemetry: ctx.telemetry,
367
441
  render: () => renderPublicRoute(app, ctx, url, match),
368
442
  // Evaluated post-render so `ctx.resolvedEntity` (the entry id) is set.
369
443
  // The source thunks run only for the intent kind that needs them.
@@ -384,7 +458,24 @@ async function renderPublicRoute(app, ctx, url, match) {
384
458
  const assetManifest = app.assetManifest;
385
459
  try {
386
460
  ctx = await loadUserForPublicRequest(ctx);
387
- const response = await ctx.debug.span("resolve", () => resolvePublicRouteOrFallback(app, ctx, url, match));
461
+ const response = await ctx.telemetry.span("resolve", async (s) => {
462
+ try {
463
+ return await resolvePublicRouteOrFallback(app, ctx, url, match);
464
+ }
465
+ finally {
466
+ // Attributes read post-resolution: the resolver writes
467
+ // `resolvedEntity` / `resolvedTemplate` onto ctx during the render it
468
+ // encloses. In a `finally` so a throwing render still stamps whatever
469
+ // had resolved — the failure path is the trace that matters most.
470
+ // Lazy thunks, so the no-op collector never evaluates them.
471
+ s.set("route.intent", () => publicIntent(match, url)?.kind ?? "none");
472
+ if (ctx.resolvedEntity)
473
+ s.set("resolve.entity", ctx.resolvedEntity);
474
+ if (ctx.resolvedTemplate) {
475
+ s.set("template.matched", ctx.resolvedTemplate);
476
+ }
477
+ }
478
+ });
388
479
  if (response.status === 404) {
389
480
  const html = await renderErrorThroughTheme({
390
481
  ctx,
@@ -483,7 +574,7 @@ async function dispatchPluginRawRoute(route, ctx) {
483
574
  // operator override (e.g. `cfAccess()`) when configured. Plugin
484
575
  // route handlers don't need to know which guard is active; they just
485
576
  // declare `auth: "authenticated"` and the dispatcher delegates.
486
- const result = await ctx.authenticator.authenticate(ctx.request, ctx.db);
577
+ const result = await authenticateTraced(ctx, ctx.authenticator);
487
578
  if (!result)
488
579
  return jsonResponse({ error: "unauthorized" }, { status: 401 });
489
580
  const { id, email, name, role, meta } = result.user;
@@ -544,7 +635,7 @@ async function serveAdmin(ctx) {
544
635
  // `api_tokens.lastUsedAt` on every cross-site GET navigation. Anonymous
545
636
  // visitors hit the cookie + Accept-Language tiers of the resolver chain.
546
637
  const auth = readSessionCookie(ctx.request)
547
- ? await ctx.authenticator.authenticate(ctx.request, ctx.db)
638
+ ? await authenticateTraced(ctx, ctx.authenticator)
548
639
  : null;
549
640
  const locale = resolveLocale({
550
641
  request: ctx.request,
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/runtime/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/runtime/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"load-user-for-public-request.d.ts","sourceRoot":"","sources":["../../src/runtime/load-user-for-public-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,UAAU,CAAC,CAYrB"}
1
+ {"version":3,"file":"load-user-for-public-request.d.ts","sourceRoot":"","sources":["../../src/runtime/load-user-for-public-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,UAAU,CAAC,CAYrB"}
@@ -1,4 +1,4 @@
1
- import { requestHasSession } from "../auth/authenticator.js";
1
+ import { authenticateTraced, requestHasSession, } from "../auth/authenticator.js";
2
2
  import { withUser } from "../context/app.js";
3
3
  export async function loadUserForPublicRequest(ctx) {
4
4
  // Skip authentication for anonymous traffic, but let the configured guard
@@ -7,7 +7,7 @@ export async function loadUserForPublicRequest(ctx) {
7
7
  if (!requestHasSession(ctx.authenticator, ctx.request)) {
8
8
  return ctx;
9
9
  }
10
- const result = await ctx.authenticator.authenticate(ctx.request, ctx.db);
10
+ const result = await authenticateTraced(ctx, ctx.authenticator);
11
11
  if (result === null) {
12
12
  return ctx;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"load-user-for-public-request.js","sourceRoot":"","sources":["../../src/runtime/load-user-for-public-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAe;IAEf,0EAA0E;IAC1E,6EAA6E;IAC7E,iDAAiD;IACjD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"load-user-for-public-request.js","sourceRoot":"","sources":["../../src/runtime/load-user-for-public-request.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAe;IAEf,0EAA0E;IAC1E,6EAA6E;IAC7E,iDAAiD;IACjD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AAChE,CAAC"}
@@ -11,7 +11,9 @@ import type { PlumixApp } from "./app.js";
11
11
  * (tests, runtimes that don't surface it), every task runs.
12
12
  *
13
13
  * Runtime adapters call this from their `buildScheduledHandler` after
14
- * constructing a scheduled-flavor `AppContext`.
14
+ * constructing a scheduled-flavor `AppContext`. Owns the run's telemetry
15
+ * snapshot delivery, so it must not be invoked inside a dispatched request —
16
+ * the dispatcher would deliver the same collector a second time.
15
17
  */
16
18
  export declare function runScheduledTasks(app: PlumixApp, ctx: AppContext, firedCron?: string): Promise<void>;
17
19
  //# sourceMappingURL=scheduled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled.d.ts","sourceRoot":"","sources":["../../src/runtime/scheduled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,UAAU,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
1
+ {"version":3,"file":"scheduled.d.ts","sourceRoot":"","sources":["../../src/runtime/scheduled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,UAAU,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -1,4 +1,5 @@
1
1
  import { flushPurgeTags } from "../cache/purge.js";
2
+ import { deliverTelemetrySnapshot } from "./telemetry-delivery.js";
2
3
  /**
3
4
  * Run the registered scheduled tasks against the given `AppContext`. Each task
4
5
  * is wrapped in its own `try/catch` so a single failure can't abort siblings —
@@ -10,9 +11,12 @@ import { flushPurgeTags } from "../cache/purge.js";
10
11
  * (tests, runtimes that don't surface it), every task runs.
11
12
  *
12
13
  * Runtime adapters call this from their `buildScheduledHandler` after
13
- * constructing a scheduled-flavor `AppContext`.
14
+ * constructing a scheduled-flavor `AppContext`. Owns the run's telemetry
15
+ * snapshot delivery, so it must not be invoked inside a dispatched request —
16
+ * the dispatcher would deliver the same collector a second time.
14
17
  */
15
18
  export async function runScheduledTasks(app, ctx, firedCron) {
19
+ const startedAt = Date.now();
16
20
  for (const task of app.scheduledTasks) {
17
21
  if (firedCron !== undefined &&
18
22
  task.cron !== undefined &&
@@ -20,7 +24,14 @@ export async function runScheduledTasks(app, ctx, firedCron) {
20
24
  continue;
21
25
  }
22
26
  try {
23
- await task.handler(ctx);
27
+ // One span per task run, so cron work traces through the same collector
28
+ // as request work — a failing task is an error span, not just a log line.
29
+ await ctx.telemetry.span(`cron: ${task.id}`, (s) => {
30
+ s.set("cron.plugin", task.registeredBy);
31
+ if (task.cron !== undefined)
32
+ s.set("cron.schedule", task.cron);
33
+ return task.handler(ctx);
34
+ });
24
35
  }
25
36
  catch (error) {
26
37
  ctx.logger.error(`[plumix] scheduled task "${task.registeredBy}:${task.id}" failed: ${error instanceof Error ? error.message : String(error)}`, { error, taskId: task.id, plugin: task.registeredBy, cron: task.cron });
@@ -29,5 +40,8 @@ export async function runScheduledTasks(app, ctx, firedCron) {
29
40
  // A scheduled publish fires `entry:published`; flush the batched edge-cache
30
41
  // purge it accumulated, the same request-end seam the dispatcher uses.
31
42
  flushPurgeTags(ctx);
43
+ // No response exists on this path — the envelope carries a synthetic 200;
44
+ // task failures are error spans, caught above so siblings still run.
45
+ deliverTelemetrySnapshot(ctx, 200, startedAt);
32
46
  }
33
47
  //# sourceMappingURL=scheduled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled.js","sourceRoot":"","sources":["../../src/runtime/scheduled.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAc,EACd,GAAe,EACf,SAAkB;IAElB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACtC,IACE,SAAS,KAAK,SAAS;YACvB,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,IAAI,CAAC,IAAI,KAAK,SAAS,EACvB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,KAAK,CACd,4BAA4B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,aACtD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,EACF,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,uEAAuE;IACvE,cAAc,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"scheduled.js","sourceRoot":"","sources":["../../src/runtime/scheduled.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAc,EACd,GAAe,EACf,SAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACtC,IACE,SAAS,KAAK,SAAS;YACvB,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,IAAI,CAAC,IAAI,KAAK,SAAS,EACvB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,wEAAwE;YACxE,0EAA0E;YAC1E,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;gBACjD,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,KAAK,CACd,4BAA4B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,aACtD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,EACF,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,uEAAuE;IACvE,cAAc,CAAC,GAAG,CAAC,CAAC;IACpB,0EAA0E;IAC1E,qEAAqE;IACrE,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AppContext } from "../context/app.js";
2
+ /**
3
+ * Post-execution seam: hand each sampled consumer the finished snapshot via
4
+ * `ctx.defer` (CF Workers' `waitUntil`), so awaited export I/O never blocks
5
+ * the response. Consumers are isolated — one rejecting doesn't starve the
6
+ * rest, and `wrapDefer` logs the rejection. Runs on the error path too: a
7
+ * 500 is exactly the request a consumer wants to see.
8
+ *
9
+ * Shared by every execution path that finishes a collected trace: the request
10
+ * dispatcher (real response status) and the scheduled runner (synthetic 200 —
11
+ * task failures live in the span tree, not the envelope).
12
+ */
13
+ export declare function deliverTelemetrySnapshot(ctx: AppContext, status: number, startedAt: number): void;
14
+ //# sourceMappingURL=telemetry-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-delivery.d.ts","sourceRoot":"","sources":["../../src/runtime/telemetry-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,IAAI,CA2BN"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Post-execution seam: hand each sampled consumer the finished snapshot via
3
+ * `ctx.defer` (CF Workers' `waitUntil`), so awaited export I/O never blocks
4
+ * the response. Consumers are isolated — one rejecting doesn't starve the
5
+ * rest, and `wrapDefer` logs the rejection. Runs on the error path too: a
6
+ * 500 is exactly the request a consumer wants to see.
7
+ *
8
+ * Shared by every execution path that finishes a collected trace: the request
9
+ * dispatcher (real response status) and the scheduled runner (synthetic 200 —
10
+ * task failures live in the span tree, not the envelope).
11
+ */
12
+ export function deliverTelemetrySnapshot(ctx, status, startedAt) {
13
+ const deliveries = (ctx.telemetryConsumers ?? []).flatMap((c) => c.onRequestEnd ? [c.onRequestEnd] : []);
14
+ if (deliveries.length === 0)
15
+ return;
16
+ const snapshot = {
17
+ request: {
18
+ requestId: ctx.requestId,
19
+ method: ctx.request.method,
20
+ url: ctx.request.url,
21
+ status,
22
+ startedAt,
23
+ durationMs: Date.now() - startedAt,
24
+ },
25
+ // getRecords/getDropped return copies; spans are copied here because
26
+ // getSpans stays the live mid-request read (the debug bar's). Detachment
27
+ // matters: post-response work through the same ctx must not grow the
28
+ // arrays a consumer is serializing.
29
+ spans: [...ctx.telemetry.getSpans()],
30
+ records: ctx.telemetry.getRecords(),
31
+ dropped: ctx.telemetry.getDropped(),
32
+ };
33
+ for (const onRequestEnd of deliveries) {
34
+ // `.then` defers the callback past the dispatcher's return and folds a
35
+ // synchronous throw into the promise the defer wrapper logs.
36
+ ctx.defer(Promise.resolve().then(() => onRequestEnd(snapshot, ctx)));
37
+ }
38
+ }
39
+ //# sourceMappingURL=telemetry-delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-delivery.js","sourceRoot":"","sources":["../../src/runtime/telemetry-delivery.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAAe,EACf,MAAc,EACd,SAAiB;IAEjB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9D,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpC,MAAM,QAAQ,GAAsB;QAClC,OAAO,EAAE;YACP,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;YAC1B,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG;YACpB,MAAM;YACN,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC;QACD,qEAAqE;QACrE,yEAAyE;QACzE,qEAAqE;QACrE,oCAAoC;QACpC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE;QACnC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE;KACpC,CAAC;IACF,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;QACtC,uEAAuE;QACvE,6DAA6D;QAC7D,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
@@ -4,10 +4,13 @@ import type { DocumentManifest, TemplateData } from "../theme.js";
4
4
  export declare const FEED_LIMIT = 20;
5
5
  type FeedFormat = "rss2" | "atom";
6
6
  /**
7
- * What a feed covers: the whole site, one entry type, or one taxonomy term.
8
- * `taxonomy`/`term` are the registered taxonomy name + term slug.
7
+ * What a feed covers: the whole site, one entry type, one taxonomy term, one
8
+ * author, a date period, or a plugin-registered archive (`custom`). `taxonomy`
9
+ * is the registered name; `path` is the term's slug path (a single segment for a
10
+ * top-level term, `parent/child` for a nested one). `slug` on the author scope
11
+ * is the user's slug; `custom.name`/`params` name a registered archive feed.
9
12
  */
10
- type FeedScope = {
13
+ export type FeedScope = {
11
14
  readonly kind: "site";
12
15
  } | {
13
16
  readonly kind: "type";
@@ -15,7 +18,19 @@ type FeedScope = {
15
18
  } | {
16
19
  readonly kind: "term";
17
20
  readonly taxonomy: string;
18
- readonly term: string;
21
+ readonly path: readonly string[];
22
+ } | {
23
+ readonly kind: "author";
24
+ readonly slug: string;
25
+ } | {
26
+ readonly kind: "date";
27
+ readonly year: number;
28
+ readonly month: number | null;
29
+ readonly day: number | null;
30
+ } | {
31
+ readonly kind: "custom";
32
+ readonly name: string;
33
+ readonly params: Record<string, string>;
19
34
  };
20
35
  declare module "../hooks/types.js" {
21
36
  interface FilterRegistry {
@@ -1 +1 @@
1
- {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../src/seo/feed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAgB,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgBhF,eAAO,MAAM,UAAU,KAAK,CAAC;AAE7B,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAElC;;;GAGG;AACH,KAAK,SAAS,GACV;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAU,cAAc;QACtB;;;WAGG;QACH,gBAAgB,EAAE,CAChB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,KAAK,EAAE,SAAS,KACb,SAAS,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;KACzD;CACF;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAOD,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,QAAQ,EAAE,GACzB,MAAM,CAiCR;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,QAAQ,EAAE,GACzB,MAAM,CAoCR;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxE;AAED,0EAA0E;AAC1E,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,MAAM,GACX,sBAAsB,GAAG,SAAS,CAUpC;AA0CD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC,CAqCrC;AAOD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,QAAQ,CAAC,CAwBnB;AAkCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;IAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GACxC,gBAAgB,CAuBlB"}
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../src/seo/feed.ts"],"names":[],"mappings":"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"}
package/dist/seo/feed.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { withBasePath } from "../base-path.js";
2
- import { and, desc, eq, inArray } from "../db/index.js";
2
+ import { and, desc, eq, gte, inArray, lt } from "../db/index.js";
3
3
  import { entries } from "../db/schema/entries.js";
4
4
  import { entryTerm } from "../db/schema/entry_term.js";
5
- import { terms } from "../db/schema/terms.js";
6
5
  import { users } from "../db/schema/users.js";
6
+ import { dateRange } from "../route/date-range.js";
7
+ import { findTermByPath } from "../route/path-chain.js";
7
8
  import { buildEntryPermalink, termTaxonomyBaseSlug, } from "../route/permalink.js";
8
9
  import { loadSiteSettings, nonEmpty } from "./site-settings.js";
9
10
  import { xmlEscape } from "./xml.js";
@@ -106,21 +107,42 @@ async function feedFilter(ctx, scope) {
106
107
  return null;
107
108
  return and(eq(entries.type, scope.type), published);
108
109
  }
110
+ if (scope.kind === "custom") {
111
+ // A plugin archive's feed is entirely plugin-defined; its filter returns the
112
+ // row predicate (or null → 404). Missing archive/feed → 404.
113
+ const archive = ctx.plugins.archiveTypes.get(scope.name);
114
+ if (!archive?.feed)
115
+ return null;
116
+ return archive.feed.filter(ctx, scope.params);
117
+ }
109
118
  const typeNames = publicEntryTypeNames(ctx);
110
119
  const publicTypes = inArray(entries.type, typeNames);
111
120
  if (scope.kind === "site") {
112
121
  return typeNames.length === 0 ? null : and(publicTypes, published);
113
122
  }
114
- // term: only entries attached to the term, and still of a public type. Only
115
- // top-level terms have the flat `/base/slug/feed` URL the route addresses —
116
- // nested terms have no feed route yet, so they 404.
117
- const [term] = await ctx.db
118
- .select({ id: terms.id, parentId: terms.parentId })
119
- .from(terms)
120
- .where(and(eq(terms.taxonomy, scope.taxonomy), eq(terms.slug, scope.term)));
121
- if (!term)
122
- return null;
123
- if (term.parentId !== null || typeNames.length === 0)
123
+ if (scope.kind === "author") {
124
+ // The author's published, public-type entries. Unknown slug 404.
125
+ const [author] = await ctx.db
126
+ .select({ id: users.id })
127
+ .from(users)
128
+ .where(eq(users.slug, scope.slug));
129
+ if (!author || typeNames.length === 0)
130
+ return null;
131
+ return and(publicTypes, published, eq(entries.authorId, author.id));
132
+ }
133
+ if (scope.kind === "date") {
134
+ // Published, public-type entries in the period. An impossible date (Feb 30)
135
+ // → null → 404, matching the date-archive resolver.
136
+ const range = dateRange(scope.year, scope.month, scope.day);
137
+ if (range === null || typeNames.length === 0)
138
+ return null;
139
+ return and(publicTypes, published, gte(entries.publishedAt, range.start), lt(entries.publishedAt, range.end));
140
+ }
141
+ // term: entries attached to the term — resolved by its full slug path, so a
142
+ // nested term (`/base/parent/child/feed`) works, not just a top-level one —
143
+ // and still of a public type. Unknown path → 404.
144
+ const term = await findTermByPath(ctx, scope.taxonomy, scope.path);
145
+ if (!term || typeNames.length === 0)
124
146
  return null;
125
147
  const attached = ctx.db
126
148
  .select({ id: entryTerm.entryId })
@@ -204,6 +226,11 @@ export async function handleFeed(ctx, scope, format) {
204
226
  // site feed, not its type feed — a reader subscribing from a post wants
205
227
  // "everything new", which is the convention (WordPress et al.).
206
228
  function discoveryFeedBase(data, ctx) {
229
+ // A plugin archive's payload is arbitrary, so it can't be classified by the
230
+ // duck-typed checks below (a `year`/`author` field would misfire). It
231
+ // advertises no feed by default; the plugin adds its own `<link>` if it wants.
232
+ if (data.kind === "custom")
233
+ return false;
207
234
  if ("contentType" in data) {
208
235
  return isPublicEntryType(ctx, data.contentType)
209
236
  ? `/${data.contentType}/feed`
@@ -218,6 +245,16 @@ function discoveryFeedBase(data, ctx) {
218
245
  return false;
219
246
  return `/${termTaxonomyBaseSlug(taxonomy)}/${data.term.slug}/feed`;
220
247
  }
248
+ if ("author" in data)
249
+ return `/authors/${data.author.slug}/feed`;
250
+ if ("year" in data) {
251
+ const parts = [String(data.year)];
252
+ if (data.month !== null)
253
+ parts.push(String(data.month).padStart(2, "0"));
254
+ if (data.day !== null)
255
+ parts.push(String(data.day).padStart(2, "0"));
256
+ return `/${parts.join("/")}/feed`;
257
+ }
221
258
  if ("query" in data)
222
259
  return false;
223
260
  if ("request" in data)