@byline/host-tanstack-start 4.16.0 → 4.17.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 (146) hide show
  1. package/dist/admin-shell/chrome/admin-menu-drawer.js +14 -14
  2. package/dist/admin-shell/chrome/dashboard.js +41 -5
  3. package/dist/admin-shell/chrome/dashboard.test.d.ts +8 -0
  4. package/dist/admin-shell/collections/api.d.ts +2 -2
  5. package/dist/admin-shell/collections/create.d.ts +2 -2
  6. package/dist/admin-shell/collections/create.js +1 -0
  7. package/dist/admin-shell/collections/edit.d.ts +2 -2
  8. package/dist/admin-shell/collections/edit.js +1 -0
  9. package/dist/admin-shell/collections/history.d.ts +4 -12
  10. package/dist/admin-shell/collections/history.js +112 -303
  11. package/dist/admin-shell/collections/reindex-button.d.ts +1 -1
  12. package/dist/admin-shell/collections/reindex-button.js +5 -1
  13. package/dist/admin-shell/collections/restore-version-modal.d.ts +4 -4
  14. package/dist/admin-shell/collections/restore-version-modal.js +8 -24
  15. package/dist/admin-shell/collections/version-history.d.ts +72 -0
  16. package/dist/admin-shell/collections/version-history.js +259 -0
  17. package/dist/admin-shell/singletons/history.d.ts +19 -0
  18. package/dist/admin-shell/singletons/history.js +170 -0
  19. package/dist/admin-shell/singletons/history.test.d.ts +8 -0
  20. package/dist/admin-shell/singletons/preview-link.d.ts +12 -0
  21. package/dist/admin-shell/singletons/preview-link.js +54 -0
  22. package/dist/admin-shell/singletons/view-menu.d.ts +13 -0
  23. package/dist/admin-shell/singletons/view-menu.js +116 -0
  24. package/dist/admin-shell/singletons/view.d.ts +18 -0
  25. package/dist/admin-shell/singletons/view.js +259 -0
  26. package/dist/admin-shell/singletons/view.test.d.ts +8 -0
  27. package/dist/integrations/api-utils.d.ts +18 -4
  28. package/dist/integrations/api-utils.js +10 -3
  29. package/dist/routes/create-admin-dashboard-route.js +2 -2
  30. package/dist/routes/create-collection-api-route.js +3 -3
  31. package/dist/routes/create-collection-create-route.js +4 -3
  32. package/dist/routes/create-collection-edit-route.js +4 -3
  33. package/dist/routes/create-collection-history-route.js +4 -3
  34. package/dist/routes/create-collection-list-route.js +4 -3
  35. package/dist/routes/create-singleton-history-route.d.ts +8 -0
  36. package/dist/routes/create-singleton-history-route.js +99 -0
  37. package/dist/routes/create-singleton-route.d.ts +35 -0
  38. package/dist/routes/create-singleton-route.js +130 -0
  39. package/dist/routes/get-multi-collection-definition.d.ts +10 -0
  40. package/dist/routes/get-multi-collection-definition.js +6 -0
  41. package/dist/routes/get-singleton-definition.d.ts +10 -0
  42. package/dist/routes/get-singleton-definition.js +6 -0
  43. package/dist/routes/index.d.ts +2 -0
  44. package/dist/routes/index.js +2 -0
  45. package/dist/server-fns/actors.d.ts +16 -0
  46. package/dist/server-fns/actors.js +25 -0
  47. package/dist/server-fns/admin-document-presentation.d.ts +30 -0
  48. package/dist/server-fns/admin-document-presentation.js +32 -0
  49. package/dist/server-fns/collections/actors.d.ts +1 -10
  50. package/dist/server-fns/collections/actors.js +1 -25
  51. package/dist/server-fns/collections/get.js +9 -26
  52. package/dist/server-fns/collections/reorder.js +1 -1
  53. package/dist/server-fns/collections/scheduled-publication.js +2 -2
  54. package/dist/server-fns/collections/upload.js +3 -3
  55. package/dist/server-fns/collections/utils.d.ts +1 -7
  56. package/dist/server-fns/collections/utils.js +1 -4
  57. package/dist/server-fns/serialise.d.ts +14 -0
  58. package/dist/server-fns/serialise.js +4 -0
  59. package/dist/server-fns/singleton-document-read.d.ts +20 -0
  60. package/dist/server-fns/singleton-document-read.js +10 -0
  61. package/dist/server-fns/singletons/cancel-scheduled-publish.d.ts +12 -0
  62. package/dist/server-fns/singletons/cancel-scheduled-publish.js +7 -0
  63. package/dist/server-fns/singletons/change-status.d.ts +14 -0
  64. package/dist/server-fns/singletons/change-status.js +7 -0
  65. package/dist/server-fns/singletons/confirm-scheduled-publish.d.ts +14 -0
  66. package/dist/server-fns/singletons/confirm-scheduled-publish.js +9 -0
  67. package/dist/server-fns/singletons/copy-to-locale.d.ts +18 -0
  68. package/dist/server-fns/singletons/copy-to-locale.js +11 -0
  69. package/dist/server-fns/singletons/find-by-version.d.ts +16 -0
  70. package/dist/server-fns/singletons/find-by-version.js +9 -0
  71. package/dist/server-fns/singletons/get-scheduled-publish.d.ts +12 -0
  72. package/dist/server-fns/singletons/get-scheduled-publish.js +7 -0
  73. package/dist/server-fns/singletons/get.d.ts +24 -0
  74. package/dist/server-fns/singletons/get.js +6 -0
  75. package/dist/server-fns/singletons/history.d.ts +31 -0
  76. package/dist/server-fns/singletons/history.js +22 -0
  77. package/dist/server-fns/singletons/index.d.ts +19 -0
  78. package/dist/server-fns/singletons/index.js +12 -0
  79. package/dist/server-fns/singletons/restore-version.d.ts +14 -0
  80. package/dist/server-fns/singletons/restore-version.js +7 -0
  81. package/dist/server-fns/singletons/schedule-publish.d.ts +16 -0
  82. package/dist/server-fns/singletons/schedule-publish.js +10 -0
  83. package/dist/server-fns/singletons/unpublish.d.ts +12 -0
  84. package/dist/server-fns/singletons/unpublish.js +7 -0
  85. package/dist/server-fns/singletons/update.d.ts +14 -0
  86. package/dist/server-fns/singletons/update.js +14 -0
  87. package/dist/vitest-jsdom.test.d.ts +8 -0
  88. package/package.json +24 -18
  89. package/src/admin-shell/chrome/admin-menu-drawer.tsx +13 -13
  90. package/src/admin-shell/chrome/dashboard.test.tsx +199 -0
  91. package/src/admin-shell/chrome/dashboard.tsx +43 -9
  92. package/src/admin-shell/collections/api.tsx +2 -2
  93. package/src/admin-shell/collections/create.tsx +6 -2
  94. package/src/admin-shell/collections/edit.tsx +6 -2
  95. package/src/admin-shell/collections/history.module.css +1 -1
  96. package/src/admin-shell/collections/history.tsx +162 -442
  97. package/src/admin-shell/collections/reindex-button.tsx +4 -2
  98. package/src/admin-shell/collections/restore-version-modal.tsx +19 -25
  99. package/src/admin-shell/collections/version-history.tsx +349 -0
  100. package/src/admin-shell/singletons/history.test.tsx +407 -0
  101. package/src/admin-shell/singletons/history.tsx +185 -0
  102. package/src/admin-shell/singletons/preview-link.tsx +75 -0
  103. package/src/admin-shell/singletons/view-menu.tsx +136 -0
  104. package/src/admin-shell/singletons/view.test.tsx +400 -0
  105. package/src/admin-shell/singletons/view.tsx +351 -0
  106. package/src/integrations/api-utils.ts +34 -9
  107. package/src/routes/create-admin-dashboard-route.test.node.ts +70 -0
  108. package/src/routes/create-admin-dashboard-route.tsx +10 -2
  109. package/src/routes/create-collection-api-route.tsx +4 -4
  110. package/src/routes/create-collection-create-route.tsx +5 -8
  111. package/src/routes/create-collection-edit-route.tsx +5 -4
  112. package/src/routes/create-collection-history-route.tsx +5 -8
  113. package/src/routes/create-collection-list-route.tsx +5 -8
  114. package/src/routes/create-singleton-history-route.test.node.ts +148 -0
  115. package/src/routes/create-singleton-history-route.tsx +116 -0
  116. package/src/routes/create-singleton-route.test.node.ts +172 -0
  117. package/src/routes/create-singleton-route.tsx +176 -0
  118. package/src/routes/get-multi-collection-definition.ts +16 -0
  119. package/src/routes/get-singleton-definition.ts +16 -0
  120. package/src/routes/index.ts +2 -0
  121. package/src/server-fns/actors.ts +43 -0
  122. package/src/server-fns/admin-document-presentation.ts +78 -0
  123. package/src/server-fns/collections/actors.ts +1 -52
  124. package/src/server-fns/collections/get.ts +10 -49
  125. package/src/server-fns/collections/reorder.ts +1 -1
  126. package/src/server-fns/collections/scheduled-publication.ts +7 -1
  127. package/src/server-fns/collections/upload-singleton.test.node.ts +164 -0
  128. package/src/server-fns/collections/upload.ts +7 -3
  129. package/src/server-fns/collections/utils.ts +1 -9
  130. package/src/server-fns/serialise.ts +17 -0
  131. package/src/server-fns/singleton-document-read.ts +32 -0
  132. package/src/server-fns/singletons/cancel-scheduled-publish.ts +19 -0
  133. package/src/server-fns/singletons/change-status.ts +19 -0
  134. package/src/server-fns/singletons/confirm-scheduled-publish.ts +23 -0
  135. package/src/server-fns/singletons/copy-to-locale.ts +32 -0
  136. package/src/server-fns/singletons/find-by-version.ts +23 -0
  137. package/src/server-fns/singletons/get-scheduled-publish.ts +19 -0
  138. package/src/server-fns/singletons/get.ts +32 -0
  139. package/src/server-fns/singletons/history.ts +41 -0
  140. package/src/server-fns/singletons/index.ts +20 -0
  141. package/src/server-fns/singletons/restore-version.ts +19 -0
  142. package/src/server-fns/singletons/schedule-publish.ts +24 -0
  143. package/src/server-fns/singletons/singletons.test.node.ts +298 -0
  144. package/src/server-fns/singletons/unpublish.ts +19 -0
  145. package/src/server-fns/singletons/update.ts +31 -0
  146. package/src/vitest-jsdom.test.tsx +27 -0
@@ -5,9 +5,9 @@ import { ADMIN_PERMISSIONS_ABILITIES } from "@byline/admin/admin-permissions";
5
5
  import { ADMIN_ROLES_ABILITIES } from "@byline/admin/admin-roles";
6
6
  import { ADMIN_USERS_ABILITIES } from "@byline/admin/admin-users";
7
7
  import { ANALYTICS_ABILITIES } from "@byline/admin/analytics";
8
- import { collectionAbilityKey, getAdminConfig } from "@byline/core";
8
+ import { documentAbilityKey, getAdminConfig } from "@byline/core";
9
9
  import { useTranslation } from "@byline/i18n/react";
10
- import { ActivityIcon, AnalyticsIcon, CalendarIcon, HomeIcon, RolesIcon, SettingsSlidersIcon, Tooltip, UserIcon, UsersIcon } from "@byline/ui/react";
10
+ import { ActivityIcon, AnalyticsIcon, CalendarIcon, DashboardIcon, RolesIcon, SettingsSlidersIcon, Tooltip, UserIcon, UsersIcon } from "@byline/ui/react";
11
11
  import clsx from "clsx";
12
12
  import { useSwipeable } from "react-swipeable";
13
13
  import { useAbilities } from "../../integrations/abilities.js";
@@ -59,7 +59,7 @@ function AdminMenuDrawer({ analyticsEnabled = false, scheduledPublicationEnabled
59
59
  const canReadPermissions = has(ADMIN_PERMISSIONS_ABILITIES.read);
60
60
  const canReadActivity = has(ADMIN_ACTIVITY_ABILITIES.read);
61
61
  const canReadAnalytics = analyticsEnabled && has(ANALYTICS_ABILITIES.read);
62
- const canSeeScheduledPublications = scheduledPublicationEnabled && getAdminConfig().collections.some((collection)=>has(collectionAbilityKey(collection.path, 'changeStatus')) && has(collectionAbilityKey(collection.path, 'publish')));
62
+ const canSeeScheduledPublications = scheduledPublicationEnabled && getAdminConfig().collections.some((collection)=>has(documentAbilityKey(collection, 'changeStatus')) && has(documentAbilityKey(collection, 'publish')));
63
63
  const showAdminSection = canReadUsers || canReadRoles || canReadPermissions || canReadActivity;
64
64
  const handlers = useSwipeable({
65
65
  onSwipedLeft: ()=>{
@@ -91,23 +91,13 @@ function AdminMenuDrawer({ analyticsEnabled = false, scheduledPublicationEnabled
91
91
  /*#__PURE__*/ jsx(MenuItem, {
92
92
  to: getAdminRoutePath(),
93
93
  label: t('chrome.menu.dashboard'),
94
- icon: /*#__PURE__*/ jsx(HomeIcon, {
94
+ icon: /*#__PURE__*/ jsx(DashboardIcon, {
95
95
  width: "20px",
96
96
  height: "20px"
97
97
  }),
98
98
  pathname: pathname,
99
99
  compact: compact
100
100
  }),
101
- canSeeScheduledPublications && /*#__PURE__*/ jsx(MenuItem, {
102
- to: getAdminRoutePath('scheduled-publications'),
103
- label: t('chrome.menu.scheduledPublications'),
104
- icon: /*#__PURE__*/ jsx(CalendarIcon, {
105
- width: "18px",
106
- height: "18px"
107
- }),
108
- pathname: pathname,
109
- compact: compact
110
- }),
111
101
  canReadAnalytics && /*#__PURE__*/ jsx(MenuItem, {
112
102
  to: getAdminRoutePath('analytics'),
113
103
  label: t('chrome.menu.analytics'),
@@ -118,6 +108,16 @@ function AdminMenuDrawer({ analyticsEnabled = false, scheduledPublicationEnabled
118
108
  pathname: pathname,
119
109
  compact: compact
120
110
  }),
111
+ canSeeScheduledPublications && /*#__PURE__*/ jsx(MenuItem, {
112
+ to: getAdminRoutePath('scheduled-publications'),
113
+ label: t('chrome.menu.scheduledPublications'),
114
+ icon: /*#__PURE__*/ jsx(CalendarIcon, {
115
+ width: "18px",
116
+ height: "18px"
117
+ }),
118
+ pathname: pathname,
119
+ compact: compact
120
+ }),
121
121
  showAdminSection && /*#__PURE__*/ jsxs(Fragment, {
122
122
  children: [
123
123
  /*#__PURE__*/ jsx("li", {
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { filterReadableCollections, getAdminConfig, getWorkflowStatuses, groupCollectionsForAdmin } from "@byline/core";
2
+ import { filterReadableCollections, getAdminConfig, getWorkflowStatuses, groupCollectionsForAdmin, isSingleton } from "@byline/core";
3
3
  import { useTranslation } from "@byline/i18n/react";
4
4
  import { Card, Container, Section } from "@byline/ui/react";
5
5
  import clsx from "clsx";
@@ -119,6 +119,40 @@ function CollectionCard({ collection, stats }) {
119
119
  ]
120
120
  });
121
121
  }
122
+ function SingletonCard({ singleton }) {
123
+ const { t } = useTranslation('byline-admin');
124
+ const destination = getAdminRoutePath('singletons', '$singleton');
125
+ const params = {
126
+ singleton: singleton.path
127
+ };
128
+ return /*#__PURE__*/ jsx(Card, {
129
+ children: /*#__PURE__*/ jsx(Link, {
130
+ to: destination,
131
+ params: params,
132
+ className: clsx('byline-dashboard-card-link', dashboard_module.cardLink),
133
+ children: /*#__PURE__*/ jsx(Card.Header, {
134
+ children: /*#__PURE__*/ jsxs("div", {
135
+ className: clsx('byline-dashboard-card-header', dashboard_module.cardHeader),
136
+ children: [
137
+ /*#__PURE__*/ jsx(Card.Title, {
138
+ className: clsx('byline-dashboard-card-title', dashboard_module.cardTitle),
139
+ children: /*#__PURE__*/ jsx("span", {
140
+ className: clsx('byline-dashboard-title-text', dashboard_module.titleText),
141
+ children: singleton.label
142
+ })
143
+ }),
144
+ /*#__PURE__*/ jsx(Card.Description, {
145
+ className: "muted",
146
+ children: t("dashboard.collectionDescription", {
147
+ label: singleton.label
148
+ })
149
+ })
150
+ ]
151
+ })
152
+ })
153
+ })
154
+ });
155
+ }
122
156
  function AdminDashboard({ statsMap }) {
123
157
  const config = getAdminConfig();
124
158
  const { t } = useTranslation('byline-admin');
@@ -147,10 +181,12 @@ function AdminDashboard({ statsMap }) {
147
181
  }),
148
182
  /*#__PURE__*/ jsx("div", {
149
183
  className: clsx('byline-dashboard-grid', dashboard_module.grid),
150
- children: bucket.collections.map((collection)=>/*#__PURE__*/ jsx(CollectionCard, {
151
- collection: collection,
152
- stats: statsMap[collection.path]
153
- }, collection.path))
184
+ children: bucket.collections.map((resource)=>isSingleton(resource) ? /*#__PURE__*/ jsx(SingletonCard, {
185
+ singleton: resource
186
+ }, resource.path) : /*#__PURE__*/ jsx(CollectionCard, {
187
+ collection: resource,
188
+ stats: statsMap[resource.path]
189
+ }, resource.path))
154
190
  })
155
191
  ]
156
192
  }, bucket.name ?? '__ungrouped__'))
@@ -0,0 +1,8 @@
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 {};
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- import type { CollectionDefinition } from '@byline/core';
8
+ import type { MultiCollectionDefinition } from '@byline/core';
9
9
  import type { AnyCollectionSchemaTypes } from '@byline/core/zod-schemas';
10
10
  import type { ContentLocaleOption } from './view-menu.js';
11
11
  import 'react-json-view-lite/dist/index.css';
@@ -16,7 +16,7 @@ import 'react-json-view-lite/dist/index.css';
16
16
  * `.byline-api-head`, `.byline-api-title`, `.byline-api-viewer`.
17
17
  */
18
18
  export declare const ApiView: ({ collectionDefinition, initialData, locale, depth, contentLocales, defaultContentLocale, }: {
19
- collectionDefinition: CollectionDefinition;
19
+ collectionDefinition: MultiCollectionDefinition;
20
20
  initialData: AnyCollectionSchemaTypes['UpdateType'];
21
21
  /** Currently active locale from the route search param (undefined → all). */
22
22
  locale?: string;
@@ -5,9 +5,9 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- import type { CollectionAdminConfig, CollectionDefinition } from '@byline/core';
8
+ import type { CollectionAdminConfig, MultiCollectionDefinition } from '@byline/core';
9
9
  export declare const CreateView: ({ collectionDefinition, adminConfig, initialData, from, }: {
10
- collectionDefinition: CollectionDefinition;
10
+ collectionDefinition: MultiCollectionDefinition;
11
11
  adminConfig?: CollectionAdminConfig;
12
12
  initialData?: Record<string, any>;
13
13
  /** URL-encoded list search state to return to on cancel — see list-return-state.ts. */
@@ -72,6 +72,7 @@ const CreateView = ({ collectionDefinition, adminConfig, initialData, from })=>{
72
72
  status: 'failed',
73
73
  message: description
74
74
  });
75
+ throw err;
75
76
  }
76
77
  };
77
78
  return /*#__PURE__*/ jsx(Section, {
@@ -5,11 +5,11 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- import type { CollectionAdminConfig, CollectionDefinition } from '@byline/core';
8
+ import type { CollectionAdminConfig, MultiCollectionDefinition } from '@byline/core';
9
9
  import type { AnyCollectionSchemaTypes } from '@byline/core/zod-schemas';
10
10
  import type { ContentLocaleOption } from './view-menu.js';
11
11
  export declare const EditView: ({ collectionDefinition, adminConfig, initialData, locale, contentLocales, defaultContentLocale, returnSearch, }: {
12
- collectionDefinition: CollectionDefinition;
12
+ collectionDefinition: MultiCollectionDefinition;
13
13
  adminConfig?: CollectionAdminConfig;
14
14
  initialData: AnyCollectionSchemaTypes['UpdateType'];
15
15
  locale?: string;
@@ -632,6 +632,7 @@ const EditView = ({ collectionDefinition, adminConfig, initialData, locale, cont
632
632
  status: 'failed',
633
633
  message: description
634
634
  });
635
+ throw err;
635
636
  }
636
637
  };
637
638
  return /*#__PURE__*/ jsx(Section, {
@@ -5,28 +5,20 @@
5
5
  *
6
6
  * Copyright (c) Infonomic Company Limited
7
7
  */
8
- import type { CollectionAdminConfig, CollectionDefinition, WorkflowStatus } from '@byline/core';
8
+ import type { CollectionAdminConfig, MultiCollectionDefinition, WorkflowStatus } from '@byline/core';
9
9
  import type { AnyCollectionSchemaTypes } from '@byline/core/zod-schemas';
10
10
  import { type DocumentHistoryData } from './document-history.js';
11
11
  import type { ContentLocaleOption } from './view-menu.js';
12
12
  export declare const HistoryView: ({ collectionDefinition, adminConfig, data, auditLog, workflowStatuses, currentDocument, contentLocales, defaultContentLocale, }: {
13
- collectionDefinition: CollectionDefinition;
13
+ collectionDefinition: MultiCollectionDefinition;
14
14
  adminConfig?: CollectionAdminConfig;
15
15
  data: AnyCollectionSchemaTypes['HistoryType'] & {
16
- /**
17
- * Audit display labels (the acting user per version), resolved admin-side from each
18
- * version's `createdBy` id (see docs/07-auth-and-security/02-auditability.md — Workstream 1). Ids
19
- * absent from the map belong to deleted users.
20
- */
16
+ /** Admin-resolved acting-user labels keyed by raw version actor id. */
21
17
  actors?: Record<string, {
22
18
  label: string;
23
19
  }>;
24
20
  };
25
- /**
26
- * Document-grain audit log for the "Document history" tab (docs/07-auth-and-security/02-auditability.md —
27
- * Workstream 3): the non-versioned path / available-locales / status
28
- * changes and the deletion event, with admin-resolved actor labels.
29
- */
21
+ /** Collection-only document-grain audit log. */
30
22
  auditLog?: DocumentHistoryData;
31
23
  workflowStatuses?: WorkflowStatus[];
32
24
  currentDocument?: Record<string, unknown> | null;