@sanity/sdk 2.19.0 → 2.20.1

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 (62) hide show
  1. package/dist/_exports/_internal.d.ts +2 -2
  2. package/dist/_exports/_internal.js +196 -22
  3. package/dist/_exports/_internal.js.map +1 -1
  4. package/dist/authStore-CWTAuieY.js +1072 -0
  5. package/dist/authStore-CWTAuieY.js.map +1 -0
  6. package/dist/clientStore-CMzJ7XhZ.js +168 -0
  7. package/dist/clientStore-CMzJ7XhZ.js.map +1 -0
  8. package/dist/createGroqSearchFilter-B0NdA-EP.js +1222 -0
  9. package/dist/createGroqSearchFilter-B0NdA-EP.js.map +1 -0
  10. package/dist/getEnv-76AjZd_f.js +178 -0
  11. package/dist/getEnv-76AjZd_f.js.map +1 -0
  12. package/dist/index.d.ts +2 -2105
  13. package/dist/index.js +4140 -3870
  14. package/dist/index.js.map +1 -1
  15. package/dist/rolldown-runtime-vyAXikos.js +9 -0
  16. package/dist/telemetryManager-w-AMXtmz.js +127 -0
  17. package/dist/telemetryManager-w-AMXtmz.js.map +1 -0
  18. package/dist/utils-BMwA8Kg9.d.ts +3334 -0
  19. package/dist/utils-BMwA8Kg9.d.ts.map +1 -0
  20. package/dist/version-ByqNiWrK.js +9 -0
  21. package/dist/version-ByqNiWrK.js.map +1 -0
  22. package/package.json +12 -20
  23. package/src/_exports/_internal.ts +1 -0
  24. package/src/_exports/index.ts +30 -0
  25. package/src/comments/addonDatasetStore.test.ts +215 -0
  26. package/src/comments/addonDatasetStore.ts +249 -0
  27. package/src/comments/buildCommentThreads.test.ts +83 -0
  28. package/src/comments/buildCommentThreads.ts +54 -0
  29. package/src/comments/commentActions.test.ts +540 -0
  30. package/src/comments/commentActions.ts +555 -0
  31. package/src/comments/commentFieldPath.test.ts +40 -0
  32. package/src/comments/commentFieldPath.ts +44 -0
  33. package/src/comments/commentsConstants.ts +80 -0
  34. package/src/comments/commentsStore.test.ts +419 -0
  35. package/src/comments/commentsStore.ts +483 -0
  36. package/src/comments/normalizeComment.test.ts +116 -0
  37. package/src/comments/normalizeComment.ts +45 -0
  38. package/src/comments/observeComments.test.ts +193 -0
  39. package/src/comments/observeComments.ts +113 -0
  40. package/src/comments/reducers.test.ts +277 -0
  41. package/src/comments/reducers.ts +316 -0
  42. package/src/comments/types.ts +249 -0
  43. package/src/comments/weakenReferences.test.ts +47 -0
  44. package/src/comments/weakenReferences.ts +29 -0
  45. package/src/document/documentConstants.ts +8 -0
  46. package/src/document/documentStore.test.ts +98 -1
  47. package/src/document/documentStore.ts +36 -5
  48. package/src/document/patchOperations.test.ts +27 -0
  49. package/src/document/patchOperations.ts +10 -1
  50. package/src/document/permissions.test.ts +3 -1
  51. package/src/document/reducers.test.ts +133 -0
  52. package/src/document/reducers.ts +18 -3
  53. package/src/projection/projectionStore.test.ts +0 -8
  54. package/dist/_chunks-dts/createGroqSearchFilter.d.ts +0 -923
  55. package/dist/_chunks-dts/createGroqSearchFilter.d.ts.map +0 -1
  56. package/dist/_chunks-es/_internal.js +0 -134
  57. package/dist/_chunks-es/_internal.js.map +0 -1
  58. package/dist/_chunks-es/createGroqSearchFilter.js +0 -1590
  59. package/dist/_chunks-es/createGroqSearchFilter.js.map +0 -1
  60. package/dist/_chunks-es/telemetryManager.js +0 -93
  61. package/dist/_chunks-es/telemetryManager.js.map +0 -1
  62. package/dist/index.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-BMwA8Kg9.d.ts","names":[],"sources":["../src/config/authConfig.ts","../src/config/sanityConfig.ts","../src/auth/authMode.ts","../src/store/createSanityInstance.ts","../src/store/createStoreState.ts","../src/store/defineStore.ts","../src/agent/agentActions.ts","../src/auth/authStateType.ts","../src/project/organizationVerification.ts","../src/auth/getOrganizationVerificationState.ts","../src/store/createActionBinder.ts","../src/auth/handleAuthCallback.ts","../src/auth/logout.ts","../src/client/clientStore.ts","../src/comlink/types.ts","../src/comlink/controller/comlinkControllerStore.ts","../src/comlink/node/comlinkNodeStore.ts","../src/comlink/node/getNodeState.ts","../src/comments/types.ts","../src/comments/commentActions.ts","../src/store/createStateSourceAction.ts","../src/comments/commentsStore.ts","../src/config/handles.ts","../src/utils/logger.ts","../src/config/loggingConfig.ts","../src/datasets/datasets.ts","../src/document/actions.ts","../src/document/patchOperations.ts","../src/document/processMutations.ts","../src/document/permissions.ts","../src/document/sharedListener.ts","../src/document/documentStore.ts","../src/document/reducers.ts","../src/document/events.ts","../src/document/applyDocumentActions.ts","../src/document/processActions/releaseUtil.ts","../src/favorites/favorites.ts","../src/organization/organization.ts","../src/organizations/organizations.ts","../src/users/types.ts","../src/presence/types.ts","../src/presence/presenceStore.ts","../src/projection/types.ts","../src/preview/types.ts","../src/preview/getPreviewState.ts","../src/preview/previewConstants.ts","../src/preview/previewProjectionUtils.ts","../src/preview/resolvePreview.ts","../src/project/project.ts","../src/projection/getProjectionState.ts","../src/projection/resolveProjection.ts","../src/projects/projects.ts","../src/query/queryStore.ts","../src/releases/releasesStore.ts","../src/releases/getPerspectiveState.ts","../src/users/reducers.ts","../src/users/usersStore.ts","../src/utils/createFetcherStore.ts","../src/utils/createGroqSearchFilter.ts","../src/utils/defineIntent.ts","../src/utils/getCorsErrorProjectId.ts","../src/utils/isImportError.ts","../src/version.ts","../src/_exports/index.ts","../src/auth/authStore.ts","../src/auth/utils.ts"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { t as getEnv } from "./getEnv-76AjZd_f.js";
2
+ /**
3
+ * This version is provided by pkg-utils at build time
4
+ * @internal
5
+ */
6
+ const CORE_SDK_VERSION = getEnv("PKG_VERSION") || "2.20.1-development";
7
+ export { CORE_SDK_VERSION as t };
8
+
9
+ //# sourceMappingURL=version-ByqNiWrK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-ByqNiWrK.js","names":[],"sources":["../package.json","../src/version.ts"],"sourcesContent":["","import {version} from '../package.json'\nimport {getEnv} from './utils/getEnv'\n\n/**\n * This version is provided by pkg-utils at build time\n * @internal\n */\nexport const CORE_SDK_VERSION = getEnv('PKG_VERSION') || `${version}-development`\n"],"mappings":";;;;;ACOA,MAAa,mBAAmB,OAAO,aAAa,KAAK"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/sdk",
3
- "version": "2.19.0",
3
+ "version": "2.20.1",
4
4
  "private": false,
5
5
  "description": "Sanity SDK",
6
6
  "keywords": [
@@ -33,34 +33,26 @@
33
33
  "module": "./dist/index.js",
34
34
  "types": "./dist/index.d.ts",
35
35
  "exports": {
36
- ".": {
37
- "source": "./src/_exports/index.ts",
38
- "import": "./dist/index.js",
39
- "default": "./dist/index.js"
40
- },
36
+ ".": "./dist/index.js",
41
37
  "./package.json": "./package.json",
42
- "./_internal": {
43
- "source": "./src/_exports/_internal.ts",
44
- "import": "./dist/_exports/_internal.js",
45
- "default": "./dist/_exports/_internal.js"
46
- }
38
+ "./_internal": "./dist/_exports/_internal.js"
47
39
  },
48
40
  "publishConfig": {
49
41
  "access": "public"
50
42
  },
51
43
  "dependencies": {
52
44
  "@sanity/bifur-client": "^1.0.0",
53
- "@sanity/client": "^7.23.2",
54
- "@sanity/comlink": "^4.0.1",
45
+ "@sanity/client": "^7.26.2",
46
+ "@sanity/comlink": "^4.0.3",
55
47
  "@sanity/diff-match-patch": "^3.2.0",
56
48
  "@sanity/diff-patch": "^6.0.0",
57
49
  "@sanity/id-utils": "^1.0.0",
58
50
  "@sanity/image-url": "^2.1.1",
59
51
  "@sanity/json-match": "^1.0.5",
60
- "@sanity/message-protocol": "^0.23.0",
52
+ "@sanity/message-protocol": "^0.24.0",
61
53
  "@sanity/mutate": "^0.18.1",
62
54
  "@sanity/telemetry": "^1.1.0",
63
- "@sanity/types": "^6.5.0",
55
+ "@sanity/types": "^6.9.1",
64
56
  "groq": "3.88.1-typegen-experimental.0",
65
57
  "groq-js": "^2.0.0",
66
58
  "reselect": "^5.1.1",
@@ -69,20 +61,20 @@
69
61
  },
70
62
  "devDependencies": {
71
63
  "@sanity/browserslist-config": "^1.0.5",
72
- "@sanity/pkg-utils": "^10.9.2",
64
+ "@sanity/pkg-utils": "^12.1.0",
73
65
  "@types/node": "^24.13.3",
74
66
  "@vitest/coverage-v8": "^4.1.10",
75
67
  "eslint": "^10.6.0",
76
68
  "oxfmt": "^0.58.0",
77
- "rollup-plugin-visualizer": "^7.0.1",
69
+ "rolldown": "^1.2.3",
78
70
  "typescript": "^6.0.3",
79
71
  "vite": "^8.1.5",
80
72
  "vitest": "^4.1.10",
81
73
  "@repo/config-eslint": "0.0.0",
82
- "@repo/package.bundle": "3.82.0",
83
74
  "@repo/config-test": "0.0.1",
84
- "@repo/package.config": "0.0.1",
85
- "@repo/tsconfig": "0.0.1"
75
+ "@repo/package.bundle": "3.82.0",
76
+ "@repo/tsconfig": "0.0.1",
77
+ "@repo/package.config": "0.0.1"
86
78
  },
87
79
  "browserslist": "extends @sanity/browserslist-config",
88
80
  "scripts": {
@@ -6,6 +6,7 @@ export {
6
6
  getClientErrorApiType,
7
7
  isProjectUserNotFoundClientError,
8
8
  } from '../auth/utils'
9
+ export {getCommentsOptionsKey, parseCommentsOptionsKey} from '../comments/commentsStore' // only used for memoizing in React, not needed for actual functionality
9
10
  export {PREVIEW_PROJECTION} from '../preview/previewConstants'
10
11
  export {transformProjectionToPreview} from '../preview/previewProjectionUtils'
11
12
  export {getQueryKey, parseQueryKey} from '../query/queryStore' // only used for memoizing in React, not needed for actual functionality
@@ -69,6 +69,36 @@ export {
69
69
  type RequestNewTokenMessage,
70
70
  type WindowMessage,
71
71
  } from '../comlink/types'
72
+ export {
73
+ createComment,
74
+ type CreateCommentOptions,
75
+ removeComment,
76
+ type RemoveCommentOptions,
77
+ replyToComment,
78
+ type ReplyToCommentOptions,
79
+ setCommentStatus,
80
+ type SetCommentStatusOptions,
81
+ updateComment,
82
+ type UpdateCommentOptions,
83
+ } from '../comments/commentActions'
84
+ export {
85
+ type CommentsOptions,
86
+ getCommentsState,
87
+ getCommentThreadsState,
88
+ resolveComments,
89
+ type ResolveCommentsOptions,
90
+ resolveCommentThreads,
91
+ } from '../comments/commentsStore'
92
+ export {
93
+ type Comment,
94
+ type CommentLocalState,
95
+ type CommentMessage,
96
+ type CommentReaction,
97
+ type CommentStatus,
98
+ type CommentTextSelection,
99
+ type CommentTextSelectionItem,
100
+ type CommentThread,
101
+ } from '../comments/types'
72
102
  export {type AuthConfig, type AuthProvider} from '../config/authConfig'
73
103
  export {
74
104
  createDatasetHandle,
@@ -0,0 +1,215 @@
1
+ import {type SanityClient} from '@sanity/client'
2
+ import {BehaviorSubject, firstValueFrom, NEVER, of, throwError} from 'rxjs'
3
+ import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest'
4
+
5
+ import {getClient, getClientState} from '../client/clientStore'
6
+ import {createSanityInstance, type SanityInstance} from '../store/createSanityInstance'
7
+ import {type StateSource} from '../store/createStateSourceAction'
8
+ import {
9
+ getAddonDatasetState,
10
+ observeAddonDatasetClient,
11
+ provisionAddonDataset,
12
+ } from './addonDatasetStore'
13
+
14
+ vi.mock('../client/clientStore', () => ({
15
+ getClient: vi.fn(),
16
+ getClientState: vi.fn(),
17
+ }))
18
+
19
+ let instance: SanityInstance
20
+ let observableRequest: ReturnType<typeof vi.fn>
21
+ let request: ReturnType<typeof vi.fn>
22
+
23
+ function mockClient() {
24
+ observableRequest = vi.fn()
25
+ request = vi.fn()
26
+ const client = {observable: {request: observableRequest}, request} as unknown as SanityClient
27
+
28
+ vi.mocked(getClient).mockReturnValue(client)
29
+ vi.mocked(getClientState).mockReturnValue({
30
+ observable: of(client),
31
+ getCurrent: () => client,
32
+ subscribe: () => () => {},
33
+ } as unknown as StateSource<SanityClient>)
34
+
35
+ return client
36
+ }
37
+
38
+ /** Waits for discovery, which runs asynchronously when the store initializes. */
39
+ function resolvedAddonDataset() {
40
+ return firstValueFrom(getAddonDatasetState(instance, {}).observable.pipe())
41
+ }
42
+
43
+ beforeEach(() => {
44
+ vi.resetAllMocks()
45
+ instance = createSanityInstance({projectId: 'p', dataset: 'd'})
46
+ mockClient()
47
+ })
48
+
49
+ afterEach(() => {
50
+ instance.dispose()
51
+ })
52
+
53
+ describe('getAddonDatasetState', () => {
54
+ it('reports the dataset name once discovery answers', async () => {
55
+ observableRequest.mockReturnValue(of([{name: 'd-comments'}]))
56
+
57
+ await vi.waitFor(() =>
58
+ expect(getAddonDatasetState(instance, {}).getCurrent()).toBe('d-comments'),
59
+ )
60
+
61
+ expect(observableRequest).toHaveBeenCalledWith({
62
+ uri: '/projects/p/datasets?datasetProfile=comments&addonFor=d',
63
+ tag: 'comments.addon-dataset.list',
64
+ })
65
+ })
66
+
67
+ it('reports null when the project has no comments dataset', async () => {
68
+ observableRequest.mockReturnValue(of([]))
69
+
70
+ await vi.waitFor(() => expect(getAddonDatasetState(instance, {}).getCurrent()).toBe(null))
71
+ })
72
+
73
+ it('reports null rather than erroring when discovery is forbidden', async () => {
74
+ // A member without access to the addon dataset gets a 403. There is nothing
75
+ // for them to read, which is the same outcome as the dataset not existing.
76
+ observableRequest.mockReturnValue(throwError(() => ({statusCode: 403})))
77
+
78
+ await vi.waitFor(() => expect(getAddonDatasetState(instance, {}).getCurrent()).toBe(null))
79
+ })
80
+
81
+ it('recovers when a new authenticated client arrives after a transient failure', async () => {
82
+ const firstClient = {
83
+ observable: {request: vi.fn(() => throwError(() => ({statusCode: 500})))},
84
+ } as unknown as SanityClient
85
+ const secondClient = {
86
+ observable: {request: vi.fn(() => of([{name: 'd-comments'}]))},
87
+ } as unknown as SanityClient
88
+ const clients = new BehaviorSubject(firstClient)
89
+
90
+ vi.mocked(getClientState).mockReturnValue({
91
+ observable: clients,
92
+ getCurrent: () => clients.getValue(),
93
+ subscribe: () => () => {},
94
+ } as unknown as StateSource<SanityClient>)
95
+
96
+ const state = getAddonDatasetState(instance, {})
97
+ expect(state.getCurrent()).toBe(undefined)
98
+
99
+ clients.next(secondClient)
100
+
101
+ await vi.waitFor(() => expect(state.getCurrent()).toBe('d-comments'))
102
+ })
103
+
104
+ it('stays undefined while discovery is in flight', () => {
105
+ observableRequest.mockReturnValue(NEVER)
106
+ expect(getAddonDatasetState(instance, {}).getCurrent()).toBe(undefined)
107
+ })
108
+
109
+ it('throws for a resource that is not a dataset', () => {
110
+ expect(() => getAddonDatasetState(instance, {resource: {mediaLibraryId: 'ml-1'}})).toThrow(
111
+ /only supported for dataset resources/,
112
+ )
113
+ })
114
+ })
115
+
116
+ describe('provisionAddonDataset', () => {
117
+ it('returns the existing dataset without writing anything', async () => {
118
+ observableRequest.mockReturnValue(of([{name: 'd-comments'}]))
119
+ await resolvedAddonDataset()
120
+
121
+ await expect(provisionAddonDataset(instance, {})).resolves.toBe('d-comments')
122
+ expect(request).not.toHaveBeenCalled()
123
+ })
124
+
125
+ it('re-checks before creating, and adopts a dataset another user just made', async () => {
126
+ // Discovery said missing when this client started, but someone else has
127
+ // provisioned it since. Creating it again would fail.
128
+ observableRequest.mockReturnValueOnce(of([])).mockReturnValueOnce(of([{name: 'd-comments'}]))
129
+ await resolvedAddonDataset()
130
+
131
+ await expect(provisionAddonDataset(instance, {})).resolves.toBe('d-comments')
132
+ expect(request).not.toHaveBeenCalled()
133
+ })
134
+
135
+ it('creates the dataset when the re-check confirms it is missing', async () => {
136
+ observableRequest.mockReturnValue(of([]))
137
+ request.mockResolvedValue({datasetName: 'd-comments'})
138
+ await resolvedAddonDataset()
139
+
140
+ await expect(provisionAddonDataset(instance, {})).resolves.toBe('d-comments')
141
+ expect(request).toHaveBeenCalledWith({
142
+ uri: '/comments/d/setup',
143
+ method: 'POST',
144
+ tag: 'comments.addon-dataset.setup',
145
+ })
146
+ expect(getAddonDatasetState(instance, {}).getCurrent()).toBe('d-comments')
147
+ })
148
+
149
+ it('issues one POST for concurrent callers', async () => {
150
+ observableRequest.mockReturnValue(of([]))
151
+ request.mockResolvedValue({datasetName: 'd-comments'})
152
+ await resolvedAddonDataset()
153
+
154
+ const results = await Promise.all([
155
+ provisionAddonDataset(instance, {}),
156
+ provisionAddonDataset(instance, {}),
157
+ provisionAddonDataset(instance, {}),
158
+ ])
159
+
160
+ expect(results).toEqual(['d-comments', 'd-comments', 'd-comments'])
161
+ expect(request).toHaveBeenCalledTimes(1)
162
+ })
163
+
164
+ it('throws when setup returns no dataset name', async () => {
165
+ observableRequest.mockReturnValue(of([]))
166
+ request.mockResolvedValue({})
167
+ await resolvedAddonDataset()
168
+
169
+ await expect(provisionAddonDataset(instance, {})).rejects.toThrow(/no dataset name/)
170
+ })
171
+
172
+ it('allows a retry after a failure', async () => {
173
+ observableRequest.mockReturnValue(of([]))
174
+ request.mockRejectedValueOnce(new Error('boom')).mockResolvedValue({datasetName: 'd-comments'})
175
+ await resolvedAddonDataset()
176
+
177
+ await expect(provisionAddonDataset(instance, {})).rejects.toThrow('boom')
178
+ await expect(provisionAddonDataset(instance, {})).resolves.toBe('d-comments')
179
+ })
180
+ })
181
+
182
+ describe('observeAddonDatasetClient', () => {
183
+ it('does not report a missing dataset while discovery is still in flight', () => {
184
+ observableRequest.mockReturnValue(NEVER)
185
+ const values: Array<SanityClient | null> = []
186
+
187
+ const subscription = observeAddonDatasetClient(instance, {}).subscribe((value) =>
188
+ values.push(value),
189
+ )
190
+
191
+ expect(values).toEqual([])
192
+ subscription.unsubscribe()
193
+ })
194
+
195
+ it('emits null while the project has no comments dataset', async () => {
196
+ observableRequest.mockReturnValue(of([]))
197
+
198
+ await expect(firstValueFrom(observeAddonDatasetClient(instance, {}))).resolves.toBe(null)
199
+ })
200
+
201
+ it('emits a client once the dataset is known', async () => {
202
+ const client = mockClient()
203
+ observableRequest.mockReturnValue(of([{name: 'd-comments'}]))
204
+
205
+ await vi.waitFor(async () =>
206
+ expect(await firstValueFrom(observeAddonDatasetClient(instance, {}))).toBe(client),
207
+ )
208
+
209
+ expect(getClientState).toHaveBeenCalledWith(instance, {
210
+ apiVersion: 'v2025-05-06',
211
+ projectId: 'p',
212
+ dataset: 'd-comments',
213
+ })
214
+ })
215
+ })
@@ -0,0 +1,249 @@
1
+ import {type SanityClient} from '@sanity/client'
2
+ import {
3
+ catchError,
4
+ distinctUntilChanged,
5
+ EMPTY,
6
+ filter,
7
+ firstValueFrom,
8
+ map,
9
+ type Observable,
10
+ of,
11
+ switchMap,
12
+ take,
13
+ } from 'rxjs'
14
+
15
+ import {getClient, getClientState} from '../client/clientStore'
16
+ import {
17
+ type DatasetResource,
18
+ type DocumentResource,
19
+ isDatasetResource,
20
+ } from '../config/sanityConfig'
21
+ import {bindActionByResource, type BoundResourceKey} from '../store/createActionBinder'
22
+ import {type SanityInstance} from '../store/createSanityInstance'
23
+ import {createStateSourceAction, type StateSource} from '../store/createStateSourceAction'
24
+ import {defineStore, type StoreContext} from '../store/defineStore'
25
+ import {
26
+ ADDON_DATASET_API_VERSION,
27
+ ADDON_DATASET_PROFILE,
28
+ COMMENTS_API_VERSION,
29
+ } from './commentsConstants'
30
+
31
+ interface AddonDatasetStoreState {
32
+ /**
33
+ * `unknown` until discovery answers. `missing` means the project has no
34
+ * comments dataset yet, which is the normal state until someone writes a
35
+ * first comment.
36
+ */
37
+ status: 'unknown' | 'resolved' | 'missing'
38
+ datasetName?: string
39
+ /** In flight provisioning, so concurrent first comments issue one POST. */
40
+ provisioning?: Promise<string>
41
+ }
42
+
43
+ /**
44
+ * Comments need a project and a dataset. There is nowhere to put them for a
45
+ * media library or a canvas, and no Studio to interoperate with either.
46
+ *
47
+ * @internal
48
+ */
49
+ export function assertDatasetResource(resource: DocumentResource): DatasetResource {
50
+ if (!isDatasetResource(resource)) {
51
+ throw new Error(
52
+ `Comments are only supported for dataset resources, received: ${JSON.stringify(resource)}`,
53
+ )
54
+ }
55
+ return resource
56
+ }
57
+
58
+ function isMissingOrForbidden(error: unknown): boolean {
59
+ if (typeof error !== 'object' || error === null || !('statusCode' in error)) return false
60
+ const {statusCode} = error as {statusCode?: unknown}
61
+ return statusCode === 403 || statusCode === 404
62
+ }
63
+
64
+ function requestAddonDataset(
65
+ client: SanityClient,
66
+ {projectId, dataset}: DatasetResource,
67
+ ): Observable<string | undefined> {
68
+ return client.observable
69
+ .request<{name: string}[] | undefined>({
70
+ uri: `/projects/${projectId}/datasets?datasetProfile=${ADDON_DATASET_PROFILE}&addonFor=${dataset}`,
71
+ tag: 'comments.addon-dataset.list',
72
+ })
73
+ .pipe(map((datasets) => datasets?.[0]?.name))
74
+ }
75
+
76
+ function discover(
77
+ instance: SanityInstance,
78
+ resource: DatasetResource,
79
+ ): Observable<string | undefined> {
80
+ return getClientState(instance, {
81
+ apiVersion: ADDON_DATASET_API_VERSION,
82
+ projectId: resource.projectId,
83
+ useProjectHostname: true,
84
+ }).observable.pipe(
85
+ switchMap((client) =>
86
+ requestAddonDataset(client, resource).pipe(
87
+ // A missing dataset and a dataset this user cannot see both mean there
88
+ // are no comments to read. Transient failures stay pending so a new
89
+ // authenticated client can retry discovery.
90
+ catchError((error: unknown) => (isMissingOrForbidden(error) ? of(undefined) : EMPTY)),
91
+ ),
92
+ ),
93
+ )
94
+ }
95
+
96
+ async function discoverOnce(
97
+ instance: SanityInstance,
98
+ resource: DatasetResource,
99
+ ): Promise<string | undefined> {
100
+ const client = await firstValueFrom(
101
+ getClientState(instance, {
102
+ apiVersion: ADDON_DATASET_API_VERSION,
103
+ projectId: resource.projectId,
104
+ useProjectHostname: true,
105
+ }).observable.pipe(take(1)),
106
+ )
107
+
108
+ try {
109
+ return await firstValueFrom(requestAddonDataset(client, resource))
110
+ } catch (error) {
111
+ if (isMissingOrForbidden(error)) return undefined
112
+ throw error
113
+ }
114
+ }
115
+
116
+ const addonDatasetStore = defineStore<AddonDatasetStoreState, BoundResourceKey>({
117
+ name: 'CommentsAddonDataset',
118
+ getInitialState: () => ({status: 'unknown'}),
119
+ initialize: ({instance, state, key}) => {
120
+ const resource = assertDatasetResource(key.resource)
121
+
122
+ const subscription = discover(instance, resource).subscribe((datasetName) =>
123
+ state.set(
124
+ 'setAddonDataset',
125
+ datasetName ? {status: 'resolved', datasetName} : {status: 'missing'},
126
+ ),
127
+ )
128
+
129
+ return () => subscription.unsubscribe()
130
+ },
131
+ })
132
+
133
+ /**
134
+ * The addon dataset's name: `undefined` while discovery is in flight, `null`
135
+ * when the project has none yet.
136
+ *
137
+ * @internal
138
+ */
139
+ export const getAddonDatasetState: (
140
+ instance: SanityInstance,
141
+ options: {resource?: DocumentResource},
142
+ ) => StateSource<string | null | undefined> = bindActionByResource(
143
+ addonDatasetStore,
144
+ createStateSourceAction(({state}: {state: AddonDatasetStoreState}) => {
145
+ if (state.status === 'unknown') return undefined
146
+ return state.datasetName ?? null
147
+ }),
148
+ )
149
+
150
+ /**
151
+ * Resolves the addon dataset, creating it if the project has none.
152
+ *
153
+ * Safe to call concurrently: the first call owns the request and later ones
154
+ * await the same promise. Provisioning is a one-time, project-wide side effect,
155
+ * so this is only called from the write path, when we know there is a comment
156
+ * to store.
157
+ *
158
+ * @internal
159
+ */
160
+ export const provisionAddonDataset: (
161
+ instance: SanityInstance,
162
+ options: {resource?: DocumentResource},
163
+ ) => Promise<string> = bindActionByResource(
164
+ addonDatasetStore,
165
+ ({instance, state, key}: StoreContext<AddonDatasetStoreState, BoundResourceKey>) => {
166
+ const current = state.get()
167
+ if (current.datasetName) return Promise.resolve(current.datasetName)
168
+ if (current.provisioning) return current.provisioning
169
+
170
+ const resource = assertDatasetResource(key.resource)
171
+
172
+ const provisioning = (async () => {
173
+ // Another user may have provisioned it since this client started up, in
174
+ // which case creating it again would fail. Ask before writing.
175
+ const existing = await discoverOnce(instance, resource)
176
+ if (existing) return existing
177
+
178
+ const client = getClient(instance, {
179
+ apiVersion: ADDON_DATASET_API_VERSION,
180
+ projectId: resource.projectId,
181
+ useProjectHostname: true,
182
+ })
183
+
184
+ const response = await client.request<{datasetName?: string} | undefined>({
185
+ uri: `/comments/${resource.dataset}/setup`,
186
+ method: 'POST',
187
+ tag: 'comments.addon-dataset.setup',
188
+ })
189
+
190
+ if (!response?.datasetName) {
191
+ throw new Error('Creating the comments addon dataset returned no dataset name.')
192
+ }
193
+
194
+ return response.datasetName
195
+ })()
196
+ .then((datasetName) => {
197
+ state.set('setAddonDataset', {
198
+ status: 'resolved',
199
+ datasetName,
200
+ provisioning: undefined,
201
+ })
202
+ return datasetName
203
+ })
204
+ .catch((error: unknown) => {
205
+ // Clear the in-flight promise so a retry is not permanently stuck on
206
+ // this failure.
207
+ state.set('clearProvisioning', {provisioning: undefined})
208
+ throw error
209
+ })
210
+
211
+ state.set('startProvisioning', {provisioning})
212
+
213
+ return provisioning
214
+ },
215
+ )
216
+
217
+ /**
218
+ * A client pointed at the addon dataset, or `null` while the project has none.
219
+ *
220
+ * Emits again whenever the dataset is discovered or provisioned, and whenever
221
+ * the auth token changes. Long-lived readers must follow it rather than holding
222
+ * a client, because the client store drops every cached client on a token
223
+ * change.
224
+ *
225
+ * @internal
226
+ */
227
+ export const observeAddonDatasetClient: (
228
+ instance: SanityInstance,
229
+ options: {resource?: DocumentResource},
230
+ ) => Observable<SanityClient | null> = bindActionByResource(
231
+ addonDatasetStore,
232
+ ({instance, key}: StoreContext<AddonDatasetStoreState, BoundResourceKey>) => {
233
+ const {projectId} = assertDatasetResource(key.resource)
234
+
235
+ return getAddonDatasetState(instance, {resource: key.resource}).observable.pipe(
236
+ distinctUntilChanged(),
237
+ filter((datasetName): datasetName is string | null => datasetName !== undefined),
238
+ switchMap((datasetName) =>
239
+ typeof datasetName === 'string'
240
+ ? getClientState(instance, {
241
+ apiVersion: COMMENTS_API_VERSION,
242
+ projectId,
243
+ dataset: datasetName,
244
+ }).observable
245
+ : of(null),
246
+ ),
247
+ )
248
+ },
249
+ )