@byline/host-tanstack-start 4.19.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin-shell/chrome/admin-app-bar.d.ts +7 -0
- package/dist/admin-shell/chrome/admin-app-bar.js +10 -2
- package/dist/admin-shell/chrome/session-change-boundary.d.ts +14 -0
- package/dist/admin-shell/chrome/session-change-boundary.js +87 -0
- package/dist/admin-shell/chrome/session-change-boundary.test.d.ts +8 -0
- package/dist/admin-shell/chrome/sign-in-page.d.ts +2 -1
- package/dist/admin-shell/chrome/sign-in-page.js +60 -3
- package/dist/admin-shell/collections/edit.d.ts +1 -1
- package/dist/admin-shell/collections/edit.js +151 -31
- package/dist/admin-shell/collections/history.js +4 -2
- package/dist/admin-shell/collections/list.js +30 -6
- package/dist/admin-shell/collections/restore-version-modal.d.ts +3 -1
- package/dist/admin-shell/collections/restore-version-modal.js +9 -4
- package/dist/admin-shell/collections/tree-list.js +16 -6
- package/dist/admin-shell/collections/version-history.d.ts +2 -1
- package/dist/admin-shell/collections/version-history.js +11 -2
- package/dist/admin-shell/document-mutation-notice.d.ts +6 -0
- package/dist/admin-shell/document-mutation-notice.js +53 -0
- package/dist/admin-shell/document-mutation-state.d.ts +22 -0
- package/dist/admin-shell/document-mutation-state.js +71 -0
- package/dist/admin-shell/document-mutation-state.test.d.ts +1 -0
- package/dist/admin-shell/scheduled-publications/list.js +15 -5
- package/dist/admin-shell/singletons/history.js +4 -2
- package/dist/admin-shell/singletons/view.d.ts +1 -1
- package/dist/admin-shell/singletons/view.js +98 -19
- package/dist/integrations/byline-admin-services.js +7 -1
- package/dist/integrations/byline-field-services.js +2 -9
- package/dist/integrations/client-ip.d.ts +19 -0
- package/dist/integrations/client-ip.js +34 -0
- package/dist/integrations/session-coordination.d.ts +24 -0
- package/dist/integrations/session-coordination.js +85 -0
- package/dist/integrations/session-middleware.d.ts +11 -0
- package/dist/integrations/session-middleware.js +94 -0
- package/dist/integrations/session-request-kind.d.ts +9 -0
- package/dist/integrations/session-request-kind.js +10 -0
- package/dist/integrations/session-request-middleware.d.ts +9 -0
- package/dist/integrations/session-request-middleware.js +7 -0
- package/dist/integrations/sign-in-body.d.ts +12 -0
- package/dist/integrations/sign-in-body.js +52 -0
- package/dist/integrations/sign-in-middleware.d.ts +9 -0
- package/dist/integrations/sign-in-middleware.js +10 -0
- package/dist/routes/create-admin-layout-route.js +46 -31
- package/dist/routes/create-collection-edit-route.js +1 -1
- package/dist/routes/create-collection-list-route.d.ts +0 -7
- package/dist/routes/create-collection-list-route.js +7 -9
- package/dist/routes/create-sign-in-route.js +4 -2
- package/dist/routes/create-singleton-route.d.ts +2 -0
- package/dist/routes/create-singleton-route.js +4 -3
- package/dist/server-fns/admin-account/change-password.d.ts +3 -1
- package/dist/server-fns/admin-account/change-password.js +9 -3
- package/dist/server-fns/admin-account/get.d.ts +3 -1
- package/dist/server-fns/admin-account/get.js +4 -1
- package/dist/server-fns/admin-account/index.d.ts +5 -5
- package/dist/server-fns/admin-account/update.d.ts +3 -1
- package/dist/server-fns/admin-account/update.js +4 -1
- package/dist/server-fns/admin-activity/get.d.ts +3 -1
- package/dist/server-fns/admin-activity/get.js +4 -1
- package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +3 -1
- package/dist/server-fns/admin-permissions/get-role-abilities.js +4 -1
- package/dist/server-fns/admin-permissions/index.d.ts +4 -4
- package/dist/server-fns/admin-permissions/list-registered.d.ts +3 -1
- package/dist/server-fns/admin-permissions/list-registered.js +4 -1
- package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +3 -1
- package/dist/server-fns/admin-permissions/set-role-abilities.js +4 -1
- package/dist/server-fns/admin-permissions/who-has.d.ts +3 -1
- package/dist/server-fns/admin-permissions/who-has.js +4 -1
- package/dist/server-fns/admin-roles/create.d.ts +3 -1
- package/dist/server-fns/admin-roles/create.js +4 -1
- package/dist/server-fns/admin-roles/delete.d.ts +3 -1
- package/dist/server-fns/admin-roles/delete.js +4 -1
- package/dist/server-fns/admin-roles/get.d.ts +3 -1
- package/dist/server-fns/admin-roles/get.js +4 -1
- package/dist/server-fns/admin-roles/index.d.ts +6 -6
- package/dist/server-fns/admin-roles/list.d.ts +3 -1
- package/dist/server-fns/admin-roles/list.js +4 -1
- package/dist/server-fns/admin-roles/reorder.d.ts +3 -1
- package/dist/server-fns/admin-roles/reorder.js +4 -1
- package/dist/server-fns/admin-roles/update.d.ts +3 -1
- package/dist/server-fns/admin-roles/update.js +4 -1
- package/dist/server-fns/admin-users/create.d.ts +3 -1
- package/dist/server-fns/admin-users/create.js +4 -1
- package/dist/server-fns/admin-users/delete.d.ts +3 -1
- package/dist/server-fns/admin-users/delete.js +4 -1
- package/dist/server-fns/admin-users/disable.d.ts +3 -1
- package/dist/server-fns/admin-users/disable.js +4 -1
- package/dist/server-fns/admin-users/enable.d.ts +3 -1
- package/dist/server-fns/admin-users/enable.js +4 -1
- package/dist/server-fns/admin-users/get-user-roles.d.ts +3 -1
- package/dist/server-fns/admin-users/get-user-roles.js +4 -1
- package/dist/server-fns/admin-users/get.d.ts +3 -1
- package/dist/server-fns/admin-users/get.js +4 -1
- package/dist/server-fns/admin-users/index.d.ts +10 -10
- package/dist/server-fns/admin-users/list.d.ts +3 -1
- package/dist/server-fns/admin-users/list.js +4 -1
- package/dist/server-fns/admin-users/set-password.d.ts +3 -1
- package/dist/server-fns/admin-users/set-password.js +4 -1
- package/dist/server-fns/admin-users/set-user-roles.d.ts +3 -1
- package/dist/server-fns/admin-users/set-user-roles.js +4 -1
- package/dist/server-fns/admin-users/update.d.ts +3 -1
- package/dist/server-fns/admin-users/update.js +4 -1
- package/dist/server-fns/ai/execute.d.ts +3 -1
- package/dist/server-fns/ai/execute.js +4 -1
- package/dist/server-fns/ai/index.d.ts +1 -1
- package/dist/server-fns/analytics/maintenance.d.ts +6 -2
- package/dist/server-fns/analytics/maintenance.js +7 -2
- package/dist/server-fns/analytics/queries.d.ts +18 -6
- package/dist/server-fns/analytics/queries.js +19 -6
- package/dist/server-fns/auth/current-user.d.ts +1 -0
- package/dist/server-fns/auth/current-user.js +5 -2
- package/dist/server-fns/auth/renew.d.ts +13 -0
- package/dist/server-fns/auth/renew.js +45 -0
- package/dist/server-fns/auth/sign-in.d.ts +2 -1
- package/dist/server-fns/auth/sign-in.js +88 -17
- package/dist/server-fns/auth/sign-out.d.ts +3 -1
- package/dist/server-fns/auth/sign-out.js +38 -6
- package/dist/server-fns/collections/audit.d.ts +3 -1
- package/dist/server-fns/collections/audit.js +4 -1
- package/dist/server-fns/collections/copy-to-locale.d.ts +5 -1
- package/dist/server-fns/collections/copy-to-locale.js +7 -2
- package/dist/server-fns/collections/create.d.ts +4 -1
- package/dist/server-fns/collections/create.js +8 -3
- package/dist/server-fns/collections/delete-locale.d.ts +5 -1
- package/dist/server-fns/collections/delete-locale.js +7 -2
- package/dist/server-fns/collections/delete-outcome.d.ts +7 -3
- package/dist/server-fns/collections/delete-outcome.js +4 -0
- package/dist/server-fns/collections/delete.d.ts +5 -1
- package/dist/server-fns/collections/delete.js +8 -3
- package/dist/server-fns/collections/duplicate.d.ts +5 -1
- package/dist/server-fns/collections/duplicate.js +8 -3
- package/dist/server-fns/collections/get.d.ts +1 -0
- package/dist/server-fns/collections/get.js +12 -6
- package/dist/server-fns/collections/history.d.ts +3 -1
- package/dist/server-fns/collections/history.js +4 -1
- package/dist/server-fns/collections/index.d.ts +21 -21
- package/dist/server-fns/collections/list.d.ts +3 -1
- package/dist/server-fns/collections/list.js +15 -4
- package/dist/server-fns/collections/reindex.d.ts +3 -1
- package/dist/server-fns/collections/reindex.js +4 -1
- package/dist/server-fns/collections/reorder.d.ts +10 -2
- package/dist/server-fns/collections/reorder.js +23 -76
- package/dist/server-fns/collections/restore-version.d.ts +6 -1
- package/dist/server-fns/collections/restore-version.js +8 -2
- package/dist/server-fns/collections/save-outcome.d.ts +1 -0
- package/dist/server-fns/collections/save-outcome.js +1 -0
- package/dist/server-fns/collections/scheduled-publication.d.ts +64 -7
- package/dist/server-fns/collections/scheduled-publication.js +42 -21
- package/dist/server-fns/collections/set-list-view-preference.d.ts +3 -1
- package/dist/server-fns/collections/set-list-view-preference.js +4 -1
- package/dist/server-fns/collections/stats.js +4 -1
- package/dist/server-fns/collections/status.d.ts +14 -2
- package/dist/server-fns/collections/status.js +18 -5
- package/dist/server-fns/collections/tree-mutation.d.ts +7 -6
- package/dist/server-fns/collections/tree-mutation.js +17 -5
- package/dist/server-fns/collections/tree.d.ts +29 -6
- package/dist/server-fns/collections/tree.js +32 -17
- package/dist/server-fns/collections/update.d.ts +18 -6
- package/dist/server-fns/collections/update.js +39 -20
- package/dist/server-fns/collections/upload.d.ts +11 -1
- package/dist/server-fns/collections/upload.js +6 -2
- package/dist/server-fns/document-mutation-errors.d.ts +5 -0
- package/dist/server-fns/document-mutation-errors.js +50 -0
- package/dist/server-fns/editable-revision.d.ts +9 -0
- package/dist/server-fns/editable-revision.js +11 -0
- package/dist/server-fns/i18n/set-locale.d.ts +3 -1
- package/dist/server-fns/i18n/set-locale.js +18 -3
- package/dist/server-fns/preview/disable.d.ts +3 -1
- package/dist/server-fns/preview/disable.js +4 -1
- package/dist/server-fns/preview/enable.d.ts +3 -1
- package/dist/server-fns/preview/enable.js +4 -1
- package/dist/server-fns/singleton-document-read.d.ts +1 -1
- package/dist/server-fns/singleton-document-read.js +7 -3
- package/dist/server-fns/singletons/cancel-scheduled-publish.d.ts +9 -2
- package/dist/server-fns/singletons/cancel-scheduled-publish.js +7 -1
- package/dist/server-fns/singletons/change-status.d.ts +5 -1
- package/dist/server-fns/singletons/change-status.js +7 -1
- package/dist/server-fns/singletons/confirm-scheduled-publish.d.ts +8 -2
- package/dist/server-fns/singletons/confirm-scheduled-publish.js +7 -2
- package/dist/server-fns/singletons/copy-to-locale.d.ts +5 -1
- package/dist/server-fns/singletons/copy-to-locale.js +7 -2
- package/dist/server-fns/singletons/find-by-version.d.ts +3 -1
- package/dist/server-fns/singletons/find-by-version.js +4 -1
- package/dist/server-fns/singletons/get-scheduled-publish.d.ts +3 -1
- package/dist/server-fns/singletons/get-scheduled-publish.js +4 -1
- package/dist/server-fns/singletons/get.d.ts +6 -4
- package/dist/server-fns/singletons/get.js +4 -1
- package/dist/server-fns/singletons/history.d.ts +3 -1
- package/dist/server-fns/singletons/history.js +4 -1
- package/dist/server-fns/singletons/restore-version.d.ts +5 -1
- package/dist/server-fns/singletons/restore-version.js +9 -3
- package/dist/server-fns/singletons/schedule-publish.d.ts +8 -2
- package/dist/server-fns/singletons/schedule-publish.js +7 -2
- package/dist/server-fns/singletons/unpublish.d.ts +5 -1
- package/dist/server-fns/singletons/unpublish.js +7 -1
- package/dist/server-fns/singletons/update.d.ts +6 -4
- package/dist/server-fns/singletons/update.js +8 -4
- package/dist/server-fns/structural-receipt.d.ts +4 -0
- package/dist/server-fns/structural-receipt.js +31 -0
- package/package.json +20 -20
- package/src/admin-shell/chrome/admin-app-bar.tsx +11 -6
- package/src/admin-shell/chrome/session-change-boundary.test.tsx +78 -0
- package/src/admin-shell/chrome/session-change-boundary.tsx +94 -0
- package/src/admin-shell/chrome/sign-in-page.tsx +68 -3
- package/src/admin-shell/collections/edit.tsx +173 -54
- package/src/admin-shell/collections/history.tsx +11 -2
- package/src/admin-shell/collections/list.tsx +22 -6
- package/src/admin-shell/collections/restore-version-modal.tsx +12 -3
- package/src/admin-shell/collections/save-navigation.test.tsx +156 -8
- package/src/admin-shell/collections/tree-list.tsx +16 -6
- package/src/admin-shell/collections/version-history.tsx +13 -3
- package/src/admin-shell/document-mutation-notice.tsx +45 -0
- package/src/admin-shell/document-mutation-state.test.tsx +146 -0
- package/src/admin-shell/document-mutation-state.ts +95 -0
- package/src/admin-shell/scheduled-publications/list.tsx +16 -6
- package/src/admin-shell/singletons/history.test.tsx +3 -1
- package/src/admin-shell/singletons/history.tsx +10 -2
- package/src/admin-shell/singletons/view.test.tsx +59 -18
- package/src/admin-shell/singletons/view.tsx +110 -29
- package/src/integrations/byline-admin-services.ts +7 -1
- package/src/integrations/byline-field-services.ts +2 -3
- package/src/integrations/client-ip.test.node.ts +45 -0
- package/src/integrations/client-ip.ts +54 -0
- package/src/integrations/framework-fetch-shape.test.node.ts +56 -0
- package/src/integrations/session-client.test.node.ts +121 -0
- package/src/integrations/session-coordination.test.node.ts +77 -0
- package/src/integrations/session-coordination.ts +96 -0
- package/src/integrations/session-middleware.test.node.ts +87 -0
- package/src/integrations/session-middleware.ts +107 -0
- package/src/integrations/session-request-kind.ts +18 -0
- package/src/integrations/session-request-middleware.ts +17 -0
- package/src/integrations/sign-in-body.test.node.ts +59 -0
- package/src/integrations/sign-in-body.ts +50 -0
- package/src/integrations/sign-in-middleware.ts +24 -0
- package/src/routes/create-admin-layout-route.tsx +48 -30
- package/src/routes/create-collection-edit-route.tsx +1 -0
- package/src/routes/create-collection-list-route.tsx +13 -2
- package/src/routes/create-sign-in-route.tsx +10 -2
- package/src/routes/create-singleton-route.test.node.ts +10 -2
- package/src/routes/create-singleton-route.tsx +6 -4
- package/src/server-fns/admin-account/change-password.test.node.ts +69 -0
- package/src/server-fns/admin-account/change-password.ts +13 -2
- package/src/server-fns/admin-account/get.ts +2 -0
- package/src/server-fns/admin-account/update.ts +2 -0
- package/src/server-fns/admin-activity/get.ts +2 -0
- package/src/server-fns/admin-permissions/get-role-abilities.ts +2 -0
- package/src/server-fns/admin-permissions/list-registered.ts +5 -4
- package/src/server-fns/admin-permissions/set-role-abilities.ts +2 -0
- package/src/server-fns/admin-permissions/who-has.ts +2 -0
- package/src/server-fns/admin-roles/create.ts +2 -0
- package/src/server-fns/admin-roles/delete.ts +2 -0
- package/src/server-fns/admin-roles/get.ts +2 -0
- package/src/server-fns/admin-roles/list.ts +5 -4
- package/src/server-fns/admin-roles/reorder.ts +2 -0
- package/src/server-fns/admin-roles/update.ts +2 -0
- package/src/server-fns/admin-users/create.ts +2 -0
- package/src/server-fns/admin-users/delete.ts +2 -0
- package/src/server-fns/admin-users/disable.ts +2 -0
- package/src/server-fns/admin-users/enable.ts +2 -0
- package/src/server-fns/admin-users/get-user-roles.ts +2 -0
- package/src/server-fns/admin-users/get.ts +2 -0
- package/src/server-fns/admin-users/list.ts +2 -0
- package/src/server-fns/admin-users/set-password.ts +2 -0
- package/src/server-fns/admin-users/set-user-roles.ts +2 -0
- package/src/server-fns/admin-users/update.ts +2 -0
- package/src/server-fns/ai/execute.ts +3 -0
- package/src/server-fns/analytics/maintenance.ts +4 -0
- package/src/server-fns/analytics/queries.ts +14 -8
- package/src/server-fns/auth/current-user.ts +7 -3
- package/src/server-fns/auth/renew.test.node.ts +85 -0
- package/src/server-fns/auth/renew.ts +54 -0
- package/src/server-fns/auth/sign-in.test.node.ts +114 -0
- package/src/server-fns/auth/sign-in.ts +80 -27
- package/src/server-fns/auth/sign-out.test.node.ts +85 -0
- package/src/server-fns/auth/sign-out.ts +44 -19
- package/src/server-fns/collections/audit.ts +2 -0
- package/src/server-fns/collections/copy-to-locale.ts +43 -36
- package/src/server-fns/collections/create.ts +56 -50
- package/src/server-fns/collections/delete-locale.ts +43 -32
- package/src/server-fns/collections/delete-outcome.test.node.ts +16 -0
- package/src/server-fns/collections/delete-outcome.ts +27 -16
- package/src/server-fns/collections/delete.ts +46 -38
- package/src/server-fns/collections/duplicate.ts +40 -32
- package/src/server-fns/collections/get.ts +11 -4
- package/src/server-fns/collections/history.ts +2 -0
- package/src/server-fns/collections/list.ts +10 -3
- package/src/server-fns/collections/reindex.ts +2 -0
- package/src/server-fns/collections/reorder.ts +34 -124
- package/src/server-fns/collections/restore-version.ts +49 -39
- package/src/server-fns/collections/revision-input.test.node.ts +122 -0
- package/src/server-fns/collections/save-outcome.test.node.ts +3 -0
- package/src/server-fns/collections/save-outcome.ts +2 -0
- package/src/server-fns/collections/scheduled-publication.ts +149 -115
- package/src/server-fns/collections/set-list-view-preference.ts +2 -0
- package/src/server-fns/collections/stats.ts +2 -0
- package/src/server-fns/collections/status.ts +89 -64
- package/src/server-fns/collections/tree-mutation.test.node.ts +87 -29
- package/src/server-fns/collections/tree-mutation.ts +28 -11
- package/src/server-fns/collections/tree.ts +156 -122
- package/src/server-fns/collections/update.ts +113 -86
- package/src/server-fns/collections/upload-singleton.test.node.ts +10 -7
- package/src/server-fns/collections/upload.ts +91 -77
- package/src/server-fns/document-mutation-errors.ts +67 -0
- package/src/server-fns/document-mutation-transport.test.node.ts +211 -0
- package/src/server-fns/editable-revision.test.node.ts +23 -0
- package/src/server-fns/editable-revision.ts +18 -0
- package/src/server-fns/i18n/set-locale.ts +19 -3
- package/src/server-fns/preview/disable.ts +8 -4
- package/src/server-fns/preview/enable.ts +9 -5
- package/src/server-fns/singleton-document-read.ts +7 -3
- package/src/server-fns/singletons/cancel-scheduled-publish.ts +12 -3
- package/src/server-fns/singletons/change-status.ts +12 -3
- package/src/server-fns/singletons/confirm-scheduled-publish.ts +14 -6
- package/src/server-fns/singletons/copy-to-locale.ts +22 -15
- package/src/server-fns/singletons/find-by-version.ts +2 -0
- package/src/server-fns/singletons/get-scheduled-publish.ts +2 -0
- package/src/server-fns/singletons/get.ts +5 -3
- package/src/server-fns/singletons/history.ts +2 -0
- package/src/server-fns/singletons/restore-version.ts +19 -12
- package/src/server-fns/singletons/schedule-publish.ts +20 -7
- package/src/server-fns/singletons/singletons.test.node.ts +69 -25
- package/src/server-fns/singletons/unpublish.ts +12 -3
- package/src/server-fns/singletons/update.ts +23 -16
- package/src/server-fns/structural-receipt.ts +41 -0
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminRequestContext } from "@byline/client/server";
|
|
3
3
|
import { ERR_NOT_FOUND, getLogger, getServerConfig } from "@byline/core";
|
|
4
|
-
import {
|
|
4
|
+
import { saveDocument, updateDocumentSystemFields } from "@byline/core/services";
|
|
5
5
|
import { ensureCollection } from "../../integrations/api-utils.js";
|
|
6
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
7
|
+
import { withDocumentMutationErrors } from "../document-mutation-errors.js";
|
|
6
8
|
import { toCommittedDocumentHookFailureResponse } from "./save-outcome.js";
|
|
7
9
|
const updateCollectionDocumentWithPatches = createServerFn({
|
|
8
10
|
method: 'POST'
|
|
9
|
-
}).
|
|
10
|
-
|
|
11
|
+
}).middleware([
|
|
12
|
+
adminSessionMiddleware
|
|
13
|
+
]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
|
|
14
|
+
const { collection: path, id, patches, expectedRevision, locale, path: explicitPath, availableLocales } = input;
|
|
11
15
|
const logger = getLogger();
|
|
12
16
|
const config = await ensureCollection(path);
|
|
13
17
|
if (!config) throw ERR_NOT_FOUND({
|
|
@@ -30,10 +34,12 @@ const updateCollectionDocumentWithPatches = createServerFn({
|
|
|
30
34
|
};
|
|
31
35
|
let result;
|
|
32
36
|
try {
|
|
33
|
-
result = await
|
|
37
|
+
result = await saveDocument(ctx, {
|
|
34
38
|
documentId: id,
|
|
35
39
|
patches,
|
|
36
|
-
|
|
40
|
+
expectedRevision,
|
|
41
|
+
path: explicitPath ?? void 0,
|
|
42
|
+
availableLocales,
|
|
37
43
|
locale: locale ?? serverConfig.i18n.content.defaultLocale
|
|
38
44
|
});
|
|
39
45
|
} catch (error) {
|
|
@@ -44,13 +50,18 @@ const updateCollectionDocumentWithPatches = createServerFn({
|
|
|
44
50
|
return {
|
|
45
51
|
status: 'ok',
|
|
46
52
|
documentId: result.documentId,
|
|
47
|
-
documentVersionId
|
|
53
|
+
...'documentVersionId' in result ? {
|
|
54
|
+
documentVersionId: result.documentVersionId
|
|
55
|
+
} : {},
|
|
56
|
+
revision: result.revision
|
|
48
57
|
};
|
|
49
|
-
});
|
|
58
|
+
}));
|
|
50
59
|
const updateCollectionDocumentSystemFields = createServerFn({
|
|
51
60
|
method: 'POST'
|
|
52
|
-
}).
|
|
53
|
-
|
|
61
|
+
}).middleware([
|
|
62
|
+
adminSessionMiddleware
|
|
63
|
+
]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data: input })=>{
|
|
64
|
+
const { collection: path, id, expectedRevision, locale, path: explicitPath, availableLocales } = input;
|
|
54
65
|
const logger = getLogger();
|
|
55
66
|
const config = await ensureCollection(path);
|
|
56
67
|
if (!config) throw ERR_NOT_FOUND({
|
|
@@ -71,15 +82,23 @@ const updateCollectionDocumentSystemFields = createServerFn({
|
|
|
71
82
|
slugifier: serverConfig.slugifier,
|
|
72
83
|
requestContext: await getAdminRequestContext()
|
|
73
84
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
try {
|
|
86
|
+
const result = await updateDocumentSystemFields(ctx, {
|
|
87
|
+
expectedRevision,
|
|
88
|
+
documentId: id,
|
|
89
|
+
locale: locale ?? serverConfig.i18n.content.defaultLocale,
|
|
90
|
+
path: explicitPath,
|
|
91
|
+
availableLocales,
|
|
92
|
+
reconcile: true
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
status: 'ok',
|
|
96
|
+
revision: result.revision
|
|
97
|
+
};
|
|
98
|
+
} catch (error) {
|
|
99
|
+
const committedFailure = toCommittedDocumentHookFailureResponse(error);
|
|
100
|
+
if (null != committedFailure) return committedFailure;
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
85
104
|
export { updateCollectionDocumentSystemFields, updateCollectionDocumentWithPatches };
|
|
@@ -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
|
|
@@ -9,6 +16,7 @@ export interface UploadFieldResult {
|
|
|
9
16
|
/** Present when the upload endpoint created a document (createDocument=true, the default). */
|
|
10
17
|
documentId?: string;
|
|
11
18
|
documentVersionId?: string;
|
|
19
|
+
revision?: number;
|
|
12
20
|
storedFile: StoredFileValue;
|
|
13
21
|
}
|
|
14
22
|
interface UploadDocumentInput {
|
|
@@ -35,7 +43,9 @@ declare function parseUploadFormData(data: FormData): UploadDocumentInput;
|
|
|
35
43
|
* deployments and external clients can use the identical upload orchestration
|
|
36
44
|
* without depending on TanStack Start server-function transport details.
|
|
37
45
|
*/
|
|
38
|
-
export declare const uploadCollectionField: import("@tanstack/react-start").RequiredFetcher<
|
|
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>>;
|
|
39
49
|
/**
|
|
40
50
|
* Upload a file to an upload-enabled collection.
|
|
41
51
|
*
|
|
@@ -5,6 +5,8 @@ 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";
|
|
9
|
+
import { withDocumentMutationErrors } from "../document-mutation-errors.js";
|
|
8
10
|
function parseUploadFormData(data) {
|
|
9
11
|
if (!(data instanceof FormData)) throw new Error('Expected FormData upload payload.');
|
|
10
12
|
const collectionEntry = data.get('collection');
|
|
@@ -56,7 +58,9 @@ function resolveUploadField(definition, collectionPath, requested) {
|
|
|
56
58
|
}
|
|
57
59
|
const uploadCollectionField = createServerFn({
|
|
58
60
|
method: 'POST'
|
|
59
|
-
}).
|
|
61
|
+
}).middleware([
|
|
62
|
+
adminSessionMiddleware
|
|
63
|
+
]).validator(parseUploadFormData).handler(withDocumentMutationErrors(async ({ data })=>{
|
|
60
64
|
const { collectionPath, shouldCreateDocument, fieldName, file, fields } = data;
|
|
61
65
|
const logger = getLogger();
|
|
62
66
|
return withLogContext({
|
|
@@ -114,7 +118,7 @@ const uploadCollectionField = createServerFn({
|
|
|
114
118
|
locale: serverConfig.i18n.content.defaultLocale
|
|
115
119
|
});
|
|
116
120
|
});
|
|
117
|
-
});
|
|
121
|
+
}));
|
|
118
122
|
async function upload_uploadField(collection, formData, createDocument = true) {
|
|
119
123
|
const payload = new FormData();
|
|
120
124
|
for (const [key, value] of formData.entries())payload.append(key, value);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Error subclasses lose custom properties in the server-function serializer.
|
|
2
|
+
* Throw only validated plain data for document failures; never transport causes,
|
|
3
|
+
* SQL, hook messages or an unverified current revision. */
|
|
4
|
+
export declare function documentMutationError(error: unknown): unknown;
|
|
5
|
+
export declare function withDocumentMutationErrors<T, R>(handler: (input: T) => Promise<R>): (input: T) => Promise<R>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { BylineError, ErrorCodes, getDocumentRevisionValidationDetails, getDocumentStaleDetails, getLockConflictDetails } from "@byline/core";
|
|
2
|
+
import { getDocumentHookCommittedDetails } from "@byline/core/services";
|
|
3
|
+
import { committedTreeReceipt } from "./structural-receipt.js";
|
|
4
|
+
function documentMutationError(error) {
|
|
5
|
+
const stale = getDocumentStaleDetails(error);
|
|
6
|
+
if (stale) return {
|
|
7
|
+
code: ErrorCodes.DOCUMENT_STALE,
|
|
8
|
+
message: 'This document has changed. Reload before making changes.',
|
|
9
|
+
details: stale
|
|
10
|
+
};
|
|
11
|
+
const validation = getDocumentRevisionValidationDetails(error);
|
|
12
|
+
if (validation) return {
|
|
13
|
+
code: ErrorCodes.VALIDATION,
|
|
14
|
+
message: 'Reload this document before making changes.',
|
|
15
|
+
details: validation
|
|
16
|
+
};
|
|
17
|
+
const lock = getLockConflictDetails(error);
|
|
18
|
+
if (lock) return {
|
|
19
|
+
code: ErrorCodes.LOCK_CONFLICT,
|
|
20
|
+
message: 'This change could not be saved because another operation was using the document. Reload before trying again.',
|
|
21
|
+
details: lock
|
|
22
|
+
};
|
|
23
|
+
const tree = committedTreeReceipt(error);
|
|
24
|
+
if (tree) return {
|
|
25
|
+
code: ErrorCodes.TREE_HOOK_COMMITTED,
|
|
26
|
+
message: 'The structure was saved, but a follow-up action failed.',
|
|
27
|
+
details: tree
|
|
28
|
+
};
|
|
29
|
+
const committed = getDocumentHookCommittedDetails(error);
|
|
30
|
+
if (committed) return {
|
|
31
|
+
code: ErrorCodes.DOCUMENT_HOOK_COMMITTED,
|
|
32
|
+
message: 'The document was saved, but a follow-up action failed.',
|
|
33
|
+
details: committed
|
|
34
|
+
};
|
|
35
|
+
if (error instanceof BylineError && error.code === ErrorCodes.NOT_FOUND) return {
|
|
36
|
+
code: ErrorCodes.NOT_FOUND,
|
|
37
|
+
message: 'This document is no longer available.'
|
|
38
|
+
};
|
|
39
|
+
return error;
|
|
40
|
+
}
|
|
41
|
+
function withDocumentMutationErrors(handler) {
|
|
42
|
+
return async (input)=>{
|
|
43
|
+
try {
|
|
44
|
+
return await handler(input);
|
|
45
|
+
} catch (error) {
|
|
46
|
+
throw documentMutationError(error);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export { documentMutationError, withDocumentMutationErrors };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Restore metadata stripped by schema parsing only onto the exact source version.
|
|
2
|
+
* Never attach by array position: filtering/reordering must not transfer tokens. */
|
|
3
|
+
export declare function withEditableRevision<T extends object>(document: T, observation: {
|
|
4
|
+
id: string;
|
|
5
|
+
versionId: string;
|
|
6
|
+
revision: number;
|
|
7
|
+
} | undefined): T & {
|
|
8
|
+
revision: number;
|
|
9
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ERR_DATABASE, isDocumentRevision } from "@byline/core";
|
|
2
|
+
function withEditableRevision(document, observation) {
|
|
3
|
+
if (!observation || !isDocumentRevision(observation.revision) || Reflect.get(document, 'id') !== observation.id || Reflect.get(document, 'versionId') !== observation.versionId) throw ERR_DATABASE({
|
|
4
|
+
message: 'Editable response no longer matches its source observation'
|
|
5
|
+
});
|
|
6
|
+
return {
|
|
7
|
+
...document,
|
|
8
|
+
revision: observation.revision
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export { withEditableRevision };
|
|
@@ -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<
|
|
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
|
-
}).
|
|
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,
|
|
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
|
-
}).
|
|
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,
|
|
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
|
-
}).
|
|
6
|
+
}).middleware([
|
|
7
|
+
adminSessionMiddleware
|
|
8
|
+
]).handler(async ()=>{
|
|
6
9
|
await getAdminRequestContext();
|
|
7
10
|
setPreviewCookie();
|
|
8
11
|
return {
|
|
@@ -17,4 +17,4 @@ export interface SingletonDocumentReadInput {
|
|
|
17
17
|
* is deliberately composed one layer up, where host database and actor
|
|
18
18
|
* context are available without widening the singleton transport contract.
|
|
19
19
|
*/
|
|
20
|
-
export declare function readSingletonDocument(data: SingletonDocumentReadInput): Promise<import("@byline/client").
|
|
20
|
+
export declare function readSingletonDocument(data: SingletonDocumentReadInput): Promise<Omit<import("@byline/client").EditableDocument<Record<string, any>>, "path"> | null>;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
2
|
-
import { getCollectionDefinition } from "@byline/core";
|
|
2
|
+
import { ERR_NOT_FOUND, getCollectionDefinition } from "@byline/core";
|
|
3
3
|
import { resolveAdminDocumentRead } from "./admin-document-presentation.js";
|
|
4
4
|
import { serialise } from "./serialise.js";
|
|
5
5
|
async function readSingletonDocument(data) {
|
|
6
6
|
const handle = getAdminBylineClient().singleton(data.singleton);
|
|
7
|
-
const { options } = resolveAdminDocumentRead(getCollectionDefinition(data.singleton), data);
|
|
8
|
-
|
|
7
|
+
const { options: { status: _status, ...options } } = resolveAdminDocumentRead(getCollectionDefinition(data.singleton), data);
|
|
8
|
+
const snapshot = await handle.getForEdit(options);
|
|
9
|
+
if (null == snapshot) throw ERR_NOT_FOUND({
|
|
10
|
+
message: 'Singleton document is unavailable'
|
|
11
|
+
});
|
|
12
|
+
return 'empty' === snapshot.state ? null : serialise(snapshot.document);
|
|
9
13
|
}
|
|
10
14
|
export { readSingletonDocument };
|
|
@@ -5,8 +5,15 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const cancelSingletonScheduledPublish: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
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: {
|
|
11
|
+
expectedRevision: number;
|
|
9
12
|
singleton: string;
|
|
10
13
|
}) => {
|
|
14
|
+
expectedRevision: number;
|
|
11
15
|
singleton: string;
|
|
12
|
-
}, Promise<
|
|
16
|
+
}, Promise<{
|
|
17
|
+
schedule: import("@byline/client").DocumentPublishScheduleInfo | null;
|
|
18
|
+
revision: number;
|
|
19
|
+
}>>;
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
3
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
4
|
+
import { withDocumentMutationErrors } from "../document-mutation-errors.js";
|
|
3
5
|
import { serialise } from "../serialise.js";
|
|
4
6
|
const cancelSingletonScheduledPublish = createServerFn({
|
|
5
7
|
method: 'POST'
|
|
6
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>serialise(await getAdminBylineClient().singleton(data.singleton).cancelScheduledPublish({
|
|
11
|
+
expectedRevision: data.expectedRevision
|
|
12
|
+
}))));
|
|
7
13
|
export { cancelSingletonScheduledPublish };
|
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const changeSingletonStatus: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const changeSingletonStatus: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
11
|
+
expectedRevision: number;
|
|
9
12
|
singleton: string;
|
|
10
13
|
status: string;
|
|
11
14
|
}) => {
|
|
15
|
+
expectedRevision: number;
|
|
12
16
|
singleton: string;
|
|
13
17
|
status: string;
|
|
14
18
|
}, Promise<import("@byline/core").ChangeStatusResult>>;
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
3
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
4
|
+
import { withDocumentMutationErrors } from "../document-mutation-errors.js";
|
|
3
5
|
import { serialise } from "../serialise.js";
|
|
4
6
|
const changeSingletonStatus = createServerFn({
|
|
5
7
|
method: 'POST'
|
|
6
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>serialise(await getAdminBylineClient().singleton(data.singleton).changeStatus(data.status, {
|
|
11
|
+
expectedRevision: data.expectedRevision
|
|
12
|
+
}))));
|
|
7
13
|
export { changeSingletonStatus };
|
|
@@ -5,10 +5,16 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const confirmSingletonScheduledPublish: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const confirmSingletonScheduledPublish: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
11
|
+
expectedRevision: number;
|
|
9
12
|
singleton: string;
|
|
10
13
|
expectedVersionId: string;
|
|
11
14
|
}) => {
|
|
15
|
+
expectedRevision: number;
|
|
12
16
|
singleton: string;
|
|
13
17
|
expectedVersionId: string;
|
|
14
|
-
}, Promise<import("@byline/client").DocumentPublishScheduleInfo
|
|
18
|
+
}, Promise<import("@byline/client").DocumentPublishScheduleInfo & {
|
|
19
|
+
revision: number;
|
|
20
|
+
}>>;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
3
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
4
|
+
import { withDocumentMutationErrors } from "../document-mutation-errors.js";
|
|
3
5
|
import { serialise } from "../serialise.js";
|
|
4
6
|
const confirmSingletonScheduledPublish = createServerFn({
|
|
5
7
|
method: 'POST'
|
|
6
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>serialise(await getAdminBylineClient().singleton(data.singleton).confirmScheduledPublish({
|
|
11
|
+
expectedRevision: data.expectedRevision,
|
|
7
12
|
expectedVersionId: data.expectedVersionId
|
|
8
|
-
})));
|
|
13
|
+
}))));
|
|
9
14
|
export { confirmSingletonScheduledPublish };
|
|
@@ -5,12 +5,16 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const copySingletonToLocale: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const copySingletonToLocale: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
11
|
+
expectedRevision: number;
|
|
9
12
|
singleton: string;
|
|
10
13
|
sourceLocale: string;
|
|
11
14
|
targetLocale: string;
|
|
12
15
|
overwrite?: boolean;
|
|
13
16
|
}) => {
|
|
17
|
+
expectedRevision: number;
|
|
14
18
|
singleton: string;
|
|
15
19
|
sourceLocale: string;
|
|
16
20
|
targetLocale: string;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
3
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
3
4
|
import { toCommittedDocumentHookFailureResponse } from "../collections/save-outcome.js";
|
|
5
|
+
import { withDocumentMutationErrors } from "../document-mutation-errors.js";
|
|
4
6
|
import { serialise } from "../serialise.js";
|
|
5
7
|
const copySingletonToLocale = createServerFn({
|
|
6
8
|
method: 'POST'
|
|
7
|
-
}).
|
|
9
|
+
}).middleware([
|
|
10
|
+
adminSessionMiddleware
|
|
11
|
+
]).validator((input)=>input).handler(withDocumentMutationErrors(async ({ data })=>{
|
|
8
12
|
try {
|
|
9
13
|
return serialise(await getAdminBylineClient().singleton(data.singleton).copyToLocale({
|
|
14
|
+
expectedRevision: data.expectedRevision,
|
|
10
15
|
sourceLocale: data.sourceLocale,
|
|
11
16
|
targetLocale: data.targetLocale,
|
|
12
17
|
overwrite: data.overwrite
|
|
@@ -16,5 +21,5 @@ const copySingletonToLocale = createServerFn({
|
|
|
16
21
|
if (null != committedFailure) return committedFailure;
|
|
17
22
|
throw error;
|
|
18
23
|
}
|
|
19
|
-
});
|
|
24
|
+
}));
|
|
20
25
|
export { copySingletonToLocale };
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const findSingletonByVersion: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const findSingletonByVersion: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
singleton: string;
|
|
10
12
|
versionId: string;
|
|
11
13
|
locale?: string;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
3
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
3
4
|
import { serialise } from "../serialise.js";
|
|
4
5
|
const findSingletonByVersion = createServerFn({
|
|
5
6
|
method: 'GET'
|
|
6
|
-
}).
|
|
7
|
+
}).middleware([
|
|
8
|
+
adminSessionMiddleware
|
|
9
|
+
]).validator((input)=>input).handler(async ({ data })=>serialise(await getAdminBylineClient().singleton(data.singleton).findByVersion(data.versionId, {
|
|
7
10
|
locale: data.locale ?? 'all'
|
|
8
11
|
})));
|
|
9
12
|
export { findSingletonByVersion };
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) Infonomic Company Limited
|
|
7
7
|
*/
|
|
8
|
-
export declare const getSingletonScheduledPublish: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
8
|
+
export declare const getSingletonScheduledPublish: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
9
|
+
bylineExpectedSessionId: string | null;
|
|
10
|
+
}, undefined, undefined>], (input: {
|
|
9
11
|
singleton: string;
|
|
10
12
|
}) => {
|
|
11
13
|
singleton: string;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
3
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
3
4
|
import { serialise } from "../serialise.js";
|
|
4
5
|
const getSingletonScheduledPublish = createServerFn({
|
|
5
6
|
method: 'GET'
|
|
6
|
-
}).
|
|
7
|
+
}).middleware([
|
|
8
|
+
adminSessionMiddleware
|
|
9
|
+
]).validator((input)=>input).handler(async ({ data })=>serialise(await getAdminBylineClient().singleton(data.singleton).getScheduledPublish()));
|
|
7
10
|
export { getSingletonScheduledPublish };
|
|
@@ -17,8 +17,10 @@ export interface GetSingletonInput {
|
|
|
17
17
|
* - this shared host layer owns lenient reads, raw missing-locale values,
|
|
18
18
|
* relation-summary population, transport serialization, and preservation of
|
|
19
19
|
* restore warnings and locale metadata;
|
|
20
|
-
* - the route loader composes published-version
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* - the route loader composes the informational published-version badge, feature
|
|
21
|
+
* enablement, capability, and schedule aliases. Schedule state itself comes
|
|
22
|
+
* from the same editable snapshot as the source document.
|
|
23
23
|
*/
|
|
24
|
-
export declare const getSingleton: import("@tanstack/react-start").RequiredFetcher<
|
|
24
|
+
export declare const getSingleton: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
25
|
+
bylineExpectedSessionId: string | null;
|
|
26
|
+
}, undefined, undefined>], (input: GetSingletonInput) => GetSingletonInput, Promise<Omit<import("@byline/client").EditableDocument<Record<string, any>>, "path"> | null>>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
2
3
|
import { readSingletonDocument } from "../singleton-document-read.js";
|
|
3
4
|
const getSingleton = createServerFn({
|
|
4
5
|
method: 'GET'
|
|
5
|
-
}).
|
|
6
|
+
}).middleware([
|
|
7
|
+
adminSessionMiddleware
|
|
8
|
+
]).validator((input)=>input).handler(async ({ data })=>readSingletonDocument(data));
|
|
6
9
|
export { getSingleton };
|
|
@@ -13,7 +13,9 @@ export interface SingletonHistorySearchParams {
|
|
|
13
13
|
desc?: boolean;
|
|
14
14
|
locale?: string;
|
|
15
15
|
}
|
|
16
|
-
export declare const getSingletonHistory: import("@tanstack/react-start").RequiredFetcher<undefined,
|
|
16
|
+
export declare const getSingletonHistory: import("@tanstack/react-start").RequiredFetcher<readonly [import("@tanstack/react-start").FunctionMiddlewareAfterServer<{}, unknown, undefined, undefined, {
|
|
17
|
+
bylineExpectedSessionId: string | null;
|
|
18
|
+
}, undefined, undefined>], (input: {
|
|
17
19
|
singleton: string;
|
|
18
20
|
params?: SingletonHistorySearchParams;
|
|
19
21
|
}) => {
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
2
|
import { getAdminBylineClient } from "@byline/client/server";
|
|
3
|
+
import { adminSessionMiddleware } from "../../integrations/session-middleware.js";
|
|
3
4
|
import { resolveActorLabels } from "../actors.js";
|
|
4
5
|
import { serialise } from "../serialise.js";
|
|
5
6
|
const getSingletonHistory = createServerFn({
|
|
6
7
|
method: 'GET'
|
|
7
|
-
}).
|
|
8
|
+
}).middleware([
|
|
9
|
+
adminSessionMiddleware
|
|
10
|
+
]).validator((input)=>input).handler(async ({ data })=>{
|
|
8
11
|
const params = data.params ?? {};
|
|
9
12
|
const result = await getAdminBylineClient().singleton(data.singleton).history({
|
|
10
13
|
locale: params.locale ?? 'en',
|