@byline/host-tanstack-start 0.9.3

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 (511) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +48 -0
  3. package/dist/admin-shell/admin-roles/container.d.ts +34 -0
  4. package/dist/admin-shell/admin-roles/container.d.ts.map +1 -0
  5. package/dist/admin-shell/admin-roles/container.js +259 -0
  6. package/dist/admin-shell/admin-roles/container.module.js +17 -0
  7. package/dist/admin-shell/admin-roles/container_module.css +93 -0
  8. package/dist/admin-shell/admin-roles/delete.d.ts +9 -0
  9. package/dist/admin-shell/admin-roles/delete.d.ts.map +1 -0
  10. package/dist/admin-shell/admin-roles/delete.js +107 -0
  11. package/dist/admin-shell/admin-roles/delete.module.js +10 -0
  12. package/dist/admin-shell/admin-roles/delete_module.css +35 -0
  13. package/dist/admin-shell/admin-roles/list.d.ts +25 -0
  14. package/dist/admin-shell/admin-roles/list.d.ts.map +1 -0
  15. package/dist/admin-shell/admin-roles/list.js +292 -0
  16. package/dist/admin-shell/admin-roles/list.module.js +24 -0
  17. package/dist/admin-shell/admin-roles/list_module.css +113 -0
  18. package/dist/admin-shell/admin-users/container.d.ts +18 -0
  19. package/dist/admin-shell/admin-users/container.d.ts.map +1 -0
  20. package/dist/admin-shell/admin-users/container.js +418 -0
  21. package/dist/admin-shell/admin-users/container.module.js +22 -0
  22. package/dist/admin-shell/admin-users/container_module.css +136 -0
  23. package/dist/admin-shell/admin-users/delete.d.ts +9 -0
  24. package/dist/admin-shell/admin-users/delete.d.ts.map +1 -0
  25. package/dist/admin-shell/admin-users/delete.js +115 -0
  26. package/dist/admin-shell/admin-users/delete.module.js +10 -0
  27. package/dist/admin-shell/admin-users/delete_module.css +35 -0
  28. package/dist/admin-shell/admin-users/list.d.ts +13 -0
  29. package/dist/admin-shell/admin-users/list.d.ts.map +1 -0
  30. package/dist/admin-shell/admin-users/list.js +328 -0
  31. package/dist/admin-shell/admin-users/list.module.js +22 -0
  32. package/dist/admin-shell/admin-users/list_module.css +112 -0
  33. package/dist/admin-shell/chrome/admin-app-bar.d.ts +7 -0
  34. package/dist/admin-shell/chrome/admin-app-bar.d.ts.map +1 -0
  35. package/dist/admin-shell/chrome/admin-app-bar.js +71 -0
  36. package/dist/admin-shell/chrome/admin-app-bar.module.js +9 -0
  37. package/dist/admin-shell/chrome/admin-app-bar_module.css +54 -0
  38. package/dist/admin-shell/chrome/admin-layout.module.js +5 -0
  39. package/dist/admin-shell/chrome/admin-layout_module.css +8 -0
  40. package/dist/admin-shell/chrome/branding.d.ts +9 -0
  41. package/dist/admin-shell/chrome/branding.d.ts.map +1 -0
  42. package/dist/admin-shell/chrome/branding.js +17 -0
  43. package/dist/admin-shell/chrome/branding.module.js +6 -0
  44. package/dist/admin-shell/chrome/branding_module.css +11 -0
  45. package/dist/admin-shell/chrome/breadcrumbs/@types.d.ts +6 -0
  46. package/dist/admin-shell/chrome/breadcrumbs/@types.d.ts.map +1 -0
  47. package/dist/admin-shell/chrome/breadcrumbs/@types.js +1 -0
  48. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.d.ts +7 -0
  49. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.d.ts.map +1 -0
  50. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.js +20 -0
  51. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.d.ts +24 -0
  52. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.d.ts.map +1 -0
  53. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.js +23 -0
  54. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.d.ts +15 -0
  55. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  56. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.js +77 -0
  57. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.module.js +12 -0
  58. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs_module.css +81 -0
  59. package/dist/admin-shell/chrome/byline-logo.d.ts +12 -0
  60. package/dist/admin-shell/chrome/byline-logo.d.ts.map +1 -0
  61. package/dist/admin-shell/chrome/byline-logo.js +178 -0
  62. package/dist/admin-shell/chrome/content.d.ts +24 -0
  63. package/dist/admin-shell/chrome/content.d.ts.map +1 -0
  64. package/dist/admin-shell/chrome/content.js +31 -0
  65. package/dist/admin-shell/chrome/content.module.js +5 -0
  66. package/dist/admin-shell/chrome/content_module.css +10 -0
  67. package/dist/admin-shell/chrome/dashboard.d.ts +14 -0
  68. package/dist/admin-shell/chrome/dashboard.d.ts.map +1 -0
  69. package/dist/admin-shell/chrome/dashboard.js +129 -0
  70. package/dist/admin-shell/chrome/dashboard.module.js +19 -0
  71. package/dist/admin-shell/chrome/dashboard_module.css +175 -0
  72. package/dist/admin-shell/chrome/drawer-toggle.d.ts +9 -0
  73. package/dist/admin-shell/chrome/drawer-toggle.d.ts.map +1 -0
  74. package/dist/admin-shell/chrome/drawer-toggle.js +57 -0
  75. package/dist/admin-shell/chrome/drawer-toggle.module.js +8 -0
  76. package/dist/admin-shell/chrome/drawer-toggle_module.css +21 -0
  77. package/dist/admin-shell/chrome/hamburger.d.ts +10 -0
  78. package/dist/admin-shell/chrome/hamburger.d.ts.map +1 -0
  79. package/dist/admin-shell/chrome/hamburger.js +30 -0
  80. package/dist/admin-shell/chrome/hamburger.module.js +5 -0
  81. package/dist/admin-shell/chrome/hamburger_module.css +7 -0
  82. package/dist/admin-shell/chrome/loose-router.d.ts +33 -0
  83. package/dist/admin-shell/chrome/loose-router.d.ts.map +1 -0
  84. package/dist/admin-shell/chrome/loose-router.js +6 -0
  85. package/dist/admin-shell/chrome/menu-drawer.d.ts +10 -0
  86. package/dist/admin-shell/chrome/menu-drawer.d.ts.map +1 -0
  87. package/dist/admin-shell/chrome/menu-drawer.js +141 -0
  88. package/dist/admin-shell/chrome/menu-drawer.module.js +12 -0
  89. package/dist/admin-shell/chrome/menu-drawer_module.css +137 -0
  90. package/dist/admin-shell/chrome/menu-provider.d.ts +21 -0
  91. package/dist/admin-shell/chrome/menu-provider.d.ts.map +1 -0
  92. package/dist/admin-shell/chrome/menu-provider.js +54 -0
  93. package/dist/admin-shell/chrome/preview-toggle.d.ts +13 -0
  94. package/dist/admin-shell/chrome/preview-toggle.d.ts.map +1 -0
  95. package/dist/admin-shell/chrome/preview-toggle.js +75 -0
  96. package/dist/admin-shell/chrome/route-error.d.ts +22 -0
  97. package/dist/admin-shell/chrome/route-error.d.ts.map +1 -0
  98. package/dist/admin-shell/chrome/route-error.js +119 -0
  99. package/dist/admin-shell/chrome/route-error.module.js +14 -0
  100. package/dist/admin-shell/chrome/route-error_module.css +94 -0
  101. package/dist/admin-shell/chrome/router-pager.d.ts +19 -0
  102. package/dist/admin-shell/chrome/router-pager.d.ts.map +1 -0
  103. package/dist/admin-shell/chrome/router-pager.js +91 -0
  104. package/dist/admin-shell/chrome/sign-in-page.d.ts +19 -0
  105. package/dist/admin-shell/chrome/sign-in-page.d.ts.map +1 -0
  106. package/dist/admin-shell/chrome/sign-in-page.js +20 -0
  107. package/dist/admin-shell/chrome/sign-in-page.module.js +6 -0
  108. package/dist/admin-shell/chrome/sign-in-page_module.css +22 -0
  109. package/dist/admin-shell/chrome/sort-icons.d.ts +10 -0
  110. package/dist/admin-shell/chrome/sort-icons.d.ts.map +1 -0
  111. package/dist/admin-shell/chrome/sort-icons.js +103 -0
  112. package/dist/admin-shell/chrome/th-sortable.d.ts +23 -0
  113. package/dist/admin-shell/chrome/th-sortable.d.ts.map +1 -0
  114. package/dist/admin-shell/chrome/th-sortable.js +75 -0
  115. package/dist/admin-shell/chrome/th-sortable.module.js +10 -0
  116. package/dist/admin-shell/chrome/th-sortable_module.css +37 -0
  117. package/dist/admin-shell/chrome/use-media-query.d.ts +9 -0
  118. package/dist/admin-shell/chrome/use-media-query.d.ts.map +1 -0
  119. package/dist/admin-shell/chrome/use-media-query.js +20 -0
  120. package/dist/admin-shell/chrome/utils.d.ts +12 -0
  121. package/dist/admin-shell/chrome/utils.d.ts.map +1 -0
  122. package/dist/admin-shell/chrome/utils.js +8 -0
  123. package/dist/admin-shell/collections/api.d.ts +28 -0
  124. package/dist/admin-shell/collections/api.d.ts.map +1 -0
  125. package/dist/admin-shell/collections/api.js +51 -0
  126. package/dist/admin-shell/collections/api.module.js +9 -0
  127. package/dist/admin-shell/collections/api_module.css +42 -0
  128. package/dist/admin-shell/collections/create.d.ts +14 -0
  129. package/dist/admin-shell/collections/create.d.ts.map +1 -0
  130. package/dist/admin-shell/collections/create.js +77 -0
  131. package/dist/admin-shell/collections/edit.d.ts +19 -0
  132. package/dist/admin-shell/collections/edit.d.ts.map +1 -0
  133. package/dist/admin-shell/collections/edit.js +279 -0
  134. package/dist/admin-shell/collections/history.d.ts +20 -0
  135. package/dist/admin-shell/collections/history.d.ts.map +1 -0
  136. package/dist/admin-shell/collections/history.js +252 -0
  137. package/dist/admin-shell/collections/history.module.js +18 -0
  138. package/dist/admin-shell/collections/history_module.css +121 -0
  139. package/dist/admin-shell/collections/list.d.ts +16 -0
  140. package/dist/admin-shell/collections/list.d.ts.map +1 -0
  141. package/dist/admin-shell/collections/list.js +253 -0
  142. package/dist/admin-shell/collections/list.module.js +16 -0
  143. package/dist/admin-shell/collections/list_module.css +88 -0
  144. package/dist/admin-shell/collections/preview-link.d.ts +32 -0
  145. package/dist/admin-shell/collections/preview-link.d.ts.map +1 -0
  146. package/dist/admin-shell/collections/preview-link.js +54 -0
  147. package/dist/admin-shell/collections/tanstack-navigation-guard.d.ts +16 -0
  148. package/dist/admin-shell/collections/tanstack-navigation-guard.d.ts.map +1 -0
  149. package/dist/admin-shell/collections/tanstack-navigation-guard.js +19 -0
  150. package/dist/admin-shell/collections/view-menu.d.ts +58 -0
  151. package/dist/admin-shell/collections/view-menu.d.ts.map +1 -0
  152. package/dist/admin-shell/collections/view-menu.js +203 -0
  153. package/dist/admin-shell/collections/view-menu.module.js +11 -0
  154. package/dist/admin-shell/collections/view-menu_module.css +43 -0
  155. package/dist/auth/auth-context.d.ts +38 -0
  156. package/dist/auth/auth-context.d.ts.map +1 -0
  157. package/dist/auth/auth-context.js +57 -0
  158. package/dist/auth/auth-cookies.d.ts +35 -0
  159. package/dist/auth/auth-cookies.d.ts.map +1 -0
  160. package/dist/auth/auth-cookies.js +46 -0
  161. package/dist/auth/preview-cookies.d.ts +20 -0
  162. package/dist/auth/preview-cookies.d.ts.map +1 -0
  163. package/dist/auth/preview-cookies.js +26 -0
  164. package/dist/index.d.ts +43 -0
  165. package/dist/index.d.ts.map +1 -0
  166. package/dist/index.js +1 -0
  167. package/dist/integrations/abilities.d.ts +67 -0
  168. package/dist/integrations/abilities.d.ts.map +1 -0
  169. package/dist/integrations/abilities.js +25 -0
  170. package/dist/integrations/api-utils.d.ts +34 -0
  171. package/dist/integrations/api-utils.d.ts.map +1 -0
  172. package/dist/integrations/api-utils.js +22 -0
  173. package/dist/integrations/byline-admin-services.d.ts +25 -0
  174. package/dist/integrations/byline-admin-services.d.ts.map +1 -0
  175. package/dist/integrations/byline-admin-services.js +26 -0
  176. package/dist/integrations/byline-client.d.ts +22 -0
  177. package/dist/integrations/byline-client.d.ts.map +1 -0
  178. package/dist/integrations/byline-client.js +13 -0
  179. package/dist/integrations/byline-core.d.ts +28 -0
  180. package/dist/integrations/byline-core.d.ts.map +1 -0
  181. package/dist/integrations/byline-core.js +5 -0
  182. package/dist/integrations/byline-field-services.d.ts +19 -0
  183. package/dist/integrations/byline-field-services.d.ts.map +1 -0
  184. package/dist/integrations/byline-field-services.js +14 -0
  185. package/dist/integrations/byline-public-client.d.ts +10 -0
  186. package/dist/integrations/byline-public-client.d.ts.map +1 -0
  187. package/dist/integrations/byline-public-client.js +15 -0
  188. package/dist/integrations/byline-viewer-client.d.ts +21 -0
  189. package/dist/integrations/byline-viewer-client.d.ts.map +1 -0
  190. package/dist/integrations/byline-viewer-client.js +39 -0
  191. package/dist/integrations/start-errors.d.ts +23 -0
  192. package/dist/integrations/start-errors.d.ts.map +1 -0
  193. package/dist/integrations/start-errors.js +32 -0
  194. package/dist/routes/create-admin-account-route.d.ts +9 -0
  195. package/dist/routes/create-admin-account-route.d.ts.map +1 -0
  196. package/dist/routes/create-admin-account-route.js +68 -0
  197. package/dist/routes/create-admin-dashboard-route.d.ts +9 -0
  198. package/dist/routes/create-admin-dashboard-route.d.ts.map +1 -0
  199. package/dist/routes/create-admin-dashboard-route.js +44 -0
  200. package/dist/routes/create-admin-layout-route.d.ts +14 -0
  201. package/dist/routes/create-admin-layout-route.d.ts.map +1 -0
  202. package/dist/routes/create-admin-layout-route.js +64 -0
  203. package/dist/routes/create-admin-permissions-route.d.ts +9 -0
  204. package/dist/routes/create-admin-permissions-route.d.ts.map +1 -0
  205. package/dist/routes/create-admin-permissions-route.js +39 -0
  206. package/dist/routes/create-admin-role-edit-route.d.ts +9 -0
  207. package/dist/routes/create-admin-role-edit-route.d.ts.map +1 -0
  208. package/dist/routes/create-admin-role-edit-route.js +79 -0
  209. package/dist/routes/create-admin-roles-list-route.d.ts +9 -0
  210. package/dist/routes/create-admin-roles-list-route.d.ts.map +1 -0
  211. package/dist/routes/create-admin-roles-list-route.js +39 -0
  212. package/dist/routes/create-admin-user-edit-route.d.ts +9 -0
  213. package/dist/routes/create-admin-user-edit-route.d.ts.map +1 -0
  214. package/dist/routes/create-admin-user-edit-route.js +86 -0
  215. package/dist/routes/create-admin-users-list-route.d.ts +9 -0
  216. package/dist/routes/create-admin-users-list-route.d.ts.map +1 -0
  217. package/dist/routes/create-admin-users-list-route.js +71 -0
  218. package/dist/routes/create-collection-api-route.d.ts +15 -0
  219. package/dist/routes/create-collection-api-route.d.ts.map +1 -0
  220. package/dist/routes/create-collection-api-route.js +71 -0
  221. package/dist/routes/create-collection-create-route.d.ts +9 -0
  222. package/dist/routes/create-collection-create-route.d.ts.map +1 -0
  223. package/dist/routes/create-collection-create-route.js +53 -0
  224. package/dist/routes/create-collection-edit-route.d.ts +15 -0
  225. package/dist/routes/create-collection-edit-route.d.ts.map +1 -0
  226. package/dist/routes/create-collection-edit-route.js +65 -0
  227. package/dist/routes/create-collection-history-route.d.ts +15 -0
  228. package/dist/routes/create-collection-history-route.d.ts.map +1 -0
  229. package/dist/routes/create-collection-history-route.js +94 -0
  230. package/dist/routes/create-collection-list-route.d.ts +9 -0
  231. package/dist/routes/create-collection-list-route.d.ts.map +1 -0
  232. package/dist/routes/create-collection-list-route.js +130 -0
  233. package/dist/routes/create-sign-in-route.d.ts +9 -0
  234. package/dist/routes/create-sign-in-route.d.ts.map +1 -0
  235. package/dist/routes/create-sign-in-route.js +21 -0
  236. package/dist/routes/index.d.ts +35 -0
  237. package/dist/routes/index.d.ts.map +1 -0
  238. package/dist/routes/index.js +14 -0
  239. package/dist/server-fns/admin-account/change-password.d.ts +30 -0
  240. package/dist/server-fns/admin-account/change-password.d.ts.map +1 -0
  241. package/dist/server-fns/admin-account/change-password.js +13 -0
  242. package/dist/server-fns/admin-account/get.d.ts +31 -0
  243. package/dist/server-fns/admin-account/get.d.ts.map +1 -0
  244. package/dist/server-fns/admin-account/get.js +13 -0
  245. package/dist/server-fns/admin-account/index.d.ts +22 -0
  246. package/dist/server-fns/admin-account/index.d.ts.map +1 -0
  247. package/dist/server-fns/admin-account/index.js +3 -0
  248. package/dist/server-fns/admin-account/update.d.ts +34 -0
  249. package/dist/server-fns/admin-account/update.d.ts.map +1 -0
  250. package/dist/server-fns/admin-account/update.js +13 -0
  251. package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +16 -0
  252. package/dist/server-fns/admin-permissions/get-role-abilities.d.ts.map +1 -0
  253. package/dist/server-fns/admin-permissions/get-role-abilities.js +14 -0
  254. package/dist/server-fns/admin-permissions/index.d.ts +25 -0
  255. package/dist/server-fns/admin-permissions/index.d.ts.map +1 -0
  256. package/dist/server-fns/admin-permissions/index.js +4 -0
  257. package/dist/server-fns/admin-permissions/list-registered.d.ts +33 -0
  258. package/dist/server-fns/admin-permissions/list-registered.d.ts.map +1 -0
  259. package/dist/server-fns/admin-permissions/list-registered.js +14 -0
  260. package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +16 -0
  261. package/dist/server-fns/admin-permissions/set-role-abilities.d.ts.map +1 -0
  262. package/dist/server-fns/admin-permissions/set-role-abilities.js +14 -0
  263. package/dist/server-fns/admin-permissions/who-has.d.ts +26 -0
  264. package/dist/server-fns/admin-permissions/who-has.d.ts.map +1 -0
  265. package/dist/server-fns/admin-permissions/who-has.js +14 -0
  266. package/dist/server-fns/admin-roles/create.d.ts +24 -0
  267. package/dist/server-fns/admin-roles/create.d.ts.map +1 -0
  268. package/dist/server-fns/admin-roles/create.js +13 -0
  269. package/dist/server-fns/admin-roles/delete.d.ts +17 -0
  270. package/dist/server-fns/admin-roles/delete.d.ts.map +1 -0
  271. package/dist/server-fns/admin-roles/delete.js +13 -0
  272. package/dist/server-fns/admin-roles/get.d.ts +22 -0
  273. package/dist/server-fns/admin-roles/get.d.ts.map +1 -0
  274. package/dist/server-fns/admin-roles/get.js +13 -0
  275. package/dist/server-fns/admin-roles/index.d.ts +23 -0
  276. package/dist/server-fns/admin-roles/index.d.ts.map +1 -0
  277. package/dist/server-fns/admin-roles/index.js +6 -0
  278. package/dist/server-fns/admin-roles/list.d.ts +26 -0
  279. package/dist/server-fns/admin-roles/list.d.ts.map +1 -0
  280. package/dist/server-fns/admin-roles/list.js +13 -0
  281. package/dist/server-fns/admin-roles/reorder.d.ts +15 -0
  282. package/dist/server-fns/admin-roles/reorder.d.ts.map +1 -0
  283. package/dist/server-fns/admin-roles/reorder.js +13 -0
  284. package/dist/server-fns/admin-roles/update.d.ts +27 -0
  285. package/dist/server-fns/admin-roles/update.d.ts.map +1 -0
  286. package/dist/server-fns/admin-roles/update.js +13 -0
  287. package/dist/server-fns/admin-users/create.d.ts +35 -0
  288. package/dist/server-fns/admin-users/create.d.ts.map +1 -0
  289. package/dist/server-fns/admin-users/create.js +13 -0
  290. package/dist/server-fns/admin-users/delete.d.ts +17 -0
  291. package/dist/server-fns/admin-users/delete.d.ts.map +1 -0
  292. package/dist/server-fns/admin-users/delete.js +13 -0
  293. package/dist/server-fns/admin-users/disable.d.ts +15 -0
  294. package/dist/server-fns/admin-users/disable.d.ts.map +1 -0
  295. package/dist/server-fns/admin-users/disable.js +13 -0
  296. package/dist/server-fns/admin-users/enable.d.ts +15 -0
  297. package/dist/server-fns/admin-users/enable.d.ts.map +1 -0
  298. package/dist/server-fns/admin-users/enable.js +13 -0
  299. package/dist/server-fns/admin-users/get-user-roles.d.ts +25 -0
  300. package/dist/server-fns/admin-users/get-user-roles.d.ts.map +1 -0
  301. package/dist/server-fns/admin-users/get-user-roles.js +13 -0
  302. package/dist/server-fns/admin-users/get.d.ts +29 -0
  303. package/dist/server-fns/admin-users/get.d.ts.map +1 -0
  304. package/dist/server-fns/admin-users/get.js +13 -0
  305. package/dist/server-fns/admin-users/index.d.ts +28 -0
  306. package/dist/server-fns/admin-users/index.d.ts.map +1 -0
  307. package/dist/server-fns/admin-users/index.js +10 -0
  308. package/dist/server-fns/admin-users/list.d.ts +51 -0
  309. package/dist/server-fns/admin-users/list.d.ts.map +1 -0
  310. package/dist/server-fns/admin-users/list.js +13 -0
  311. package/dist/server-fns/admin-users/set-password.d.ts +30 -0
  312. package/dist/server-fns/admin-users/set-password.d.ts.map +1 -0
  313. package/dist/server-fns/admin-users/set-password.js +13 -0
  314. package/dist/server-fns/admin-users/set-user-roles.d.ts +25 -0
  315. package/dist/server-fns/admin-users/set-user-roles.d.ts.map +1 -0
  316. package/dist/server-fns/admin-users/set-user-roles.js +13 -0
  317. package/dist/server-fns/admin-users/update.d.ts +37 -0
  318. package/dist/server-fns/admin-users/update.d.ts.map +1 -0
  319. package/dist/server-fns/admin-users/update.js +13 -0
  320. package/dist/server-fns/auth/current-user.d.ts +38 -0
  321. package/dist/server-fns/auth/current-user.d.ts.map +1 -0
  322. package/dist/server-fns/auth/current-user.js +52 -0
  323. package/dist/server-fns/auth/index.d.ts +11 -0
  324. package/dist/server-fns/auth/index.d.ts.map +1 -0
  325. package/dist/server-fns/auth/index.js +3 -0
  326. package/dist/server-fns/auth/sign-in.d.ts +19 -0
  327. package/dist/server-fns/auth/sign-in.d.ts.map +1 -0
  328. package/dist/server-fns/auth/sign-in.js +31 -0
  329. package/dist/server-fns/auth/sign-out.d.ts +11 -0
  330. package/dist/server-fns/auth/sign-out.d.ts.map +1 -0
  331. package/dist/server-fns/auth/sign-out.js +17 -0
  332. package/dist/server-fns/collections/create.d.ts +21 -0
  333. package/dist/server-fns/collections/create.d.ts.map +1 -0
  334. package/dist/server-fns/collections/create.js +40 -0
  335. package/dist/server-fns/collections/delete.d.ts +18 -0
  336. package/dist/server-fns/collections/delete.d.ts.map +1 -0
  337. package/dist/server-fns/collections/delete.js +44 -0
  338. package/dist/server-fns/collections/get.d.ts +26 -0
  339. package/dist/server-fns/collections/get.d.ts.map +1 -0
  340. package/dist/server-fns/collections/get.js +133 -0
  341. package/dist/server-fns/collections/history.d.ts +43 -0
  342. package/dist/server-fns/collections/history.d.ts.map +1 -0
  343. package/dist/server-fns/collections/history.js +29 -0
  344. package/dist/server-fns/collections/index.d.ts +16 -0
  345. package/dist/server-fns/collections/index.d.ts.map +1 -0
  346. package/dist/server-fns/collections/index.js +9 -0
  347. package/dist/server-fns/collections/list.d.ts +54 -0
  348. package/dist/server-fns/collections/list.d.ts.map +1 -0
  349. package/dist/server-fns/collections/list.js +65 -0
  350. package/dist/server-fns/collections/stats.d.ts +17 -0
  351. package/dist/server-fns/collections/stats.d.ts.map +1 -0
  352. package/dist/server-fns/collections/stats.js +28 -0
  353. package/dist/server-fns/collections/status.d.ts +31 -0
  354. package/dist/server-fns/collections/status.d.ts.map +1 -0
  355. package/dist/server-fns/collections/status.js +79 -0
  356. package/dist/server-fns/collections/update.d.ts +26 -0
  357. package/dist/server-fns/collections/update.d.ts.map +1 -0
  358. package/dist/server-fns/collections/update.js +41 -0
  359. package/dist/server-fns/collections/upload.d.ts +57 -0
  360. package/dist/server-fns/collections/upload.d.ts.map +1 -0
  361. package/dist/server-fns/collections/upload.js +132 -0
  362. package/dist/server-fns/collections/utils.d.ts +15 -0
  363. package/dist/server-fns/collections/utils.d.ts.map +1 -0
  364. package/dist/server-fns/collections/utils.js +4 -0
  365. package/dist/server-fns/preview/disable.d.ts +12 -0
  366. package/dist/server-fns/preview/disable.d.ts.map +1 -0
  367. package/dist/server-fns/preview/disable.js +12 -0
  368. package/dist/server-fns/preview/enable.d.ts +12 -0
  369. package/dist/server-fns/preview/enable.d.ts.map +1 -0
  370. package/dist/server-fns/preview/enable.js +14 -0
  371. package/dist/server-fns/preview/index.d.ts +11 -0
  372. package/dist/server-fns/preview/index.d.ts.map +1 -0
  373. package/dist/server-fns/preview/index.js +3 -0
  374. package/dist/server-fns/preview/state.d.ts +11 -0
  375. package/dist/server-fns/preview/state.d.ts.map +1 -0
  376. package/dist/server-fns/preview/state.js +8 -0
  377. package/package.json +164 -0
  378. package/src/admin-shell/admin-roles/container.module.css +132 -0
  379. package/src/admin-shell/admin-roles/container.tsx +209 -0
  380. package/src/admin-shell/admin-roles/delete.module.css +52 -0
  381. package/src/admin-shell/admin-roles/delete.tsx +117 -0
  382. package/src/admin-shell/admin-roles/list.module.css +158 -0
  383. package/src/admin-shell/admin-roles/list.tsx +308 -0
  384. package/src/admin-shell/admin-users/container.module.css +199 -0
  385. package/src/admin-shell/admin-users/container.tsx +344 -0
  386. package/src/admin-shell/admin-users/delete.module.css +52 -0
  387. package/src/admin-shell/admin-users/delete.tsx +129 -0
  388. package/src/admin-shell/admin-users/list.module.css +164 -0
  389. package/src/admin-shell/admin-users/list.tsx +314 -0
  390. package/src/admin-shell/chrome/admin-app-bar.module.css +72 -0
  391. package/src/admin-shell/chrome/admin-app-bar.tsx +74 -0
  392. package/src/admin-shell/chrome/admin-layout.module.css +16 -0
  393. package/src/admin-shell/chrome/branding.module.css +20 -0
  394. package/src/admin-shell/chrome/branding.tsx +23 -0
  395. package/src/admin-shell/chrome/breadcrumbs/@types.ts +5 -0
  396. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs-client.tsx +30 -0
  397. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.tsx +48 -0
  398. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs.module.css +93 -0
  399. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs.tsx +96 -0
  400. package/src/admin-shell/chrome/byline-logo.tsx +151 -0
  401. package/src/admin-shell/chrome/content.module.css +16 -0
  402. package/src/admin-shell/chrome/content.tsx +60 -0
  403. package/src/admin-shell/chrome/dashboard.module.css +245 -0
  404. package/src/admin-shell/chrome/dashboard.tsx +128 -0
  405. package/src/admin-shell/chrome/drawer-toggle.module.css +30 -0
  406. package/src/admin-shell/chrome/drawer-toggle.tsx +62 -0
  407. package/src/admin-shell/chrome/hamburger.module.css +16 -0
  408. package/src/admin-shell/chrome/hamburger.tsx +56 -0
  409. package/src/admin-shell/chrome/loose-router.ts +47 -0
  410. package/src/admin-shell/chrome/menu-drawer.module.css +196 -0
  411. package/src/admin-shell/chrome/menu-drawer.tsx +155 -0
  412. package/src/admin-shell/chrome/menu-provider.tsx +95 -0
  413. package/src/admin-shell/chrome/preview-toggle.tsx +107 -0
  414. package/src/admin-shell/chrome/route-error.module.css +114 -0
  415. package/src/admin-shell/chrome/route-error.tsx +125 -0
  416. package/src/admin-shell/chrome/router-pager.tsx +179 -0
  417. package/src/admin-shell/chrome/sign-in-page.module.css +32 -0
  418. package/src/admin-shell/chrome/sign-in-page.tsx +35 -0
  419. package/src/admin-shell/chrome/sort-icons.tsx +127 -0
  420. package/src/admin-shell/chrome/th-sortable.module.css +51 -0
  421. package/src/admin-shell/chrome/th-sortable.tsx +114 -0
  422. package/src/admin-shell/chrome/use-media-query.ts +28 -0
  423. package/src/admin-shell/chrome/utils.ts +20 -0
  424. package/src/admin-shell/collections/api.module.css +62 -0
  425. package/src/admin-shell/collections/api.tsx +70 -0
  426. package/src/admin-shell/collections/create.tsx +108 -0
  427. package/src/admin-shell/collections/edit.tsx +319 -0
  428. package/src/admin-shell/collections/history.module.css +156 -0
  429. package/src/admin-shell/collections/history.tsx +352 -0
  430. package/src/admin-shell/collections/list.module.css +124 -0
  431. package/src/admin-shell/collections/list.tsx +313 -0
  432. package/src/admin-shell/collections/preview-link.tsx +138 -0
  433. package/src/admin-shell/collections/tanstack-navigation-guard.ts +43 -0
  434. package/src/admin-shell/collections/view-menu.module.css +60 -0
  435. package/src/admin-shell/collections/view-menu.tsx +238 -0
  436. package/src/auth/auth-context.test.node.ts +200 -0
  437. package/src/auth/auth-context.ts +119 -0
  438. package/src/auth/auth-cookies.ts +113 -0
  439. package/src/auth/preview-cookies.ts +73 -0
  440. package/src/declarations.d.ts +4 -0
  441. package/src/index.ts +44 -0
  442. package/src/integrations/abilities.tsx +90 -0
  443. package/src/integrations/api-utils.ts +66 -0
  444. package/src/integrations/byline-admin-services.ts +86 -0
  445. package/src/integrations/byline-client.ts +40 -0
  446. package/src/integrations/byline-core.ts +32 -0
  447. package/src/integrations/byline-field-services.ts +35 -0
  448. package/src/integrations/byline-public-client.ts +53 -0
  449. package/src/integrations/byline-viewer-client.ts +99 -0
  450. package/src/integrations/start-errors.ts +86 -0
  451. package/src/routes/create-admin-account-route.tsx +65 -0
  452. package/src/routes/create-admin-dashboard-route.tsx +52 -0
  453. package/src/routes/create-admin-layout-route.tsx +89 -0
  454. package/src/routes/create-admin-permissions-route.tsx +43 -0
  455. package/src/routes/create-admin-role-edit-route.tsx +88 -0
  456. package/src/routes/create-admin-roles-list-route.tsx +39 -0
  457. package/src/routes/create-admin-user-edit-route.tsx +105 -0
  458. package/src/routes/create-admin-users-list-route.tsx +84 -0
  459. package/src/routes/create-collection-api-route.tsx +111 -0
  460. package/src/routes/create-collection-create-route.tsx +66 -0
  461. package/src/routes/create-collection-edit-route.tsx +102 -0
  462. package/src/routes/create-collection-history-route.tsx +130 -0
  463. package/src/routes/create-collection-list-route.tsx +175 -0
  464. package/src/routes/create-sign-in-route.tsx +39 -0
  465. package/src/routes/index.ts +36 -0
  466. package/src/server-fns/admin-account/change-password.ts +27 -0
  467. package/src/server-fns/admin-account/get.ts +27 -0
  468. package/src/server-fns/admin-account/index.ts +28 -0
  469. package/src/server-fns/admin-account/update.ts +31 -0
  470. package/src/server-fns/admin-permissions/get-role-abilities.ts +27 -0
  471. package/src/server-fns/admin-permissions/index.ts +36 -0
  472. package/src/server-fns/admin-permissions/list-registered.ts +36 -0
  473. package/src/server-fns/admin-permissions/set-role-abilities.ts +32 -0
  474. package/src/server-fns/admin-permissions/who-has.ts +24 -0
  475. package/src/server-fns/admin-roles/create.ts +28 -0
  476. package/src/server-fns/admin-roles/delete.ts +25 -0
  477. package/src/server-fns/admin-roles/get.ts +21 -0
  478. package/src/server-fns/admin-roles/index.ts +25 -0
  479. package/src/server-fns/admin-roles/list.ts +27 -0
  480. package/src/server-fns/admin-roles/reorder.ts +21 -0
  481. package/src/server-fns/admin-roles/update.ts +31 -0
  482. package/src/server-fns/admin-users/create.ts +32 -0
  483. package/src/server-fns/admin-users/delete.ts +21 -0
  484. package/src/server-fns/admin-users/disable.ts +24 -0
  485. package/src/server-fns/admin-users/enable.ts +24 -0
  486. package/src/server-fns/admin-users/get-user-roles.ts +21 -0
  487. package/src/server-fns/admin-users/get.ts +21 -0
  488. package/src/server-fns/admin-users/index.ts +35 -0
  489. package/src/server-fns/admin-users/list.ts +40 -0
  490. package/src/server-fns/admin-users/set-password.ts +27 -0
  491. package/src/server-fns/admin-users/set-user-roles.ts +26 -0
  492. package/src/server-fns/admin-users/update.ts +34 -0
  493. package/src/server-fns/auth/current-user.ts +117 -0
  494. package/src/server-fns/auth/index.ts +15 -0
  495. package/src/server-fns/auth/sign-in.ts +71 -0
  496. package/src/server-fns/auth/sign-out.ts +42 -0
  497. package/src/server-fns/collections/create.ts +58 -0
  498. package/src/server-fns/collections/delete.ts +62 -0
  499. package/src/server-fns/collections/get.ts +233 -0
  500. package/src/server-fns/collections/history.ts +73 -0
  501. package/src/server-fns/collections/index.ts +16 -0
  502. package/src/server-fns/collections/list.ts +121 -0
  503. package/src/server-fns/collections/stats.ts +52 -0
  504. package/src/server-fns/collections/status.ts +102 -0
  505. package/src/server-fns/collections/update.ts +67 -0
  506. package/src/server-fns/collections/upload.ts +274 -0
  507. package/src/server-fns/collections/utils.ts +17 -0
  508. package/src/server-fns/preview/disable.ts +24 -0
  509. package/src/server-fns/preview/enable.ts +27 -0
  510. package/src/server-fns/preview/index.ts +11 -0
  511. package/src/server-fns/preview/state.ts +30 -0
@@ -0,0 +1,73 @@
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
+
9
+ /**
10
+ * Cookie helpers for the front-end *preview mode* toggle.
11
+ *
12
+ * Preview mode lets a signed-in admin see draft (and other non-published)
13
+ * versions on the public host pages without changing any markup or route
14
+ * structure. The mechanic is intentionally narrow:
15
+ *
16
+ * - A single httpOnly cookie (`byline_preview=1`) carries the user's
17
+ * "show me drafts" intent across requests within the same browser
18
+ * session.
19
+ * - The cookie's mere *presence* is the signal — there is no payload to
20
+ * verify. The actual safety check is the admin session: when the
21
+ * viewer client (or a server fn) sees the cookie, it tries to resolve
22
+ * `getAdminRequestContext()` and only elevates the read mode when a
23
+ * valid admin session resolves. A stale preview cookie on an
24
+ * anonymous browser falls through to public/published reads silently.
25
+ *
26
+ * Cookie attributes:
27
+ * - `httpOnly: true` — inaccessible to JS; toggled only via server fns.
28
+ * - `sameSite: 'lax'` — sent on top-level navigations only.
29
+ * - `secure: true` in production — https-only.
30
+ * - `path: '/'` — visible to every public route.
31
+ * - `maxAge: 1 day` — preview is meant to be a short-lived editorial
32
+ * mode, not a permanent state. Admins can
33
+ * re-enable from the admin UI when needed.
34
+ */
35
+
36
+ import { getCookie, setCookie } from '@tanstack/react-start/server'
37
+
38
+ export const PREVIEW_COOKIE = 'byline_preview'
39
+ const PREVIEW_MAX_AGE_SECONDS = 60 * 60 * 24 // 1 day
40
+
41
+ const IS_PROD = process.env.NODE_ENV === 'production'
42
+
43
+ /** True iff the preview cookie is currently set on the request. */
44
+ export function readPreviewCookie(): boolean {
45
+ return getCookie(PREVIEW_COOKIE) === '1'
46
+ }
47
+
48
+ /**
49
+ * Write the preview cookie. Callers should ensure the request is from a
50
+ * valid admin session before invoking — the cookie itself is just a flag
51
+ * and carries no proof of authorisation. See `enablePreviewModeFn` for
52
+ * the canonical entry point.
53
+ */
54
+ export function setPreviewCookie(): void {
55
+ setCookie(PREVIEW_COOKIE, '1', {
56
+ httpOnly: true,
57
+ sameSite: 'lax',
58
+ secure: IS_PROD,
59
+ path: '/',
60
+ maxAge: PREVIEW_MAX_AGE_SECONDS,
61
+ })
62
+ }
63
+
64
+ /** Clear the preview cookie. Safe to call from any context. */
65
+ export function clearPreviewCookie(): void {
66
+ setCookie(PREVIEW_COOKIE, '', {
67
+ httpOnly: true,
68
+ sameSite: 'lax',
69
+ secure: IS_PROD,
70
+ path: '/',
71
+ maxAge: 0,
72
+ })
73
+ }
@@ -0,0 +1,4 @@
1
+ declare module '*.css' {
2
+ const classes: { [key: string]: string }
3
+ export default classes
4
+ }
package/src/index.ts ADDED
@@ -0,0 +1,44 @@
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
+
9
+ /**
10
+ * `@byline/host-tanstack-start` — TanStack Start host adapter for Byline.
11
+ *
12
+ * Houses everything that's framework-coupled to TanStack Start /
13
+ * Router so the framework-neutral packages (`@byline/core`, `@byline/admin`,
14
+ * `@byline/client`, `@byline/auth`, `@byline/ui`) stay framework-neutral.
15
+ *
16
+ * Surface is exposed via subpath exports rather than a single root barrel
17
+ * so hosts only pull in what they consume:
18
+ *
19
+ * - `@byline/host-tanstack-start/server-fns/<module>` — TanStack Start
20
+ * server functions for each admin module (admin-account, admin-roles,
21
+ * admin-users, admin-permissions, auth, collections).
22
+ * - `@byline/host-tanstack-start/auth/auth-context` — request-scoped
23
+ * `RequestContext` resolution that reads session cookies, refreshes
24
+ * transparently, and surfaces `ERR_UNAUTHENTICATED` to callers.
25
+ * - `@byline/host-tanstack-start/integrations/*` — host-side adapters
26
+ * binding TanStack Start primitives to the framework-neutral
27
+ * contracts in `@byline/ui` and `@byline/client`
28
+ * (`bylineFieldServices`, `bylineAdminServices`, the admin
29
+ * `BylineClient` singleton).
30
+ * - `@byline/host-tanstack-start/admin-shell/{chrome,collections,...}` —
31
+ * router-coupled admin UI: shared shell chrome (menu drawer, app bar,
32
+ * route-error, breadcrumbs, etc.) plus per-area page containers.
33
+ * - `@byline/host-tanstack-start/routes/*` — route factories. Each
34
+ * factory returns the result of `createFileRoute(path)({...})` ready
35
+ * for assignment to the host's `export const Route = ...`. The host
36
+ * supplies the filesystem-backed path string; the package owns the
37
+ * loader, `beforeLoad`, component, and error boundary.
38
+ *
39
+ * The root entry exports nothing intentionally — every consumption path
40
+ * is a subpath import. This keeps the public surface small and the
41
+ * boundaries explicit.
42
+ */
43
+
44
+ export {}
@@ -0,0 +1,90 @@
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
+
9
+ /**
10
+ * Client-side ability helpers for the admin shell.
11
+ *
12
+ * These hooks read the current admin user's ability set off the admin
13
+ * route's TanStack Router context — which `route.tsx` populates in
14
+ * `beforeLoad` via `getCurrentAdminUser()`. No separate React Context
15
+ * provider is required because the route context already plays that
16
+ * role.
17
+ *
18
+ * **Cosmetic UI only.** A hidden menu item, disabled button, or
19
+ * un-rendered children block is an affordance, never a security
20
+ * boundary. Every server-side path is independently gated by
21
+ * `assertActorCanPerform` (document collections) or `assertAdminActor`
22
+ * (admin user / role / permission management). Callers can construct
23
+ * the matching ability key by hand or — preferred — import the
24
+ * `ADMIN_*_ABILITIES` constants from the relevant
25
+ * `@byline/admin/admin-*` subpath so a rename surfaces as a type error
26
+ * rather than a silent miss.
27
+ *
28
+ * Super-admin bypass mirrors the server: every `useAbility` call
29
+ * returns `true` when `is_super_admin` is set.
30
+ *
31
+ * Snapshot semantics: the ability set is the snapshot from the last
32
+ * `beforeLoad` of the admin route, refreshed on navigation. A grant
33
+ * revoked mid-session won't disappear from the UI until the next
34
+ * navigation — fine for cosmetic cues since the server still rejects
35
+ * the underlying action.
36
+ */
37
+
38
+ import type React from 'react'
39
+ import { useRouteContext } from '@tanstack/react-router'
40
+
41
+ /** Route id of the admin shell — the layout route that owns `user` on context. */
42
+ const ADMIN_ROUTE_ID = '/(byline)/admin' as const
43
+
44
+ /**
45
+ * `true` when the current admin holds the given ability (or is a
46
+ * super-admin). Cosmetic — see file-level docstring.
47
+ */
48
+ export function useAbility(ability: string): boolean {
49
+ const { user } = useRouteContext({ from: ADMIN_ROUTE_ID })
50
+ if (user.is_super_admin) return true
51
+ return user.abilities.includes(ability)
52
+ }
53
+
54
+ /**
55
+ * Bundle of ability checks for situations where a component needs more
56
+ * than one verb (e.g. the menu drawer asks about three keys at once).
57
+ * Avoids calling `useAbility` repeatedly when a single context read is
58
+ * sufficient.
59
+ */
60
+ export function useAbilities(): {
61
+ has: (ability: string) => boolean
62
+ hasAny: (abilities: readonly string[]) => boolean
63
+ isSuperAdmin: boolean
64
+ } {
65
+ const { user } = useRouteContext({ from: ADMIN_ROUTE_ID })
66
+ const has = (ability: string): boolean => user.is_super_admin || user.abilities.includes(ability)
67
+ const hasAny = (abilities: readonly string[]): boolean =>
68
+ user.is_super_admin || abilities.some((key) => user.abilities.includes(key))
69
+ return { has, hasAny, isSuperAdmin: user.is_super_admin }
70
+ }
71
+
72
+ /**
73
+ * JSX wrapper. Renders `children` only when the current admin holds
74
+ * the given ability. Cosmetic — see file-level docstring.
75
+ *
76
+ * ```tsx
77
+ * <RequireAbility ability={ADMIN_USERS_ABILITIES.create}>
78
+ * <Button>New admin user</Button>
79
+ * </RequireAbility>
80
+ * ```
81
+ */
82
+ export function RequireAbility({
83
+ ability,
84
+ children,
85
+ }: {
86
+ ability: string
87
+ children: React.ReactNode
88
+ }): React.ReactNode {
89
+ return useAbility(ability) ? children : null
90
+ }
@@ -0,0 +1,66 @@
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
+
9
+ /**
10
+ * NOTE: Before you dunk on this, this is a prototype implementation
11
+ * of our API and used only for development.
12
+ * We'll extract a properly configured API server soon.
13
+ */
14
+
15
+ // NOTE: The host's server config (e.g. byline/server.config.ts) is loaded by
16
+ // src/server.ts (TanStack Start server entry point) before any
17
+ // requests are handled. No need to import it here.
18
+
19
+ import type { CollectionDefinition, CollectionRecord } from '@byline/core'
20
+ import { getCollectionDefinition } from '@byline/core'
21
+
22
+ import { bylineCore } from './byline-core.js'
23
+
24
+ export interface EnsuredCollection {
25
+ definition: CollectionDefinition
26
+ collection: {
27
+ id: string
28
+ path: string
29
+ version: number
30
+ schemaHash: string
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Resolve a collection for an admin API request.
36
+ *
37
+ * Collections are reconciled with the database once at startup by
38
+ * `initBylineCore()` (see `packages/core/src/services/collection-bootstrap.ts`).
39
+ * This helper is a per-request cache lookup against the resulting in-memory
40
+ * registry — no DB I/O, no hash work.
41
+ *
42
+ * Returns `null` when the path is not registered in the client/server config.
43
+ */
44
+ export async function ensureCollection(path: string): Promise<EnsuredCollection | null> {
45
+ const definition = getCollectionDefinition(path)
46
+ if (definition == null) {
47
+ return null
48
+ }
49
+
50
+ let record: CollectionRecord
51
+ try {
52
+ record = bylineCore().getCollectionRecord(path)
53
+ } catch {
54
+ return null
55
+ }
56
+
57
+ return {
58
+ definition,
59
+ collection: {
60
+ id: record.collectionId,
61
+ path,
62
+ version: record.version,
63
+ schemaHash: record.schemaHash,
64
+ },
65
+ }
66
+ }
@@ -0,0 +1,86 @@
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
+
9
+ /**
10
+ * Host-side adapter that binds the webapp's TanStack Start server functions
11
+ * to the framework-neutral `BylineAdminServices` contract consumed by
12
+ * `@byline/ui` admin components.
13
+ *
14
+ * Wired into the admin route once via `<BylineAdminServicesProvider>`. A
15
+ * future Next.js host would ship its own adapter file (server-actions in
16
+ * place of server fns) and Provider; the `@byline/ui` surface is unchanged.
17
+ *
18
+ * Contract scope: only the framework-neutral admin UI components consume
19
+ * this — sign-in, account self-service, admin-user/role write forms, the
20
+ * permissions inspector, role-permissions editor, and the diff modal.
21
+ * Page-container reads (list/edit) stay on direct server-fn imports
22
+ * inside the host's deferred router-coupled containers.
23
+ */
24
+
25
+ import type { BylineAdminServices } from '@byline/ui'
26
+
27
+ import { changeAccountPassword, updateAccount } from '../server-fns/admin-account/index.js'
28
+ import { setRoleAbilities, whoHasAbility } from '../server-fns/admin-permissions/index.js'
29
+ import { createAdminRole, updateAdminRole } from '../server-fns/admin-roles/index.js'
30
+ import {
31
+ createAdminUser,
32
+ setAdminUserPassword,
33
+ setUserRoles,
34
+ updateAdminUser,
35
+ } from '../server-fns/admin-users/index.js'
36
+ import { adminSignIn } from '../server-fns/auth/index.js'
37
+ import { getCollectionDocumentVersion as serverGetCollectionDocumentVersion } from '../server-fns/collections/get.js'
38
+
39
+ /**
40
+ * Diff helper adapter — the contract uses positional args; the underlying
41
+ * server-fn helper expects the same shape, so this is a one-line passthrough
42
+ * that maps `null` to a default-loader-friendly `Record<string, unknown>`
43
+ * fallback (the diff modal handles a `null` doc gracefully via its own
44
+ * loading/error states, but the contract types it as non-null because the
45
+ * happy-path always returns an object).
46
+ */
47
+ const getCollectionDocumentVersion: BylineAdminServices['getCollectionDocumentVersion'] = async (
48
+ collection,
49
+ documentId,
50
+ versionId,
51
+ locale
52
+ ) => {
53
+ const result = await serverGetCollectionDocumentVersion(collection, documentId, versionId, locale)
54
+ if (result == null) {
55
+ throw new Error(
56
+ `Document version not found: collection=${collection} document=${documentId} version=${versionId}`
57
+ )
58
+ }
59
+ return result as Record<string, unknown>
60
+ }
61
+
62
+ export const bylineAdminServices: BylineAdminServices = {
63
+ // Auth
64
+ adminSignIn,
65
+
66
+ // Account self-service
67
+ updateAccount,
68
+ changeAccountPassword,
69
+
70
+ // Admin user writes
71
+ createAdminUser,
72
+ updateAdminUser,
73
+ setAdminUserPassword,
74
+ setUserRoles,
75
+
76
+ // Admin role writes
77
+ createAdminRole,
78
+ updateAdminRole,
79
+
80
+ // Permissions
81
+ setRoleAbilities,
82
+ whoHasAbility,
83
+
84
+ // Diff helper
85
+ getCollectionDocumentVersion,
86
+ }
@@ -0,0 +1,40 @@
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
+
9
+ /**
10
+ * The admin webapp's `BylineClient` singleton.
11
+ *
12
+ * Configured with a `requestContext` factory that resolves the
13
+ * authenticated admin actor per call via `getAdminRequestContext`. Every
14
+ * admin server fn that reads documents goes through this client, so the
15
+ * full read pipeline (`beforeRead` → `findDocuments` → `populate` →
16
+ * `afterRead`) is uniform between admin and any future external
17
+ * client. The collection runtime, db adapter, and storage provider are
18
+ * sourced from the shared `getServerConfig()` so we don't duplicate
19
+ * adapter wiring.
20
+ */
21
+
22
+ import { type BylineClient, createBylineClient } from '@byline/client'
23
+ import { getServerConfig } from '@byline/core'
24
+
25
+ import { getAdminRequestContext } from '../auth/auth-context.js'
26
+
27
+ let cachedClient: BylineClient | undefined
28
+
29
+ export function getAdminBylineClient(): BylineClient {
30
+ if (cachedClient) return cachedClient
31
+ cachedClient = createBylineClient({
32
+ config: getServerConfig(),
33
+ // Resolved per-call so each server fn picks up the actor from the
34
+ // current request's session cookies. `getAdminRequestContext` runs the
35
+ // refresh dance on its own and throws `ERR_UNAUTHENTICATED` when no
36
+ // session is present — the client surfaces the throw verbatim.
37
+ requestContext: getAdminRequestContext,
38
+ })
39
+ return cachedClient
40
+ }
@@ -0,0 +1,32 @@
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
+
9
+ /**
10
+ * Typed accessor for the composed `BylineCore` post-init.
11
+ *
12
+ * Wraps `@byline/core`'s framework-neutral `getBylineCore<TAdminStore>()`
13
+ * and pre-binds `TAdminStore` to `AdminStore` from `@byline/admin`. This
14
+ * package is the admin host adapter — every server fn here ultimately
15
+ * delegates to an `@byline/admin` command that wants the typed store, so
16
+ * baking the generic in once removes the need for each call site to
17
+ * repeat `getBylineCore<AdminStore>()` and to import `AdminStore`
18
+ * separately.
19
+ *
20
+ * Hosts that wire a different admin-store flavour through
21
+ * `initBylineCore<TOtherStore>()` should NOT use this helper — they
22
+ * import `getBylineCore<TOtherStore>()` from `@byline/core` directly.
23
+ * That escape hatch keeps the framework-neutral package agnostic to
24
+ * which admin store is configured.
25
+ */
26
+
27
+ import type { AdminStore } from '@byline/admin'
28
+ import { type BylineCore, getBylineCore } from '@byline/core'
29
+
30
+ export function bylineCore(): BylineCore<AdminStore> {
31
+ return getBylineCore<AdminStore>()
32
+ }
@@ -0,0 +1,35 @@
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
+
9
+ /**
10
+ * Host-side adapters that bind the webapp's TanStack Start server functions
11
+ * to the framework-neutral `BylineFieldServices` contract consumed by
12
+ * `@byline/ui` field/form components.
13
+ *
14
+ * Wired into the admin route once via `<BylineFieldServicesProvider>`. A
15
+ * future Next.js host would ship its own adapter file and Provider; the
16
+ * @byline/ui surface is unchanged.
17
+ */
18
+
19
+ import type { BylineFieldServices, GetCollectionDocumentsFn, UploadFieldFn } from '@byline/ui'
20
+
21
+ import { getCollectionDocuments as serverGetCollectionDocuments } from '../server-fns/collections/list.js'
22
+ import { uploadField as serverUploadField } from '../server-fns/collections/upload.js'
23
+
24
+ const getCollectionDocuments: GetCollectionDocumentsFn = ({ collection, params }) =>
25
+ serverGetCollectionDocuments({
26
+ data: { collection, params },
27
+ }) as ReturnType<GetCollectionDocumentsFn>
28
+
29
+ const uploadField: UploadFieldFn = (collection, formData, createDocument) =>
30
+ serverUploadField(collection, formData, createDocument)
31
+
32
+ export const bylineFieldServices: BylineFieldServices = {
33
+ getCollectionDocuments,
34
+ uploadField,
35
+ }
@@ -0,0 +1,53 @@
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
+
9
+ /**
10
+ * The host's *public-read* `BylineClient` singleton — the strict
11
+ * "preview-can-never-apply" sibling of `getViewerBylineClient`.
12
+ *
13
+ * Configured with `actor: null` and `readMode: 'published'`, full stop.
14
+ * The `requestContext` factory does not consult the `byline_preview`
15
+ * cookie or attempt any admin-session resolution, so an admin browsing
16
+ * with preview mode on cannot accidentally elevate a read that flows
17
+ * through this client. `assertActorCanPerform` permits the null actor
18
+ * exactly on `read` with `readMode === 'published'`, which is what the
19
+ * factory always returns.
20
+ *
21
+ * **Use this client for:**
22
+ * - RSS feeds, Atom feeds, sitemaps
23
+ * - JSON or other endpoints exposed to third-party consumers
24
+ * - any response that an upstream CDN / cache might serve to multiple
25
+ * visitors without keying off the `byline_preview` cookie
26
+ *
27
+ * **Use `getViewerBylineClient` instead for:**
28
+ * - user-facing public pages where an admin's preview-mode session
29
+ * should be honoured
30
+ *
31
+ * Both clients share the same module-scoped singleton pattern so the
32
+ * SDK's per-instance `collectionRecordCache` is amortised across the
33
+ * process lifetime.
34
+ *
35
+ * Companion: `getAdminBylineClient` in `./byline-client.ts` for the
36
+ * admin webapp's authenticated reads (resolves a fresh `RequestContext`
37
+ * from session cookies on every call).
38
+ */
39
+
40
+ import { createRequestContext } from '@byline/auth'
41
+ import { type BylineClient, createBylineClient } from '@byline/client'
42
+ import { getServerConfig } from '@byline/core'
43
+
44
+ let cachedClient: BylineClient | undefined
45
+
46
+ export function getPublicBylineClient(): BylineClient {
47
+ if (cachedClient) return cachedClient
48
+ cachedClient = createBylineClient({
49
+ config: getServerConfig(),
50
+ requestContext: () => createRequestContext({ readMode: 'published' }),
51
+ })
52
+ return cachedClient
53
+ }
@@ -0,0 +1,99 @@
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
+
9
+ /**
10
+ * The host's *viewer* `BylineClient` singleton — the preview-aware
11
+ * sibling of `getPublicBylineClient` (`./byline-public-client.ts`).
12
+ * Behaves identically to the public client until both the
13
+ * `byline_preview` cookie is set **and** a valid admin session resolves;
14
+ * at that point the per-call `requestContext` factory returns the
15
+ * authenticated `AdminAuth` instead of the anonymous null actor.
16
+ *
17
+ * Why this matters: `assertActorCanPerform` (packages/core/src/auth) only
18
+ * permits anonymous reads when `readMode === 'published'`. So if a server
19
+ * fn passes `status: 'any'` to surface drafts, an anonymous request
20
+ * trips the gate and throws — but a preview-mode admin sails through. The
21
+ * source-view selection itself remains a per-call decision: the SDK's
22
+ * `resolveReadMode` defaults to `'published'` regardless of context, so
23
+ * every server fn still has to opt in by passing `status: 'any'`.
24
+ *
25
+ * The contract for callers:
26
+ *
27
+ * 1. Use `getViewerBylineClient()` on any user-facing public read
28
+ * where an admin's preview-mode session should be honoured. Use
29
+ * `getPublicBylineClient()` instead for endpoints where preview
30
+ * should never apply (RSS feeds, sitemaps, third-party endpoints,
31
+ * anything an upstream cache might serve without keying off the
32
+ * preview cookie).
33
+ * 2. Call `isPreviewActive()` once per server fn to decide whether to
34
+ * pass `status: 'any'` on the read.
35
+ *
36
+ * Stale cookies fail closed: if the preview cookie is present but no
37
+ * valid admin session resolves, the factory returns the same anonymous
38
+ * + `'published'` context the public client would have used, so the
39
+ * worst case is "preview cookie does nothing".
40
+ *
41
+ * The collection-record cache is per-instance, so a singleton here keeps
42
+ * the same amortisation benefit `getPublicBylineClient` has — the two
43
+ * helpers are parallel singletons (one cached `BylineClient` each).
44
+ */
45
+
46
+ import { createRequestContext } from '@byline/auth'
47
+ import { type BylineClient, createBylineClient } from '@byline/client'
48
+ import { getServerConfig } from '@byline/core'
49
+
50
+ import { getAdminRequestContext } from '../auth/auth-context.js'
51
+ import { readPreviewCookie } from '../auth/preview-cookies.js'
52
+
53
+ let cachedClient: BylineClient | undefined
54
+
55
+ export function getViewerBylineClient(): BylineClient {
56
+ if (cachedClient) return cachedClient
57
+ cachedClient = createBylineClient({
58
+ config: getServerConfig(),
59
+ requestContext: async () => {
60
+ // No preview cookie → behave exactly like the public client.
61
+ // Cheap path; no JWT verification, no DB lookup.
62
+ if (!readPreviewCookie()) {
63
+ return createRequestContext({ readMode: 'published' })
64
+ }
65
+
66
+ // Preview cookie present → try the admin context. A failure means
67
+ // the cookie is stale (admin signed out, session expired, refresh
68
+ // rejected). We swallow the error and fall back to the public
69
+ // context so the page renders instead of erroring.
70
+ try {
71
+ const ctx = await getAdminRequestContext()
72
+ return { ...ctx, readMode: 'any' }
73
+ } catch {
74
+ return createRequestContext({ readMode: 'published' })
75
+ }
76
+ },
77
+ })
78
+ return cachedClient
79
+ }
80
+
81
+ /**
82
+ * Resolve whether the current request should surface non-published
83
+ * versions. True iff the preview cookie is set **and** a valid admin
84
+ * session resolves. Server fns call this once and pass the result to
85
+ * `status: preview ? 'any' : 'published'` on the SDK read.
86
+ *
87
+ * Defensive by design: the cookie alone is not enough. A signed-out
88
+ * browser carrying an old preview cookie still gets `false` here, which
89
+ * keeps stray query strings or shared links from leaking drafts.
90
+ */
91
+ export async function isPreviewActive(): Promise<boolean> {
92
+ if (!readPreviewCookie()) return false
93
+ try {
94
+ await getAdminRequestContext()
95
+ return true
96
+ } catch {
97
+ return false
98
+ }
99
+ }