@lsync/client 0.0.1 → 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 +42 -52
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +846 -478
- 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
|
@@ -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
|
|
@@ -83,6 +101,9 @@ declare function collectionOptions<T extends object, TKey extends string | numbe
|
|
|
83
101
|
schema?: never;
|
|
84
102
|
};
|
|
85
103
|
//#endregion
|
|
104
|
+
//#region src/initial-sync.d.ts
|
|
105
|
+
declare const DEFAULT_MAX_SYNC_ROWS = 10000;
|
|
106
|
+
//#endregion
|
|
86
107
|
//#region src/collection-path.d.ts
|
|
87
108
|
type CollectionScopeParams = Record<string, string | number>;
|
|
88
109
|
//#endregion
|
|
@@ -120,7 +141,8 @@ type CollectionEntity<T extends object, TKey extends string | number, TChildren
|
|
|
120
141
|
update(config: OperationConfig, callback: (draft: WritableDeep<T>) => void): ReturnType<Collection<T, TKey>["update"]>;
|
|
121
142
|
} & ChildManagers<TChildren>;
|
|
122
143
|
type CollectionType<T extends object, TKey extends string | number, TChildren extends CollectionTypeChildren = {}, TApi extends CollectionTypeApi<T, TKey> = {}> = {
|
|
123
|
-
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>;
|
|
124
146
|
with(params: CollectionScopeParams): CollectionType<T, TKey, TChildren, TApi>;
|
|
125
147
|
withId(id: TKey, childParam?: string): CollectionEntity<T, TKey, TChildren>;
|
|
126
148
|
usage(): Array<CollectionUsage>;
|
|
@@ -136,7 +158,8 @@ type CollectionTypeBaseOptions<T extends object, TKey extends string | number, T
|
|
|
136
158
|
id?: CollectionTypeId;
|
|
137
159
|
children?: TChildren;
|
|
138
160
|
api?: TApi;
|
|
139
|
-
parentParam?: string;
|
|
161
|
+
parentParam?: string; /** Maximum number of inactive scoped collections to retain. Defaults to 32. */
|
|
162
|
+
maxCachedCollections?: number;
|
|
140
163
|
};
|
|
141
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;
|
|
142
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;
|
|
@@ -156,9 +179,9 @@ interface OptionalCollectionTypeConnection {
|
|
|
156
179
|
}
|
|
157
180
|
//#endregion
|
|
158
181
|
//#region src/definition-builder.d.ts
|
|
159
|
-
type BuilderIndexMode
|
|
160
|
-
type BuilderIndexType
|
|
161
|
-
type BuilderSyncMode
|
|
182
|
+
type BuilderIndexMode = NonNullable<BaseCollectionConfig<any, any, any>["autoIndex"]>;
|
|
183
|
+
type BuilderIndexType = BaseCollectionConfig<any, any, any>["defaultIndexType"];
|
|
184
|
+
type BuilderSyncMode = "eager" | "on-demand";
|
|
162
185
|
declare function collectionTypesFrom<TCollections extends CollectionDefinitions>(definitions: CollectionSet<TCollections>): DefinitionCollectionTypesBuilder<TCollections>;
|
|
163
186
|
declare class DefinitionCollectionTypesBuilder<TCollections extends CollectionDefinitions> {
|
|
164
187
|
private readonly definitions;
|
|
@@ -175,8 +198,11 @@ declare class DefinitionCollectionTypesBuilder<TCollections extends CollectionDe
|
|
|
175
198
|
declare class ClientCollectionBuilder<TDefinition> {
|
|
176
199
|
private readonly override;
|
|
177
200
|
constructor(override: ClientCollectionOverride);
|
|
178
|
-
sync(syncMode: BuilderSyncMode
|
|
179
|
-
|
|
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>;
|
|
205
|
+
index(autoIndex: BuilderIndexMode, defaultIndexType?: BuilderIndexType): ClientCollectionBuilder<TDefinition>;
|
|
180
206
|
toOverride(): ClientCollectionOverride;
|
|
181
207
|
}
|
|
182
208
|
type CollectionManagers<TCollections extends CollectionDefinitions> = { [TName in keyof TCollections]: CollectionTypeForDefinition<TCollections[TName]> };
|
|
@@ -185,49 +211,13 @@ type ChildOptionsForDefinitions<TChildren extends CollectionDefinitions> = { [TN
|
|
|
185
211
|
type ChildOptionForDefinition<TDefinition> = TDefinition extends CollectionDefinition<infer TRow, infer TKey, infer TChildren, infer TApi> ? ChildCollectionTypeOptions<TRow, Extract<TRow[TKey], string | number>, StandardSchemaV1, ChildOptionsForDefinitions<TChildren>, ApiMethodsForDefinitions<TApi, TRow, Extract<TRow[TKey], string | number>>> : never;
|
|
186
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 };
|
|
187
213
|
interface ClientCollectionOverride {
|
|
188
|
-
syncMode?: BuilderSyncMode
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
type BuilderState = Record<string, unknown> & {
|
|
195
|
-
api?: CollectionTypeApi<any, any>;
|
|
196
|
-
name?: string;
|
|
197
|
-
path?: string;
|
|
198
|
-
};
|
|
199
|
-
//#endregion
|
|
200
|
-
//#region src/collection-type-builder.d.ts
|
|
201
|
-
type BuilderApiContext<TInput, T extends object, TKey extends string | number> = Omit<CollectionApiHandlerArgs<TInput, T, TKey>, "input">;
|
|
202
|
-
type BuilderApiHandler<TInput, TOutput, T extends object, TKey extends string | number> = (input: TInput, context: BuilderApiContext<TInput, T, TKey>) => TOutput | Promise<TOutput>;
|
|
203
|
-
type BuilderSyncMode = "eager" | "on-demand";
|
|
204
|
-
type BuilderIndexMode = NonNullable<BaseCollectionConfig<any, any, any>["autoIndex"]>;
|
|
205
|
-
type BuilderIndexType = BaseCollectionConfig<any, any, any>["defaultIndexType"];
|
|
206
|
-
declare function collectionTypeBuilder(): Pick<CollectionTypeBuilder<InferSchemaOutput<StandardSchemaV1>, "", StandardSchemaV1>, "name">;
|
|
207
|
-
declare const CollectionTypes: {
|
|
208
|
-
builder: typeof collectionTypeBuilder;
|
|
209
|
-
from: typeof collectionTypesFrom;
|
|
210
|
-
};
|
|
211
|
-
declare class CollectionTypeBuilder<T extends object, TKey extends string | number, TSchema extends StandardSchemaV1, TChildren extends CollectionTypeChildren = {}, TApi extends CollectionTypeApi<T, TKey> = {}> {
|
|
212
|
-
private readonly state;
|
|
213
|
-
constructor(state: BuilderState);
|
|
214
|
-
client(client: Client): CollectionTypeBuilder<T, TKey, TSchema, TChildren, TApi>;
|
|
215
|
-
url(url: string | URL, options?: {
|
|
216
|
-
clientId?: string;
|
|
217
|
-
}): CollectionTypeBuilder<T, TKey, TSchema, TChildren, TApi>;
|
|
218
|
-
name(name: string): Pick<CollectionTypeBuilder<T, TKey, TSchema, TChildren>, "schema">;
|
|
219
|
-
schema<TSchema extends StandardSchemaV1>(schema: TSchema): Omit<CollectionTypeBuilder<InferSchemaOutput<TSchema>, TKey, TSchema, TChildren>, "name" | "schema">;
|
|
220
|
-
sync(syncMode: BuilderSyncMode): CollectionTypeBuilder<T, TKey, TSchema, TChildren, TApi>;
|
|
221
|
-
index(autoIndex: BuilderIndexMode, defaultIndexType?: BuilderIndexType): CollectionTypeBuilder<T, TKey, TSchema, TChildren, TApi>;
|
|
222
|
-
child<TName extends string, TBuilder extends CollectionTypeBuilder<any, any, any, any, any>>(name: TName, configure: (builder: Pick<CollectionTypeBuilder<InferSchemaOutput<StandardSchemaV1>, "", StandardSchemaV1>, "schema">) => TBuilder): CollectionTypeBuilder<T, TKey, TSchema, TChildren & Record<TName, ChildOptionsForBuilder<TBuilder>>, TApi>;
|
|
223
|
-
key<TKeyNext extends string | number>(getKey: (item: T) => TKeyNext): CollectionTypeBuilder<T, TKeyNext, TSchema, TChildren>;
|
|
224
|
-
api<TName extends string, TInput = undefined, TOutput = unknown>(name: TName, method?: CollectionApiMethod<TInput, TOutput, T, TKey>): CollectionTypeBuilder<T, TKey, TSchema, TChildren, TApi & Record<TName, CollectionApiMethod<TInput, TOutput, T, TKey>>>;
|
|
225
|
-
api<TName extends string, TInput, TOutput>(name: TName, handler: BuilderApiHandler<TInput, TOutput, T, TKey>): CollectionTypeBuilder<T, TKey, TSchema, TChildren, TApi & Record<TName, CollectionApiMethod<TInput, TOutput, T, TKey>>>;
|
|
226
|
-
build(): CollectionType<T, TKey, TChildren, TApi>;
|
|
227
|
-
private next;
|
|
228
|
-
private childBuilder;
|
|
214
|
+
syncMode?: BuilderSyncMode;
|
|
215
|
+
maxSyncRows?: number | false;
|
|
216
|
+
autoIndex?: BuilderIndexMode;
|
|
217
|
+
defaultIndexType?: BuilderIndexType;
|
|
218
|
+
offline?: true | IndexedDBOfflineOptions;
|
|
219
|
+
maxCachedCollections?: number;
|
|
229
220
|
}
|
|
230
|
-
type ChildOptionsForBuilder<TBuilder> = TBuilder extends CollectionTypeBuilder<infer T, infer TKey, infer TSchema, infer TChildren, infer TApi> ? ChildCollectionTypeOptions<T, TKey, TSchema, TChildren, TApi> : never;
|
|
231
221
|
//#endregion
|
|
232
|
-
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,
|
|
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 };
|
|
233
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/client.ts","../src/collection.ts","../src/
|
|
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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"}
|