@lsync/client 0.0.2 → 0.0.3
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 +18 -0
- package/dist/index.d.mts +50 -6
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +890 -388
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -5
package/README.md
CHANGED
|
@@ -8,3 +8,21 @@ pnpm add @lsync/client @tanstack/db
|
|
|
8
8
|
|
|
9
9
|
Use it with a shared contract from `@lsync/definitions` to create eager, on-demand, and offline
|
|
10
10
|
collections.
|
|
11
|
+
|
|
12
|
+
The client subscribes before loading data, records a server watermark, and catches up from durable
|
|
13
|
+
history after reconnecting. Configure connection behavior with `reconnect`, `connectionTimeoutMs`,
|
|
14
|
+
and `requestTimeoutMs`; reconnect is enabled by default with bounded exponential backoff per retry
|
|
15
|
+
cycle. Writes retain their mutation IDs across automatic retries.
|
|
16
|
+
|
|
17
|
+
Eager sync reads in pages and stops with an error above 10,000 rows by default. Large collections
|
|
18
|
+
should normally use `sync("on-demand")`. To deliberately allow a full eager sync, disable the cap:
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
const { auditLog } = collectionTypesFrom(collections)
|
|
22
|
+
.url("wss://example.com/sync/demo")
|
|
23
|
+
.collection("auditLog", (collection) => collection.sync("eager").maxSyncRows(false))
|
|
24
|
+
.build();
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Pass a positive number to `maxSyncRows()` to choose a different cap. An explicit `read.limit`
|
|
28
|
+
continues to limit the initial read directly.
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BaseCollectionConfig, ChangeMessageOrDeleteKeyMessage, Collection, OperationConfig, TransactionWithMutations, WritableDeep } from "@tanstack/db";
|
|
2
1
|
import { ApiCall as ApiCall$1, ApiCallArgs as ApiCallArgs$1, ApiCallInput as ApiCallInput$1, ApiContract as ApiContract$1, ApiInput as ApiInput$1, ApiOutput as ApiOutput$1, ApiPath as ApiPath$1, ApiRoute as ApiRoute$1, Batch as Batch$1, Broadcast as Broadcast$1, PushResult as PushResult$1, ReadFilterInput, ReadFilterOperator as ReadFilterOperator$1, ReadQueryInput, ReadResult as ReadResult$1, SequencedUpdate as SequencedUpdate$1, SyncChangesQueryInput, SyncChangesResult as SyncChangesResult$1, Update as Update$1 } from "@lsync/transport";
|
|
2
|
+
import { BaseCollectionConfig, ChangeMessageOrDeleteKeyMessage, Collection, CollectionConfig, InferSchemaOutput, OperationConfig, TransactionWithMutations, WritableDeep } from "@tanstack/db";
|
|
3
3
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
4
|
import { ApiDefinition, CollectionAtPath, CollectionDefinition, CollectionDefinitions, CollectionPath, CollectionSet } from "@lsync/definitions";
|
|
5
5
|
|
|
@@ -26,7 +26,21 @@ type ReadResult<T = unknown> = ReadResult$1<T>;
|
|
|
26
26
|
interface ClientOptions {
|
|
27
27
|
url: string | URL;
|
|
28
28
|
clientId?: string;
|
|
29
|
-
reconnect?: boolean;
|
|
29
|
+
reconnect?: boolean | ReconnectOptions;
|
|
30
|
+
connectionTimeoutMs?: number;
|
|
31
|
+
requestTimeoutMs?: number;
|
|
32
|
+
}
|
|
33
|
+
interface ReconnectOptions {
|
|
34
|
+
initialDelayMs?: number;
|
|
35
|
+
maxDelayMs?: number;
|
|
36
|
+
multiplier?: number;
|
|
37
|
+
maxAttempts?: number;
|
|
38
|
+
}
|
|
39
|
+
interface IndexedDBOfflineOptions {
|
|
40
|
+
/** IndexedDB database shared by lsync collections. @default "lsync" */
|
|
41
|
+
databaseName?: string;
|
|
42
|
+
/** Change this value when cached rows are no longer schema-compatible. @default 1 */
|
|
43
|
+
cacheVersion?: string | number;
|
|
30
44
|
}
|
|
31
45
|
type CollectionConnectionOptions = {
|
|
32
46
|
url: string | URL;
|
|
@@ -48,7 +62,9 @@ type CollectionOptions<T extends object, TKey extends string | number, TSchema e
|
|
|
48
62
|
getKey: (item: T) => TKey;
|
|
49
63
|
schema?: TSchema;
|
|
50
64
|
ignoreOwnUpdates?: boolean;
|
|
51
|
-
|
|
65
|
+
maxSyncRows?: number | false;
|
|
66
|
+
read?: false | Omit<ReadQuery, "collection">; /** Hydrate this eager collection from IndexedDB before connecting to the server. */
|
|
67
|
+
offline?: boolean | IndexedDBOfflineOptions;
|
|
52
68
|
} & CollectionConnectionOptions;
|
|
53
69
|
interface Client<TApi extends ApiContract = ApiContract> {
|
|
54
70
|
readonly clientId: string;
|
|
@@ -61,6 +77,8 @@ interface Client<TApi extends ApiContract = ApiContract> {
|
|
|
61
77
|
}
|
|
62
78
|
interface ClientSubscription {
|
|
63
79
|
readonly ready: Promise<void>;
|
|
80
|
+
onDisconnect?(listener: () => void): () => void;
|
|
81
|
+
onReconnect?(listener: () => void): () => void;
|
|
64
82
|
unsubscribe(): void;
|
|
65
83
|
}
|
|
66
84
|
//#endregion
|
|
@@ -68,6 +86,24 @@ interface ClientSubscription {
|
|
|
68
86
|
declare function createBatch<T extends object>(collection: string, clientId: string, transaction: Pick<TransactionWithMutations<T>, "mutations">): Batch;
|
|
69
87
|
declare function toChangeMessage<T extends object, TKey extends string | number>(update: Update, existing?: boolean): ChangeMessageOrDeleteKeyMessage<T, TKey>;
|
|
70
88
|
//#endregion
|
|
89
|
+
//#region src/client.d.ts
|
|
90
|
+
declare function createClient<TApi extends ApiContract = ApiContract>(options: ClientOptions): Client<TApi>;
|
|
91
|
+
//#endregion
|
|
92
|
+
//#region src/collection.d.ts
|
|
93
|
+
declare function collectionOptions<TSchema extends StandardSchemaV1, TKey extends string | number = string | number>(options: CollectionOptions<InferSchemaOutput<TSchema>, TKey, TSchema> & {
|
|
94
|
+
schema: TSchema;
|
|
95
|
+
}): CollectionConfig<InferSchemaOutput<TSchema>, TKey, TSchema> & {
|
|
96
|
+
schema: TSchema;
|
|
97
|
+
};
|
|
98
|
+
declare function collectionOptions<T extends object, TKey extends string | number = string | number>(options: CollectionOptions<T, TKey, never> & {
|
|
99
|
+
schema?: never;
|
|
100
|
+
}): CollectionConfig<T, TKey, never> & {
|
|
101
|
+
schema?: never;
|
|
102
|
+
};
|
|
103
|
+
//#endregion
|
|
104
|
+
//#region src/initial-sync.d.ts
|
|
105
|
+
declare const DEFAULT_MAX_SYNC_ROWS = 10000;
|
|
106
|
+
//#endregion
|
|
71
107
|
//#region src/collection-path.d.ts
|
|
72
108
|
type CollectionScopeParams = Record<string, string | number>;
|
|
73
109
|
//#endregion
|
|
@@ -105,7 +141,8 @@ type CollectionEntity<T extends object, TKey extends string | number, TChildren
|
|
|
105
141
|
update(config: OperationConfig, callback: (draft: WritableDeep<T>) => void): ReturnType<Collection<T, TKey>["update"]>;
|
|
106
142
|
} & ChildManagers<TChildren>;
|
|
107
143
|
type CollectionType<T extends object, TKey extends string | number, TChildren extends CollectionTypeChildren = {}, TApi extends CollectionTypeApi<T, TKey> = {}> = {
|
|
108
|
-
all(params?: CollectionScopeParams): Collection<T, TKey>;
|
|
144
|
+
all(params?: CollectionScopeParams): Collection<T, TKey>; /** Clean up and remove every scoped collection created by this collection type. */
|
|
145
|
+
dispose(): Promise<void>;
|
|
109
146
|
with(params: CollectionScopeParams): CollectionType<T, TKey, TChildren, TApi>;
|
|
110
147
|
withId(id: TKey, childParam?: string): CollectionEntity<T, TKey, TChildren>;
|
|
111
148
|
usage(): Array<CollectionUsage>;
|
|
@@ -121,7 +158,8 @@ type CollectionTypeBaseOptions<T extends object, TKey extends string | number, T
|
|
|
121
158
|
id?: CollectionTypeId;
|
|
122
159
|
children?: TChildren;
|
|
123
160
|
api?: TApi;
|
|
124
|
-
parentParam?: string;
|
|
161
|
+
parentParam?: string; /** Maximum number of inactive scoped collections to retain. Defaults to 32. */
|
|
162
|
+
maxCachedCollections?: number;
|
|
125
163
|
};
|
|
126
164
|
type CollectionTypeOptions<T extends object, TKey extends string | number, TSchema extends StandardSchemaV1, TChildren extends CollectionTypeChildren = {}, TApi extends CollectionTypeApi<T, TKey> = {}> = CollectionTypeBaseOptions<T, TKey, TSchema, TChildren, TApi> & CollectionTypeConnection;
|
|
127
165
|
type ChildCollectionTypeOptions<T extends object, TKey extends string | number, TSchema extends StandardSchemaV1, TChildren extends CollectionTypeChildren = {}, TApi extends CollectionTypeApi<T, TKey> = {}> = CollectionTypeBaseOptions<T, TKey, TSchema, TChildren, TApi> & OptionalCollectionTypeConnection;
|
|
@@ -161,6 +199,9 @@ declare class ClientCollectionBuilder<TDefinition> {
|
|
|
161
199
|
private readonly override;
|
|
162
200
|
constructor(override: ClientCollectionOverride);
|
|
163
201
|
sync(syncMode: BuilderSyncMode): ClientCollectionBuilder<TDefinition>;
|
|
202
|
+
maxSyncRows(maxSyncRows: number | false): ClientCollectionBuilder<TDefinition>;
|
|
203
|
+
offline(options?: IndexedDBOfflineOptions | true): ClientCollectionBuilder<TDefinition>;
|
|
204
|
+
maxCachedCollections(maxCachedCollections: number): ClientCollectionBuilder<TDefinition>;
|
|
164
205
|
index(autoIndex: BuilderIndexMode, defaultIndexType?: BuilderIndexType): ClientCollectionBuilder<TDefinition>;
|
|
165
206
|
toOverride(): ClientCollectionOverride;
|
|
166
207
|
}
|
|
@@ -171,9 +212,12 @@ type ChildOptionForDefinition<TDefinition> = TDefinition extends CollectionDefin
|
|
|
171
212
|
type ApiMethodsForDefinitions<TApi extends Record<string, ApiDefinition<any, any>>, TRow extends object, TKey extends string | number> = { [TName in keyof TApi]: TApi[TName] extends ApiDefinition<infer TInput, infer TOutput> ? CollectionApiMethod<TInput, TOutput, TRow, TKey> : never };
|
|
172
213
|
interface ClientCollectionOverride {
|
|
173
214
|
syncMode?: BuilderSyncMode;
|
|
215
|
+
maxSyncRows?: number | false;
|
|
174
216
|
autoIndex?: BuilderIndexMode;
|
|
175
217
|
defaultIndexType?: BuilderIndexType;
|
|
218
|
+
offline?: true | IndexedDBOfflineOptions;
|
|
219
|
+
maxCachedCollections?: number;
|
|
176
220
|
}
|
|
177
221
|
//#endregion
|
|
178
|
-
export { type ApiCall, type ApiCallArgs, type ApiCallInput, type ApiContract, type ApiInput, type ApiOutput, type ApiPath, type ApiRoute, type Batch, type Broadcast, type ChildCollectionTypeOptions, type Client, type ClientOptions, type ClientSubscription, type CollectionApiHandler, type CollectionApiHandlerArgs, type CollectionApiMethod, type CollectionApiMethods, type CollectionConnectionOptions, type CollectionEntity, type CollectionOptions, type CollectionScopeParams, type CollectionType, type CollectionTypeApi, type CollectionTypeOptions, type CollectionUsage, type PushResult, type ReadFilter, type ReadFilterOperator, type ReadQuery, type ReadResult, type SequencedUpdate, type SyncChangesQuery, type SyncChangesResult, type Update, collectionTypesFrom, createBatch, toChangeMessage };
|
|
222
|
+
export { type ApiCall, type ApiCallArgs, type ApiCallInput, type ApiContract, type ApiInput, type ApiOutput, type ApiPath, type ApiRoute, type Batch, type Broadcast, type ChildCollectionTypeOptions, type Client, type ClientOptions, type ClientSubscription, type CollectionApiHandler, type CollectionApiHandlerArgs, type CollectionApiMethod, type CollectionApiMethods, type CollectionConnectionOptions, type CollectionEntity, type CollectionOptions, type CollectionScopeParams, type CollectionType, type CollectionTypeApi, type CollectionTypeOptions, type CollectionUsage, DEFAULT_MAX_SYNC_ROWS, type IndexedDBOfflineOptions, type PushResult, type ReadFilter, type ReadFilterOperator, type ReadQuery, type ReadResult, type ReconnectOptions, type SequencedUpdate, type SyncChangesQuery, type SyncChangesResult, type Update, collectionOptions, collectionTypesFrom, createBatch, createClient, toChangeMessage };
|
|
179
223
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/batch.ts","../src/collection-path.ts","../src/collection-type-types.ts","../src/definition-builder.ts"],"mappings":";;;;;;KA2BY,MAAA,GAAS,QAAe;AAAA,KACxB,OAAA,GAAU,SAAgB;AAAA,KAC1B,WAAA,cACG,WAAA,gBACC,OAAA,CAAQ,IAAA,KACpB,aAAA,CAAqB,IAAA,EAAM,KAAA;AAAA,KACnB,YAAA,GAAe,cAAqB;AAAA,KACpC,WAAA,GAAc,aAAoB;AAAA,KAClC,QAAA,cAAsB,WAAA,gBAA2B,OAAA,CAAQ,IAAA,KAAS,UAAA,CAC5E,IAAA,EACA,KAAA;AAAA,KAEU,SAAA,cAAuB,WAAA,gBAA2B,OAAA,CAAQ,IAAA,KAAS,WAAA,CAC7E,IAAA,EACA,KAAA;AAAA,KAEU,OAAA,cAAqB,WAAA,IAAe,SAAA,CAAiB,IAAA;AAAA,KACrD,QAAA,wCAAgD,UAAA,CAAkB,MAAA,EAAQ,OAAA;AAAA,KAC1E,KAAA,GAAQ,OAAc;AAAA,KACtB,SAAA,GAAY,WAAkB;AAAA,KAE9B,UAAA,GAAa,YAAmB;AAAA,KAChC,eAAA,GAAkB,iBAAwB;AAAA,KAC1C,gBAAA,GAAmB,qBAA8B;AAAA,KACjD,iBAAA,GAAoB,mBAA0B;AAAA,KAC9C,kBAAA,GAAqB,oBAA2B;AAAA,KAChD,UAAA,GAAa,eAAe;AAAA,KAG5B,SAAA,GAAY,cAAc;AAAA,KAC1B,UAAA,gBAA0B,YAAmB,CAAC,CAAA;AAAA,UAEzC,aAAA;EACf,GAAA,WAAc,
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/batch.ts","../src/client.ts","../src/collection.ts","../src/initial-sync.ts","../src/collection-path.ts","../src/collection-type-types.ts","../src/definition-builder.ts"],"mappings":"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"}
|