@lsync/client 0.0.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 lsync contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,10 @@
1
+ # @lsync/client
2
+
3
+ TanStack DB client adapter and collection helpers for lsync.
4
+
5
+ ```sh
6
+ pnpm add @lsync/client @tanstack/db
7
+ ```
8
+
9
+ Use it with a shared contract from `@lsync/definitions` to create eager, on-demand, and offline
10
+ collections.
@@ -0,0 +1,233 @@
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
+ import { StandardSchemaV1 } from "@standard-schema/spec";
4
+ import { ApiDefinition, CollectionAtPath, CollectionDefinition, CollectionDefinitions, CollectionPath, CollectionSet } from "@lsync/definitions";
5
+
6
+ //#region src/types.d.ts
7
+ type Update = Update$1;
8
+ type ApiCall = ApiCall$1;
9
+ type ApiCallArgs<TApi extends ApiContract, TPath extends ApiPath<TApi>> = ApiCallArgs$1<TApi, TPath>;
10
+ type ApiCallInput = ApiCallInput$1;
11
+ type ApiContract = ApiContract$1;
12
+ type ApiInput<TApi extends ApiContract, TPath extends ApiPath<TApi>> = ApiInput$1<TApi, TPath>;
13
+ type ApiOutput<TApi extends ApiContract, TPath extends ApiPath<TApi>> = ApiOutput$1<TApi, TPath>;
14
+ type ApiPath<TApi extends ApiContract> = ApiPath$1<TApi>;
15
+ type ApiRoute<TInput = unknown, TOutput = unknown> = ApiRoute$1<TInput, TOutput>;
16
+ type Batch = Batch$1;
17
+ type Broadcast = Broadcast$1;
18
+ type PushResult = PushResult$1;
19
+ type SequencedUpdate = SequencedUpdate$1;
20
+ type SyncChangesQuery = SyncChangesQueryInput;
21
+ type SyncChangesResult = SyncChangesResult$1;
22
+ type ReadFilterOperator = ReadFilterOperator$1;
23
+ type ReadFilter = ReadFilterInput;
24
+ type ReadQuery = ReadQueryInput;
25
+ type ReadResult<T = unknown> = ReadResult$1<T>;
26
+ interface ClientOptions {
27
+ url: string | URL;
28
+ clientId?: string;
29
+ reconnect?: boolean;
30
+ }
31
+ type CollectionConnectionOptions = {
32
+ url: string | URL;
33
+ clientId?: string;
34
+ client?: never;
35
+ } | {
36
+ client: Client;
37
+ url?: never;
38
+ clientId?: never;
39
+ };
40
+ type CollectionOptions<T extends object, TKey extends string | number, TSchema extends StandardSchemaV1 = never> = {
41
+ id?: string;
42
+ gcTime?: BaseCollectionConfig<T, TKey, TSchema>["gcTime"];
43
+ startSync?: BaseCollectionConfig<T, TKey, TSchema>["startSync"];
44
+ syncMode?: BaseCollectionConfig<T, TKey, TSchema>["syncMode"];
45
+ autoIndex?: BaseCollectionConfig<T, TKey, TSchema>["autoIndex"];
46
+ defaultIndexType?: BaseCollectionConfig<T, TKey, TSchema>["defaultIndexType"];
47
+ collection: string;
48
+ getKey: (item: T) => TKey;
49
+ schema?: TSchema;
50
+ ignoreOwnUpdates?: boolean;
51
+ read?: false | Omit<ReadQuery, "collection">;
52
+ } & CollectionConnectionOptions;
53
+ interface Client<TApi extends ApiContract = ApiContract> {
54
+ readonly clientId: string;
55
+ push(batch: Batch): Promise<PushResult>;
56
+ read<T = unknown>(query: ReadQuery): Promise<ReadResult<T>>;
57
+ changes(query: SyncChangesQuery): Promise<SyncChangesResult>;
58
+ call<TPath extends ApiPath<TApi>>(path: TPath, ...args: ApiCallArgs<TApi, TPath>): Promise<ApiOutput<TApi, TPath>>;
59
+ subscribe(collection: string, listener: (broadcast: Broadcast) => void): ClientSubscription;
60
+ close(): void;
61
+ }
62
+ interface ClientSubscription {
63
+ readonly ready: Promise<void>;
64
+ unsubscribe(): void;
65
+ }
66
+ //#endregion
67
+ //#region src/batch.d.ts
68
+ declare function createBatch<T extends object>(collection: string, clientId: string, transaction: Pick<TransactionWithMutations<T>, "mutations">): Batch;
69
+ declare function toChangeMessage<T extends object, TKey extends string | number>(update: Update, existing?: boolean): ChangeMessageOrDeleteKeyMessage<T, TKey>;
70
+ //#endregion
71
+ //#region src/client.d.ts
72
+ declare function createClient<TApi extends ApiContract = ApiContract>(options: ClientOptions): Client<TApi>;
73
+ //#endregion
74
+ //#region src/collection.d.ts
75
+ declare function collectionOptions<TSchema extends StandardSchemaV1, TKey extends string | number = string | number>(options: CollectionOptions<InferSchemaOutput<TSchema>, TKey, TSchema> & {
76
+ schema: TSchema;
77
+ }): CollectionConfig<InferSchemaOutput<TSchema>, TKey, TSchema> & {
78
+ schema: TSchema;
79
+ };
80
+ declare function collectionOptions<T extends object, TKey extends string | number = string | number>(options: CollectionOptions<T, TKey, never> & {
81
+ schema?: never;
82
+ }): CollectionConfig<T, TKey, never> & {
83
+ schema?: never;
84
+ };
85
+ //#endregion
86
+ //#region src/collection-path.d.ts
87
+ type CollectionScopeParams = Record<string, string | number>;
88
+ //#endregion
89
+ //#region src/collection-type-types.d.ts
90
+ interface CollectionUsage {
91
+ id: string;
92
+ path: string;
93
+ scope: string;
94
+ accessCount: number;
95
+ createdAt: number;
96
+ lastAccessedAt: number;
97
+ }
98
+ type CollectionTypeChildren = Record<string, ChildCollectionTypeOptions<any, any, any, any>>;
99
+ type ChildManagers<TChildren extends CollectionTypeChildren> = { [K in keyof TChildren]: CollectionTypeForOptions<TChildren[K]> };
100
+ interface CollectionApiHandlerArgs<TInput, T extends object, TKey extends string | number> {
101
+ input: TInput;
102
+ collection: Collection<T, TKey>;
103
+ params: CollectionScopeParams;
104
+ scope: string;
105
+ }
106
+ type CollectionApiHandler<TInput, TOutput, T extends object, TKey extends string | number> = (args: CollectionApiHandlerArgs<TInput, T, TKey>) => TOutput | Promise<TOutput>;
107
+ interface CollectionApiMethod<TInput = undefined, TOutput = unknown, T extends object = any, TKey extends string | number = any> {
108
+ path?: string;
109
+ handler?: CollectionApiHandler<TInput, TOutput, T, TKey>;
110
+ }
111
+ type CollectionTypeApi<T extends object, TKey extends string | number> = Record<string, CollectionApiMethod<any, any, T, TKey>>;
112
+ type CollectionApiCallArgs<TInput> = undefined extends TInput ? [input?: TInput] : [input: TInput];
113
+ type CollectionApiMethods<TApi extends CollectionTypeApi<any, any>> = { [K in keyof TApi]: TApi[K] extends CollectionApiMethod<infer TInput, infer TOutput, any, any> ? (...args: CollectionApiCallArgs<TInput>) => Promise<TOutput> : never };
114
+ type CollectionMutations<T extends object, TKey extends string | number> = Pick<Collection<T, TKey>, "delete" | "insert" | "update">;
115
+ type CollectionEntity<T extends object, TKey extends string | number, TChildren extends CollectionTypeChildren = {}> = {
116
+ all(): Collection<T, TKey>;
117
+ delete(config?: OperationConfig): ReturnType<Collection<T, TKey>["delete"]>;
118
+ get(): ReturnType<Collection<T, TKey>["get"]>;
119
+ update(callback: (draft: WritableDeep<T>) => void): ReturnType<Collection<T, TKey>["update"]>;
120
+ update(config: OperationConfig, callback: (draft: WritableDeep<T>) => void): ReturnType<Collection<T, TKey>["update"]>;
121
+ } & ChildManagers<TChildren>;
122
+ type CollectionType<T extends object, TKey extends string | number, TChildren extends CollectionTypeChildren = {}, TApi extends CollectionTypeApi<T, TKey> = {}> = {
123
+ all(params?: CollectionScopeParams): Collection<T, TKey>;
124
+ with(params: CollectionScopeParams): CollectionType<T, TKey, TChildren, TApi>;
125
+ withId(id: TKey, childParam?: string): CollectionEntity<T, TKey, TChildren>;
126
+ usage(): Array<CollectionUsage>;
127
+ } & CollectionMutations<T, TKey> & ChildManagers<TChildren> & CollectionApiMethods<TApi>;
128
+ type CollectionTypeForOptions<TOption> = TOption extends CollectionTypeBaseOptions<infer T, infer TKey, any, infer TChildren, infer TApi> ? CollectionType<T, TKey, TChildren, TApi> : never;
129
+ type CollectionTypeId = string | ((args: {
130
+ path: string;
131
+ scope: string;
132
+ }) => string);
133
+ type CollectionTypeBaseOptions<T extends object, TKey extends string | number, TSchema extends StandardSchemaV1, TChildren extends CollectionTypeChildren = {}, TApi extends CollectionTypeApi<T, TKey> = {}> = Omit<CollectionOptions<T, TKey, TSchema>, "client" | "collection" | "clientId" | "id" | "url"> & {
134
+ name: string;
135
+ path: string;
136
+ id?: CollectionTypeId;
137
+ children?: TChildren;
138
+ api?: TApi;
139
+ parentParam?: string;
140
+ };
141
+ 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
+ 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;
143
+ type CollectionTypeConnection = {
144
+ client: Client;
145
+ url?: never;
146
+ clientId?: never;
147
+ } | {
148
+ url: string | URL;
149
+ clientId?: string;
150
+ client?: never;
151
+ };
152
+ interface OptionalCollectionTypeConnection {
153
+ client?: Client;
154
+ url?: string | URL;
155
+ clientId?: string;
156
+ }
157
+ //#endregion
158
+ //#region src/definition-builder.d.ts
159
+ type BuilderIndexMode$1 = NonNullable<BaseCollectionConfig<any, any, any>["autoIndex"]>;
160
+ type BuilderIndexType$1 = BaseCollectionConfig<any, any, any>["defaultIndexType"];
161
+ type BuilderSyncMode$1 = "eager" | "on-demand";
162
+ declare function collectionTypesFrom<TCollections extends CollectionDefinitions>(definitions: CollectionSet<TCollections>): DefinitionCollectionTypesBuilder<TCollections>;
163
+ declare class DefinitionCollectionTypesBuilder<TCollections extends CollectionDefinitions> {
164
+ private readonly definitions;
165
+ private readonly overrides;
166
+ private readonly connection;
167
+ constructor(definitions: TCollections, overrides: Record<string, ClientCollectionOverride>, connection: CollectionTypeConnection | undefined);
168
+ client(client: Client): DefinitionCollectionTypesBuilder<TCollections>;
169
+ url(url: string | URL, options?: {
170
+ clientId?: string;
171
+ }): DefinitionCollectionTypesBuilder<TCollections>;
172
+ collection<TPath extends CollectionPath<TCollections>>(path: TPath, configure: (collection: ClientCollectionBuilder<CollectionAtPath<TCollections, TPath>>) => ClientCollectionBuilder<CollectionAtPath<TCollections, TPath>>): DefinitionCollectionTypesBuilder<TCollections>;
173
+ build(): CollectionManagers<TCollections>;
174
+ }
175
+ declare class ClientCollectionBuilder<TDefinition> {
176
+ private readonly override;
177
+ constructor(override: ClientCollectionOverride);
178
+ sync(syncMode: BuilderSyncMode$1): ClientCollectionBuilder<TDefinition>;
179
+ index(autoIndex: BuilderIndexMode$1, defaultIndexType?: BuilderIndexType$1): ClientCollectionBuilder<TDefinition>;
180
+ toOverride(): ClientCollectionOverride;
181
+ }
182
+ type CollectionManagers<TCollections extends CollectionDefinitions> = { [TName in keyof TCollections]: CollectionTypeForDefinition<TCollections[TName]> };
183
+ type CollectionTypeForDefinition<TDefinition> = TDefinition extends CollectionDefinition<infer TRow, infer TKey, infer TChildren, infer TApi> ? CollectionType<TRow, Extract<TRow[TKey], string | number>, ChildOptionsForDefinitions<TChildren>, ApiMethodsForDefinitions<TApi, TRow, Extract<TRow[TKey], string | number>>> : never;
184
+ type ChildOptionsForDefinitions<TChildren extends CollectionDefinitions> = { [TName in keyof TChildren]: ChildOptionForDefinition<TChildren[TName]> };
185
+ 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
+ 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
+ interface ClientCollectionOverride {
188
+ syncMode?: BuilderSyncMode$1;
189
+ autoIndex?: BuilderIndexMode$1;
190
+ defaultIndexType?: BuilderIndexType$1;
191
+ }
192
+ //#endregion
193
+ //#region src/collection-type-builder-state.d.ts
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;
229
+ }
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
+ //#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, CollectionTypeBuilder, type CollectionTypeOptions, CollectionTypes, type CollectionUsage, DefinitionCollectionTypesBuilder, type PushResult, type ReadFilter, type ReadFilterOperator, type ReadQuery, type ReadResult, type SequencedUpdate, type SyncChangesQuery, type SyncChangesResult, type Update, collectionOptions, createBatch, createClient, toChangeMessage };
233
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/batch.ts","../src/client.ts","../src/collection.ts","../src/collection-path.ts","../src/collection-type-types.ts","../src/definition-builder.ts","../src/collection-type-builder-state.ts","../src/collection-type-builder.ts"],"mappings":"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"}