@byline/host-tanstack-start 4.19.0 → 5.1.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 (322) hide show
  1. package/dist/admin-shell/chrome/admin-app-bar.d.ts +7 -0
  2. package/dist/admin-shell/chrome/admin-app-bar.js +10 -2
  3. package/dist/admin-shell/chrome/session-change-boundary.d.ts +14 -0
  4. package/dist/admin-shell/chrome/session-change-boundary.js +87 -0
  5. package/dist/admin-shell/chrome/session-change-boundary.test.d.ts +8 -0
  6. package/dist/admin-shell/chrome/sign-in-page.d.ts +2 -1
  7. package/dist/admin-shell/chrome/sign-in-page.js +60 -3
  8. package/dist/admin-shell/collections/edit.d.ts +1 -1
  9. package/dist/admin-shell/collections/edit.js +151 -31
  10. package/dist/admin-shell/collections/history.js +4 -2
  11. package/dist/admin-shell/collections/list.js +30 -6
  12. package/dist/admin-shell/collections/restore-version-modal.d.ts +3 -1
  13. package/dist/admin-shell/collections/restore-version-modal.js +9 -4
  14. package/dist/admin-shell/collections/tree-list.js +16 -6
  15. package/dist/admin-shell/collections/version-history.d.ts +2 -1
  16. package/dist/admin-shell/collections/version-history.js +11 -2
  17. package/dist/admin-shell/document-mutation-notice.d.ts +6 -0
  18. package/dist/admin-shell/document-mutation-notice.js +53 -0
  19. package/dist/admin-shell/document-mutation-state.d.ts +22 -0
  20. package/dist/admin-shell/document-mutation-state.js +71 -0
  21. package/dist/admin-shell/document-mutation-state.test.d.ts +1 -0
  22. package/dist/admin-shell/scheduled-publications/list.js +15 -5
  23. package/dist/admin-shell/singletons/history.js +4 -2
  24. package/dist/admin-shell/singletons/view.d.ts +1 -1
  25. package/dist/admin-shell/singletons/view.js +98 -19
  26. package/dist/integrations/byline-admin-services.js +7 -1
  27. package/dist/integrations/byline-field-services.js +2 -9
  28. package/dist/integrations/client-ip.d.ts +19 -0
  29. package/dist/integrations/client-ip.js +34 -0
  30. package/dist/integrations/session-coordination.d.ts +24 -0
  31. package/dist/integrations/session-coordination.js +85 -0
  32. package/dist/integrations/session-middleware.d.ts +11 -0
  33. package/dist/integrations/session-middleware.js +94 -0
  34. package/dist/integrations/session-request-kind.d.ts +9 -0
  35. package/dist/integrations/session-request-kind.js +10 -0
  36. package/dist/integrations/session-request-middleware.d.ts +9 -0
  37. package/dist/integrations/session-request-middleware.js +7 -0
  38. package/dist/integrations/sign-in-body.d.ts +12 -0
  39. package/dist/integrations/sign-in-body.js +52 -0
  40. package/dist/integrations/sign-in-middleware.d.ts +9 -0
  41. package/dist/integrations/sign-in-middleware.js +10 -0
  42. package/dist/routes/create-admin-layout-route.js +46 -31
  43. package/dist/routes/create-collection-edit-route.js +1 -1
  44. package/dist/routes/create-collection-list-route.d.ts +0 -7
  45. package/dist/routes/create-collection-list-route.js +7 -9
  46. package/dist/routes/create-sign-in-route.js +4 -2
  47. package/dist/routes/create-singleton-route.d.ts +2 -0
  48. package/dist/routes/create-singleton-route.js +4 -3
  49. package/dist/server-fns/admin-account/change-password.d.ts +3 -1
  50. package/dist/server-fns/admin-account/change-password.js +9 -3
  51. package/dist/server-fns/admin-account/get.d.ts +3 -1
  52. package/dist/server-fns/admin-account/get.js +4 -1
  53. package/dist/server-fns/admin-account/index.d.ts +5 -5
  54. package/dist/server-fns/admin-account/update.d.ts +3 -1
  55. package/dist/server-fns/admin-account/update.js +4 -1
  56. package/dist/server-fns/admin-activity/get.d.ts +3 -1
  57. package/dist/server-fns/admin-activity/get.js +4 -1
  58. package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +3 -1
  59. package/dist/server-fns/admin-permissions/get-role-abilities.js +4 -1
  60. package/dist/server-fns/admin-permissions/index.d.ts +4 -4
  61. package/dist/server-fns/admin-permissions/list-registered.d.ts +3 -1
  62. package/dist/server-fns/admin-permissions/list-registered.js +4 -1
  63. package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +3 -1
  64. package/dist/server-fns/admin-permissions/set-role-abilities.js +4 -1
  65. package/dist/server-fns/admin-permissions/who-has.d.ts +3 -1
  66. package/dist/server-fns/admin-permissions/who-has.js +4 -1
  67. package/dist/server-fns/admin-roles/create.d.ts +3 -1
  68. package/dist/server-fns/admin-roles/create.js +4 -1
  69. package/dist/server-fns/admin-roles/delete.d.ts +3 -1
  70. package/dist/server-fns/admin-roles/delete.js +4 -1
  71. package/dist/server-fns/admin-roles/get.d.ts +3 -1
  72. package/dist/server-fns/admin-roles/get.js +4 -1
  73. package/dist/server-fns/admin-roles/index.d.ts +6 -6
  74. package/dist/server-fns/admin-roles/list.d.ts +3 -1
  75. package/dist/server-fns/admin-roles/list.js +4 -1
  76. package/dist/server-fns/admin-roles/reorder.d.ts +3 -1
  77. package/dist/server-fns/admin-roles/reorder.js +4 -1
  78. package/dist/server-fns/admin-roles/update.d.ts +3 -1
  79. package/dist/server-fns/admin-roles/update.js +4 -1
  80. package/dist/server-fns/admin-users/create.d.ts +3 -1
  81. package/dist/server-fns/admin-users/create.js +4 -1
  82. package/dist/server-fns/admin-users/delete.d.ts +3 -1
  83. package/dist/server-fns/admin-users/delete.js +4 -1
  84. package/dist/server-fns/admin-users/disable.d.ts +3 -1
  85. package/dist/server-fns/admin-users/disable.js +4 -1
  86. package/dist/server-fns/admin-users/enable.d.ts +3 -1
  87. package/dist/server-fns/admin-users/enable.js +4 -1
  88. package/dist/server-fns/admin-users/get-user-roles.d.ts +3 -1
  89. package/dist/server-fns/admin-users/get-user-roles.js +4 -1
  90. package/dist/server-fns/admin-users/get.d.ts +3 -1
  91. package/dist/server-fns/admin-users/get.js +4 -1
  92. package/dist/server-fns/admin-users/index.d.ts +10 -10
  93. package/dist/server-fns/admin-users/list.d.ts +3 -1
  94. package/dist/server-fns/admin-users/list.js +4 -1
  95. package/dist/server-fns/admin-users/set-password.d.ts +3 -1
  96. package/dist/server-fns/admin-users/set-password.js +4 -1
  97. package/dist/server-fns/admin-users/set-user-roles.d.ts +3 -1
  98. package/dist/server-fns/admin-users/set-user-roles.js +4 -1
  99. package/dist/server-fns/admin-users/update.d.ts +3 -1
  100. package/dist/server-fns/admin-users/update.js +4 -1
  101. package/dist/server-fns/ai/execute.d.ts +3 -1
  102. package/dist/server-fns/ai/execute.js +4 -1
  103. package/dist/server-fns/ai/index.d.ts +1 -1
  104. package/dist/server-fns/analytics/maintenance.d.ts +6 -2
  105. package/dist/server-fns/analytics/maintenance.js +7 -2
  106. package/dist/server-fns/analytics/queries.d.ts +18 -6
  107. package/dist/server-fns/analytics/queries.js +19 -6
  108. package/dist/server-fns/auth/current-user.d.ts +1 -0
  109. package/dist/server-fns/auth/current-user.js +5 -2
  110. package/dist/server-fns/auth/renew.d.ts +13 -0
  111. package/dist/server-fns/auth/renew.js +45 -0
  112. package/dist/server-fns/auth/sign-in.d.ts +2 -1
  113. package/dist/server-fns/auth/sign-in.js +88 -17
  114. package/dist/server-fns/auth/sign-out.d.ts +3 -1
  115. package/dist/server-fns/auth/sign-out.js +38 -6
  116. package/dist/server-fns/collections/audit.d.ts +3 -1
  117. package/dist/server-fns/collections/audit.js +4 -1
  118. package/dist/server-fns/collections/copy-to-locale.d.ts +5 -1
  119. package/dist/server-fns/collections/copy-to-locale.js +7 -2
  120. package/dist/server-fns/collections/create.d.ts +4 -1
  121. package/dist/server-fns/collections/create.js +8 -3
  122. package/dist/server-fns/collections/delete-locale.d.ts +5 -1
  123. package/dist/server-fns/collections/delete-locale.js +7 -2
  124. package/dist/server-fns/collections/delete-outcome.d.ts +7 -3
  125. package/dist/server-fns/collections/delete-outcome.js +4 -0
  126. package/dist/server-fns/collections/delete.d.ts +5 -1
  127. package/dist/server-fns/collections/delete.js +8 -3
  128. package/dist/server-fns/collections/duplicate.d.ts +5 -1
  129. package/dist/server-fns/collections/duplicate.js +8 -3
  130. package/dist/server-fns/collections/get.d.ts +1 -0
  131. package/dist/server-fns/collections/get.js +12 -6
  132. package/dist/server-fns/collections/history.d.ts +3 -1
  133. package/dist/server-fns/collections/history.js +4 -1
  134. package/dist/server-fns/collections/index.d.ts +21 -21
  135. package/dist/server-fns/collections/list.d.ts +3 -1
  136. package/dist/server-fns/collections/list.js +15 -4
  137. package/dist/server-fns/collections/reindex.d.ts +3 -1
  138. package/dist/server-fns/collections/reindex.js +4 -1
  139. package/dist/server-fns/collections/reorder.d.ts +10 -2
  140. package/dist/server-fns/collections/reorder.js +23 -76
  141. package/dist/server-fns/collections/restore-version.d.ts +6 -1
  142. package/dist/server-fns/collections/restore-version.js +8 -2
  143. package/dist/server-fns/collections/save-outcome.d.ts +1 -0
  144. package/dist/server-fns/collections/save-outcome.js +1 -0
  145. package/dist/server-fns/collections/scheduled-publication.d.ts +64 -7
  146. package/dist/server-fns/collections/scheduled-publication.js +42 -21
  147. package/dist/server-fns/collections/set-list-view-preference.d.ts +3 -1
  148. package/dist/server-fns/collections/set-list-view-preference.js +4 -1
  149. package/dist/server-fns/collections/stats.js +4 -1
  150. package/dist/server-fns/collections/status.d.ts +14 -2
  151. package/dist/server-fns/collections/status.js +18 -5
  152. package/dist/server-fns/collections/tree-mutation.d.ts +7 -6
  153. package/dist/server-fns/collections/tree-mutation.js +17 -5
  154. package/dist/server-fns/collections/tree.d.ts +29 -6
  155. package/dist/server-fns/collections/tree.js +32 -17
  156. package/dist/server-fns/collections/update.d.ts +18 -6
  157. package/dist/server-fns/collections/update.js +39 -20
  158. package/dist/server-fns/collections/upload.d.ts +11 -1
  159. package/dist/server-fns/collections/upload.js +6 -2
  160. package/dist/server-fns/document-mutation-errors.d.ts +5 -0
  161. package/dist/server-fns/document-mutation-errors.js +50 -0
  162. package/dist/server-fns/editable-revision.d.ts +9 -0
  163. package/dist/server-fns/editable-revision.js +11 -0
  164. package/dist/server-fns/i18n/set-locale.d.ts +3 -1
  165. package/dist/server-fns/i18n/set-locale.js +18 -3
  166. package/dist/server-fns/preview/disable.d.ts +3 -1
  167. package/dist/server-fns/preview/disable.js +4 -1
  168. package/dist/server-fns/preview/enable.d.ts +3 -1
  169. package/dist/server-fns/preview/enable.js +4 -1
  170. package/dist/server-fns/singleton-document-read.d.ts +1 -1
  171. package/dist/server-fns/singleton-document-read.js +7 -3
  172. package/dist/server-fns/singletons/cancel-scheduled-publish.d.ts +9 -2
  173. package/dist/server-fns/singletons/cancel-scheduled-publish.js +7 -1
  174. package/dist/server-fns/singletons/change-status.d.ts +5 -1
  175. package/dist/server-fns/singletons/change-status.js +7 -1
  176. package/dist/server-fns/singletons/confirm-scheduled-publish.d.ts +8 -2
  177. package/dist/server-fns/singletons/confirm-scheduled-publish.js +7 -2
  178. package/dist/server-fns/singletons/copy-to-locale.d.ts +5 -1
  179. package/dist/server-fns/singletons/copy-to-locale.js +7 -2
  180. package/dist/server-fns/singletons/find-by-version.d.ts +3 -1
  181. package/dist/server-fns/singletons/find-by-version.js +4 -1
  182. package/dist/server-fns/singletons/get-scheduled-publish.d.ts +3 -1
  183. package/dist/server-fns/singletons/get-scheduled-publish.js +4 -1
  184. package/dist/server-fns/singletons/get.d.ts +6 -4
  185. package/dist/server-fns/singletons/get.js +4 -1
  186. package/dist/server-fns/singletons/history.d.ts +3 -1
  187. package/dist/server-fns/singletons/history.js +4 -1
  188. package/dist/server-fns/singletons/restore-version.d.ts +5 -1
  189. package/dist/server-fns/singletons/restore-version.js +9 -3
  190. package/dist/server-fns/singletons/schedule-publish.d.ts +8 -2
  191. package/dist/server-fns/singletons/schedule-publish.js +7 -2
  192. package/dist/server-fns/singletons/unpublish.d.ts +5 -1
  193. package/dist/server-fns/singletons/unpublish.js +7 -1
  194. package/dist/server-fns/singletons/update.d.ts +6 -4
  195. package/dist/server-fns/singletons/update.js +8 -4
  196. package/dist/server-fns/structural-receipt.d.ts +4 -0
  197. package/dist/server-fns/structural-receipt.js +31 -0
  198. package/package.json +20 -20
  199. package/src/admin-shell/chrome/admin-app-bar.tsx +11 -6
  200. package/src/admin-shell/chrome/session-change-boundary.test.tsx +78 -0
  201. package/src/admin-shell/chrome/session-change-boundary.tsx +94 -0
  202. package/src/admin-shell/chrome/sign-in-page.tsx +68 -3
  203. package/src/admin-shell/collections/edit.tsx +173 -54
  204. package/src/admin-shell/collections/history.tsx +11 -2
  205. package/src/admin-shell/collections/list.tsx +22 -6
  206. package/src/admin-shell/collections/restore-version-modal.tsx +12 -3
  207. package/src/admin-shell/collections/save-navigation.test.tsx +156 -8
  208. package/src/admin-shell/collections/tree-list.tsx +16 -6
  209. package/src/admin-shell/collections/version-history.tsx +13 -3
  210. package/src/admin-shell/document-mutation-notice.tsx +45 -0
  211. package/src/admin-shell/document-mutation-state.test.tsx +146 -0
  212. package/src/admin-shell/document-mutation-state.ts +95 -0
  213. package/src/admin-shell/scheduled-publications/list.tsx +16 -6
  214. package/src/admin-shell/singletons/history.test.tsx +3 -1
  215. package/src/admin-shell/singletons/history.tsx +10 -2
  216. package/src/admin-shell/singletons/view.test.tsx +59 -18
  217. package/src/admin-shell/singletons/view.tsx +110 -29
  218. package/src/integrations/byline-admin-services.ts +7 -1
  219. package/src/integrations/byline-field-services.ts +2 -3
  220. package/src/integrations/client-ip.test.node.ts +45 -0
  221. package/src/integrations/client-ip.ts +54 -0
  222. package/src/integrations/framework-fetch-shape.test.node.ts +56 -0
  223. package/src/integrations/session-client.test.node.ts +121 -0
  224. package/src/integrations/session-coordination.test.node.ts +77 -0
  225. package/src/integrations/session-coordination.ts +96 -0
  226. package/src/integrations/session-middleware.test.node.ts +87 -0
  227. package/src/integrations/session-middleware.ts +107 -0
  228. package/src/integrations/session-request-kind.ts +18 -0
  229. package/src/integrations/session-request-middleware.ts +17 -0
  230. package/src/integrations/sign-in-body.test.node.ts +59 -0
  231. package/src/integrations/sign-in-body.ts +50 -0
  232. package/src/integrations/sign-in-middleware.ts +24 -0
  233. package/src/routes/create-admin-layout-route.tsx +48 -30
  234. package/src/routes/create-collection-edit-route.tsx +1 -0
  235. package/src/routes/create-collection-list-route.tsx +13 -2
  236. package/src/routes/create-sign-in-route.tsx +10 -2
  237. package/src/routes/create-singleton-route.test.node.ts +10 -2
  238. package/src/routes/create-singleton-route.tsx +6 -4
  239. package/src/server-fns/admin-account/change-password.test.node.ts +69 -0
  240. package/src/server-fns/admin-account/change-password.ts +13 -2
  241. package/src/server-fns/admin-account/get.ts +2 -0
  242. package/src/server-fns/admin-account/update.ts +2 -0
  243. package/src/server-fns/admin-activity/get.ts +2 -0
  244. package/src/server-fns/admin-permissions/get-role-abilities.ts +2 -0
  245. package/src/server-fns/admin-permissions/list-registered.ts +5 -4
  246. package/src/server-fns/admin-permissions/set-role-abilities.ts +2 -0
  247. package/src/server-fns/admin-permissions/who-has.ts +2 -0
  248. package/src/server-fns/admin-roles/create.ts +2 -0
  249. package/src/server-fns/admin-roles/delete.ts +2 -0
  250. package/src/server-fns/admin-roles/get.ts +2 -0
  251. package/src/server-fns/admin-roles/list.ts +5 -4
  252. package/src/server-fns/admin-roles/reorder.ts +2 -0
  253. package/src/server-fns/admin-roles/update.ts +2 -0
  254. package/src/server-fns/admin-users/create.ts +2 -0
  255. package/src/server-fns/admin-users/delete.ts +2 -0
  256. package/src/server-fns/admin-users/disable.ts +2 -0
  257. package/src/server-fns/admin-users/enable.ts +2 -0
  258. package/src/server-fns/admin-users/get-user-roles.ts +2 -0
  259. package/src/server-fns/admin-users/get.ts +2 -0
  260. package/src/server-fns/admin-users/list.ts +2 -0
  261. package/src/server-fns/admin-users/set-password.ts +2 -0
  262. package/src/server-fns/admin-users/set-user-roles.ts +2 -0
  263. package/src/server-fns/admin-users/update.ts +2 -0
  264. package/src/server-fns/ai/execute.ts +3 -0
  265. package/src/server-fns/analytics/maintenance.ts +4 -0
  266. package/src/server-fns/analytics/queries.ts +14 -8
  267. package/src/server-fns/auth/current-user.ts +7 -3
  268. package/src/server-fns/auth/renew.test.node.ts +85 -0
  269. package/src/server-fns/auth/renew.ts +54 -0
  270. package/src/server-fns/auth/sign-in.test.node.ts +114 -0
  271. package/src/server-fns/auth/sign-in.ts +80 -27
  272. package/src/server-fns/auth/sign-out.test.node.ts +85 -0
  273. package/src/server-fns/auth/sign-out.ts +44 -19
  274. package/src/server-fns/collections/audit.ts +2 -0
  275. package/src/server-fns/collections/copy-to-locale.ts +43 -36
  276. package/src/server-fns/collections/create.ts +56 -50
  277. package/src/server-fns/collections/delete-locale.ts +43 -32
  278. package/src/server-fns/collections/delete-outcome.test.node.ts +16 -0
  279. package/src/server-fns/collections/delete-outcome.ts +27 -16
  280. package/src/server-fns/collections/delete.ts +46 -38
  281. package/src/server-fns/collections/duplicate.ts +40 -32
  282. package/src/server-fns/collections/get.ts +11 -4
  283. package/src/server-fns/collections/history.ts +2 -0
  284. package/src/server-fns/collections/list.ts +10 -3
  285. package/src/server-fns/collections/reindex.ts +2 -0
  286. package/src/server-fns/collections/reorder.ts +34 -124
  287. package/src/server-fns/collections/restore-version.ts +49 -39
  288. package/src/server-fns/collections/revision-input.test.node.ts +122 -0
  289. package/src/server-fns/collections/save-outcome.test.node.ts +3 -0
  290. package/src/server-fns/collections/save-outcome.ts +2 -0
  291. package/src/server-fns/collections/scheduled-publication.ts +149 -115
  292. package/src/server-fns/collections/set-list-view-preference.ts +2 -0
  293. package/src/server-fns/collections/stats.ts +2 -0
  294. package/src/server-fns/collections/status.ts +89 -64
  295. package/src/server-fns/collections/tree-mutation.test.node.ts +87 -29
  296. package/src/server-fns/collections/tree-mutation.ts +28 -11
  297. package/src/server-fns/collections/tree.ts +156 -122
  298. package/src/server-fns/collections/update.ts +113 -86
  299. package/src/server-fns/collections/upload-singleton.test.node.ts +10 -7
  300. package/src/server-fns/collections/upload.ts +91 -77
  301. package/src/server-fns/document-mutation-errors.ts +67 -0
  302. package/src/server-fns/document-mutation-transport.test.node.ts +211 -0
  303. package/src/server-fns/editable-revision.test.node.ts +23 -0
  304. package/src/server-fns/editable-revision.ts +18 -0
  305. package/src/server-fns/i18n/set-locale.ts +19 -3
  306. package/src/server-fns/preview/disable.ts +8 -4
  307. package/src/server-fns/preview/enable.ts +9 -5
  308. package/src/server-fns/singleton-document-read.ts +7 -3
  309. package/src/server-fns/singletons/cancel-scheduled-publish.ts +12 -3
  310. package/src/server-fns/singletons/change-status.ts +12 -3
  311. package/src/server-fns/singletons/confirm-scheduled-publish.ts +14 -6
  312. package/src/server-fns/singletons/copy-to-locale.ts +22 -15
  313. package/src/server-fns/singletons/find-by-version.ts +2 -0
  314. package/src/server-fns/singletons/get-scheduled-publish.ts +2 -0
  315. package/src/server-fns/singletons/get.ts +5 -3
  316. package/src/server-fns/singletons/history.ts +2 -0
  317. package/src/server-fns/singletons/restore-version.ts +19 -12
  318. package/src/server-fns/singletons/schedule-publish.ts +20 -7
  319. package/src/server-fns/singletons/singletons.test.node.ts +69 -25
  320. package/src/server-fns/singletons/unpublish.ts +12 -3
  321. package/src/server-fns/singletons/update.ts +23 -16
  322. package/src/server-fns/structural-receipt.ts +41 -0
@@ -0,0 +1,52 @@
1
+ const SIGN_IN_MAX_BODY_BYTES = 16384;
2
+ const checked = new WeakSet();
3
+ function wasSignInBodyChecked(request) {
4
+ return checked.has(request);
5
+ }
6
+ async function checkSignInBody(request) {
7
+ if ('POST' !== request.method) return new Response('Method not allowed', {
8
+ status: 405,
9
+ headers: {
10
+ Allow: 'POST'
11
+ }
12
+ });
13
+ if (!request.headers.get('content-type')?.toLowerCase().startsWith('application/json')) return new Response('Expected JSON', {
14
+ status: 415
15
+ });
16
+ const declared = request.headers.get('content-length');
17
+ if (null !== declared && (!/^\d+$/.test(declared) || Number(declared) > SIGN_IN_MAX_BODY_BYTES)) return new Response('Payload too large', {
18
+ status: 413
19
+ });
20
+ const reader = request.clone().body?.getReader();
21
+ if (!reader) return new Response('Missing body', {
22
+ status: 400
23
+ });
24
+ let timer;
25
+ const deadline = new Promise((_, reject)=>{
26
+ timer = setTimeout(()=>reject(new Error('Body timeout')), 5000);
27
+ });
28
+ try {
29
+ let size = 0;
30
+ while(true){
31
+ const { value, done } = await Promise.race([
32
+ reader.read(),
33
+ deadline
34
+ ]);
35
+ if (done) break;
36
+ size += value.byteLength;
37
+ if (size > SIGN_IN_MAX_BODY_BYTES) return new Response('Payload too large', {
38
+ status: 413
39
+ });
40
+ }
41
+ checked.add(request);
42
+ return;
43
+ } catch {
44
+ return new Response('Incomplete request body', {
45
+ status: 408
46
+ });
47
+ } finally{
48
+ clearTimeout(timer);
49
+ reader.cancel().catch(()=>{});
50
+ }
51
+ }
52
+ export { SIGN_IN_MAX_BODY_BYTES, checkSignInBody, wasSignInBodyChecked };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ /** Register after CSRF in Start's global requestMiddleware, before RPC deserialization. */
9
+ export declare const passwordSignInMiddleware: import("@tanstack/react-start").RequestMiddlewareAfterServer<{}, undefined, undefined>;
@@ -0,0 +1,10 @@
1
+ import { createMiddleware } from "@tanstack/react-start";
2
+ import { adminSignIn } from "../server-fns/auth/sign-in.js";
3
+ import { checkSignInBody } from "./sign-in-body.js";
4
+ const passwordSignInMiddleware = createMiddleware().server(async (ctx)=>{
5
+ const endpoint = new URL(adminSignIn.url, ctx.request.url).pathname.replace(/\/$/, '');
6
+ if ('serverFn' !== ctx.handlerType || ctx.pathname !== endpoint && !ctx.pathname.startsWith(`${endpoint}/`)) return ctx.next();
7
+ const rejected = await checkSignInBody(ctx.request);
8
+ return rejected ?? ctx.next();
9
+ });
10
+ export { passwordSignInMiddleware };
@@ -14,10 +14,12 @@ import { AdminMenuProvider } from "../admin-shell/chrome/admin-menu-provider.js"
14
14
  import { Content } from "../admin-shell/chrome/content.js";
15
15
  import { RouteError, RouteNotFound } from "../admin-shell/chrome/route-error.js";
16
16
  import { RouteProgressBar } from "../admin-shell/chrome/route-progress-bar.js";
17
+ import { SessionChangeBoundary } from "../admin-shell/chrome/session-change-boundary.js";
17
18
  import { buildLocaleDefinitions } from "../i18n/locale-definitions.js";
18
19
  import { bylineAdminServices } from "../integrations/byline-admin-services.js";
19
20
  import { BylineAiAdminProvider } from "../integrations/byline-ai.js";
20
21
  import { bylineFieldServices } from "../integrations/byline-field-services.js";
22
+ import { observeSession, sessionIsChanged } from "../integrations/session-coordination.js";
21
23
  import { getAnalyticsRuntime } from "../server-fns/analytics/index.js";
22
24
  import { getCurrentAdminUser } from "../server-fns/auth/index.js";
23
25
  import { getScheduledPublicationRuntime } from "../server-fns/collections/index.js";
@@ -29,6 +31,7 @@ function createAdminLayoutRoute(path) {
29
31
  const signInPath = getSignInRoutePath();
30
32
  try {
31
33
  const user = await getCurrentAdminUser();
34
+ if ("u" > typeof window) observeSession(user.sessionId);
32
35
  const [activeLocale, scheduledPublicationRuntime, analyticsRuntime] = await Promise.all([
33
36
  getActiveLocaleFn(),
34
37
  getScheduledPublicationRuntime(),
@@ -40,7 +43,16 @@ function createAdminLayoutRoute(path) {
40
43
  scheduledPublicationRuntime,
41
44
  analyticsRuntime
42
45
  };
43
- } catch {
46
+ } catch (error) {
47
+ const code = error?.code;
48
+ if (!("u" > typeof window && sessionIsChanged()) && ![
49
+ 'ERR_UNAUTHENTICATED',
50
+ 'ERR_ACCESS_EXPIRED',
51
+ 'ERR_INVALID_TOKEN',
52
+ 'ERR_REVOKED_TOKEN',
53
+ 'ERR_ACCOUNT_DISABLED',
54
+ 'ERR_SESSION_CHANGED'
55
+ ].includes(code ?? '')) throw error;
44
56
  throw redirect({
45
57
  to: signInPath,
46
58
  search: {
@@ -64,36 +76,39 @@ function createAdminLayoutRoute(path) {
64
76
  });
65
77
  window.location.reload();
66
78
  };
67
- return /*#__PURE__*/ jsx(I18nProvider, {
68
- bundle: i18n.translations ?? {},
69
- activeLocale: activeLocale,
70
- defaultLocale: i18n.admin.defaultLocale,
71
- localeDefinitions: localeDefinitions,
72
- setLocale: handleSetLocale,
73
- children: /*#__PURE__*/ jsx(BylineAdminServicesProvider, {
74
- services: bylineAdminServices,
75
- children: /*#__PURE__*/ jsx(BylineFieldServicesProvider, {
76
- services: bylineFieldServices,
77
- children: /*#__PURE__*/ jsx(BylineAiAdminProvider, {
78
- children: /*#__PURE__*/ jsxs(AdminMenuProvider, {
79
- children: [
80
- /*#__PURE__*/ jsx(RouteProgressBar, {}),
81
- /*#__PURE__*/ jsx(AdminAppBar, {
82
- user: user
83
- }),
84
- /*#__PURE__*/ jsxs("main", {
85
- className: clsx('byline-admin-layout-main', admin_layout_module.main),
86
- children: [
87
- /*#__PURE__*/ jsx(AdminMenuDrawer, {
88
- analyticsEnabled: analyticsRuntime.enabled,
89
- scheduledPublicationEnabled: scheduledPublicationRuntime.enabled
90
- }),
91
- /*#__PURE__*/ jsx(Content, {
92
- children: /*#__PURE__*/ jsx(Outlet, {})
93
- })
94
- ]
95
- })
96
- ]
79
+ return /*#__PURE__*/ jsx(SessionChangeBoundary, {
80
+ user: user,
81
+ children: /*#__PURE__*/ jsx(I18nProvider, {
82
+ bundle: i18n.translations ?? {},
83
+ activeLocale: activeLocale,
84
+ defaultLocale: i18n.admin.defaultLocale,
85
+ localeDefinitions: localeDefinitions,
86
+ setLocale: handleSetLocale,
87
+ children: /*#__PURE__*/ jsx(BylineAdminServicesProvider, {
88
+ services: bylineAdminServices,
89
+ children: /*#__PURE__*/ jsx(BylineFieldServicesProvider, {
90
+ services: bylineFieldServices,
91
+ children: /*#__PURE__*/ jsx(BylineAiAdminProvider, {
92
+ children: /*#__PURE__*/ jsxs(AdminMenuProvider, {
93
+ children: [
94
+ /*#__PURE__*/ jsx(RouteProgressBar, {}),
95
+ /*#__PURE__*/ jsx(AdminAppBar, {
96
+ user: user
97
+ }),
98
+ /*#__PURE__*/ jsxs("main", {
99
+ className: clsx('byline-admin-layout-main', admin_layout_module.main),
100
+ children: [
101
+ /*#__PURE__*/ jsx(AdminMenuDrawer, {
102
+ analyticsEnabled: analyticsRuntime.enabled,
103
+ scheduledPublicationEnabled: scheduledPublicationRuntime.enabled
104
+ }),
105
+ /*#__PURE__*/ jsx(Content, {
106
+ children: /*#__PURE__*/ jsx(Outlet, {})
107
+ })
108
+ ]
109
+ })
110
+ ]
111
+ })
97
112
  })
98
113
  })
99
114
  })
@@ -122,7 +122,7 @@ function createCollectionEditRoute(path) {
122
122
  contentLocales: contentLocales,
123
123
  defaultContentLocale: defaultContentLocale,
124
124
  returnSearch: returnSearch
125
- })
125
+ }, `${collection}/${id}/${locale}`)
126
126
  ]
127
127
  });
128
128
  }
@@ -1,8 +1 @@
1
- /**
2
- * This Source Code is subject to the terms of the Mozilla Public
3
- * License, v. 2.0. If a copy of the MPL was not distributed with this
4
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
- *
6
- * Copyright (c) Infonomic Company Limited
7
- */
8
1
  export declare function createCollectionListRoute(path: string): any;
@@ -1,8 +1,8 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { getCollectionAdminConfig, getWorkflowStatuses, parseDocumentRevision } from "@byline/core";
2
3
  import { useEffect, useRef } from "react";
3
4
  import { createFileRoute, notFound } from "@tanstack/react-router";
4
5
  import { applyRelationColumnFormatters } from "@byline/admin/react";
5
- import { getCollectionAdminConfig, getWorkflowStatuses } from "@byline/core";
6
6
  import { useTranslation } from "@byline/i18n/react";
7
7
  import { useToastManager } from "@byline/ui/react";
8
8
  import { BreadcrumbsClient } from "../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js";
@@ -124,17 +124,16 @@ function createCollectionListRoute(path) {
124
124
  collection: collection,
125
125
  collectionLabels: data.included.collection.labels,
126
126
  listActions: adminConfig?.listActions,
127
- onMove: async ({ documentId, parentDocumentId, beforeDocumentId, afterDocumentId })=>{
128
- await placeTreeNode({
127
+ onMove: async ({ documentId, parentDocumentId, beforeDocumentId, afterDocumentId })=>await placeTreeNode({
129
128
  data: {
129
+ expectedRevision: parseDocumentRevision(data.rows.find((row)=>row.id === documentId)?.revision),
130
130
  collection,
131
131
  documentId,
132
132
  parentDocumentId,
133
133
  beforeDocumentId,
134
134
  afterDocumentId
135
135
  }
136
- });
137
- }
136
+ })
138
137
  }) : CustomListView ? /*#__PURE__*/ jsx(CustomListView, {
139
138
  data: data,
140
139
  workflowStatuses: workflowStatuses
@@ -145,16 +144,15 @@ function createCollectionListRoute(path) {
145
144
  useAsTitle: collectionDef.useAsTitle,
146
145
  orderable: true === collectionDef.orderable,
147
146
  listActions: adminConfig?.listActions,
148
- onReorder: async ({ documentId, beforeDocumentId, afterDocumentId })=>{
149
- await reorderCollectionDocument({
147
+ onReorder: async ({ documentId, beforeDocumentId, afterDocumentId })=>await reorderCollectionDocument({
150
148
  data: {
149
+ expectedRevision: parseDocumentRevision(data.docs.find((row)=>row.id === documentId)?.revision),
151
150
  collection,
152
151
  documentId,
153
152
  beforeDocumentId,
154
153
  afterDocumentId
155
154
  }
156
- });
157
- }
155
+ })
158
156
  })
159
157
  ]
160
158
  });
@@ -10,7 +10,8 @@ function createSignInRoute(path, { homeUrl } = {}) {
10
10
  validateSearch: (search)=>{
11
11
  const callbackUrl = resolveAdminCallbackPath(search.callbackUrl);
12
12
  return {
13
- callbackUrl
13
+ callbackUrl,
14
+ reauthenticate: '1' === search.reauthenticate || 1 === search.reauthenticate || true === search.reauthenticate
14
15
  };
15
16
  },
16
17
  beforeLoad: async ()=>{
@@ -20,10 +21,11 @@ function createSignInRoute(path, { homeUrl } = {}) {
20
21
  };
21
22
  },
22
23
  component: function() {
23
- const { callbackUrl } = Route.useSearch();
24
+ const { callbackUrl, reauthenticate } = Route.useSearch();
24
25
  const { activeLocale } = Route.useRouteContext();
25
26
  return /*#__PURE__*/ jsx(SignInPage, {
26
27
  redirectTo: resolveAdminSignInRedirect(callbackUrl),
28
+ reauthenticate: reauthenticate,
27
29
  activeLocale: activeLocale,
28
30
  homeUrl: resolvedHomeUrl
29
31
  });
@@ -20,8 +20,10 @@ export declare const getSingletonRouteDocument: import("@tanstack/react-start").
20
20
  locale?: string;
21
21
  }, Promise<{
22
22
  document: null;
23
+ expectedEmpty: true;
23
24
  initialData: Record<string, any>;
24
25
  } | {
26
+ expectedEmpty?: undefined;
25
27
  document: {
26
28
  _publishedVersion: Record<string, any> | null;
27
29
  _scheduledPublicationEnabled: boolean;
@@ -1,7 +1,7 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { createFileRoute, notFound } from "@tanstack/react-router";
3
3
  import { createServerFn } from "@tanstack/react-start";
4
- import { getAdminBylineClient, getAdminRequestContext } from "@byline/client/server";
4
+ import { getAdminRequestContext } from "@byline/client/server";
5
5
  import { buildInitialDataFromFields, documentAbilityKey, getServerConfig, getSingletonAdminConfig } from "@byline/core";
6
6
  import { useTranslation } from "@byline/i18n/react";
7
7
  import { z } from "zod";
@@ -28,6 +28,7 @@ const getSingletonRouteDocument = createServerFn({
28
28
  });
29
29
  if (null == document) return {
30
30
  document: null,
31
+ expectedEmpty: true,
31
32
  initialData: serialise(await buildInitialDataFromFields(definition.fields, {
32
33
  locale: data.locale ?? getServerConfig().i18n.content.defaultLocale
33
34
  }))
@@ -54,7 +55,7 @@ const getSingletonRouteDocument = createServerFn({
54
55
  if (scheduledPublicationEnabled) {
55
56
  const actor = (await getAdminRequestContext()).actor;
56
57
  canSchedulePublication = actor?.hasAbility(documentAbilityKey(definition, 'changeStatus')) === true && actor.hasAbility(documentAbilityKey(definition, 'publish'));
57
- if (canSchedulePublication) scheduledPublish = await getAdminBylineClient().singleton(data.singleton).getScheduledPublish();
58
+ if (canSchedulePublication) scheduledPublish = document.scheduledPublication;
58
59
  }
59
60
  const serializedSchedule = null == scheduledPublish ? null : serialise(scheduledPublish);
60
61
  return {
@@ -120,7 +121,7 @@ function createSingletonRoute(path) {
120
121
  locale: locale,
121
122
  contentLocales: contentLocales,
122
123
  defaultContentLocale: defaultContentLocale
123
- })
124
+ }, `${singleton}/${locale}`)
124
125
  ]
125
126
  });
126
127
  }
@@ -10,7 +10,9 @@ export interface ChangeAccountPasswordInput {
10
10
  currentPassword: string;
11
11
  newPassword: string;
12
12
  }
13
- export declare const changeAccountPassword: import("@tanstack/react-start").RequiredFetcher<undefined, (input: ChangeAccountPasswordInput) => ChangeAccountPasswordInput, Promise<{
13
+ export declare const changeAccountPassword: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
14
+ bylineExpectedSessionId: string | null;
15
+ }, undefined, undefined>], (input: ChangeAccountPasswordInput) => ChangeAccountPasswordInput, Promise<{
14
16
  id: string;
15
17
  vid: number;
16
18
  email: string;
@@ -1,13 +1,19 @@
1
1
  import { createServerFn } from "@tanstack/react-start";
2
2
  import { changeAccountPasswordCommand } from "@byline/admin/admin-account";
3
- import { getAdminRequestContext } from "@byline/client/server";
3
+ import { clearPreviewCookie, clearSessionCookies, getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const changeAccountPassword = createServerFn({
6
7
  method: 'POST'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
- return changeAccountPasswordCommand(context, data, {
12
+ const account = await changeAccountPasswordCommand(context, data, {
10
13
  store: bylineCore().adminStore
11
14
  });
15
+ clearSessionCookies();
16
+ clearPreviewCookie();
17
+ return account;
12
18
  });
13
19
  export { changeAccountPassword };
@@ -11,7 +11,9 @@
11
11
  * status fields that the slim `CurrentAdminUser` on route context
12
12
  * doesn't carry.
13
13
  */
14
- export declare const getAccount: import("@tanstack/react-start").OptionalFetcher<undefined, (input?: Record<string, never>) => Record<string, never>, Promise<{
14
+ export declare const getAccount: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
15
+ bylineExpectedSessionId: string | null;
16
+ }, undefined, undefined>], (input?: Record<string, never>) => Record<string, never>, Promise<{
15
17
  id: string;
16
18
  vid: number;
17
19
  email: string;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { getAccountCommand } from "@byline/admin/admin-account";
3
3
  import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const getAccount = createServerFn({
6
7
  method: 'GET'
7
- }).validator((input)=>input ?? {}).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input ?? {}).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return getAccountCommand(context, data, {
10
13
  store: bylineCore().adminStore
@@ -14,8 +14,8 @@
14
14
  * actor is the target — none of these accept an `id`.
15
15
  */
16
16
  export type { AccountResponse } from '@byline/admin/admin-account';
17
- export { changeAccountPassword } from './change-password';
18
- export { getAccount } from './get';
19
- export { updateAccount } from './update';
20
- export type { ChangeAccountPasswordInput } from './change-password';
21
- export type { UpdateAccountInput } from './update';
17
+ export { changeAccountPassword } from './change-password.js';
18
+ export { getAccount } from './get.js';
19
+ export { updateAccount } from './update.js';
20
+ export type { ChangeAccountPasswordInput } from './change-password.js';
21
+ export type { UpdateAccountInput } from './update.js';
@@ -14,7 +14,9 @@ export interface UpdateAccountInput {
14
14
  username?: string | null;
15
15
  };
16
16
  }
17
- export declare const updateAccount: import("@tanstack/react-start").RequiredFetcher<undefined, (input: UpdateAccountInput) => UpdateAccountInput, Promise<{
17
+ export declare const updateAccount: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
18
+ bylineExpectedSessionId: string | null;
19
+ }, undefined, undefined>], (input: UpdateAccountInput) => UpdateAccountInput, Promise<{
18
20
  id: string;
19
21
  vid: number;
20
22
  email: string;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { updateAccountCommand } from "@byline/admin/admin-account";
3
3
  import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const updateAccount = createServerFn({
6
7
  method: 'POST'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return updateAccountCommand(context, data, {
10
13
  store: bylineCore().adminStore
@@ -47,4 +47,6 @@ export interface SystemActivityResponse {
47
47
  * queries directly and is gated system-wide by `admin.activity.read` rather
48
48
  * than by any document's own read gate.
49
49
  */
50
- export declare const getSystemActivityLog: import("@tanstack/react-start").RequiredFetcher<undefined, (input: SystemActivitySearchParams) => SystemActivitySearchParams, Promise<SystemActivityResponse>>;
50
+ export declare const getSystemActivityLog: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
51
+ bylineExpectedSessionId: string | null;
52
+ }, undefined, undefined>], (input: SystemActivitySearchParams) => SystemActivitySearchParams, Promise<SystemActivityResponse>>;
@@ -3,10 +3,13 @@ import { assertAdminActor } from "@byline/admin";
3
3
  import { ADMIN_ACTIVITY_ABILITIES } from "@byline/admin/admin-activity";
4
4
  import { getAdminRequestContext } from "@byline/client/server";
5
5
  import { ERR_AUDIT_UNSUPPORTED, getLogger, getServerConfig } from "@byline/core";
6
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
6
7
  import { resolveActorLabels } from "../collections/actors.js";
7
8
  const getSystemActivityLog = createServerFn({
8
9
  method: 'GET'
9
- }).validator((input)=>input ?? {}).handler(async ({ data })=>{
10
+ }).middleware([
11
+ adminSessionMiddleware
12
+ ]).validator((input)=>input ?? {}).handler(async ({ data })=>{
10
13
  const context = await getAdminRequestContext();
11
14
  assertAdminActor(context, ADMIN_ACTIVITY_ABILITIES.read);
12
15
  const queries = getServerConfig().db.queries;
@@ -5,7 +5,9 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- export declare const getRoleAbilities: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
8
+ export declare const getRoleAbilities: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
9
11
  id: string;
10
12
  }) => {
11
13
  id: string;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { getRoleAbilitiesCommand } from "@byline/admin/admin-permissions";
3
3
  import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const getRoleAbilities = createServerFn({
6
7
  method: 'GET'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return getRoleAbilitiesCommand(context, data, {
10
13
  store: bylineCore().adminStore,
@@ -18,7 +18,7 @@
18
18
  * mounts on the admin-roles role detail page.
19
19
  */
20
20
  export type { AbilityDescriptorResponse, AbilityGroupResponse, AbilityHolderRole, AbilityHolderUser, GetRoleAbilitiesResponse, ListRegisteredAbilitiesResponse, SetRoleAbilitiesResponse, WhoHasAbilityResponse, } from '@byline/admin/admin-permissions';
21
- export { getRoleAbilities } from './get-role-abilities';
22
- export { listRegisteredAbilities } from './list-registered';
23
- export { type SetRoleAbilitiesInput, setRoleAbilities } from './set-role-abilities';
24
- export { whoHasAbility } from './who-has';
21
+ export { getRoleAbilities } from './get-role-abilities.js';
22
+ export { listRegisteredAbilities } from './list-registered.js';
23
+ export { type SetRoleAbilitiesInput, setRoleAbilities } from './set-role-abilities.js';
24
+ export { whoHasAbility } from './who-has.js';
@@ -10,7 +10,9 @@
10
10
  * populated at init time by collection auto-registration plus
11
11
  * `registerAdminAbilities`. No DB read.
12
12
  */
13
- export declare const listRegisteredAbilities: import("@tanstack/react-start").OptionalFetcher<undefined, undefined, Promise<{
13
+ export declare const listRegisteredAbilities: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
14
+ bylineExpectedSessionId: string | null;
15
+ }, undefined, undefined>], undefined, Promise<{
14
16
  abilities: {
15
17
  key: string;
16
18
  label: string;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { listRegisteredAbilitiesCommand } from "@byline/admin/admin-permissions";
3
3
  import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const listRegisteredAbilities = createServerFn({
6
7
  method: 'GET'
7
- }).handler(async ()=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).handler(async ()=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return listRegisteredAbilitiesCommand(context, {}, {
10
13
  store: bylineCore().adminStore,
@@ -9,7 +9,9 @@ export interface SetRoleAbilitiesInput {
9
9
  id: string;
10
10
  abilities: string[];
11
11
  }
12
- export declare const setRoleAbilities: import("@tanstack/react-start").RequiredFetcher<undefined, (input: SetRoleAbilitiesInput) => SetRoleAbilitiesInput, Promise<{
12
+ export declare const setRoleAbilities: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
13
+ bylineExpectedSessionId: string | null;
14
+ }, undefined, undefined>], (input: SetRoleAbilitiesInput) => SetRoleAbilitiesInput, Promise<{
13
15
  roleId: string;
14
16
  abilities: string[];
15
17
  }>>;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { setRoleAbilitiesCommand } from "@byline/admin/admin-permissions";
3
3
  import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const setRoleAbilities = createServerFn({
6
7
  method: 'POST'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return setRoleAbilitiesCommand(context, data, {
10
13
  store: bylineCore().adminStore,
@@ -5,7 +5,9 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- export declare const whoHasAbility: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
8
+ export declare const whoHasAbility: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
9
11
  ability: string;
10
12
  }) => {
11
13
  ability: string;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { whoHasAbilityCommand } from "@byline/admin/admin-permissions";
3
3
  import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const whoHasAbility = createServerFn({
6
7
  method: 'GET'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return whoHasAbilityCommand(context, data, {
10
13
  store: bylineCore().adminStore,
@@ -11,7 +11,9 @@ export interface CreateAdminRoleInput {
11
11
  description?: string | null;
12
12
  order?: number;
13
13
  }
14
- export declare const createAdminRole: import("@tanstack/react-start").RequiredFetcher<undefined, (input: CreateAdminRoleInput) => CreateAdminRoleInput, Promise<{
14
+ export declare const createAdminRole: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
15
+ bylineExpectedSessionId: string | null;
16
+ }, undefined, undefined>], (input: CreateAdminRoleInput) => CreateAdminRoleInput, Promise<{
15
17
  id: string;
16
18
  vid: number;
17
19
  name: string;
@@ -2,9 +2,12 @@ import { createServerFn } from "@tanstack/react-start";
2
2
  import { createAdminRoleCommand } from "@byline/admin/admin-roles";
3
3
  import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { bylineCore } from "../../integrations/byline-core.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
5
6
  const createAdminRole = createServerFn({
6
7
  method: 'POST'
7
- }).validator((input)=>input).handler(async ({ data })=>{
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(async ({ data })=>{
8
11
  const context = await getAdminRequestContext();
9
12
  return createAdminRoleCommand(context, data, {
10
13
  store: bylineCore().adminStore
@@ -5,7 +5,9 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- export declare const deleteAdminRole: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
8
+ export declare const deleteAdminRole: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
9
11
  id: string;
10
12
  vid: number;
11
13
  }) => {