@byline/host-tanstack-start 5.0.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 (252) 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/integrations/byline-admin-services.js +7 -1
  9. package/dist/integrations/client-ip.d.ts +19 -0
  10. package/dist/integrations/client-ip.js +34 -0
  11. package/dist/integrations/session-coordination.d.ts +24 -0
  12. package/dist/integrations/session-coordination.js +85 -0
  13. package/dist/integrations/session-middleware.d.ts +11 -0
  14. package/dist/integrations/session-middleware.js +94 -0
  15. package/dist/integrations/session-request-kind.d.ts +9 -0
  16. package/dist/integrations/session-request-kind.js +10 -0
  17. package/dist/integrations/session-request-middleware.d.ts +9 -0
  18. package/dist/integrations/session-request-middleware.js +7 -0
  19. package/dist/integrations/sign-in-body.d.ts +12 -0
  20. package/dist/integrations/sign-in-body.js +52 -0
  21. package/dist/integrations/sign-in-middleware.d.ts +9 -0
  22. package/dist/integrations/sign-in-middleware.js +10 -0
  23. package/dist/routes/create-admin-layout-route.js +46 -31
  24. package/dist/routes/create-sign-in-route.js +4 -2
  25. package/dist/server-fns/admin-account/change-password.d.ts +3 -1
  26. package/dist/server-fns/admin-account/change-password.js +9 -3
  27. package/dist/server-fns/admin-account/get.d.ts +3 -1
  28. package/dist/server-fns/admin-account/get.js +4 -1
  29. package/dist/server-fns/admin-account/index.d.ts +5 -5
  30. package/dist/server-fns/admin-account/update.d.ts +3 -1
  31. package/dist/server-fns/admin-account/update.js +4 -1
  32. package/dist/server-fns/admin-activity/get.d.ts +3 -1
  33. package/dist/server-fns/admin-activity/get.js +4 -1
  34. package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +3 -1
  35. package/dist/server-fns/admin-permissions/get-role-abilities.js +4 -1
  36. package/dist/server-fns/admin-permissions/index.d.ts +4 -4
  37. package/dist/server-fns/admin-permissions/list-registered.d.ts +3 -1
  38. package/dist/server-fns/admin-permissions/list-registered.js +4 -1
  39. package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +3 -1
  40. package/dist/server-fns/admin-permissions/set-role-abilities.js +4 -1
  41. package/dist/server-fns/admin-permissions/who-has.d.ts +3 -1
  42. package/dist/server-fns/admin-permissions/who-has.js +4 -1
  43. package/dist/server-fns/admin-roles/create.d.ts +3 -1
  44. package/dist/server-fns/admin-roles/create.js +4 -1
  45. package/dist/server-fns/admin-roles/delete.d.ts +3 -1
  46. package/dist/server-fns/admin-roles/delete.js +4 -1
  47. package/dist/server-fns/admin-roles/get.d.ts +3 -1
  48. package/dist/server-fns/admin-roles/get.js +4 -1
  49. package/dist/server-fns/admin-roles/index.d.ts +6 -6
  50. package/dist/server-fns/admin-roles/list.d.ts +3 -1
  51. package/dist/server-fns/admin-roles/list.js +4 -1
  52. package/dist/server-fns/admin-roles/reorder.d.ts +3 -1
  53. package/dist/server-fns/admin-roles/reorder.js +4 -1
  54. package/dist/server-fns/admin-roles/update.d.ts +3 -1
  55. package/dist/server-fns/admin-roles/update.js +4 -1
  56. package/dist/server-fns/admin-users/create.d.ts +3 -1
  57. package/dist/server-fns/admin-users/create.js +4 -1
  58. package/dist/server-fns/admin-users/delete.d.ts +3 -1
  59. package/dist/server-fns/admin-users/delete.js +4 -1
  60. package/dist/server-fns/admin-users/disable.d.ts +3 -1
  61. package/dist/server-fns/admin-users/disable.js +4 -1
  62. package/dist/server-fns/admin-users/enable.d.ts +3 -1
  63. package/dist/server-fns/admin-users/enable.js +4 -1
  64. package/dist/server-fns/admin-users/get-user-roles.d.ts +3 -1
  65. package/dist/server-fns/admin-users/get-user-roles.js +4 -1
  66. package/dist/server-fns/admin-users/get.d.ts +3 -1
  67. package/dist/server-fns/admin-users/get.js +4 -1
  68. package/dist/server-fns/admin-users/index.d.ts +10 -10
  69. package/dist/server-fns/admin-users/list.d.ts +3 -1
  70. package/dist/server-fns/admin-users/list.js +4 -1
  71. package/dist/server-fns/admin-users/set-password.d.ts +3 -1
  72. package/dist/server-fns/admin-users/set-password.js +4 -1
  73. package/dist/server-fns/admin-users/set-user-roles.d.ts +3 -1
  74. package/dist/server-fns/admin-users/set-user-roles.js +4 -1
  75. package/dist/server-fns/admin-users/update.d.ts +3 -1
  76. package/dist/server-fns/admin-users/update.js +4 -1
  77. package/dist/server-fns/ai/execute.d.ts +3 -1
  78. package/dist/server-fns/ai/execute.js +4 -1
  79. package/dist/server-fns/ai/index.d.ts +1 -1
  80. package/dist/server-fns/analytics/maintenance.d.ts +6 -2
  81. package/dist/server-fns/analytics/maintenance.js +7 -2
  82. package/dist/server-fns/analytics/queries.d.ts +18 -6
  83. package/dist/server-fns/analytics/queries.js +19 -6
  84. package/dist/server-fns/auth/current-user.d.ts +1 -0
  85. package/dist/server-fns/auth/current-user.js +5 -2
  86. package/dist/server-fns/auth/renew.d.ts +13 -0
  87. package/dist/server-fns/auth/renew.js +45 -0
  88. package/dist/server-fns/auth/sign-in.d.ts +2 -1
  89. package/dist/server-fns/auth/sign-in.js +88 -17
  90. package/dist/server-fns/auth/sign-out.d.ts +3 -1
  91. package/dist/server-fns/auth/sign-out.js +38 -6
  92. package/dist/server-fns/collections/audit.d.ts +3 -1
  93. package/dist/server-fns/collections/audit.js +4 -1
  94. package/dist/server-fns/collections/copy-to-locale.d.ts +10 -1
  95. package/dist/server-fns/collections/copy-to-locale.js +5 -2
  96. package/dist/server-fns/collections/create.d.ts +10 -1
  97. package/dist/server-fns/collections/create.js +5 -2
  98. package/dist/server-fns/collections/delete-locale.d.ts +10 -1
  99. package/dist/server-fns/collections/delete-locale.js +5 -2
  100. package/dist/server-fns/collections/delete.d.ts +10 -1
  101. package/dist/server-fns/collections/delete.js +5 -2
  102. package/dist/server-fns/collections/duplicate.d.ts +10 -1
  103. package/dist/server-fns/collections/duplicate.js +5 -2
  104. package/dist/server-fns/collections/get.d.ts +7 -0
  105. package/dist/server-fns/collections/get.js +8 -3
  106. package/dist/server-fns/collections/history.d.ts +3 -1
  107. package/dist/server-fns/collections/history.js +4 -1
  108. package/dist/server-fns/collections/index.d.ts +21 -21
  109. package/dist/server-fns/collections/list.d.ts +10 -1
  110. package/dist/server-fns/collections/list.js +5 -2
  111. package/dist/server-fns/collections/reindex.d.ts +3 -1
  112. package/dist/server-fns/collections/reindex.js +4 -1
  113. package/dist/server-fns/collections/reorder.d.ts +10 -1
  114. package/dist/server-fns/collections/reorder.js +5 -2
  115. package/dist/server-fns/collections/restore-version.d.ts +10 -1
  116. package/dist/server-fns/collections/restore-version.js +5 -2
  117. package/dist/server-fns/collections/scheduled-publication.d.ts +22 -5
  118. package/dist/server-fns/collections/scheduled-publication.js +17 -6
  119. package/dist/server-fns/collections/set-list-view-preference.d.ts +3 -1
  120. package/dist/server-fns/collections/set-list-view-preference.js +4 -1
  121. package/dist/server-fns/collections/stats.js +4 -1
  122. package/dist/server-fns/collections/status.d.ts +13 -2
  123. package/dist/server-fns/collections/status.js +8 -3
  124. package/dist/server-fns/collections/tree.d.ts +22 -5
  125. package/dist/server-fns/collections/tree.js +17 -6
  126. package/dist/server-fns/collections/update.d.ts +13 -2
  127. package/dist/server-fns/collections/update.js +8 -3
  128. package/dist/server-fns/collections/upload.d.ts +10 -1
  129. package/dist/server-fns/collections/upload.js +4 -1
  130. package/dist/server-fns/i18n/set-locale.d.ts +3 -1
  131. package/dist/server-fns/i18n/set-locale.js +18 -3
  132. package/dist/server-fns/preview/disable.d.ts +3 -1
  133. package/dist/server-fns/preview/disable.js +4 -1
  134. package/dist/server-fns/preview/enable.d.ts +3 -1
  135. package/dist/server-fns/preview/enable.js +4 -1
  136. package/dist/server-fns/singletons/cancel-scheduled-publish.d.ts +10 -1
  137. package/dist/server-fns/singletons/cancel-scheduled-publish.js +5 -2
  138. package/dist/server-fns/singletons/change-status.d.ts +10 -1
  139. package/dist/server-fns/singletons/change-status.js +5 -2
  140. package/dist/server-fns/singletons/confirm-scheduled-publish.d.ts +10 -1
  141. package/dist/server-fns/singletons/confirm-scheduled-publish.js +5 -2
  142. package/dist/server-fns/singletons/copy-to-locale.d.ts +10 -1
  143. package/dist/server-fns/singletons/copy-to-locale.js +5 -2
  144. package/dist/server-fns/singletons/find-by-version.d.ts +3 -1
  145. package/dist/server-fns/singletons/find-by-version.js +4 -1
  146. package/dist/server-fns/singletons/get-scheduled-publish.d.ts +3 -1
  147. package/dist/server-fns/singletons/get-scheduled-publish.js +4 -1
  148. package/dist/server-fns/singletons/get.d.ts +3 -1
  149. package/dist/server-fns/singletons/get.js +4 -1
  150. package/dist/server-fns/singletons/history.d.ts +3 -1
  151. package/dist/server-fns/singletons/history.js +4 -1
  152. package/dist/server-fns/singletons/restore-version.d.ts +10 -1
  153. package/dist/server-fns/singletons/restore-version.js +5 -2
  154. package/dist/server-fns/singletons/schedule-publish.d.ts +10 -1
  155. package/dist/server-fns/singletons/schedule-publish.js +5 -2
  156. package/dist/server-fns/singletons/unpublish.d.ts +10 -1
  157. package/dist/server-fns/singletons/unpublish.js +5 -2
  158. package/dist/server-fns/singletons/update.d.ts +10 -1
  159. package/dist/server-fns/singletons/update.js +5 -2
  160. package/package.json +19 -19
  161. package/src/admin-shell/chrome/admin-app-bar.tsx +11 -6
  162. package/src/admin-shell/chrome/session-change-boundary.test.tsx +78 -0
  163. package/src/admin-shell/chrome/session-change-boundary.tsx +94 -0
  164. package/src/admin-shell/chrome/sign-in-page.tsx +68 -3
  165. package/src/integrations/byline-admin-services.ts +7 -1
  166. package/src/integrations/client-ip.test.node.ts +45 -0
  167. package/src/integrations/client-ip.ts +54 -0
  168. package/src/integrations/framework-fetch-shape.test.node.ts +56 -0
  169. package/src/integrations/session-client.test.node.ts +121 -0
  170. package/src/integrations/session-coordination.test.node.ts +77 -0
  171. package/src/integrations/session-coordination.ts +96 -0
  172. package/src/integrations/session-middleware.test.node.ts +87 -0
  173. package/src/integrations/session-middleware.ts +107 -0
  174. package/src/integrations/session-request-kind.ts +18 -0
  175. package/src/integrations/session-request-middleware.ts +17 -0
  176. package/src/integrations/sign-in-body.test.node.ts +59 -0
  177. package/src/integrations/sign-in-body.ts +50 -0
  178. package/src/integrations/sign-in-middleware.ts +24 -0
  179. package/src/routes/create-admin-layout-route.tsx +48 -30
  180. package/src/routes/create-sign-in-route.tsx +10 -2
  181. package/src/server-fns/admin-account/change-password.test.node.ts +69 -0
  182. package/src/server-fns/admin-account/change-password.ts +13 -2
  183. package/src/server-fns/admin-account/get.ts +2 -0
  184. package/src/server-fns/admin-account/update.ts +2 -0
  185. package/src/server-fns/admin-activity/get.ts +2 -0
  186. package/src/server-fns/admin-permissions/get-role-abilities.ts +2 -0
  187. package/src/server-fns/admin-permissions/list-registered.ts +5 -4
  188. package/src/server-fns/admin-permissions/set-role-abilities.ts +2 -0
  189. package/src/server-fns/admin-permissions/who-has.ts +2 -0
  190. package/src/server-fns/admin-roles/create.ts +2 -0
  191. package/src/server-fns/admin-roles/delete.ts +2 -0
  192. package/src/server-fns/admin-roles/get.ts +2 -0
  193. package/src/server-fns/admin-roles/list.ts +5 -4
  194. package/src/server-fns/admin-roles/reorder.ts +2 -0
  195. package/src/server-fns/admin-roles/update.ts +2 -0
  196. package/src/server-fns/admin-users/create.ts +2 -0
  197. package/src/server-fns/admin-users/delete.ts +2 -0
  198. package/src/server-fns/admin-users/disable.ts +2 -0
  199. package/src/server-fns/admin-users/enable.ts +2 -0
  200. package/src/server-fns/admin-users/get-user-roles.ts +2 -0
  201. package/src/server-fns/admin-users/get.ts +2 -0
  202. package/src/server-fns/admin-users/list.ts +2 -0
  203. package/src/server-fns/admin-users/set-password.ts +2 -0
  204. package/src/server-fns/admin-users/set-user-roles.ts +2 -0
  205. package/src/server-fns/admin-users/update.ts +2 -0
  206. package/src/server-fns/ai/execute.ts +3 -0
  207. package/src/server-fns/analytics/maintenance.ts +4 -0
  208. package/src/server-fns/analytics/queries.ts +14 -8
  209. package/src/server-fns/auth/current-user.ts +7 -3
  210. package/src/server-fns/auth/renew.test.node.ts +85 -0
  211. package/src/server-fns/auth/renew.ts +54 -0
  212. package/src/server-fns/auth/sign-in.test.node.ts +114 -0
  213. package/src/server-fns/auth/sign-in.ts +80 -27
  214. package/src/server-fns/auth/sign-out.test.node.ts +85 -0
  215. package/src/server-fns/auth/sign-out.ts +44 -19
  216. package/src/server-fns/collections/audit.ts +2 -0
  217. package/src/server-fns/collections/copy-to-locale.ts +3 -1
  218. package/src/server-fns/collections/create.ts +3 -1
  219. package/src/server-fns/collections/delete-locale.ts +3 -1
  220. package/src/server-fns/collections/delete.ts +3 -1
  221. package/src/server-fns/collections/duplicate.ts +3 -1
  222. package/src/server-fns/collections/get.ts +4 -1
  223. package/src/server-fns/collections/history.ts +2 -0
  224. package/src/server-fns/collections/list.ts +3 -1
  225. package/src/server-fns/collections/reindex.ts +2 -0
  226. package/src/server-fns/collections/reorder.ts +3 -1
  227. package/src/server-fns/collections/restore-version.ts +3 -1
  228. package/src/server-fns/collections/revision-input.test.node.ts +14 -0
  229. package/src/server-fns/collections/scheduled-publication.ts +14 -7
  230. package/src/server-fns/collections/set-list-view-preference.ts +2 -0
  231. package/src/server-fns/collections/stats.ts +2 -0
  232. package/src/server-fns/collections/status.ts +4 -1
  233. package/src/server-fns/collections/tree.ts +7 -1
  234. package/src/server-fns/collections/update.ts +4 -1
  235. package/src/server-fns/collections/upload-singleton.test.node.ts +8 -1
  236. package/src/server-fns/collections/upload.ts +10 -0
  237. package/src/server-fns/i18n/set-locale.ts +19 -3
  238. package/src/server-fns/preview/disable.ts +8 -4
  239. package/src/server-fns/preview/enable.ts +9 -5
  240. package/src/server-fns/singletons/cancel-scheduled-publish.ts +3 -1
  241. package/src/server-fns/singletons/change-status.ts +3 -1
  242. package/src/server-fns/singletons/confirm-scheduled-publish.ts +3 -1
  243. package/src/server-fns/singletons/copy-to-locale.ts +3 -1
  244. package/src/server-fns/singletons/find-by-version.ts +2 -0
  245. package/src/server-fns/singletons/get-scheduled-publish.ts +2 -0
  246. package/src/server-fns/singletons/get.ts +2 -0
  247. package/src/server-fns/singletons/history.ts +2 -0
  248. package/src/server-fns/singletons/restore-version.ts +3 -1
  249. package/src/server-fns/singletons/schedule-publish.ts +3 -1
  250. package/src/server-fns/singletons/singletons.test.node.ts +6 -0
  251. package/src/server-fns/singletons/unpublish.ts +3 -1
  252. package/src/server-fns/singletons/update.ts +3 -1
@@ -1,11 +1,14 @@
1
- import { withDocumentMutationErrors } from "../document-mutation-errors.js";
2
1
  import { createServerFn } from "@tanstack/react-start";
3
2
  import { getAdminRequestContext } from "@byline/client/server";
4
3
  import { ERR_NOT_FOUND, getLogger, getServerConfig, reorderDocument } from "@byline/core";
5
4
  import { ensureCollection } from "../../integrations/api-utils.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
6
+ import { withDocumentMutationErrors } from "../document-mutation-errors.js";
6
7
  const reorderCollectionDocument = createServerFn({
7
8
  method: 'POST'
8
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
9
+ }).middleware([
10
+ adminSessionMiddleware
11
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
9
12
  const { collection: path, documentId, beforeDocumentId, afterDocumentId } = input;
10
13
  const logger = getLogger();
11
14
  const config = await ensureCollection(path);
@@ -1,4 +1,13 @@
1
- export declare const restoreDocumentVersion: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
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
+ export declare const restoreDocumentVersion: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
2
11
  expectedRevision: number;
3
12
  collection: string;
4
13
  id: string;
@@ -1,13 +1,16 @@
1
- import { withDocumentMutationErrors } from "../document-mutation-errors.js";
2
1
  import { createServerFn } from "@tanstack/react-start";
3
2
  import { getAdminRequestContext } from "@byline/client/server";
4
3
  import { ERR_NOT_FOUND, getLogger, getServerConfig } from "@byline/core";
5
4
  import { restoreDocumentVersion } from "@byline/core/services";
6
5
  import { ensureCollection } from "../../integrations/api-utils.js";
6
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
7
+ import { withDocumentMutationErrors } from "../document-mutation-errors.js";
7
8
  import { toCommittedDocumentHookFailureResponse } from "./save-outcome.js";
8
9
  const restore_version_restoreDocumentVersion = createServerFn({
9
10
  method: 'POST'
10
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
11
+ }).middleware([
12
+ adminSessionMiddleware
13
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
11
14
  const { collection: path, id, versionId } = input;
12
15
  const logger = getLogger();
13
16
  const config = await ensureCollection(path);
@@ -1,3 +1,10 @@
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
+ */
1
8
  import type { DocumentPublishScheduleInfo } from '@byline/client';
2
9
  import { type DocumentPublishScheduleState, type RecurringTaskHealth } from '@byline/core';
3
10
  export interface ScheduledPublicationRuntime {
@@ -48,8 +55,12 @@ export interface ScheduledPublicationListResponse {
48
55
  runtime: ScheduledPublicationRuntime;
49
56
  }
50
57
  /** Authenticated feature discovery for the admin shell and health warning. */
51
- export declare const getScheduledPublicationRuntime: import("@tanstack/react-start").OptionalFetcher<undefined, undefined, Promise<ScheduledPublicationRuntime>>;
52
- export declare const scheduleCollectionDocumentPublish: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
58
+ export declare const getScheduledPublicationRuntime: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
59
+ bylineExpectedSessionId: string | null;
60
+ }, undefined, undefined>], undefined, Promise<ScheduledPublicationRuntime>>;
61
+ export declare const scheduleCollectionDocumentPublish: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
62
+ bylineExpectedSessionId: string | null;
63
+ }, undefined, undefined>], (input: {
53
64
  expectedRevision: number;
54
65
  collection: string;
55
66
  id: string;
@@ -81,7 +92,9 @@ export declare const scheduleCollectionDocumentPublish: import("@tanstack/react-
81
92
  nextAttemptAt: string;
82
93
  revision: number;
83
94
  }>>;
84
- export declare const confirmCollectionDocumentScheduledPublish: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
95
+ export declare const confirmCollectionDocumentScheduledPublish: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
96
+ bylineExpectedSessionId: string | null;
97
+ }, undefined, undefined>], (input: {
85
98
  expectedRevision: number;
86
99
  collection: string;
87
100
  id: string;
@@ -111,7 +124,9 @@ export declare const confirmCollectionDocumentScheduledPublish: import("@tanstac
111
124
  nextAttemptAt: string;
112
125
  revision: number;
113
126
  }>>;
114
- export declare const cancelCollectionDocumentScheduledPublish: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
127
+ export declare const cancelCollectionDocumentScheduledPublish: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
128
+ bylineExpectedSessionId: string | null;
129
+ }, undefined, undefined>], (input: {
115
130
  expectedRevision: number;
116
131
  collection: string;
117
132
  id: string;
@@ -128,7 +143,9 @@ export declare const cancelCollectionDocumentScheduledPublish: import("@tanstack
128
143
  schedule: SerializedDocumentPublishSchedule;
129
144
  revision: number;
130
145
  }>>;
131
- export declare const listScheduledPublications: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
146
+ export declare const listScheduledPublications: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
147
+ bylineExpectedSessionId: string | null;
148
+ }, undefined, undefined>], (input: {
132
149
  states?: readonly DocumentPublishScheduleState[];
133
150
  lastAuthorizedBy?: string;
134
151
  page?: number;
@@ -1,9 +1,10 @@
1
- import { withDocumentMutationErrors } from "../document-mutation-errors.js";
2
1
  import { createServerFn } from "@tanstack/react-start";
3
2
  import { getAdminBylineClient, getAdminRequestContext } from "@byline/client/server";
4
3
  import { ERR_NOT_FOUND, ERR_VALIDATION, isSingleton } from "@byline/core";
5
4
  import { listDocumentPublishSchedules } from "@byline/core/services";
6
5
  import { bylineCore } from "../../integrations/byline-core.js";
6
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
7
+ import { withDocumentMutationErrors } from "../document-mutation-errors.js";
7
8
  import { omitScheduleExecutionState } from "./scheduled-publication-response.js";
8
9
  import { serialise } from "./utils.js";
9
10
  const TASK_NAME = 'documents.publish-scheduled';
@@ -53,13 +54,17 @@ async function scheduledPublicationRuntime() {
53
54
  }
54
55
  const getScheduledPublicationRuntime = createServerFn({
55
56
  method: 'GET'
56
- }).handler(withDocumentMutationErrors(async ()=>{
57
+ }).middleware([
58
+ adminSessionMiddleware
59
+ ]).handler(withDocumentMutationErrors(async ()=>{
57
60
  await getAdminRequestContext();
58
61
  return scheduledPublicationRuntime();
59
62
  }));
60
63
  const scheduleCollectionDocumentPublish = createServerFn({
61
64
  method: 'POST'
62
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
65
+ }).middleware([
66
+ adminSessionMiddleware
67
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
63
68
  assertFeatureEnabled();
64
69
  const schedule = await getAdminBylineClient().collection(data.collection).schedulePublish(data.id, {
65
70
  publishAt: data.publishAt,
@@ -73,7 +78,9 @@ const scheduleCollectionDocumentPublish = createServerFn({
73
78
  }));
74
79
  const confirmCollectionDocumentScheduledPublish = createServerFn({
75
80
  method: 'POST'
76
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
81
+ }).middleware([
82
+ adminSessionMiddleware
83
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
77
84
  assertFeatureEnabled();
78
85
  const schedule = await getAdminBylineClient().collection(data.collection).confirmScheduledPublish(data.id, {
79
86
  expectedRevision: data.expectedRevision,
@@ -86,7 +93,9 @@ const confirmCollectionDocumentScheduledPublish = createServerFn({
86
93
  }));
87
94
  const cancelCollectionDocumentScheduledPublish = createServerFn({
88
95
  method: 'POST'
89
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
96
+ }).middleware([
97
+ adminSessionMiddleware
98
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
90
99
  assertFeatureEnabled();
91
100
  const schedule = await getAdminBylineClient().collection(data.collection).cancelScheduledPublish(data.id, {
92
101
  expectedRevision: data.expectedRevision
@@ -102,7 +111,9 @@ const cancelCollectionDocumentScheduledPublish = createServerFn({
102
111
  }));
103
112
  const listScheduledPublications = createServerFn({
104
113
  method: 'GET'
105
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
114
+ }).middleware([
115
+ adminSessionMiddleware
116
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
106
117
  assertFeatureEnabled();
107
118
  if (data.states?.some((state)=>'armed' !== state && 'needs_reconfirm' !== state) === true) throw ERR_VALIDATION({
108
119
  message: 'state must be armed or needs_reconfirm'
@@ -13,6 +13,8 @@ export interface SetListViewPreferenceInput {
13
13
  desc?: boolean;
14
14
  };
15
15
  }
16
- export declare const setListViewPreference: import("@tanstack/react-start").RequiredFetcher<undefined, (input: SetListViewPreferenceInput) => SetListViewPreferenceInput, Promise<{
16
+ export declare const setListViewPreference: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
17
+ bylineExpectedSessionId: string | null;
18
+ }, undefined, undefined>], (input: SetListViewPreferenceInput) => SetListViewPreferenceInput, Promise<{
17
19
  ok: true;
18
20
  }>>;
@@ -4,9 +4,12 @@ import { getAdminRequestContext } from "@byline/client/server";
4
4
  import { ERR_NOT_FOUND, getLogger } from "@byline/core";
5
5
  import { ensureCollection } from "../../integrations/api-utils.js";
6
6
  import { bylineCore } from "../../integrations/byline-core.js";
7
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
7
8
  const setListViewPreference = createServerFn({
8
9
  method: 'POST'
9
- }).validator((input)=>input).handler(async ({ data })=>{
10
+ }).middleware([
11
+ adminSessionMiddleware
12
+ ]).validator((input)=>input).handler(async ({ data })=>{
10
13
  const config = await ensureCollection(data.collection);
11
14
  if (!config) throw ERR_NOT_FOUND({
12
15
  message: 'Collection not found',
@@ -1,9 +1,12 @@
1
1
  import { createServerFn } from "@tanstack/react-start";
2
2
  import { getAdminBylineClient } from "@byline/client/server";
3
3
  import { ensureCollection } from "../../integrations/api-utils.js";
4
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
4
5
  const getCollectionStatsFn = createServerFn({
5
6
  method: 'GET'
6
- }).validator((input)=>input).handler(async ({ data })=>{
7
+ }).middleware([
8
+ adminSessionMiddleware
9
+ ]).validator((input)=>input).handler(async ({ data })=>{
7
10
  const config = await ensureCollection(data.collection);
8
11
  if (!config) return {
9
12
  stats: []
@@ -1,4 +1,13 @@
1
- export declare const updateDocumentStatus: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
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
+ export declare const updateDocumentStatus: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
2
11
  expectedRevision: number;
3
12
  collection: string;
4
13
  id: string;
@@ -15,7 +24,9 @@ export declare const updateDocumentStatus: import("@tanstack/react-start").Requi
15
24
  previousStatus: string;
16
25
  newStatus: string;
17
26
  }>>;
18
- export declare const unpublishDocument: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
27
+ export declare const unpublishDocument: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
28
+ bylineExpectedSessionId: string | null;
29
+ }, undefined, undefined>], (input: {
19
30
  expectedRevision: number;
20
31
  collection: string;
21
32
  id: string;
@@ -1,12 +1,15 @@
1
- import { withDocumentMutationErrors } from "../document-mutation-errors.js";
2
1
  import { createServerFn } from "@tanstack/react-start";
3
2
  import { getAdminRequestContext } from "@byline/client/server";
4
3
  import { ERR_NOT_FOUND, getLogger, getServerConfig } from "@byline/core";
5
4
  import { changeDocumentStatus, unpublishDocument } from "@byline/core/services";
6
5
  import { ensureCollection } from "../../integrations/api-utils.js";
6
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
7
+ import { withDocumentMutationErrors } from "../document-mutation-errors.js";
7
8
  const updateDocumentStatus = createServerFn({
8
9
  method: 'POST'
9
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
10
+ }).middleware([
11
+ adminSessionMiddleware
12
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
10
13
  const { collection: path, id, status: nextStatus } = input;
11
14
  const logger = getLogger();
12
15
  const config = await ensureCollection(path);
@@ -43,7 +46,9 @@ const updateDocumentStatus = createServerFn({
43
46
  }));
44
47
  const status_unpublishDocument = createServerFn({
45
48
  method: 'POST'
46
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
49
+ }).middleware([
50
+ adminSessionMiddleware
51
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
47
52
  const { collection: path, id } = input;
48
53
  const logger = getLogger();
49
54
  const config = await ensureCollection(path);
@@ -1,4 +1,13 @@
1
- export declare const placeTreeNode: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
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
+ export declare const placeTreeNode: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
2
11
  expectedRevision: number;
3
12
  collection: string;
4
13
  documentId: string;
@@ -22,7 +31,9 @@ export declare const placeTreeNode: import("@tanstack/react-start").RequiredFetc
22
31
  orderKey: string;
23
32
  status: 'ok';
24
33
  }>>;
25
- export declare const removeFromTree: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
34
+ export declare const removeFromTree: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
35
+ bylineExpectedSessionId: string | null;
36
+ }, undefined, undefined>], (input: {
26
37
  expectedRevision: number;
27
38
  collection: string;
28
39
  documentId: string;
@@ -39,7 +50,9 @@ export declare const removeFromTree: import("@tanstack/react-start").RequiredFet
39
50
  scheduledPublicationsNeedReconfirmation: boolean;
40
51
  status: 'ok';
41
52
  }>>;
42
- export declare const getTreeAncestors: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
53
+ export declare const getTreeAncestors: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
54
+ bylineExpectedSessionId: string | null;
55
+ }, undefined, undefined>], (input: {
43
56
  collection: string;
44
57
  documentId: string;
45
58
  }) => {
@@ -50,7 +63,9 @@ export declare const getTreeAncestors: import("@tanstack/react-start").RequiredF
50
63
  title: string;
51
64
  path: string;
52
65
  }[]>>;
53
- export declare const getTreeParent: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
66
+ export declare const getTreeParent: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
67
+ bylineExpectedSessionId: string | null;
68
+ }, undefined, undefined>], (input: {
54
69
  collection: string;
55
70
  documentId: string;
56
71
  }) => {
@@ -71,7 +86,9 @@ export interface CollectionTreeRow {
71
86
  updatedAt: Date;
72
87
  fields: Record<string, any>;
73
88
  }
74
- export declare const getCollectionTree: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
89
+ export declare const getCollectionTree: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
90
+ bylineExpectedSessionId: string | null;
91
+ }, undefined, undefined>], (input: {
75
92
  collection: string;
76
93
  locale?: string;
77
94
  }) => {
@@ -1,13 +1,16 @@
1
- import { withDocumentMutationErrors } from "../document-mutation-errors.js";
2
1
  import { createServerFn } from "@tanstack/react-start";
3
2
  import { getAdminBylineClient } from "@byline/client/server";
4
3
  import { ERR_NOT_FOUND, createReadContext, getLogger } from "@byline/core";
5
4
  import { ensureCollection } from "../../integrations/api-utils.js";
5
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
6
+ import { withDocumentMutationErrors } from "../document-mutation-errors.js";
6
7
  import { placeAdminTreeNode, removeAdminTreeNode } from "./tree-mutation.js";
7
8
  import { getAdminTreeParent } from "./tree-read.js";
8
9
  const placeTreeNode = createServerFn({
9
10
  method: 'POST'
10
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
11
+ }).middleware([
12
+ adminSessionMiddleware
13
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
11
14
  const { collection: path, documentId } = data;
12
15
  const config = await ensureCollection(path);
13
16
  if (!config) throw ERR_NOT_FOUND({
@@ -31,7 +34,9 @@ const placeTreeNode = createServerFn({
31
34
  }));
32
35
  const removeFromTree = createServerFn({
33
36
  method: 'POST'
34
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
37
+ }).middleware([
38
+ adminSessionMiddleware
39
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
35
40
  const { collection: path, documentId } = data;
36
41
  const config = await ensureCollection(path);
37
42
  if (!config) throw ERR_NOT_FOUND({
@@ -51,7 +56,9 @@ const removeFromTree = createServerFn({
51
56
  }));
52
57
  const getTreeAncestors = createServerFn({
53
58
  method: 'GET'
54
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
59
+ }).middleware([
60
+ adminSessionMiddleware
61
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
55
62
  const { collection: path, documentId } = data;
56
63
  const config = await ensureCollection(path);
57
64
  if (!config) throw ERR_NOT_FOUND({
@@ -76,7 +83,9 @@ const getTreeAncestors = createServerFn({
76
83
  }));
77
84
  const getTreeParent = createServerFn({
78
85
  method: 'GET'
79
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
86
+ }).middleware([
87
+ adminSessionMiddleware
88
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
80
89
  const { collection: path, documentId } = data;
81
90
  const config = await ensureCollection(path);
82
91
  if (!config) throw ERR_NOT_FOUND({
@@ -89,7 +98,9 @@ const getTreeParent = createServerFn({
89
98
  }));
90
99
  const getCollectionTree = createServerFn({
91
100
  method: 'GET'
92
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
101
+ }).middleware([
102
+ adminSessionMiddleware
103
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
93
104
  const { collection: path } = data;
94
105
  const config = await ensureCollection(path);
95
106
  if (!config) throw ERR_NOT_FOUND({
@@ -1,5 +1,14 @@
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
+ */
1
8
  import type { DocumentPatch } from '@byline/core/patches';
2
- export declare const updateCollectionDocumentWithPatches: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
9
+ export declare const updateCollectionDocumentWithPatches: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
10
+ bylineExpectedSessionId: string | null;
11
+ }, undefined, undefined>], (input: {
3
12
  collection: string;
4
13
  id: string;
5
14
  patches: DocumentPatch[];
@@ -21,7 +30,9 @@ export declare const updateCollectionDocumentWithPatches: import("@tanstack/reac
21
30
  documentVersionId?: string | undefined;
22
31
  revision: number;
23
32
  }>>;
24
- export declare const updateCollectionDocumentSystemFields: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
33
+ export declare const updateCollectionDocumentSystemFields: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
34
+ bylineExpectedSessionId: string | null;
35
+ }, undefined, undefined>], (input: {
25
36
  collection: string;
26
37
  id: string;
27
38
  expectedRevision: number;
@@ -1,13 +1,16 @@
1
- import { withDocumentMutationErrors } from "../document-mutation-errors.js";
2
1
  import { createServerFn } from "@tanstack/react-start";
3
2
  import { getAdminRequestContext } from "@byline/client/server";
4
3
  import { ERR_NOT_FOUND, getLogger, getServerConfig } from "@byline/core";
5
4
  import { saveDocument, updateDocumentSystemFields } from "@byline/core/services";
6
5
  import { ensureCollection } from "../../integrations/api-utils.js";
6
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
7
+ import { withDocumentMutationErrors } from "../document-mutation-errors.js";
7
8
  import { toCommittedDocumentHookFailureResponse } from "./save-outcome.js";
8
9
  const updateCollectionDocumentWithPatches = createServerFn({
9
10
  method: 'POST'
10
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
11
+ }).middleware([
12
+ adminSessionMiddleware
13
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
11
14
  const { collection: path, id, patches, expectedRevision, locale, path: explicitPath, availableLocales } = input;
12
15
  const logger = getLogger();
13
16
  const config = await ensureCollection(path);
@@ -55,7 +58,9 @@ const updateCollectionDocumentWithPatches = createServerFn({
55
58
  }));
56
59
  const updateCollectionDocumentSystemFields = createServerFn({
57
60
  method: 'POST'
58
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
61
+ }).middleware([
62
+ adminSessionMiddleware
63
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
59
64
  const { collection: path, id, expectedRevision, locale, path: explicitPath, availableLocales } = input;
60
65
  const logger = getLogger();
61
66
  const config = await ensureCollection(path);
@@ -1,3 +1,10 @@
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
+ */
1
8
  import type { StoredFileValue } from '@byline/core';
2
9
  /**
3
10
  * Result of an upload through the host transport. The legacy top-level
@@ -36,7 +43,9 @@ declare function parseUploadFormData(data: FormData): UploadDocumentInput;
36
43
  * deployments and external clients can use the identical upload orchestration
37
44
  * without depending on TanStack Start server-function transport details.
38
45
  */
39
- export declare const uploadCollectionField: import("@tanstack/react-start").RequiredFetcher<undefined, typeof parseUploadFormData, Promise<import("@byline/core").UploadFieldResult>>;
46
+ export declare const uploadCollectionField: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
47
+ bylineExpectedSessionId: string | null;
48
+ }, undefined, undefined>], typeof parseUploadFormData, Promise<import("@byline/core").UploadFieldResult>>;
40
49
  /**
41
50
  * Upload a file to an upload-enabled collection.
42
51
  *
@@ -5,6 +5,7 @@ import { extractImageMeta, generateImageVariants, isBypassMimeType } from "@byli
5
5
  import { getLogger, withLogContext } from "@byline/core/logger";
6
6
  import { uploadField } from "@byline/core/services";
7
7
  import { ensureDocumentResource } from "../../integrations/api-utils.js";
8
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
8
9
  import { withDocumentMutationErrors } from "../document-mutation-errors.js";
9
10
  function parseUploadFormData(data) {
10
11
  if (!(data instanceof FormData)) throw new Error('Expected FormData upload payload.');
@@ -57,7 +58,9 @@ function resolveUploadField(definition, collectionPath, requested) {
57
58
  }
58
59
  const uploadCollectionField = createServerFn({
59
60
  method: 'POST'
60
- }).validator(parseUploadFormData).handler(withDocumentMutationErrors(async ({ data })=>{
61
+ }).middleware([
62
+ adminSessionMiddleware
63
+ ]).validator(parseUploadFormData).handler(withDocumentMutationErrors(async ({ data })=>{
61
64
  const { collectionPath, shouldCreateDocument, fieldName, file, fields } = data;
62
65
  const logger = getLogger();
63
66
  return withLogContext({
@@ -22,4 +22,6 @@ export interface SetAdminLocaleResult {
22
22
  */
23
23
  account: AccountResponse | null;
24
24
  }
25
- export declare const setAdminLocaleFn: import("@tanstack/react-start").RequiredFetcher<undefined, (input: SetAdminLocaleInput) => SetAdminLocaleInput, Promise<SetAdminLocaleResult>>;
25
+ export declare const setAdminLocaleFn: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterClient<{}, unknown, undefined, {
26
+ expectedSessionId: string | null;
27
+ }, undefined>], (input: SetAdminLocaleInput) => SetAdminLocaleInput, Promise<SetAdminLocaleResult>>;
@@ -1,12 +1,22 @@
1
- import { createServerFn } from "@tanstack/react-start";
1
+ import { createMiddleware, createServerFn } from "@tanstack/react-start";
2
2
  import { setPreferredLocaleCommand } from "@byline/admin/admin-account";
3
3
  import { AuthError, AuthErrorCodes } from "@byline/auth";
4
4
  import { getAdminRequestContext } from "@byline/client/server";
5
5
  import { clearAdminLocaleCookie, setAdminLocaleCookie } from "../../i18n/locale-cookie.js";
6
6
  import { bylineCore } from "../../integrations/byline-core.js";
7
+ import { expectedSession } from "../../integrations/session-coordination.js";
8
+ const localeSession = createMiddleware({
9
+ type: 'function'
10
+ }).client(({ next })=>next({
11
+ sendContext: {
12
+ expectedSessionId: expectedSession()
13
+ }
14
+ }));
7
15
  const setAdminLocaleFn = createServerFn({
8
16
  method: 'POST'
9
- }).validator((input)=>input).handler(async ({ data })=>{
17
+ }).middleware([
18
+ localeSession
19
+ ]).validator((input)=>input).handler(async ({ data, context: caller })=>{
10
20
  const core = bylineCore();
11
21
  const locales = core.config.i18n.admin.locales;
12
22
  if (null != data.locale && !locales.includes(data.locale)) throw new Error(`[setAdminLocaleFn] locale '${data.locale}' is not in i18n.admin.locales [${locales.join(', ')}].`);
@@ -20,6 +30,11 @@ const setAdminLocaleFn = createServerFn({
20
30
  };
21
31
  try {
22
32
  const context = await getAdminRequestContext();
33
+ if (!caller.expectedSessionId || caller.expectedSessionId !== context.sessionId) return {
34
+ ok: true,
35
+ locale: data.locale,
36
+ account: null
37
+ };
23
38
  const account = await setPreferredLocaleCommand(context, {
24
39
  locale: data.locale
25
40
  }, {
@@ -31,7 +46,7 @@ const setAdminLocaleFn = createServerFn({
31
46
  account
32
47
  };
33
48
  } catch (err) {
34
- if (err instanceof AuthError && err.code === AuthErrorCodes.UNAUTHENTICATED) return {
49
+ if (err instanceof AuthError && (err.code === AuthErrorCodes.UNAUTHENTICATED || err.code === AuthErrorCodes.ACCESS_EXPIRED)) return {
35
50
  ok: true,
36
51
  locale: data.locale,
37
52
  account: null
@@ -5,7 +5,9 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- export declare const disablePreviewModeFn: import("@tanstack/react-start").OptionalFetcher<undefined, undefined, Promise<{
8
+ export declare const disablePreviewModeFn: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], undefined, Promise<{
9
11
  status: 'ok';
10
12
  preview: false;
11
13
  }>>;
@@ -1,8 +1,11 @@
1
1
  import { createServerFn } from "@tanstack/react-start";
2
2
  import { clearPreviewCookie } from "@byline/client/server";
3
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
3
4
  const disablePreviewModeFn = createServerFn({
4
5
  method: 'POST'
5
- }).handler(async ()=>{
6
+ }).middleware([
7
+ adminSessionMiddleware
8
+ ]).handler(async ()=>{
6
9
  clearPreviewCookie();
7
10
  return {
8
11
  status: 'ok',
@@ -5,7 +5,9 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- export declare const enablePreviewModeFn: import("@tanstack/react-start").OptionalFetcher<undefined, undefined, Promise<{
8
+ export declare const enablePreviewModeFn: import("@tanstack/react-start").OptionalFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], undefined, Promise<{
9
11
  status: 'ok';
10
12
  preview: true;
11
13
  }>>;
@@ -1,8 +1,11 @@
1
1
  import { createServerFn } from "@tanstack/react-start";
2
2
  import { getAdminRequestContext, setPreviewCookie } from "@byline/client/server";
3
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
3
4
  const enablePreviewModeFn = createServerFn({
4
5
  method: 'POST'
5
- }).handler(async ()=>{
6
+ }).middleware([
7
+ adminSessionMiddleware
8
+ ]).handler(async ()=>{
6
9
  await getAdminRequestContext();
7
10
  setPreviewCookie();
8
11
  return {
@@ -1,4 +1,13 @@
1
- export declare const cancelSingletonScheduledPublish: import("@tanstack/react-start").RequiredFetcher<undefined, (input: {
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
+ export declare const cancelSingletonScheduledPublish: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
9
+ bylineExpectedSessionId: string | null;
10
+ }, undefined, undefined>], (input: {
2
11
  expectedRevision: number;
3
12
  singleton: string;
4
13
  }) => {
@@ -1,10 +1,13 @@
1
- import { withDocumentMutationErrors } from "../document-mutation-errors.js";
2
1
  import { createServerFn } from "@tanstack/react-start";
3
2
  import { getAdminBylineClient } from "@byline/client/server";
3
+ import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
4
+ import { withDocumentMutationErrors } from "../document-mutation-errors.js";
4
5
  import { serialise } from "../serialise.js";
5
6
  const cancelSingletonScheduledPublish = createServerFn({
6
7
  method: 'POST'
7
- }).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>serialise(await getAdminBylineClient().singleton(data.singleton).cancelScheduledPublish({
8
+ }).middleware([
9
+ adminSessionMiddleware
10
+ ]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>serialise(await getAdminBylineClient().singleton(data.singleton).cancelScheduledPublish({
8
11
  expectedRevision: data.expectedRevision
9
12
  }))));
10
13
  export { cancelSingletonScheduledPublish };