@syncular/transport-http 0.0.6-212 → 0.0.6-219

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/README.md CHANGED
@@ -26,6 +26,27 @@ const transport = createHttpTransport({
26
26
  });
27
27
  ```
28
28
 
29
+ ## React Native / Expo
30
+
31
+ Use the built-in React Native preset instead of manually tuning transport
32
+ capabilities for Hermes / Expo:
33
+
34
+ ```ts
35
+ import { createReactNativeHttpTransport } from '@syncular/transport-http';
36
+
37
+ const transport = createReactNativeHttpTransport({
38
+ baseUrl: 'https://api.example.com',
39
+ getHeaders: () => ({ Authorization: `Bearer ${token}` }),
40
+ });
41
+ ```
42
+
43
+ This preset enables:
44
+
45
+ - byte-based snapshot chunk fetches instead of `ReadableStream`
46
+ - buffered gzip decompression fallback
47
+ - per-subscription bootstrap commits
48
+ - materialized snapshot application preferred for mobile runtimes
49
+
29
50
  ## Documentation
30
51
 
31
52
  - How sync works (push/pull): https://syncular.dev/docs/introduction/architecture
package/dist/index.d.ts CHANGED
@@ -5,12 +5,14 @@
5
5
  * - a lightweight fetch-based SyncTransport for client runtime use
6
6
  * - a separately exported typed API client for advanced/console use
7
7
  */
8
- import type { SyncTransport } from '@syncular/core';
8
+ import type { SyncTransport, SyncTransportCapabilities } from '@syncular/core';
9
9
  import type { SyncClient } from './api-client';
10
10
  import { type ClientOptions, type SyncTransportPath, unwrap } from './shared';
11
11
  export { type SyncClient, type ClientOptions, type SyncTransportPath, unwrap };
12
12
  export type { SyncAuthErrorContext, SyncAuthLifecycle, SyncAuthOperation, SyncTransport, SyncTransportOptions, } from '@syncular/core';
13
13
  export { createApiClient } from './api-client';
14
14
  export type { operations } from './generated/api';
15
+ export declare const REACT_NATIVE_TRANSPORT_CAPABILITIES: SyncTransportCapabilities;
15
16
  export declare function createHttpTransport(clientOrOptions: SyncClient | ClientOptions): SyncTransport;
17
+ export declare function createReactNativeHttpTransport(clientOrOptions: SyncClient | ClientOptions): SyncTransport;
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAGL,KAAK,aAAa,EAKlB,KAAK,iBAAiB,EACtB,MAAM,EACP,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,EAAE,CAAC;AAE/E,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,UAAU,GAAG,aAAa,GAC1C,aAAa,CAwNf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAIV,aAAa,EACb,yBAAyB,EAE1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAGL,KAAK,aAAa,EAKlB,KAAK,iBAAiB,EACtB,MAAM,EACP,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,EAAE,CAAC;AAE/E,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA6DlD,eAAO,MAAM,mCAAmC,EAAE,yBAKjD,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,UAAU,GAAG,aAAa,GAC1C,aAAa,CA6Nf;AAED,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,UAAU,GAAG,aAAa,GAC1C,aAAa,CAYf"}
package/dist/index.js CHANGED
@@ -10,11 +10,63 @@ import { applySnapshotScopesHeader, bytesToReadableStream, executeWithAuthRetry,
10
10
  import { createTransportApiClient, createTransportAuthRetryResolver, HTTP_TRANSPORT_SOURCE, } from './transport-client.js';
11
11
  export { unwrap };
12
12
  export { createApiClient } from './api-client.js';
13
+ function detectDefaultTransportCapabilities() {
14
+ const isReactNative = typeof navigator !== 'undefined' && navigator?.product === 'ReactNative';
15
+ const snapshotChunkReadMode = isReactNative ? 'bytes' : 'stream';
16
+ const gzipDecompressionMode = !isReactNative && typeof DecompressionStream !== 'undefined'
17
+ ? 'stream'
18
+ : 'buffered';
19
+ const preferredBootstrapApplyMode = snapshotChunkReadMode === 'bytes' || gzipDecompressionMode === 'buffered'
20
+ ? 'per-subscription'
21
+ : 'single-transaction';
22
+ return {
23
+ snapshotChunkReadMode,
24
+ gzipDecompressionMode,
25
+ preferredBootstrapApplyMode,
26
+ };
27
+ }
28
+ function mergeTransportCapabilities(overrides) {
29
+ const defaults = detectDefaultTransportCapabilities();
30
+ const merged = {
31
+ ...defaults,
32
+ ...overrides,
33
+ };
34
+ if (overrides?.preferredBootstrapApplyMode) {
35
+ return merged;
36
+ }
37
+ const preferredBootstrapApplyMode = merged.snapshotChunkReadMode === 'bytes' ||
38
+ merged.gzipDecompressionMode === 'buffered'
39
+ ? 'per-subscription'
40
+ : 'single-transaction';
41
+ return {
42
+ ...merged,
43
+ preferredBootstrapApplyMode,
44
+ };
45
+ }
46
+ function shouldUseResponseBodyStream(response, capabilities) {
47
+ if (!response.body)
48
+ return false;
49
+ if (capabilities.snapshotChunkReadMode === 'bytes') {
50
+ return false;
51
+ }
52
+ return (typeof response.body.getReader ===
53
+ 'function');
54
+ }
55
+ export const REACT_NATIVE_TRANSPORT_CAPABILITIES = {
56
+ snapshotChunkReadMode: 'bytes',
57
+ gzipDecompressionMode: 'buffered',
58
+ preferredBootstrapApplyMode: 'per-subscription',
59
+ preferMaterializedSnapshots: true,
60
+ };
13
61
  export function createHttpTransport(clientOrOptions) {
14
62
  const client = createTransportApiClient(clientOrOptions);
15
63
  const resolveAuthRetry = createTransportAuthRetryResolver(clientOrOptions);
16
64
  const transportOptions = 'baseUrl' in clientOrOptions ? clientOrOptions : undefined;
65
+ const capabilities = 'baseUrl' in clientOrOptions
66
+ ? mergeTransportCapabilities(clientOrOptions.capabilities)
67
+ : mergeTransportCapabilities();
17
68
  const transport = {
69
+ capabilities,
18
70
  async sync(request, transportRequestOptions) {
19
71
  const { data, error, response } = await executeWithTransientNetworkRetry({
20
72
  execute: (signal) => executeWithAuthRetry((retrySignal) => client.sync(request, retrySignal), { ...transportRequestOptions, signal }, 'sync', resolveAuthRetry),
@@ -122,7 +174,7 @@ export function createHttpTransport(clientOrOptions) {
122
174
  }
123
175
  throw new SyncTransportError(`Snapshot chunk download failed: ${reason}`, response.status);
124
176
  }
125
- if (!response.body) {
177
+ if (!shouldUseResponseBodyStream(response, capabilities)) {
126
178
  const bytes = new Uint8Array(await response.arrayBuffer());
127
179
  return bytesToReadableStream(bytes);
128
180
  }
@@ -137,4 +189,16 @@ export function createHttpTransport(clientOrOptions) {
137
189
  });
138
190
  return transport;
139
191
  }
192
+ export function createReactNativeHttpTransport(clientOrOptions) {
193
+ if (!('baseUrl' in clientOrOptions)) {
194
+ return createHttpTransport(clientOrOptions);
195
+ }
196
+ return createHttpTransport({
197
+ ...clientOrOptions,
198
+ capabilities: {
199
+ ...REACT_NATIVE_TRANSPORT_CAPABILITIES,
200
+ ...clientOrOptions.capabilities,
201
+ },
202
+ });
203
+ }
140
204
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/shared.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ScopeValues, SyncAuthErrorContext, SyncAuthLifecycle, SyncAuthOperation, SyncTransportOptions } from '@syncular/core';
1
+ import type { ScopeValues, SyncAuthErrorContext, SyncAuthLifecycle, SyncAuthOperation, SyncTransportCapabilities, SyncTransportOptions } from '@syncular/core';
2
2
  export type SyncTransportPath = 'direct' | 'relay';
3
3
  export interface ClientOptions {
4
4
  /** Base URL for the API (e.g., 'https://api.example.com') */
@@ -14,6 +14,11 @@ export interface ClientOptions {
14
14
  * Defaults to 'direct'.
15
15
  */
16
16
  transportPath?: SyncTransportPath;
17
+ /**
18
+ * Explicit runtime capabilities override.
19
+ * Use this to avoid environment sniffing in runtimes like React Native.
20
+ */
21
+ capabilities?: Partial<SyncTransportCapabilities>;
17
22
  }
18
23
  export type ApiResult<T> = {
19
24
  data?: T;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,0DAA0D;IAC1D,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;AActB,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUtD;AAED,wBAAsB,MAAM,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACxD,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,SAAS,EAAE,iBAAiB,EAC5B,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAcvB;AAiCD,wBAAsB,gCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE;IAC9D,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,OAAO,CAAC,CAAC,CAAC,CA8Bb;AAED,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAEnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,GAChB,cAAc,CAAC,UAAU,CAAC,CAO5B;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,MAAM,GAAG,IAAI,CAIf;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,IAAI,CAIN;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,MAAM,CAYR"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,0DAA0D;IAC1D,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;AActB,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUtD;AAED,wBAAsB,MAAM,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACxD,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,SAAS,EAAE,iBAAiB,EAC5B,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAcvB;AAiCD,wBAAsB,gCAAgC,CAAC,CAAC,EAAE,IAAI,EAAE;IAC9D,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,OAAO,CAAC,CAAC,CAAC,CA8Bb;AAED,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAEnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,GAChB,cAAc,CAAC,UAAU,CAAC,CAO5B;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,MAAM,GAAG,IAAI,CAIf;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,IAAI,CAIN;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,MAAM,CAYR"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/transport-http",
3
- "version": "0.0.6-212",
3
+ "version": "0.0.6-219",
4
4
  "description": "HTTP transport for Syncular client-server communication",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Kniffler",
@@ -51,7 +51,7 @@
51
51
  "release": "bunx syncular-publish"
52
52
  },
53
53
  "dependencies": {
54
- "@syncular/core": "0.0.6-212",
54
+ "@syncular/core": "0.0.6-219",
55
55
  "openapi-fetch": "^0.17.0"
56
56
  },
57
57
  "devDependencies": {
@@ -1,5 +1,9 @@
1
1
  import { describe, expect, it } from 'bun:test';
2
- import { createApiClient, createHttpTransport } from '../index';
2
+ import {
3
+ createApiClient,
4
+ createHttpTransport,
5
+ createReactNativeHttpTransport,
6
+ } from '../index';
3
7
 
4
8
  function readHeaderFromFetchArgs(
5
9
  input: RequestInfo | URL,
@@ -30,6 +34,36 @@ function readSearchParamFromFetchArgs(
30
34
  }
31
35
 
32
36
  describe('createHttpTransport SyncTransportOptions', () => {
37
+ it('exposes explicit transport capabilities and merges overrides', () => {
38
+ const transport = createHttpTransport({
39
+ baseUrl: 'http://localhost',
40
+ capabilities: {
41
+ snapshotChunkReadMode: 'bytes',
42
+ preferMaterializedSnapshots: true,
43
+ },
44
+ });
45
+
46
+ expect(transport.capabilities?.snapshotChunkReadMode).toBe('bytes');
47
+ expect(transport.capabilities?.preferMaterializedSnapshots).toBe(true);
48
+ expect(transport.capabilities?.gzipDecompressionMode).toBeDefined();
49
+ expect(transport.capabilities?.preferredBootstrapApplyMode).toBe(
50
+ 'per-subscription'
51
+ );
52
+ });
53
+
54
+ it('provides a React Native / Expo transport preset', () => {
55
+ const transport = createReactNativeHttpTransport({
56
+ baseUrl: 'http://localhost',
57
+ });
58
+
59
+ expect(transport.capabilities).toMatchObject({
60
+ snapshotChunkReadMode: 'bytes',
61
+ gzipDecompressionMode: 'buffered',
62
+ preferredBootstrapApplyMode: 'per-subscription',
63
+ preferMaterializedSnapshots: true,
64
+ });
65
+ });
66
+
33
67
  it('forwards AbortSignal to sync requests', async () => {
34
68
  const controller = new AbortController();
35
69
  let capturedSignal: AbortSignal | null = null;
package/src/index.ts CHANGED
@@ -7,9 +7,11 @@
7
7
  */
8
8
 
9
9
  import type {
10
+ SyncBootstrapApplyMode,
10
11
  SyncCombinedRequest,
11
12
  SyncCombinedResponse,
12
13
  SyncTransport,
14
+ SyncTransportCapabilities,
13
15
  SyncTransportOptions,
14
16
  } from '@syncular/core';
15
17
  import { SyncTransportError } from '@syncular/core';
@@ -44,6 +46,72 @@ export type {
44
46
  export { createApiClient } from './api-client';
45
47
  export type { operations } from './generated/api';
46
48
 
49
+ function detectDefaultTransportCapabilities(): SyncTransportCapabilities {
50
+ const isReactNative =
51
+ typeof navigator !== 'undefined' && navigator?.product === 'ReactNative';
52
+ const snapshotChunkReadMode = isReactNative ? 'bytes' : 'stream';
53
+ const gzipDecompressionMode =
54
+ !isReactNative && typeof DecompressionStream !== 'undefined'
55
+ ? 'stream'
56
+ : 'buffered';
57
+ const preferredBootstrapApplyMode: SyncBootstrapApplyMode =
58
+ snapshotChunkReadMode === 'bytes' || gzipDecompressionMode === 'buffered'
59
+ ? 'per-subscription'
60
+ : 'single-transaction';
61
+
62
+ return {
63
+ snapshotChunkReadMode,
64
+ gzipDecompressionMode,
65
+ preferredBootstrapApplyMode,
66
+ };
67
+ }
68
+
69
+ function mergeTransportCapabilities(
70
+ overrides?: Partial<SyncTransportCapabilities>
71
+ ): SyncTransportCapabilities {
72
+ const defaults = detectDefaultTransportCapabilities();
73
+ const merged = {
74
+ ...defaults,
75
+ ...overrides,
76
+ };
77
+
78
+ if (overrides?.preferredBootstrapApplyMode) {
79
+ return merged;
80
+ }
81
+
82
+ const preferredBootstrapApplyMode: SyncBootstrapApplyMode =
83
+ merged.snapshotChunkReadMode === 'bytes' ||
84
+ merged.gzipDecompressionMode === 'buffered'
85
+ ? 'per-subscription'
86
+ : 'single-transaction';
87
+
88
+ return {
89
+ ...merged,
90
+ preferredBootstrapApplyMode,
91
+ };
92
+ }
93
+
94
+ function shouldUseResponseBodyStream(
95
+ response: Response,
96
+ capabilities: SyncTransportCapabilities
97
+ ): boolean {
98
+ if (!response.body) return false;
99
+ if (capabilities.snapshotChunkReadMode === 'bytes') {
100
+ return false;
101
+ }
102
+ return (
103
+ typeof (response.body as ReadableStream<Uint8Array>).getReader ===
104
+ 'function'
105
+ );
106
+ }
107
+
108
+ export const REACT_NATIVE_TRANSPORT_CAPABILITIES: SyncTransportCapabilities = {
109
+ snapshotChunkReadMode: 'bytes',
110
+ gzipDecompressionMode: 'buffered',
111
+ preferredBootstrapApplyMode: 'per-subscription',
112
+ preferMaterializedSnapshots: true,
113
+ };
114
+
47
115
  export function createHttpTransport(
48
116
  clientOrOptions: SyncClient | ClientOptions
49
117
  ): SyncTransport {
@@ -51,8 +119,13 @@ export function createHttpTransport(
51
119
  const resolveAuthRetry = createTransportAuthRetryResolver(clientOrOptions);
52
120
  const transportOptions =
53
121
  'baseUrl' in clientOrOptions ? clientOrOptions : undefined;
122
+ const capabilities =
123
+ 'baseUrl' in clientOrOptions
124
+ ? mergeTransportCapabilities(clientOrOptions.capabilities)
125
+ : mergeTransportCapabilities();
54
126
 
55
127
  const transport: SyncTransport = {
128
+ capabilities,
56
129
  async sync(
57
130
  request: SyncCombinedRequest,
58
131
  transportRequestOptions?: SyncTransportOptions
@@ -245,7 +318,7 @@ export function createHttpTransport(
245
318
  );
246
319
  }
247
320
 
248
- if (!response.body) {
321
+ if (!shouldUseResponseBodyStream(response, capabilities)) {
249
322
  const bytes = new Uint8Array(await response.arrayBuffer());
250
323
  return bytesToReadableStream(bytes);
251
324
  }
@@ -263,3 +336,19 @@ export function createHttpTransport(
263
336
 
264
337
  return transport;
265
338
  }
339
+
340
+ export function createReactNativeHttpTransport(
341
+ clientOrOptions: SyncClient | ClientOptions
342
+ ): SyncTransport {
343
+ if (!('baseUrl' in clientOrOptions)) {
344
+ return createHttpTransport(clientOrOptions);
345
+ }
346
+
347
+ return createHttpTransport({
348
+ ...clientOrOptions,
349
+ capabilities: {
350
+ ...REACT_NATIVE_TRANSPORT_CAPABILITIES,
351
+ ...clientOrOptions.capabilities,
352
+ },
353
+ });
354
+ }
package/src/shared.ts CHANGED
@@ -3,6 +3,7 @@ import type {
3
3
  SyncAuthErrorContext,
4
4
  SyncAuthLifecycle,
5
5
  SyncAuthOperation,
6
+ SyncTransportCapabilities,
6
7
  SyncTransportOptions,
7
8
  } from '@syncular/core';
8
9
  import { resolveUrlFromBase } from '@syncular/core';
@@ -23,6 +24,11 @@ export interface ClientOptions {
23
24
  * Defaults to 'direct'.
24
25
  */
25
26
  transportPath?: SyncTransportPath;
27
+ /**
28
+ * Explicit runtime capabilities override.
29
+ * Use this to avoid environment sniffing in runtimes like React Native.
30
+ */
31
+ capabilities?: Partial<SyncTransportCapabilities>;
26
32
  }
27
33
 
28
34
  export type ApiResult<T> = {