From 6972e156467a25b1961078903e8e97ff934318d6 Mon Sep 17 00:00:00 2001 From: Cody Olsen Date: Mon, 27 Jan 2025 23:30:52 +0100 Subject: [PATCH] fix(live): `includeDrafts` no longer require vX --- src/data/live.ts | 13 ++++--------- src/types.ts | 5 ++++- test/live.test.ts | 24 +++++++++++------------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/data/live.ts b/src/data/live.ts index 4febaba5..a617cf9d 100644 --- a/src/data/live.ts +++ b/src/data/live.ts @@ -4,6 +4,7 @@ import {map} from 'rxjs/operators' import {CorsOriginError} from '../http/errors' import type {ObservableSanityClient, SanityClient} from '../SanityClient' import type { + LiveEvent, LiveEventMessage, LiveEventReconnect, LiveEventRestart, @@ -15,7 +16,7 @@ import {connectEventSource} from './eventsource' import {eventSourcePolyfill} from './eventsourcePolyfill' import {reconnectOnConnectionFailure} from './reconnectOnConnectionFailure' -const requiredApiVersion = '2021-03-26' +const requiredApiVersion = '2021-03-25' /** * @public @@ -27,13 +28,12 @@ export class LiveClient { } /** - * Requires `apiVersion` to be `2021-03-26` or later. + * Requires `apiVersion` to be `2021-03-25` or later. */ events({ includeDrafts = false, tag: _tag, }: { - /** @alpha this API is experimental and may change or even be removed */ includeDrafts?: boolean /** * Optional request tag for the listener. Use to identify the request in logs. @@ -41,7 +41,7 @@ export class LiveClient { * @defaultValue `undefined` */ tag?: string - } = {}): Observable { + } = {}): Observable { const { projectId, apiVersion: _apiVersion, @@ -62,11 +62,6 @@ export class LiveClient { `The live events API requires a token or withCredentials when 'includeDrafts: true'. Please update your client configuration. The token should have the lowest possible access role.`, ) } - if (includeDrafts && apiVersion !== 'X') { - throw new Error( - `The live events API requires API version X when 'includeDrafts: true'. This API is experimental and may change or even be removed.`, - ) - } const path = _getDataUrl(this.#client, 'live/events') const url = new URL(this.#client.getUrl(path, false)) const tag = _tag && requestTagPrefix ? [requestTagPrefix, _tag].join('.') : _tag diff --git a/src/types.ts b/src/types.ts index d2a91943..ca4b7127 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1017,7 +1017,7 @@ export interface RawQueryResponse { ms: number result: R resultSourceMap?: ContentSourceMap - /** Requires `apiVersion` to be `2021-03-26` or later. */ + /** Requires `apiVersion` to be `2021-03-25` or later. */ syncTags?: SyncTag[] } @@ -1292,6 +1292,9 @@ export interface LiveEventWelcome { type: 'welcome' } +/** @public */ +export type LiveEvent = LiveEventRestart | LiveEventReconnect | LiveEventMessage | LiveEventWelcome + /** @public */ export interface SanityQueries {} diff --git a/test/live.test.ts b/test/live.test.ts index 91ca5f2a..e060506f 100644 --- a/test/live.test.ts +++ b/test/live.test.ts @@ -63,32 +63,32 @@ describe.skipIf(typeof EdgeRuntime === 'string' || typeof document !== 'undefine const client = getClient({apiVersion: '2024-06-07', port: 1234}) expect(() => client.live.events()).not.toThrow() }) - test('allows apiVersion v2021-03-26', () => { - const client = getClient({apiVersion: 'v2021-03-26', port: 1234}) + test('allows apiVersion v2021-03-25', () => { + const client = getClient({apiVersion: 'v2021-03-25', port: 1234}) expect(() => client.live.events()).not.toThrow() }) test('disallows apiVersion 1', () => { const client = getClient({apiVersion: '1', port: 1234}) expect(() => client.live.events()).toThrowErrorMatchingInlineSnapshot( - `[Error: The live events API requires API version 2021-03-26 or later. The current API version is 1. Please update your API version to use this feature.]`, + `[Error: The live events API requires API version 2021-03-25 or later. The current API version is 1. Please update your API version to use this feature.]`, ) }) test('disallows apiVersion v1', () => { const client = getClient({apiVersion: 'v1', port: 1234}) expect(() => client.live.events()).toThrowErrorMatchingInlineSnapshot( - `[Error: The live events API requires API version 2021-03-26 or later. The current API version is 1. Please update your API version to use this feature.]`, + `[Error: The live events API requires API version 2021-03-25 or later. The current API version is 1. Please update your API version to use this feature.]`, ) }) - test('disallows apiVersion 2021-03-25', () => { - const client = getClient({apiVersion: '2021-03-25', port: 1234}) + test('disallows apiVersion 2021-03-24', () => { + const client = getClient({apiVersion: '2021-03-24', port: 1234}) expect(() => client.live.events()).toThrowErrorMatchingInlineSnapshot( - `[Error: The live events API requires API version 2021-03-26 or later. The current API version is 2021-03-25. Please update your API version to use this feature.]`, + `[Error: The live events API requires API version 2021-03-25 or later. The current API version is 2021-03-24. Please update your API version to use this feature.]`, ) }) test('disallows apiVersion v2020-01-01', () => { const client = getClient({apiVersion: 'v2020-01-01', port: 1234}) expect(() => client.live.events()).toThrowErrorMatchingInlineSnapshot( - `[Error: The live events API requires API version 2021-03-26 or later. The current API version is 2020-01-01. Please update your API version to use this feature.]`, + `[Error: The live events API requires API version 2021-03-25 or later. The current API version is 2020-01-01. Please update your API version to use this feature.]`, ) }) test('requires token when includeDrafts is true', () => { @@ -97,11 +97,9 @@ describe.skipIf(typeof EdgeRuntime === 'string' || typeof document !== 'undefine `[Error: The live events API requires a token or withCredentials when 'includeDrafts: true'. Please update your client configuration. The token should have the lowest possible access role.]`, ) }) - test('requires apiVersion X when includeDrafts is true', () => { - const client = getClient({apiVersion: 'v2021-03-26', token: 'abc123', port: 1234}) - expect(() => client.live.events({includeDrafts: true})).toThrowErrorMatchingInlineSnapshot( - `[Error: The live events API requires API version X when 'includeDrafts: true'. This API is experimental and may change or even be removed.]`, - ) + test('allows apiVersion 2021-03-26 when includeDrafts is true', () => { + const client = getClient({apiVersion: 'v2021-03-25', token: 'abc123', port: 1234}) + expect(() => client.live.events({includeDrafts: true})).not.toThrowError() }) test('can listen for tags', async () => {