@sqlite-sync/core 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/dist/chunk-627DSM2Q.js +1410 -0
- package/dist/chunk-627DSM2Q.js.map +1 -0
- package/dist/chunk-UGF5IU53.js +132 -0
- package/dist/chunk-UGF5IU53.js.map +1 -0
- package/dist/crdt-schema-DQ1cYsFE.d.ts +63 -0
- package/dist/crdt-sync-remote-source-idoIjMcs.d.ts +479 -0
- package/dist/index.d.ts +117 -207
- package/dist/index.js +614 -357
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +50 -26
- package/dist/server.js +28 -36
- package/dist/server.js.map +1 -1
- package/dist/worker.d.ts +13 -11
- package/dist/worker.js +275 -140
- package/dist/worker.js.map +1 -1
- package/package.json +6 -6
- package/dist/chunk-LK5FJCUD.js +0 -522
- package/dist/chunk-LK5FJCUD.js.map +0 -1
- package/dist/chunk-YLXMST5Z.js +0 -490
- package/dist/chunk-YLXMST5Z.js.map +0 -1
- package/dist/crdt-sync-producer-0toEpGf0.d.ts +0 -15
- package/dist/crdt-sync-remote-source-rrqinqLn.d.ts +0 -271
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
import { Sqlite3Static, Database, SqlValue, FunctionOptions } from '@sqlite.org/sqlite-wasm';
|
|
2
|
-
import * as kysely from 'kysely';
|
|
3
|
-
import { CompiledQuery, Compilable, Kysely, SchemaModule } from 'kysely';
|
|
4
|
-
|
|
5
|
-
type DeferredPromise<T> = {
|
|
6
|
-
promise: Promise<T>;
|
|
7
|
-
resolve: (value: T) => void;
|
|
8
|
-
reject: (error: Error) => void;
|
|
9
|
-
};
|
|
10
|
-
declare function createDeferredPromise<T>(): DeferredPromise<T>;
|
|
11
|
-
declare const generateId: () => `${string}-${string}-${string}-${string}-${string}`;
|
|
12
|
-
type DistributiveOmit<T, K extends keyof T> = T extends any ? Omit<T, K> : never;
|
|
13
|
-
declare function ensureSingletonExecution(fn: () => Promise<void>): {
|
|
14
|
-
(): void;
|
|
15
|
-
isExecuting(): boolean;
|
|
16
|
-
};
|
|
17
|
-
declare function orderBy<T>(inputArray: T[], picker: (item: T) => any, opts?: {
|
|
18
|
-
direction?: "asc" | "desc";
|
|
19
|
-
inPlace?: boolean;
|
|
20
|
-
}): T[];
|
|
21
|
-
declare function createAutoFlushBuffer<T>({ size, flush, }: {
|
|
22
|
-
size: number;
|
|
23
|
-
flush: (items: T[]) => void;
|
|
24
|
-
}): {
|
|
25
|
-
add(item: T): void;
|
|
26
|
-
flush(): void;
|
|
27
|
-
};
|
|
28
|
-
declare function createAsyncAutoFlushBuffer<T>({ size, flush, }: {
|
|
29
|
-
size: number;
|
|
30
|
-
flush: (items: T[]) => void | Promise<void>;
|
|
31
|
-
}): {
|
|
32
|
-
add(item: T): Promise<void>;
|
|
33
|
-
flush(): Promise<void>;
|
|
34
|
-
};
|
|
35
|
-
declare class TypedBroadcastChannel<TMessage> {
|
|
36
|
-
private readonly channel;
|
|
37
|
-
constructor(name: string);
|
|
38
|
-
postMessage(message: TMessage): void;
|
|
39
|
-
set onmessage(callback: (event: MessageEvent<TMessage>) => void);
|
|
40
|
-
}
|
|
41
|
-
declare class TypedEvent<T = unknown> extends Event {
|
|
42
|
-
readonly payload: T;
|
|
43
|
-
constructor(type: string, payload: T);
|
|
44
|
-
}
|
|
45
|
-
declare const createTypedEventTarget: <T extends Record<string, unknown>>() => {
|
|
46
|
-
addEventListener: <K extends keyof T & string>(type: K, listener: (event: TypedEvent<T[K]>) => void) => void;
|
|
47
|
-
removeEventListener: <K extends keyof T & string>(type: K, listener: (event: TypedEvent<T[K]>) => void) => void;
|
|
48
|
-
dispatchEvent: <K extends keyof T & string>(type: K, payload: T[K]) => void;
|
|
49
|
-
};
|
|
50
|
-
declare function jsonSafeParse<T>(json: string): {
|
|
51
|
-
status: "ok";
|
|
52
|
-
data: T;
|
|
53
|
-
} | {
|
|
54
|
-
status: "error";
|
|
55
|
-
error: unknown;
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
type LogLevel = "info" | "warning" | "error" | "trace";
|
|
59
|
-
type Logger = (type: string, message: string, level?: LogLevel) => void;
|
|
60
|
-
declare const startPerformanceLogger: (logger: Logger) => {
|
|
61
|
-
restart: () => void;
|
|
62
|
-
logEnd: (type: string, message: string, level?: LogLevel) => void;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
type TableMetadata = {
|
|
66
|
-
name: string;
|
|
67
|
-
isView: boolean;
|
|
68
|
-
columns: ColumnMetadata[];
|
|
69
|
-
};
|
|
70
|
-
type DatabaseIntrospection = Record<string, TableMetadata>;
|
|
71
|
-
type ColumnMetadata = {
|
|
72
|
-
name: string;
|
|
73
|
-
dataType: string;
|
|
74
|
-
isNullable: boolean;
|
|
75
|
-
isAutoIncrementing: boolean;
|
|
76
|
-
hasDefaultValue: boolean;
|
|
77
|
-
comment: undefined;
|
|
78
|
-
};
|
|
79
|
-
declare function introspectDb<BaseDatabase>(_db: SQLiteDbWrapper<BaseDatabase>): DatabaseIntrospection;
|
|
80
|
-
|
|
81
|
-
type ExecuteParams = {
|
|
82
|
-
sql: string;
|
|
83
|
-
parameters: readonly unknown[];
|
|
84
|
-
};
|
|
85
|
-
type ExecuteResult<T> = {
|
|
86
|
-
rows: T[];
|
|
87
|
-
};
|
|
88
|
-
type PreparedStatement<TParams extends SqlValue[], TResult> = {
|
|
89
|
-
execute: (parameters: TParams) => TResult[];
|
|
90
|
-
finalize: () => void;
|
|
91
|
-
isFinalized: boolean;
|
|
92
|
-
};
|
|
93
|
-
type ScalarFunctionOptions<TArgs extends readonly SqlValue[], TResult extends SqlValue | void> = {
|
|
94
|
-
name: string;
|
|
95
|
-
callback: (...args: TArgs) => TResult;
|
|
96
|
-
} & Pick<FunctionOptions, "deterministic" | "directOnly" | "innocuous">;
|
|
97
|
-
type SqliteWrapperOptions = {
|
|
98
|
-
logger?: Logger;
|
|
99
|
-
loggerPrefix?: string;
|
|
100
|
-
sqlite3: Sqlite3Static;
|
|
101
|
-
db: Database;
|
|
102
|
-
};
|
|
103
|
-
type SQLiteTransactionWrapper<TDatabase = unknown> = Pick<SQLiteDbWrapper<TDatabase>, "execute" | "sql" | "executeKysely" | "prepare" | "executePrepared" | "prepareKysely">;
|
|
104
|
-
declare class SQLiteDbWrapper<TDatabase = unknown> {
|
|
105
|
-
private db;
|
|
106
|
-
private sqlite3;
|
|
107
|
-
private logger?;
|
|
108
|
-
private loggerPrefix?;
|
|
109
|
-
private loadedDbSchema;
|
|
110
|
-
private readonly dataPointers;
|
|
111
|
-
private preparedStatements;
|
|
112
|
-
private preparedStatementsMap;
|
|
113
|
-
constructor(opts: SqliteWrapperOptions);
|
|
114
|
-
get ensureDb(): Database;
|
|
115
|
-
get dbSchema(): DatabaseIntrospection;
|
|
116
|
-
execute<T = unknown>(opts: ExecuteParams | string | CompiledQuery<T>): ExecuteResult<T>;
|
|
117
|
-
executeTransaction<T>(callback: (db: SQLiteTransactionWrapper<TDatabase>) => T): T;
|
|
118
|
-
prepare<TParams extends SqlValue[], TResult>(sql: string): PreparedStatement<TParams, TResult>;
|
|
119
|
-
prepareKysely<TParams extends Record<string, unknown>>(): <TQuery extends Compilable<TResult>, TResult = QueryBuilderOutput<TQuery>>(factory: KyselyStatementFactory<TParams, TDatabase, TQuery, TResult>) => TypedStatement<TParams, TResult>;
|
|
120
|
-
executeKysely<TQuery extends Compilable<TResult>, TResult = QueryBuilderOutput<TQuery>>(factory: KyselyQueryFactory<TDatabase, TQuery, TResult>): ExecuteResult<TResult>;
|
|
121
|
-
executePrepared<TParams extends Record<string, unknown>, TQuery extends Compilable<TResult>, TResult = QueryBuilderOutput<TQuery>>(key: string, params: TParams, factory: KyselyStatementFactory<TParams, TDatabase, TQuery, TResult>): TResult[];
|
|
122
|
-
sql<T = unknown>(templateOrString: TemplateStringsArray | string, ...parameters: unknown[]): ExecuteResult<T>;
|
|
123
|
-
createScalarFunction<TArgs extends SqlValue[], TResult extends SqlValue | void>({ name, callback, deterministic, directOnly, innocuous, }: ScalarFunctionOptions<TArgs, TResult>): Database;
|
|
124
|
-
useSnapshot(snapshot: Uint8Array<ArrayBufferLike>): void;
|
|
125
|
-
createSnapshot(): Uint8Array<ArrayBuffer>;
|
|
126
|
-
invalidateDbSchema(): void;
|
|
127
|
-
cleanup(): void;
|
|
128
|
-
close(): void;
|
|
129
|
-
}
|
|
130
|
-
type QueryBuilderOutput<QB> = QB extends Compilable<infer O> ? O : never;
|
|
131
|
-
type ParamsGetter<TParams> = <TKey extends keyof TParams>(key: TKey) => TParams[TKey];
|
|
132
|
-
type TypedStatement<TParams extends Record<string, unknown>, TResult> = {
|
|
133
|
-
execute: (parameters: TParams) => TResult[];
|
|
134
|
-
};
|
|
135
|
-
type KyselyStatementFactory<TParams extends Record<string, unknown>, TDatabase, TQuery extends Compilable<TResult>, TResult = QueryBuilderOutput<TQuery>> = (kysely: Kysely<TDatabase>, params: ParamsGetter<TParams>) => TQuery;
|
|
136
|
-
type KyselyQueryFactory<TDatabase, TQuery extends Compilable<TResult>, TResult = QueryBuilderOutput<TQuery>> = (kysely: Kysely<TDatabase>) => TQuery;
|
|
137
|
-
|
|
138
|
-
type PendingCrdtEvent = {
|
|
139
|
-
type: CrdtEventType;
|
|
140
|
-
dataset: string;
|
|
141
|
-
item_id: string;
|
|
142
|
-
timestamp: string;
|
|
143
|
-
payload: string;
|
|
144
|
-
};
|
|
145
|
-
type ApplyCrdtParams = {
|
|
146
|
-
updateLogTableName: string;
|
|
147
|
-
db: SQLiteTransactionWrapper<any>;
|
|
148
|
-
event: PendingCrdtEvent;
|
|
149
|
-
};
|
|
150
|
-
declare function applyCrdtEventMutations({ db, event, updateLogTableName, }: ApplyCrdtParams): void;
|
|
151
|
-
|
|
152
|
-
type CrdtEventType = "item-created" | "item-updated";
|
|
153
|
-
type CrdtEventStatus = "pending" | "applied" | "failed";
|
|
154
|
-
type CrdtEventOrigin = "remote" | (string & {});
|
|
155
|
-
type PersistedCrdtEvent = {
|
|
156
|
-
sync_id: number;
|
|
157
|
-
status: CrdtEventStatus;
|
|
158
|
-
type: CrdtEventType;
|
|
159
|
-
timestamp: string;
|
|
160
|
-
origin: CrdtEventOrigin;
|
|
161
|
-
dataset: string;
|
|
162
|
-
item_id: string;
|
|
163
|
-
payload: string;
|
|
164
|
-
};
|
|
165
|
-
type CrdtUpdateLogItem = {
|
|
166
|
-
dataset: string;
|
|
167
|
-
item_id: string;
|
|
168
|
-
payload: string;
|
|
169
|
-
};
|
|
170
|
-
type CrdtUpdateLogPayload = Record<string, string>;
|
|
171
|
-
type MetaItem = {
|
|
172
|
-
key: string;
|
|
173
|
-
value: string;
|
|
174
|
-
};
|
|
175
|
-
declare const crdtSchema: {
|
|
176
|
-
metaTable: typeof createMetaTableQuery;
|
|
177
|
-
persistedEventsTable: typeof createPersistedEventsTable;
|
|
178
|
-
crdtUpdateLogTable: typeof createCrdtUpdateLogTableQuery;
|
|
179
|
-
};
|
|
180
|
-
declare function createMetaTableQuery(schema: SchemaModule, tableName: string): kysely.CreateTableBuilder<string, "key" | "value">;
|
|
181
|
-
declare function createPersistedEventsTable(schema: SchemaModule, tableName: string): kysely.CreateTableBuilder<string, "type" | "timestamp" | "sync_id" | "status" | "origin" | "dataset" | "item_id" | "payload">;
|
|
182
|
-
declare function createCrdtUpdateLogTableQuery(schema: SchemaModule, tableName: string): kysely.CreateTableBuilder<string, "dataset" | "item_id" | "payload">;
|
|
183
|
-
declare function registerCrdtFunctions({ db, onEventApplied, getNextTimestamp, getTableSchema, updateLogTableName, }: {
|
|
184
|
-
db: SQLiteDbWrapper<any>;
|
|
185
|
-
onEventApplied: (event: PendingCrdtEvent) => void;
|
|
186
|
-
getNextTimestamp: () => string;
|
|
187
|
-
getTableSchema: (dataset: string) => TableMetadata;
|
|
188
|
-
updateLogTableName: string;
|
|
189
|
-
}): void;
|
|
190
|
-
|
|
191
|
-
type SyncIdCounter = {
|
|
192
|
-
get current(): number;
|
|
193
|
-
set current(newSyncId: number);
|
|
194
|
-
};
|
|
195
|
-
declare function createSyncIdCounter({ initialSyncId, saveToStorage, }: {
|
|
196
|
-
initialSyncId: number;
|
|
197
|
-
saveToStorage?: (syncId: number) => void;
|
|
198
|
-
}): SyncIdCounter;
|
|
199
|
-
|
|
200
|
-
type LocalCrdtEvent = {
|
|
201
|
-
type: CrdtEventType;
|
|
202
|
-
timestamp: string;
|
|
203
|
-
dataset: string;
|
|
204
|
-
item_id: string;
|
|
205
|
-
payload: string;
|
|
206
|
-
origin: CrdtEventOrigin;
|
|
207
|
-
};
|
|
208
|
-
type PendingEventsBatch = {
|
|
209
|
-
events: PersistedCrdtEvent[];
|
|
210
|
-
hasMore: boolean;
|
|
211
|
-
};
|
|
212
|
-
type DbSyncerStorage = {
|
|
213
|
-
syncId: SyncIdCounter;
|
|
214
|
-
persistEvents: (events: PersistedCrdtEvent[]) => void;
|
|
215
|
-
popPendingEventsBatch: () => PendingEventsBatch;
|
|
216
|
-
updateEventStatus: (syncId: number, status: CrdtEventStatus) => void;
|
|
217
|
-
applyCrdtEventMutations: (event: PersistedCrdtEvent) => void;
|
|
218
|
-
};
|
|
219
|
-
type CrdtStorage = ReturnType<typeof createCrdtStorage>;
|
|
220
|
-
declare function createCrdtStorage(storage: DbSyncerStorage): {
|
|
221
|
-
enqueueEvents: (events: LocalCrdtEvent[]) => {
|
|
222
|
-
firstEventSyncId: number;
|
|
223
|
-
lastEventSyncId: number;
|
|
224
|
-
};
|
|
225
|
-
addEventListener: <K extends "event-applied" | "event-processing-done">(type: K, listener: (event: TypedEvent<{
|
|
226
|
-
"event-applied": PersistedCrdtEvent;
|
|
227
|
-
"event-processing-done": void;
|
|
228
|
-
}[K]>) => void) => void;
|
|
229
|
-
removeEventListener: <K extends "event-applied" | "event-processing-done">(type: K, listener: (event: TypedEvent<{
|
|
230
|
-
"event-applied": PersistedCrdtEvent;
|
|
231
|
-
"event-processing-done": void;
|
|
232
|
-
}[K]>) => void) => void;
|
|
233
|
-
dispatchEvent: <K extends "event-applied" | "event-processing-done">(type: K, payload: {
|
|
234
|
-
"event-applied": PersistedCrdtEvent;
|
|
235
|
-
"event-processing-done": void;
|
|
236
|
-
}[K]) => void;
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
type CrdtSyncRemoteSourceConfig = {
|
|
240
|
-
bufferSize: number;
|
|
241
|
-
storage: CrdtStorage;
|
|
242
|
-
syncId: SyncIdCounter;
|
|
243
|
-
nodeId: string;
|
|
244
|
-
pullEvents: (request: EventsPullRequest) => EventsPullResponse | Promise<EventsPullResponse>;
|
|
245
|
-
pushEvents: (request: EventsPushRequest) => EventsPushResponse | Promise<EventsPushResponse>;
|
|
246
|
-
};
|
|
247
|
-
type EventsPullRequest = {
|
|
248
|
-
afterSyncId: number;
|
|
249
|
-
excludeNodeId?: string;
|
|
250
|
-
};
|
|
251
|
-
type EventsPullResponse = {
|
|
252
|
-
events: PersistedCrdtEvent[];
|
|
253
|
-
newSyncId: number;
|
|
254
|
-
hasMore: boolean;
|
|
255
|
-
};
|
|
256
|
-
type EventsPushRequest = {
|
|
257
|
-
nodeId: string;
|
|
258
|
-
events: PendingCrdtEvent[];
|
|
259
|
-
};
|
|
260
|
-
type EventsPushResponse = {
|
|
261
|
-
ok: boolean;
|
|
262
|
-
};
|
|
263
|
-
type CrdtSyncRemoteSource = ReturnType<typeof createCrdtSyncRemoteSource>;
|
|
264
|
-
declare const createCrdtSyncRemoteSource: ({ bufferSize, storage, syncId, nodeId, pullEvents: pullEventsChunk, pushEvents, }: CrdtSyncRemoteSourceConfig) => {
|
|
265
|
-
pullEvents: (request?: {
|
|
266
|
-
afterSyncId?: number;
|
|
267
|
-
includeSelf?: boolean;
|
|
268
|
-
}) => Promise<void>;
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
export { createAutoFlushBuffer as A, createAsyncAutoFlushBuffer as B, type CrdtEventType as C, createTypedEventTarget as D, type EventsPushRequest as E, jsonSafeParse as F, type DeferredPromise as G, type DistributiveOmit as H, startPerformanceLogger as I, type LogLevel as J, type KyselyQueryFactory as K, type Logger as L, type MetaItem as M, introspectDb as N, type TableMetadata as O, type PersistedCrdtEvent as P, type QueryBuilderOutput as Q, type DatabaseIntrospection as R, SQLiteDbWrapper as S, TypedEvent as T, type CrdtEventOrigin as a, type EventsPushResponse as b, type ExecuteParams as c, type ExecuteResult as d, type EventsPullRequest as e, type EventsPullResponse as f, TypedBroadcastChannel as g, type PreparedStatement as h, type SQLiteTransactionWrapper as i, applyCrdtEventMutations as j, type PendingCrdtEvent as k, createCrdtStorage as l, type CrdtStorage as m, createCrdtSyncRemoteSource as n, type CrdtSyncRemoteSource as o, crdtSchema as p, type CrdtEventStatus as q, registerCrdtFunctions as r, type CrdtUpdateLogItem as s, type CrdtUpdateLogPayload as t, createSyncIdCounter as u, type SyncIdCounter as v, generateId as w, createDeferredPromise as x, ensureSingletonExecution as y, orderBy as z };
|