tetherdb 0.1.0
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 +21 -0
- package/README.md +277 -0
- package/bin/tetherdb.js +7 -0
- package/dist/cli/args.d.cts +20 -0
- package/dist/cli/args.d.ts +20 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/backend.d.cts +15 -0
- package/dist/cli/backend.d.ts +15 -0
- package/dist/cli/backend.d.ts.map +1 -0
- package/dist/cli/cli.d.cts +8 -0
- package/dist/cli/cli.d.ts +8 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/commands/apps.d.cts +9 -0
- package/dist/cli/commands/apps.d.ts +9 -0
- package/dist/cli/commands/apps.d.ts.map +1 -0
- package/dist/cli/commands/help.d.cts +5 -0
- package/dist/cli/commands/help.d.ts +5 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/index.d.cts +8 -0
- package/dist/cli/commands/index.d.ts +8 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.d.cts +9 -0
- package/dist/cli/commands/maintenance.d.ts +9 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/serve.d.cts +14 -0
- package/dist/cli/commands/serve.d.ts +14 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/status.d.cts +9 -0
- package/dist/cli/commands/status.d.ts +9 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/tables.d.cts +9 -0
- package/dist/cli/commands/tables.d.ts +9 -0
- package/dist/cli/commands/tables.d.ts.map +1 -0
- package/dist/cli/commands/users.d.cts +9 -0
- package/dist/cli/commands/users.d.ts +9 -0
- package/dist/cli/commands/users.d.ts.map +1 -0
- package/dist/cli/index.cjs +3999 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +7 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +3958 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client/auth.d.cts +155 -0
- package/dist/client/auth.d.ts +155 -0
- package/dist/client/auth.d.ts.map +1 -0
- package/dist/client/client.d.cts +122 -0
- package/dist/client/client.d.ts +122 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/errors.d.cts +39 -0
- package/dist/client/errors.d.ts +39 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/index.cjs +1742 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +12 -0
- package/dist/client/index.d.ts +12 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +1707 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/shared/event.d.cts +29 -0
- package/dist/client/shared/event.d.ts +29 -0
- package/dist/client/shared/event.d.ts.map +1 -0
- package/dist/client/shared/id.d.cts +5 -0
- package/dist/client/shared/id.d.ts +5 -0
- package/dist/client/shared/id.d.ts.map +1 -0
- package/dist/client/storage.d.cts +183 -0
- package/dist/client/storage.d.ts +183 -0
- package/dist/client/storage.d.ts.map +1 -0
- package/dist/client/sync.d.cts +126 -0
- package/dist/client/sync.d.ts +126 -0
- package/dist/client/sync.d.ts.map +1 -0
- package/dist/client/table.d.cts +146 -0
- package/dist/client/table.d.ts +146 -0
- package/dist/client/table.d.ts.map +1 -0
- package/dist/index.cjs +1742 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1707 -0
- package/dist/index.js.map +1 -0
- package/dist/server/crypto.d.cts +55 -0
- package/dist/server/crypto.d.ts +55 -0
- package/dist/server/crypto.d.ts.map +1 -0
- package/dist/server/errors.d.cts +39 -0
- package/dist/server/errors.d.ts +39 -0
- package/dist/server/errors.d.ts.map +1 -0
- package/dist/server/index.cjs +3621 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +10 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3569 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lock.d.cts +56 -0
- package/dist/server/lock.d.ts +56 -0
- package/dist/server/lock.d.ts.map +1 -0
- package/dist/server/rate-limiter.d.cts +81 -0
- package/dist/server/rate-limiter.d.ts +81 -0
- package/dist/server/rate-limiter.d.ts.map +1 -0
- package/dist/server/server.d.cts +206 -0
- package/dist/server/server.d.ts +206 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/storage/app.d.cts +70 -0
- package/dist/server/storage/app.d.ts +70 -0
- package/dist/server/storage/app.d.ts.map +1 -0
- package/dist/server/storage/base/app.d.cts +42 -0
- package/dist/server/storage/base/app.d.ts +42 -0
- package/dist/server/storage/base/app.d.ts.map +1 -0
- package/dist/server/storage/base/index.d.cts +5 -0
- package/dist/server/storage/base/index.d.ts +5 -0
- package/dist/server/storage/base/index.d.ts.map +1 -0
- package/dist/server/storage/base/storage.d.cts +40 -0
- package/dist/server/storage/base/storage.d.ts +40 -0
- package/dist/server/storage/base/storage.d.ts.map +1 -0
- package/dist/server/storage/base/table.d.cts +32 -0
- package/dist/server/storage/base/table.d.ts +32 -0
- package/dist/server/storage/base/table.d.ts.map +1 -0
- package/dist/server/storage/base/user.d.cts +31 -0
- package/dist/server/storage/base/user.d.ts +31 -0
- package/dist/server/storage/base/user.d.ts.map +1 -0
- package/dist/server/storage/file/app.d.cts +50 -0
- package/dist/server/storage/file/app.d.ts +50 -0
- package/dist/server/storage/file/app.d.ts.map +1 -0
- package/dist/server/storage/file/index.d.cts +5 -0
- package/dist/server/storage/file/index.d.ts +5 -0
- package/dist/server/storage/file/index.d.ts.map +1 -0
- package/dist/server/storage/file/storage.d.cts +67 -0
- package/dist/server/storage/file/storage.d.ts +67 -0
- package/dist/server/storage/file/storage.d.ts.map +1 -0
- package/dist/server/storage/file/table.d.cts +14 -0
- package/dist/server/storage/file/table.d.ts +14 -0
- package/dist/server/storage/file/table.d.ts.map +1 -0
- package/dist/server/storage/file/user.d.cts +14 -0
- package/dist/server/storage/file/user.d.ts +14 -0
- package/dist/server/storage/file/user.d.ts.map +1 -0
- package/dist/server/storage/index.d.cts +14 -0
- package/dist/server/storage/index.d.ts +14 -0
- package/dist/server/storage/index.d.ts.map +1 -0
- package/dist/server/storage/memory/app.d.cts +29 -0
- package/dist/server/storage/memory/app.d.ts +29 -0
- package/dist/server/storage/memory/app.d.ts.map +1 -0
- package/dist/server/storage/memory/index.d.cts +5 -0
- package/dist/server/storage/memory/index.d.ts +5 -0
- package/dist/server/storage/memory/index.d.ts.map +1 -0
- package/dist/server/storage/memory/storage.d.cts +47 -0
- package/dist/server/storage/memory/storage.d.ts +47 -0
- package/dist/server/storage/memory/storage.d.ts.map +1 -0
- package/dist/server/storage/memory/table.d.cts +17 -0
- package/dist/server/storage/memory/table.d.ts +17 -0
- package/dist/server/storage/memory/table.d.ts.map +1 -0
- package/dist/server/storage/memory/user.d.cts +21 -0
- package/dist/server/storage/memory/user.d.ts +21 -0
- package/dist/server/storage/memory/user.d.ts.map +1 -0
- package/dist/server/storage/sqlite/app.d.cts +31 -0
- package/dist/server/storage/sqlite/app.d.ts +31 -0
- package/dist/server/storage/sqlite/app.d.ts.map +1 -0
- package/dist/server/storage/sqlite/index.d.cts +5 -0
- package/dist/server/storage/sqlite/index.d.ts +5 -0
- package/dist/server/storage/sqlite/index.d.ts.map +1 -0
- package/dist/server/storage/sqlite/storage.d.cts +92 -0
- package/dist/server/storage/sqlite/storage.d.ts +92 -0
- package/dist/server/storage/sqlite/storage.d.ts.map +1 -0
- package/dist/server/storage/sqlite/table.d.cts +15 -0
- package/dist/server/storage/sqlite/table.d.ts +15 -0
- package/dist/server/storage/sqlite/table.d.ts.map +1 -0
- package/dist/server/storage/sqlite/user.d.cts +14 -0
- package/dist/server/storage/sqlite/user.d.ts +14 -0
- package/dist/server/storage/sqlite/user.d.ts.map +1 -0
- package/dist/server/storage/storage.d.cts +152 -0
- package/dist/server/storage/storage.d.ts +152 -0
- package/dist/server/storage/storage.d.ts.map +1 -0
- package/dist/server/storage/table.d.cts +45 -0
- package/dist/server/storage/table.d.ts +45 -0
- package/dist/server/storage/table.d.ts.map +1 -0
- package/dist/server/storage/user.d.cts +45 -0
- package/dist/server/storage/user.d.ts +45 -0
- package/dist/server/storage/user.d.ts.map +1 -0
- package/dist/server/sync.d.cts +67 -0
- package/dist/server/sync.d.ts +67 -0
- package/dist/server/sync.d.ts.map +1 -0
- package/dist/server/validate.d.cts +113 -0
- package/dist/server/validate.d.ts +113 -0
- package/dist/server/validate.d.ts.map +1 -0
- package/dist/shared/clock.d.cts +22 -0
- package/dist/shared/clock.d.ts +22 -0
- package/dist/shared/clock.d.ts.map +1 -0
- package/dist/shared/path.d.cts +12 -0
- package/dist/shared/path.d.ts +12 -0
- package/dist/shared/path.d.ts.map +1 -0
- package/dist/shared/types.d.cts +234 -0
- package/dist/shared/types.d.ts +234 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { OperationType, type StoredRecord } from '../shared/types.js';
|
|
2
|
+
import { EventRegistry } from './shared/event.js';
|
|
3
|
+
import type { Storage } from './storage.js';
|
|
4
|
+
/**
|
|
5
|
+
* Event describing a mutation (insert, update, delete) on a table record.
|
|
6
|
+
*
|
|
7
|
+
* @typeParam T - Data payload type.
|
|
8
|
+
*/
|
|
9
|
+
export interface TableChangeEvent<T = unknown> {
|
|
10
|
+
/** The mutation operation type. */
|
|
11
|
+
op: OperationType;
|
|
12
|
+
/** The affected record identifier. */
|
|
13
|
+
id: string;
|
|
14
|
+
/** The new record data (defined on 'put' operations). */
|
|
15
|
+
data?: T;
|
|
16
|
+
/** `true` if the change originated from remote synchronization; `false` if triggered locally. */
|
|
17
|
+
isRemote?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Entry item for bulk insertion/update via `Table.putAll`.
|
|
21
|
+
*
|
|
22
|
+
* @typeParam T - Data payload type.
|
|
23
|
+
*/
|
|
24
|
+
export interface TablePutEntry<T = unknown> {
|
|
25
|
+
/** Target record identifier. */
|
|
26
|
+
id: string;
|
|
27
|
+
/** Record data payload. */
|
|
28
|
+
data: T;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Event notification callback fired when records are inserted, updated, or deleted.
|
|
32
|
+
* Always receives a list of change events.
|
|
33
|
+
*
|
|
34
|
+
* @typeParam T - Data payload type.
|
|
35
|
+
* @param events - List of change events that occurred.
|
|
36
|
+
*/
|
|
37
|
+
export type TableChangeListener<T = unknown> = (events: TableChangeEvent<T>[]) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Typed table wrapper providing local-first CRUD operations and reactive event subscriptions
|
|
40
|
+
* against an underlying IndexedDB table.
|
|
41
|
+
* Operations are batched by default for maximum performance.
|
|
42
|
+
*
|
|
43
|
+
* @typeParam T - The data type of records stored in this table.
|
|
44
|
+
*/
|
|
45
|
+
export declare class Table<T = unknown> {
|
|
46
|
+
/** Reactive event registry triggered when records in this table are created, updated, or deleted. */
|
|
47
|
+
readonly onChange: EventRegistry<TableChangeEvent<T>[]>;
|
|
48
|
+
private tableName;
|
|
49
|
+
private storage;
|
|
50
|
+
/**
|
|
51
|
+
* Creates a new Table instance.
|
|
52
|
+
*
|
|
53
|
+
* @param tableName - Name of the table.
|
|
54
|
+
* @param storage - Local storage coordinator.
|
|
55
|
+
*/
|
|
56
|
+
constructor(tableName: string, storage: Storage);
|
|
57
|
+
/**
|
|
58
|
+
* The name of the table.
|
|
59
|
+
*/
|
|
60
|
+
get name(): string;
|
|
61
|
+
/**
|
|
62
|
+
* The client identifier for local mutations.
|
|
63
|
+
*/
|
|
64
|
+
get clientId(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Retrieves a single record by its identifier.
|
|
67
|
+
*
|
|
68
|
+
* @param id - The unique record identifier.
|
|
69
|
+
* @returns A promise resolving to the record data, or `undefined` if not found.
|
|
70
|
+
*/
|
|
71
|
+
get(id: string): Promise<T | undefined>;
|
|
72
|
+
/**
|
|
73
|
+
* Retrieves records stored in this table, optionally filtered by a list of IDs.
|
|
74
|
+
*
|
|
75
|
+
* @param ids - Optional list of record identifiers to fetch. If omitted, retrieves all records.
|
|
76
|
+
* @returns A promise resolving to an array of record data objects.
|
|
77
|
+
*/
|
|
78
|
+
getAll(ids?: string[]): Promise<T[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Deletes all records in this table and queues tombstones for synchronization.
|
|
81
|
+
*
|
|
82
|
+
* @returns A promise resolving to the number of deleted records.
|
|
83
|
+
*/
|
|
84
|
+
clear(): Promise<number>;
|
|
85
|
+
/**
|
|
86
|
+
* Retrieves a single stored record including metadata (version, timestamp).
|
|
87
|
+
*
|
|
88
|
+
* @param id - The unique record identifier.
|
|
89
|
+
* @returns A promise resolving to the stored record with metadata, or `undefined` if not found.
|
|
90
|
+
*/
|
|
91
|
+
getWithMetadata(id: string): Promise<StoredRecord<T> | undefined>;
|
|
92
|
+
/**
|
|
93
|
+
* Retrieves all records with storage metadata (version, timestamp).
|
|
94
|
+
*
|
|
95
|
+
* @returns A promise resolving to an array of stored records with metadata.
|
|
96
|
+
*/
|
|
97
|
+
getAllWithMetadata(): Promise<StoredRecord<T>[]>;
|
|
98
|
+
/**
|
|
99
|
+
* Stores or updates a record locally and triggers synchronization.
|
|
100
|
+
*
|
|
101
|
+
* @param id - The unique record identifier.
|
|
102
|
+
* @param data - The data payload to save.
|
|
103
|
+
* @returns A promise resolving to the saved data.
|
|
104
|
+
*/
|
|
105
|
+
put(id: string, data: T): Promise<T>;
|
|
106
|
+
/**
|
|
107
|
+
* Atomically stores or updates multiple records locally in a single batch,
|
|
108
|
+
* queues outbox mutations, notifies subscribers with an event list, and triggers synchronization.
|
|
109
|
+
*
|
|
110
|
+
* @param entries - Array of record entries to save.
|
|
111
|
+
* @returns A promise resolving to the array of saved data objects.
|
|
112
|
+
*/
|
|
113
|
+
putAll(entries: TablePutEntry<T>[]): Promise<T[]>;
|
|
114
|
+
/**
|
|
115
|
+
* Deletes a record locally by creating a tombstone and triggers synchronization.
|
|
116
|
+
*
|
|
117
|
+
* @param id - The unique record identifier to delete.
|
|
118
|
+
* @returns A promise resolving to `true` if the record existed and was deleted; otherwise `false`.
|
|
119
|
+
*/
|
|
120
|
+
delete(id: string): Promise<boolean>;
|
|
121
|
+
/**
|
|
122
|
+
* Atomically deletes multiple records locally in a single batch,
|
|
123
|
+
* creates tombstones, notifies subscribers with an event list, and triggers synchronization.
|
|
124
|
+
*
|
|
125
|
+
* @param ids - Array of record identifiers to delete.
|
|
126
|
+
* @returns A promise resolving to the count of records that existed and were deleted.
|
|
127
|
+
*/
|
|
128
|
+
deleteAll(ids: string[]): Promise<number>;
|
|
129
|
+
/**
|
|
130
|
+
* Subscribes to the complete list of records in this table.
|
|
131
|
+
* Immediately invokes the listener with the current records, and re-invokes it
|
|
132
|
+
* whenever any local or remote mutations occur on this table.
|
|
133
|
+
*
|
|
134
|
+
* @param listener - Callback receiving the latest array of records.
|
|
135
|
+
* @returns An unsubscribe function.
|
|
136
|
+
*/
|
|
137
|
+
subscribeAll(listener: (items: T[]) => void): () => void;
|
|
138
|
+
/**
|
|
139
|
+
* Notifies registered subscribers of remote change events.
|
|
140
|
+
*
|
|
141
|
+
* @param events - The list of remote change events.
|
|
142
|
+
*/
|
|
143
|
+
notifyRemoteChanges(events: TableChangeEvent<unknown>[]): void;
|
|
144
|
+
private createMutationItem;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/client/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,mCAAmC;IACnC,EAAE,EAAE,aAAa,CAAC;IAClB,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,iGAAiG;IACjG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI,CAC7C,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAC1B,IAAI,CAAC;AAEV;;;;;;GAMG;AACH,qBAAa,KAAK,CAAC,CAAC,GAAG,OAAO;IAC5B,qGAAqG;IACrG,QAAQ,CAAC,QAAQ,uCAA8C;IAC/D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;IAEzB;;;;;OAKG;IACH,YAAY,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAG9C;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;;;OAKG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAG5C;IAED;;;;;OAKG;IACG,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAezC;IAED;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAI7B;IAED;;;;;OAKG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAEtE;IAED;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAErD;IAED;;;;;;OAMG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAGzC;IAED;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CA2BtD;IAED;;;;;OAKG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzC;IAED;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B9C;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAyBvD;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAG7D;IAID,OAAO,CAAC,kBAAkB;CAuB3B"}
|