@sanity/sdk 3.2.0 → 3.3.0-rc.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 (34) hide show
  1. package/dist/_exports/_internal.d.ts +3 -3
  2. package/dist/_exports/_internal.js +4 -4
  3. package/dist/_exports/agent.d.ts +1 -1
  4. package/dist/_exports/agent.js +1 -1
  5. package/dist/_exports/comlink.d.ts +1 -1
  6. package/dist/_exports/dashboard.d.ts +1 -1
  7. package/dist/{authStore-BO2vch3I.d.ts → authStore-7dZCfKUq.d.ts} +20 -5
  8. package/dist/authStore-7dZCfKUq.d.ts.map +1 -0
  9. package/dist/{clientStore-BI4D8HhJ.js → clientStore-QDrJNTM4.js} +14 -10
  10. package/dist/clientStore-QDrJNTM4.js.map +1 -0
  11. package/dist/{createSanityInstance-BQIqyGLX.d.ts → createSanityInstance--Lrldto8.d.ts} +6 -3
  12. package/dist/createSanityInstance--Lrldto8.d.ts.map +1 -0
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.js +182 -142
  15. package/dist/index.js.map +1 -1
  16. package/dist/{topicStore-D0WqhQGF.d.ts → topicStore-CAnJsiqI.d.ts} +2 -2
  17. package/dist/{topicStore-D0WqhQGF.d.ts.map → topicStore-CAnJsiqI.d.ts.map} +1 -1
  18. package/dist/{version-BcRmCiYi.js → version-CYs30C7v.js} +3 -3
  19. package/dist/{version-BcRmCiYi.js.map → version-CYs30C7v.js.map} +1 -1
  20. package/package.json +3 -3
  21. package/src/auth/authStore.test.ts +18 -0
  22. package/src/auth/authStore.ts +4 -1
  23. package/src/auth/handleAuthCallback.test.ts +33 -0
  24. package/src/auth/handleAuthCallback.ts +11 -1
  25. package/src/auth/logout.test.ts +9 -1
  26. package/src/auth/logout.ts +18 -1
  27. package/src/auth/oauth/oauthActions.test.ts +178 -1
  28. package/src/auth/oauth/oauthActions.ts +111 -46
  29. package/src/auth/oauth/oauthAuth.test.ts +23 -0
  30. package/src/auth/oauth/oauthAuth.ts +18 -8
  31. package/src/config/authConfig.ts +5 -2
  32. package/dist/authStore-BO2vch3I.d.ts.map +0 -1
  33. package/dist/clientStore-BI4D8HhJ.js.map +0 -1
  34. package/dist/createSanityInstance-BQIqyGLX.d.ts.map +0 -1
@@ -17,6 +17,25 @@ export const OAUTH_VERIFIER_KEY = '__sanity_oauth_verifier'
17
17
  /** sessionStorage key for the CSRF `state` value. */
18
18
  export const OAUTH_STATE_KEY = '__sanity_oauth_state'
19
19
 
20
+ /** sessionStorage key for the location to return to after the callback. */
21
+ export const OAUTH_RETURN_TO_KEY = '__sanity_oauth_return_to'
22
+
23
+ const OAUTH_CALLBACK_PARAMS = ['code', 'state', 'error', 'error_description']
24
+
25
+ /** Strips the OAuth callback params from a URL. */
26
+ function stripOAuthParams(href: string): string {
27
+ const url = new URL(href, DEFAULT_BASE)
28
+ for (const param of OAUTH_CALLBACK_PARAMS) url.searchParams.delete(param)
29
+ return url.toString()
30
+ }
31
+
32
+ /** Whether `href` is the registered redirect URI (origin + pathname; query and hash ignored). */
33
+ function isCallbackRoute(href: string, redirectUri: string): boolean {
34
+ const current = new URL(href, DEFAULT_BASE)
35
+ const redirect = new URL(redirectUri, DEFAULT_BASE)
36
+ return current.origin === redirect.origin && current.pathname === redirect.pathname
37
+ }
38
+
20
39
  interface TokenEndpointResponse {
21
40
  access_token: string
22
41
  token_type: string
@@ -29,6 +48,19 @@ function getResourceIndicator(organizationId: string): string {
29
48
  return `urn:io.sanity:organization:${organizationId}`
30
49
  }
31
50
 
51
+ /**
52
+ * Appends the RFC 8707 `resource` indicator to `params` when an organisation
53
+ * id is configured. Without one, the request is left unscoped.
54
+ */
55
+ function appendResourceIndicator(
56
+ params: URLSearchParams,
57
+ oauth: NonNullable<AuthOptions['oauth']>,
58
+ ): void {
59
+ if (oauth.organizationId) {
60
+ params.append('resource', getResourceIndicator(oauth.organizationId))
61
+ }
62
+ }
63
+
32
64
  /**
33
65
  * Serialises tokens for storage, converting `expiresAt` to an ISO string.
34
66
  *
@@ -70,6 +102,21 @@ function createOAuthClient(options: AuthOptions): SanityClient {
70
102
  })
71
103
  }
72
104
 
105
+ /** POSTs form-encoded params to the OAuth token endpoint. */
106
+ function postTokenRequest(
107
+ client: SanityClient,
108
+ params: URLSearchParams,
109
+ tag: string,
110
+ ): Promise<TokenEndpointResponse> {
111
+ return client.request<TokenEndpointResponse>({
112
+ method: 'POST',
113
+ url: '/auth/oauth/token',
114
+ headers: {'content-type': 'application/x-www-form-urlencoded'},
115
+ body: params.toString(),
116
+ tag,
117
+ })
118
+ }
119
+
73
120
  /** Converts a token endpoint response to the {@link OAuthTokens} shape. */
74
121
  function toOAuthTokens(response: TokenEndpointResponse): OAuthTokens {
75
122
  return {
@@ -99,6 +146,17 @@ export const startOAuthAuthorization = bindActionGlobally(authStore, async ({sta
99
146
  const session = typeof sessionStorage !== 'undefined' ? sessionStorage : undefined
100
147
  session?.setItem(OAUTH_VERIFIER_KEY, codeVerifier)
101
148
  session?.setItem(OAUTH_STATE_KEY, oauthState)
149
+ // The redirect URI must match the registered one exactly, so the current
150
+ // location (deep link) is stashed here and restored by the callback. OAuth
151
+ // params are only stripped when we are already on the callback route, so
152
+ // legitimate app params like `?state=draft` survive the round trip.
153
+ const currentHref = getDefaultLocation()
154
+ if (currentHref !== DEFAULT_BASE) {
155
+ const returnTo = isCallbackRoute(currentHref, options.oauth.redirectUri)
156
+ ? stripOAuthParams(currentHref)
157
+ : currentHref
158
+ session?.setItem(OAUTH_RETURN_TO_KEY, returnTo)
159
+ }
102
160
 
103
161
  const authorizeUrl = new URL(
104
162
  '/v1/auth/oauth/authorize',
@@ -110,7 +168,7 @@ export const startOAuthAuthorization = bindActionGlobally(authStore, async ({sta
110
168
  authorizeUrl.searchParams.set('state', oauthState)
111
169
  authorizeUrl.searchParams.set('code_challenge', codeChallenge)
112
170
  authorizeUrl.searchParams.set('code_challenge_method', 'S256')
113
- authorizeUrl.searchParams.append('resource', getResourceIndicator(options.oauth.organizationId))
171
+ appendResourceIndicator(authorizeUrl.searchParams, options.oauth)
114
172
 
115
173
  logger.info('Starting OAuth authorization')
116
174
  if (typeof window !== 'undefined' && typeof window.location?.assign === 'function') {
@@ -123,9 +181,14 @@ export const startOAuthAuthorization = bindActionGlobally(authStore, async ({sta
123
181
  * responses, exchanges the authorization `code` for tokens, persists them, and
124
182
  * transitions to `LOGGED_IN`.
125
183
  *
126
- * Returns the callback URL cleaned of OAuth params (for the caller to
127
- * `history.replaceState`) when a callback was processed, or `false` when there
128
- * was nothing to handle (no code, or an exchange already in progress).
184
+ * Returns the URL for the caller to `history.replaceState` to when a callback
185
+ * was processed: on success, the same-origin location the user was on when
186
+ * the flow started (if any), otherwise the callback URL cleaned of OAuth
187
+ * params. Returns `false` when there was nothing to handle (no code, or an
188
+ * exchange already in progress). A callback that fails validation while a
189
+ * session is already `LOGGED_IN` (e.g. a remount before the params were
190
+ * stripped) is ignored with a warning and still returns the cleaned URL, so a
191
+ * string result does not imply an exchange ran.
129
192
  *
130
193
  * @public
131
194
  */
@@ -152,22 +215,29 @@ export const handleOAuthCallback = bindActionGlobally(
152
215
 
153
216
  const session = typeof sessionStorage !== 'undefined' ? sessionStorage : undefined
154
217
 
155
- const cleanedUrlObj = new URL(locationHref, DEFAULT_BASE)
156
- for (const param of ['code', 'state', 'error', 'error_description']) {
157
- cleanedUrlObj.searchParams.delete(param)
218
+ const cleanedUrl = stripOAuthParams(locationHref)
219
+
220
+ // Callback failures move to ERROR, unless a session is already
221
+ // established: a stale callback URL (e.g. remount before the params were
222
+ // stripped, after the artifacts were cleared) or a denied re-authorization
223
+ // must not clobber LOGGED_IN.
224
+ const rejectCallback = (name: string, message: string): string => {
225
+ if (authState.type === AuthStateType.LOGGED_IN) {
226
+ // Leave PKCE artifacts alone: a re-authorization may be in flight.
227
+ logger.warn(`${message} — ignoring callback, session already established`)
228
+ return cleanedUrl
229
+ }
230
+ logger.error(`${message} — rejecting callback`)
231
+ clearOAuthArtifacts(session)
232
+ state.set(name, {authState: {type: AuthStateType.ERROR, error: new Error(message)}})
233
+ return cleanedUrl
158
234
  }
159
- const cleanedUrl = cleanedUrlObj.toString()
160
235
 
161
236
  if (error) {
162
- logger.warn('OAuth callback returned an error', {error, errorDescription})
163
- clearOAuthArtifacts(session)
164
- state.set('oauthCallbackError', {
165
- authState: {
166
- type: AuthStateType.ERROR,
167
- error: new Error(errorDescription ? `${error}: ${errorDescription}` : error),
168
- },
169
- })
170
- return cleanedUrl
237
+ return rejectCallback(
238
+ 'oauthCallbackError',
239
+ errorDescription ? `${error}: ${errorDescription}` : error,
240
+ )
171
241
  }
172
242
 
173
243
  if (!code) {
@@ -177,22 +247,12 @@ export const handleOAuthCallback = bindActionGlobally(
177
247
 
178
248
  const storedState = session?.getItem(OAUTH_STATE_KEY) ?? null
179
249
  if (!returnedState || !storedState || returnedState !== storedState) {
180
- logger.error('OAuth state mismatch — rejecting callback')
181
- clearOAuthArtifacts(session)
182
- state.set('oauthStateMismatch', {
183
- authState: {type: AuthStateType.ERROR, error: new Error('OAuth state mismatch')},
184
- })
185
- return cleanedUrl
250
+ return rejectCallback('oauthStateMismatch', 'OAuth state mismatch')
186
251
  }
187
252
 
188
253
  const codeVerifier = session?.getItem(OAUTH_VERIFIER_KEY) ?? null
189
254
  if (!codeVerifier) {
190
- logger.error('OAuth code verifier missing — cannot exchange code')
191
- clearOAuthArtifacts(session)
192
- state.set('oauthVerifierMissing', {
193
- authState: {type: AuthStateType.ERROR, error: new Error('OAuth code verifier missing')},
194
- })
195
- return cleanedUrl
255
+ return rejectCallback('oauthVerifierMissing', 'OAuth code verifier missing')
196
256
  }
197
257
 
198
258
  logger.info('Exchanging OAuth code for tokens')
@@ -208,18 +268,13 @@ export const handleOAuthCallback = bindActionGlobally(
208
268
  code_verifier: codeVerifier,
209
269
  redirect_uri: options.oauth.redirectUri,
210
270
  client_id: options.oauth.clientId,
211
- resource: getResourceIndicator(options.oauth.organizationId),
212
- })
213
- const response = await client.request<TokenEndpointResponse>({
214
- method: 'POST',
215
- url: '/auth/oauth/token',
216
- headers: {'content-type': 'application/x-www-form-urlencoded'},
217
- body: params.toString(),
218
- tag: 'oauth.token',
219
271
  })
272
+ appendResourceIndicator(params, options.oauth)
273
+ const response = await postTokenRequest(client, params, 'oauth.token')
220
274
 
221
275
  const tokens = toOAuthTokens(response)
222
276
  options.storageArea?.setItem(options.storageKey, serializeTokens(tokens))
277
+ const returnTo = getSameOriginReturnTo(session, options.oauth.redirectUri)
223
278
  clearOAuthArtifacts(session)
224
279
 
225
280
  logger.info('OAuth tokens obtained, user logged in')
@@ -227,7 +282,7 @@ export const handleOAuthCallback = bindActionGlobally(
227
282
  authState: createLoggedInAuthState(tokens.accessToken, null),
228
283
  oauthTokens: tokens,
229
284
  })
230
- return cleanedUrl
285
+ return returnTo ?? cleanedUrl
231
286
  } catch (exchangeError) {
232
287
  logger.error('Failed to exchange OAuth code for tokens', {error: exchangeError})
233
288
  clearOAuthArtifacts(session)
@@ -296,15 +351,9 @@ async function doRefreshOAuthTokens({
296
351
  grant_type: 'refresh_token',
297
352
  refresh_token: current.refreshToken,
298
353
  client_id: options.oauth.clientId,
299
- resource: getResourceIndicator(options.oauth.organizationId),
300
- })
301
- const response = await client.request<TokenEndpointResponse>({
302
- method: 'POST',
303
- url: '/auth/oauth/token',
304
- headers: {'content-type': 'application/x-www-form-urlencoded'},
305
- body: params.toString(),
306
- tag: 'oauth.refresh',
307
354
  })
355
+ appendResourceIndicator(params, options.oauth)
356
+ const response = await postTokenRequest(client, params, 'oauth.refresh')
308
357
 
309
358
  const tokens = toOAuthTokens(response)
310
359
  if (!tokens.refreshToken) tokens.refreshToken = current.refreshToken
@@ -386,4 +435,20 @@ export const getOAuthTokensState = bindActionGlobally(
386
435
  function clearOAuthArtifacts(session: Storage | undefined): void {
387
436
  session?.removeItem(OAUTH_VERIFIER_KEY)
388
437
  session?.removeItem(OAUTH_STATE_KEY)
438
+ session?.removeItem(OAUTH_RETURN_TO_KEY)
439
+ }
440
+
441
+ /**
442
+ * Reads the stashed pre-authorize location, only honouring it when it shares
443
+ * the registered redirect URI's origin so a tampered value cannot redirect
444
+ * off-site. (`origin` includes the scheme, so non-http(s) URLs are rejected.)
445
+ */
446
+ function getSameOriginReturnTo(session: Storage | undefined, redirectUri: string): string | null {
447
+ const returnTo = session?.getItem(OAUTH_RETURN_TO_KEY) ?? null
448
+ if (!returnTo) return null
449
+ try {
450
+ return new URL(returnTo).origin === new URL(redirectUri).origin ? returnTo : null
451
+ } catch {
452
+ return null
453
+ }
389
454
  }
@@ -83,6 +83,11 @@ describe('serialize/deserialize tokens', () => {
83
83
  expect(deserializeTokens('{"foo":"bar"}')).toBeNull()
84
84
  expect(deserializeTokens('123')).toBeNull()
85
85
  })
86
+
87
+ it('returns null when expiresAt does not parse to a valid date', () => {
88
+ const raw = JSON.stringify({...JSON.parse(serializeTokens(tokens)), expiresAt: 'garbage'})
89
+ expect(deserializeTokens(raw)).toBeNull()
90
+ })
86
91
  })
87
92
 
88
93
  describe('getOauthInitialState', () => {
@@ -94,6 +99,16 @@ describe('getOauthInitialState', () => {
94
99
  expect(result.authMethod).toBe('localstorage')
95
100
  })
96
101
 
102
+ it('returns LOGGED_OUT and clears storage when persisted tokens are corrupt', () => {
103
+ const storageArea = createMemoryStorage({
104
+ [OAUTH_TOKENS_KEY]: '{"accessToken":"a","expiresAt":"garbage"}',
105
+ })
106
+ const result = getOauthInitialState(baseOptions({storageArea}))
107
+ expect(result.authState).toEqual({type: AuthStateType.LOGGED_OUT, isDestroyingSession: false})
108
+ expect(result.oauthTokens).toBeUndefined()
109
+ expect(storageArea.getItem(OAUTH_TOKENS_KEY)).toBeNull()
110
+ })
111
+
97
112
  it('returns LOGGING_IN when the callback URL matches the redirect URI', () => {
98
113
  const storageArea = createMemoryStorage()
99
114
  const result = getOauthInitialState(
@@ -110,6 +125,14 @@ describe('getOauthInitialState', () => {
110
125
  expect(result.authState).toEqual({type: AuthStateType.LOGGED_OUT, isDestroyingSession: false})
111
126
  })
112
127
 
128
+ it('returns LOGGED_OUT when the redirect URI only carries a stray state param', () => {
129
+ const storageArea = createMemoryStorage()
130
+ const result = getOauthInitialState(
131
+ baseOptions({storageArea, initialLocationHref: 'https://app/callback?state=s'}),
132
+ )
133
+ expect(result.authState).toEqual({type: AuthStateType.LOGGED_OUT, isDestroyingSession: false})
134
+ })
135
+
113
136
  it('returns LOGGED_OUT when there are no tokens and no callback', () => {
114
137
  const storageArea = createMemoryStorage()
115
138
  const result = getOauthInitialState(baseOptions({storageArea}))
@@ -19,7 +19,9 @@ interface SerializedOAuthTokens extends Omit<OAuthTokens, 'expiresAt'> {
19
19
 
20
20
  /**
21
21
  * Parses persisted token JSON back into {@link OAuthTokens}. Returns `null`
22
- * when the value is missing or malformed.
22
+ * when the value is missing or malformed, including an `expiresAt` that does
23
+ * not parse to a valid date (an `Invalid Date` would otherwise read as never
24
+ * expiring, since `NaN <= now` is always `false`).
23
25
  *
24
26
  * @internal
25
27
  */
@@ -38,11 +40,13 @@ export function deserializeTokens(raw: string | null): OAuthTokens | null {
38
40
  return null
39
41
  }
40
42
  const value = parsed as SerializedOAuthTokens
43
+ const expiresAt = new Date(value.expiresAt)
44
+ if (Number.isNaN(expiresAt.getTime())) return null
41
45
  return {
42
46
  accessToken: value.accessToken,
43
47
  tokenType: 'bearer',
44
48
  expiresIn: value.expiresIn,
45
- expiresAt: new Date(value.expiresAt),
49
+ expiresAt,
46
50
  ...(value.refreshToken !== undefined && {refreshToken: value.refreshToken}),
47
51
  }
48
52
  } catch {
@@ -55,7 +59,7 @@ export function deserializeTokens(raw: string | null): OAuthTokens | null {
55
59
  *
56
60
  * State discovery order:
57
61
  * 1. Persisted tokens in `__sanity_oauth_tokens` → `LOGGED_IN`
58
- * 2. Callback URL (contains `code`/`state`/`error` and matches `redirectUri`)
62
+ * 2. Callback URL (contains `code` or `error` and matches `redirectUri`)
59
63
  * → `LOGGING_IN`
60
64
  * 3. Otherwise → `LOGGED_OUT`
61
65
  *
@@ -68,7 +72,12 @@ export function getOauthInitialState(options: AuthStrategyOptions): AuthStrategy
68
72
  const redirectUri = authConfig.oauth?.redirectUri
69
73
 
70
74
  // Persisted tokens win
71
- const tokens = deserializeTokens(storageArea?.getItem(OAUTH_TOKENS_KEY) ?? null)
75
+ const rawTokens = storageArea?.getItem(OAUTH_TOKENS_KEY) ?? null
76
+ const tokens = deserializeTokens(rawTokens)
77
+ if (rawTokens && !tokens) {
78
+ // Corrupt entry: drop it so it cannot keep shadowing a fresh login
79
+ storageArea?.removeItem(OAUTH_TOKENS_KEY)
80
+ }
72
81
  if (tokens) {
73
82
  return {
74
83
  authState: createLoggedInAuthState(tokens.accessToken, null),
@@ -80,11 +89,12 @@ export function getOauthInitialState(options: AuthStrategyOptions): AuthStrategy
80
89
  }
81
90
  }
82
91
 
83
- // Callback URL with code/state/error whose origin + pathname match our
84
- // redirect URI (query and hash are ignored).
92
+ // Callback URL with code/error whose origin + pathname match our redirect
93
+ // URI (query and hash are ignored). `state` alone is not a callback: the
94
+ // server always sends `code` or `error`, and handleOAuthCallback would
95
+ // otherwise leave the app stuck in LOGGING_IN.
85
96
  const {searchParams} = new URL(initialLocationHref, DEFAULT_BASE)
86
- const isCallback =
87
- searchParams.has('code') || searchParams.has('state') || searchParams.has('error')
97
+ const isCallback = searchParams.has('code') || searchParams.has('error')
88
98
  if (redirectUri && isCallback) {
89
99
  const loc = new URL(initialLocationHref, DEFAULT_BASE)
90
100
  const redirect = new URL(redirectUri, DEFAULT_BASE)
@@ -90,8 +90,11 @@ export interface AuthConfig {
90
90
  redirectUri: string
91
91
 
92
92
  /**
93
- * Organisation id used for RFC 8707 resource scoping.
93
+ * Organisation id used for RFC 8707 resource scoping. Optional: when
94
+ * omitted, the `resource` parameter is left off the authorize and token
95
+ * requests, so the issued tokens are not restricted to a single
96
+ * organisation.
94
97
  */
95
- organizationId: string
98
+ organizationId?: string
96
99
  }
97
100
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"authStore-BO2vch3I.d.ts","names":[],"sources":["../src/store/createStoreState.ts","../src/store/defineStore.ts","../src/store/createActionBinder.ts","../src/store/createStateSourceAction.ts","../src/store/fetcherStore.ts","../src/access/checkPermissions.ts","../src/utils/includeShape.ts","../src/applications/applications.ts","../src/auth/authStateType.ts","../src/project/organizationVerification.ts","../src/auth/getOrganizationVerificationState.ts","../src/auth/handleAuthCallback.ts","../src/auth/logout.ts","../src/auth/oauth/types.ts","../src/auth/oauth/oauthActions.ts","../src/client/clientStore.ts","../src/comments/types.ts","../src/comments/commentActions.ts","../src/comments/commentsStore.ts","../src/config/handles.ts","../src/utils/logger.ts","../src/config/loggingConfig.ts","../src/datasets/datasets.ts","../src/typegen/groqCompat.ts","../src/typegen/resolve.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/installations/installations.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/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/typegen/defineProjection.ts","../src/users/usersStore.ts","../src/utils/getCorsErrorProjectId.ts","../src/utils/isImportError.ts","../src/version.ts","../src/_exports/index.ts","../src/auth/authStore.ts"],"mappings":"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"}