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.
Files changed (194) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +277 -0
  3. package/bin/tetherdb.js +7 -0
  4. package/dist/cli/args.d.cts +20 -0
  5. package/dist/cli/args.d.ts +20 -0
  6. package/dist/cli/args.d.ts.map +1 -0
  7. package/dist/cli/backend.d.cts +15 -0
  8. package/dist/cli/backend.d.ts +15 -0
  9. package/dist/cli/backend.d.ts.map +1 -0
  10. package/dist/cli/cli.d.cts +8 -0
  11. package/dist/cli/cli.d.ts +8 -0
  12. package/dist/cli/cli.d.ts.map +1 -0
  13. package/dist/cli/commands/apps.d.cts +9 -0
  14. package/dist/cli/commands/apps.d.ts +9 -0
  15. package/dist/cli/commands/apps.d.ts.map +1 -0
  16. package/dist/cli/commands/help.d.cts +5 -0
  17. package/dist/cli/commands/help.d.ts +5 -0
  18. package/dist/cli/commands/help.d.ts.map +1 -0
  19. package/dist/cli/commands/index.d.cts +8 -0
  20. package/dist/cli/commands/index.d.ts +8 -0
  21. package/dist/cli/commands/index.d.ts.map +1 -0
  22. package/dist/cli/commands/maintenance.d.cts +9 -0
  23. package/dist/cli/commands/maintenance.d.ts +9 -0
  24. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  25. package/dist/cli/commands/serve.d.cts +14 -0
  26. package/dist/cli/commands/serve.d.ts +14 -0
  27. package/dist/cli/commands/serve.d.ts.map +1 -0
  28. package/dist/cli/commands/status.d.cts +9 -0
  29. package/dist/cli/commands/status.d.ts +9 -0
  30. package/dist/cli/commands/status.d.ts.map +1 -0
  31. package/dist/cli/commands/tables.d.cts +9 -0
  32. package/dist/cli/commands/tables.d.ts +9 -0
  33. package/dist/cli/commands/tables.d.ts.map +1 -0
  34. package/dist/cli/commands/users.d.cts +9 -0
  35. package/dist/cli/commands/users.d.ts +9 -0
  36. package/dist/cli/commands/users.d.ts.map +1 -0
  37. package/dist/cli/index.cjs +3999 -0
  38. package/dist/cli/index.cjs.map +1 -0
  39. package/dist/cli/index.d.cts +7 -0
  40. package/dist/cli/index.d.ts +7 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +3958 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/client/auth.d.cts +155 -0
  45. package/dist/client/auth.d.ts +155 -0
  46. package/dist/client/auth.d.ts.map +1 -0
  47. package/dist/client/client.d.cts +122 -0
  48. package/dist/client/client.d.ts +122 -0
  49. package/dist/client/client.d.ts.map +1 -0
  50. package/dist/client/errors.d.cts +39 -0
  51. package/dist/client/errors.d.ts +39 -0
  52. package/dist/client/errors.d.ts.map +1 -0
  53. package/dist/client/index.cjs +1742 -0
  54. package/dist/client/index.cjs.map +1 -0
  55. package/dist/client/index.d.cts +12 -0
  56. package/dist/client/index.d.ts +12 -0
  57. package/dist/client/index.d.ts.map +1 -0
  58. package/dist/client/index.js +1707 -0
  59. package/dist/client/index.js.map +1 -0
  60. package/dist/client/shared/event.d.cts +29 -0
  61. package/dist/client/shared/event.d.ts +29 -0
  62. package/dist/client/shared/event.d.ts.map +1 -0
  63. package/dist/client/shared/id.d.cts +5 -0
  64. package/dist/client/shared/id.d.ts +5 -0
  65. package/dist/client/shared/id.d.ts.map +1 -0
  66. package/dist/client/storage.d.cts +183 -0
  67. package/dist/client/storage.d.ts +183 -0
  68. package/dist/client/storage.d.ts.map +1 -0
  69. package/dist/client/sync.d.cts +126 -0
  70. package/dist/client/sync.d.ts +126 -0
  71. package/dist/client/sync.d.ts.map +1 -0
  72. package/dist/client/table.d.cts +146 -0
  73. package/dist/client/table.d.ts +146 -0
  74. package/dist/client/table.d.ts.map +1 -0
  75. package/dist/index.cjs +1742 -0
  76. package/dist/index.cjs.map +1 -0
  77. package/dist/index.d.cts +7 -0
  78. package/dist/index.d.ts +7 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +1707 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/server/crypto.d.cts +55 -0
  83. package/dist/server/crypto.d.ts +55 -0
  84. package/dist/server/crypto.d.ts.map +1 -0
  85. package/dist/server/errors.d.cts +39 -0
  86. package/dist/server/errors.d.ts +39 -0
  87. package/dist/server/errors.d.ts.map +1 -0
  88. package/dist/server/index.cjs +3621 -0
  89. package/dist/server/index.cjs.map +1 -0
  90. package/dist/server/index.d.cts +10 -0
  91. package/dist/server/index.d.ts +10 -0
  92. package/dist/server/index.d.ts.map +1 -0
  93. package/dist/server/index.js +3569 -0
  94. package/dist/server/index.js.map +1 -0
  95. package/dist/server/lock.d.cts +56 -0
  96. package/dist/server/lock.d.ts +56 -0
  97. package/dist/server/lock.d.ts.map +1 -0
  98. package/dist/server/rate-limiter.d.cts +81 -0
  99. package/dist/server/rate-limiter.d.ts +81 -0
  100. package/dist/server/rate-limiter.d.ts.map +1 -0
  101. package/dist/server/server.d.cts +206 -0
  102. package/dist/server/server.d.ts +206 -0
  103. package/dist/server/server.d.ts.map +1 -0
  104. package/dist/server/storage/app.d.cts +70 -0
  105. package/dist/server/storage/app.d.ts +70 -0
  106. package/dist/server/storage/app.d.ts.map +1 -0
  107. package/dist/server/storage/base/app.d.cts +42 -0
  108. package/dist/server/storage/base/app.d.ts +42 -0
  109. package/dist/server/storage/base/app.d.ts.map +1 -0
  110. package/dist/server/storage/base/index.d.cts +5 -0
  111. package/dist/server/storage/base/index.d.ts +5 -0
  112. package/dist/server/storage/base/index.d.ts.map +1 -0
  113. package/dist/server/storage/base/storage.d.cts +40 -0
  114. package/dist/server/storage/base/storage.d.ts +40 -0
  115. package/dist/server/storage/base/storage.d.ts.map +1 -0
  116. package/dist/server/storage/base/table.d.cts +32 -0
  117. package/dist/server/storage/base/table.d.ts +32 -0
  118. package/dist/server/storage/base/table.d.ts.map +1 -0
  119. package/dist/server/storage/base/user.d.cts +31 -0
  120. package/dist/server/storage/base/user.d.ts +31 -0
  121. package/dist/server/storage/base/user.d.ts.map +1 -0
  122. package/dist/server/storage/file/app.d.cts +50 -0
  123. package/dist/server/storage/file/app.d.ts +50 -0
  124. package/dist/server/storage/file/app.d.ts.map +1 -0
  125. package/dist/server/storage/file/index.d.cts +5 -0
  126. package/dist/server/storage/file/index.d.ts +5 -0
  127. package/dist/server/storage/file/index.d.ts.map +1 -0
  128. package/dist/server/storage/file/storage.d.cts +67 -0
  129. package/dist/server/storage/file/storage.d.ts +67 -0
  130. package/dist/server/storage/file/storage.d.ts.map +1 -0
  131. package/dist/server/storage/file/table.d.cts +14 -0
  132. package/dist/server/storage/file/table.d.ts +14 -0
  133. package/dist/server/storage/file/table.d.ts.map +1 -0
  134. package/dist/server/storage/file/user.d.cts +14 -0
  135. package/dist/server/storage/file/user.d.ts +14 -0
  136. package/dist/server/storage/file/user.d.ts.map +1 -0
  137. package/dist/server/storage/index.d.cts +14 -0
  138. package/dist/server/storage/index.d.ts +14 -0
  139. package/dist/server/storage/index.d.ts.map +1 -0
  140. package/dist/server/storage/memory/app.d.cts +29 -0
  141. package/dist/server/storage/memory/app.d.ts +29 -0
  142. package/dist/server/storage/memory/app.d.ts.map +1 -0
  143. package/dist/server/storage/memory/index.d.cts +5 -0
  144. package/dist/server/storage/memory/index.d.ts +5 -0
  145. package/dist/server/storage/memory/index.d.ts.map +1 -0
  146. package/dist/server/storage/memory/storage.d.cts +47 -0
  147. package/dist/server/storage/memory/storage.d.ts +47 -0
  148. package/dist/server/storage/memory/storage.d.ts.map +1 -0
  149. package/dist/server/storage/memory/table.d.cts +17 -0
  150. package/dist/server/storage/memory/table.d.ts +17 -0
  151. package/dist/server/storage/memory/table.d.ts.map +1 -0
  152. package/dist/server/storage/memory/user.d.cts +21 -0
  153. package/dist/server/storage/memory/user.d.ts +21 -0
  154. package/dist/server/storage/memory/user.d.ts.map +1 -0
  155. package/dist/server/storage/sqlite/app.d.cts +31 -0
  156. package/dist/server/storage/sqlite/app.d.ts +31 -0
  157. package/dist/server/storage/sqlite/app.d.ts.map +1 -0
  158. package/dist/server/storage/sqlite/index.d.cts +5 -0
  159. package/dist/server/storage/sqlite/index.d.ts +5 -0
  160. package/dist/server/storage/sqlite/index.d.ts.map +1 -0
  161. package/dist/server/storage/sqlite/storage.d.cts +92 -0
  162. package/dist/server/storage/sqlite/storage.d.ts +92 -0
  163. package/dist/server/storage/sqlite/storage.d.ts.map +1 -0
  164. package/dist/server/storage/sqlite/table.d.cts +15 -0
  165. package/dist/server/storage/sqlite/table.d.ts +15 -0
  166. package/dist/server/storage/sqlite/table.d.ts.map +1 -0
  167. package/dist/server/storage/sqlite/user.d.cts +14 -0
  168. package/dist/server/storage/sqlite/user.d.ts +14 -0
  169. package/dist/server/storage/sqlite/user.d.ts.map +1 -0
  170. package/dist/server/storage/storage.d.cts +152 -0
  171. package/dist/server/storage/storage.d.ts +152 -0
  172. package/dist/server/storage/storage.d.ts.map +1 -0
  173. package/dist/server/storage/table.d.cts +45 -0
  174. package/dist/server/storage/table.d.ts +45 -0
  175. package/dist/server/storage/table.d.ts.map +1 -0
  176. package/dist/server/storage/user.d.cts +45 -0
  177. package/dist/server/storage/user.d.ts +45 -0
  178. package/dist/server/storage/user.d.ts.map +1 -0
  179. package/dist/server/sync.d.cts +67 -0
  180. package/dist/server/sync.d.ts +67 -0
  181. package/dist/server/sync.d.ts.map +1 -0
  182. package/dist/server/validate.d.cts +113 -0
  183. package/dist/server/validate.d.ts +113 -0
  184. package/dist/server/validate.d.ts.map +1 -0
  185. package/dist/shared/clock.d.cts +22 -0
  186. package/dist/shared/clock.d.ts +22 -0
  187. package/dist/shared/clock.d.ts.map +1 -0
  188. package/dist/shared/path.d.cts +12 -0
  189. package/dist/shared/path.d.ts +12 -0
  190. package/dist/shared/path.d.ts.map +1 -0
  191. package/dist/shared/types.d.cts +234 -0
  192. package/dist/shared/types.d.ts +234 -0
  193. package/dist/shared/types.d.ts.map +1 -0
  194. package/package.json +133 -0
@@ -0,0 +1,17 @@
1
+ import type { SnapshotRecord, StoredRecord } from '../../../shared/types.cjs';
2
+ import { TableBaseStorage } from '../base/index.cjs';
3
+ import type { UserStorage } from '../user.cjs';
4
+ import type { AppMemoryStorage } from './app.cjs';
5
+ import type { MemoryStorage } from './storage.cjs';
6
+ /**
7
+ * In-memory implementation of `TableStorage`.
8
+ */
9
+ export declare class TableMemoryStorage extends TableBaseStorage {
10
+ readonly app: AppMemoryStorage;
11
+ private storage;
12
+ constructor(name: string, app: AppMemoryStorage, storage: MemoryStorage);
13
+ getRecord(user: UserStorage, id: string): Promise<StoredRecord | undefined>;
14
+ getAllRecords(user: UserStorage): Promise<SnapshotRecord[]>;
15
+ delete(): Promise<boolean>;
16
+ }
17
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1,17 @@
1
+ import type { SnapshotRecord, StoredRecord } from '../../../shared/types.js';
2
+ import { TableBaseStorage } from '../base/index.js';
3
+ import type { UserStorage } from '../user.js';
4
+ import type { AppMemoryStorage } from './app.js';
5
+ import type { MemoryStorage } from './storage.js';
6
+ /**
7
+ * In-memory implementation of `TableStorage`.
8
+ */
9
+ export declare class TableMemoryStorage extends TableBaseStorage {
10
+ readonly app: AppMemoryStorage;
11
+ private storage;
12
+ constructor(name: string, app: AppMemoryStorage, storage: MemoryStorage);
13
+ getRecord(user: UserStorage, id: string): Promise<StoredRecord | undefined>;
14
+ getAllRecords(user: UserStorage): Promise<SnapshotRecord[]>;
15
+ delete(): Promise<boolean>;
16
+ }
17
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/memory/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAuB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,SAAiB,GAAG,EAAE,gBAAgB,CAAC;IACvC,OAAO,CAAC,OAAO,CAAgB;IAE/B,YAAY,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAGtE;IAEK,SAAS,CACb,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAWnC;IAEK,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAIhE;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;CACF"}
@@ -0,0 +1,21 @@
1
+ import { UserBaseStorage } from '../base/index.cjs';
2
+ import type { MemoryStorage } from './storage.cjs';
3
+ export interface MemoryUserData {
4
+ id: string;
5
+ username: string;
6
+ passwordHash: string | null;
7
+ createdAt: number;
8
+ }
9
+ /**
10
+ * In-memory implementation of `UserStorage`.
11
+ */
12
+ export declare class UserMemoryStorage extends UserBaseStorage {
13
+ private storage;
14
+ constructor(data: MemoryUserData, storage: MemoryStorage);
15
+ protected getSecret(): string;
16
+ private getUserData;
17
+ verifyPassword(password: string): Promise<boolean>;
18
+ changePassword(newPassword: string): Promise<void>;
19
+ delete(): Promise<boolean>;
20
+ }
21
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { UserBaseStorage } from '../base/index.js';
2
+ import type { MemoryStorage } from './storage.js';
3
+ export interface MemoryUserData {
4
+ id: string;
5
+ username: string;
6
+ passwordHash: string | null;
7
+ createdAt: number;
8
+ }
9
+ /**
10
+ * In-memory implementation of `UserStorage`.
11
+ */
12
+ export declare class UserMemoryStorage extends UserBaseStorage {
13
+ private storage;
14
+ constructor(data: MemoryUserData, storage: MemoryStorage);
15
+ protected getSecret(): string;
16
+ private getUserData;
17
+ verifyPassword(password: string): Promise<boolean>;
18
+ changePassword(newPassword: string): Promise<void>;
19
+ delete(): Promise<boolean>;
20
+ }
21
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/memory/user.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,OAAO,CAAgB;IAE/B,YAAY,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAGvD;IAED,SAAS,CAAC,SAAS,IAAI,MAAM,CAE5B;IAED,OAAO,CAAC,WAAW;IAWb,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGvD;IAEK,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvD;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;CACF"}
@@ -0,0 +1,31 @@
1
+ import { type ChangeRecord } from '../../../shared/types.cjs';
2
+ import { AppBaseStorage } from '../base/app.cjs';
3
+ import type { TableStorage } from '../table.cjs';
4
+ import type { UserStorage } from '../user.cjs';
5
+ import type { SqliteStorage, UserAppDbHandle } from './storage.cjs';
6
+ /**
7
+ * SQLite-backed application namespace storage implementation.
8
+ */
9
+ export declare class AppSqliteStorage extends AppBaseStorage {
10
+ readonly storage: SqliteStorage;
11
+ constructor(id: string, storage: SqliteStorage);
12
+ getUserDb(userId: string): UserAppDbHandle;
13
+ private parseData;
14
+ private serializeData;
15
+ createTable(name: string): Promise<TableStorage>;
16
+ getTable(name: string): Promise<TableStorage | undefined>;
17
+ getTables(): Promise<TableStorage[]>;
18
+ applyChanges(user: UserStorage, changes: ChangeRecord[]): Promise<{
19
+ applied: ChangeRecord[];
20
+ newSeq: number;
21
+ }>;
22
+ getChangesSince(user: UserStorage, fromSeq: number): Promise<{
23
+ changes: ChangeRecord[];
24
+ currentSeq: number;
25
+ requiresSnapshot?: boolean;
26
+ }>;
27
+ getCurrentSeq(user: UserStorage): Promise<number>;
28
+ delete(): Promise<boolean>;
29
+ deleteTable(name: string): boolean;
30
+ }
31
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1,31 @@
1
+ import { type ChangeRecord } from '../../../shared/types.js';
2
+ import { AppBaseStorage } from '../base/app.js';
3
+ import type { TableStorage } from '../table.js';
4
+ import type { UserStorage } from '../user.js';
5
+ import type { SqliteStorage, UserAppDbHandle } from './storage.js';
6
+ /**
7
+ * SQLite-backed application namespace storage implementation.
8
+ */
9
+ export declare class AppSqliteStorage extends AppBaseStorage {
10
+ readonly storage: SqliteStorage;
11
+ constructor(id: string, storage: SqliteStorage);
12
+ getUserDb(userId: string): UserAppDbHandle;
13
+ private parseData;
14
+ private serializeData;
15
+ createTable(name: string): Promise<TableStorage>;
16
+ getTable(name: string): Promise<TableStorage | undefined>;
17
+ getTables(): Promise<TableStorage[]>;
18
+ applyChanges(user: UserStorage, changes: ChangeRecord[]): Promise<{
19
+ applied: ChangeRecord[];
20
+ newSeq: number;
21
+ }>;
22
+ getChangesSince(user: UserStorage, fromSeq: number): Promise<{
23
+ changes: ChangeRecord[];
24
+ currentSeq: number;
25
+ requiresSnapshot?: boolean;
26
+ }>;
27
+ getCurrentSeq(user: UserStorage): Promise<number>;
28
+ delete(): Promise<boolean>;
29
+ deleteTable(name: string): boolean;
30
+ }
31
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/sqlite/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,0BAA0B,CAAC;AAS5E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA8BnE;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhC,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAG7C;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAEzC;IAED,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,aAAa;IAMf,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAYrD;IAEK,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAQ9D;IAEK,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAIzC;IAEK,YAAY,CAChB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAuJtD;IAEK,eAAe,CACnB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QACT,OAAO,EAAE,YAAY,EAAE,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC,CA+BD;IAEK,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtD;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjC;CACF"}
@@ -0,0 +1,5 @@
1
+ export * from './app.cjs';
2
+ export * from './storage.cjs';
3
+ export * from './table.cjs';
4
+ export * from './user.cjs';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,5 @@
1
+ export * from './app.js';
2
+ export * from './storage.js';
3
+ export * from './table.js';
4
+ export * from './user.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/sqlite/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,92 @@
1
+ import type { DatabaseSync, StatementSync } from 'node:sqlite';
2
+ import type { AppStorage } from '../app.cjs';
3
+ import { BaseStorage } from '../base/index.cjs';
4
+ import type { MaintenanceResult, StorageOptions } from '../storage.cjs';
5
+ import type { UserStorage } from '../user.cjs';
6
+ export interface SqliteUserData {
7
+ id: string;
8
+ username: string;
9
+ passwordHash: string | null;
10
+ createdAt: number;
11
+ }
12
+ export interface UsersDbHandle {
13
+ db: DatabaseSync;
14
+ stmtFindById: StatementSync;
15
+ stmtFindByUsername: StatementSync;
16
+ stmtInsertUser: StatementSync;
17
+ stmtUpdatePassword: StatementSync;
18
+ stmtDeleteUser: StatementSync;
19
+ stmtListUsers: StatementSync;
20
+ }
21
+ export interface AppsDbHandle {
22
+ db: DatabaseSync;
23
+ stmtFindApp: StatementSync;
24
+ stmtInsertApp: StatementSync;
25
+ stmtListApps: StatementSync;
26
+ stmtDeleteApp: StatementSync;
27
+ stmtFindTable: StatementSync;
28
+ stmtInsertTable: StatementSync;
29
+ stmtListTables: StatementSync;
30
+ stmtDeleteTable: StatementSync;
31
+ stmtDeleteAppTables: StatementSync;
32
+ }
33
+ export interface UserAppDbHandle {
34
+ db: DatabaseSync;
35
+ stmtGetRecord: StatementSync;
36
+ stmtGetRecordForUpdate: StatementSync;
37
+ stmtGetSnapshot: StatementSync;
38
+ stmtGetSnapshotByTable: StatementSync;
39
+ stmtInsertRecord: StatementSync;
40
+ stmtUpdateRecord: StatementSync;
41
+ stmtGetMeta: StatementSync;
42
+ stmtSetMeta: StatementSync;
43
+ stmtInsertChangelog: StatementSync;
44
+ stmtGetChangelogSince: StatementSync;
45
+ stmtPruneChangelog: StatementSync;
46
+ stmtCountTableRecords: StatementSync;
47
+ stmtDeleteTableRecords: StatementSync;
48
+ stmtDeleteTableChangelog: StatementSync;
49
+ }
50
+ export interface SqliteStorageOptions extends StorageOptions {
51
+ baseDir?: string;
52
+ inMemory?: boolean;
53
+ /** Maximum number of open SQLite user database handles retained in LRU cache (default: 100). */
54
+ maxOpenDatabases?: number;
55
+ }
56
+ /**
57
+ * SQLite-backed implementation of `Storage`.
58
+ */
59
+ export declare class SqliteStorage extends BaseStorage {
60
+ readonly backend = "sqlite";
61
+ readonly baseDir: string;
62
+ readonly inMemory: boolean;
63
+ readonly maxOpenDatabases: number;
64
+ readonly options: SqliteStorageOptions;
65
+ readonly secret: string;
66
+ private usersHandle;
67
+ private appsHandle;
68
+ private userAppDbs;
69
+ constructor(options?: SqliteStorageOptions);
70
+ protected getBaseDir(): string | undefined;
71
+ getUsersDb(): UsersDbHandle;
72
+ getAppsDb(): AppsDbHandle;
73
+ getUserAppDb(appId: string, userId: string): UserAppDbHandle;
74
+ findUserDataById(id: string): SqliteUserData | undefined;
75
+ updateUserData(id: string, passwordHash: string): void;
76
+ createApp(id: string): Promise<AppStorage>;
77
+ getApp(id: string): Promise<AppStorage | undefined>;
78
+ getApps(): Promise<AppStorage[]>;
79
+ createUser(username: string, password: string): Promise<UserStorage>;
80
+ getUser(id: string): Promise<UserStorage | undefined>;
81
+ getUserByUsername(username: string): Promise<UserStorage | undefined>;
82
+ getUsers(): Promise<UserStorage[]>;
83
+ deleteUser(id: string): boolean;
84
+ deleteApp(id: string): boolean;
85
+ deleteTable(appId: string, tableName: string): boolean;
86
+ checkpoint(appId?: string): Promise<MaintenanceResult>;
87
+ vacuum(appId?: string): Promise<MaintenanceResult>;
88
+ private executeOnAllDbs;
89
+ prune(appId?: string, keepCount?: number): Promise<MaintenanceResult>;
90
+ close(): Promise<void>;
91
+ }
92
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1,92 @@
1
+ import type { DatabaseSync, StatementSync } from 'node:sqlite';
2
+ import type { AppStorage } from '../app.js';
3
+ import { BaseStorage } from '../base/index.js';
4
+ import type { MaintenanceResult, StorageOptions } from '../storage.js';
5
+ import type { UserStorage } from '../user.js';
6
+ export interface SqliteUserData {
7
+ id: string;
8
+ username: string;
9
+ passwordHash: string | null;
10
+ createdAt: number;
11
+ }
12
+ export interface UsersDbHandle {
13
+ db: DatabaseSync;
14
+ stmtFindById: StatementSync;
15
+ stmtFindByUsername: StatementSync;
16
+ stmtInsertUser: StatementSync;
17
+ stmtUpdatePassword: StatementSync;
18
+ stmtDeleteUser: StatementSync;
19
+ stmtListUsers: StatementSync;
20
+ }
21
+ export interface AppsDbHandle {
22
+ db: DatabaseSync;
23
+ stmtFindApp: StatementSync;
24
+ stmtInsertApp: StatementSync;
25
+ stmtListApps: StatementSync;
26
+ stmtDeleteApp: StatementSync;
27
+ stmtFindTable: StatementSync;
28
+ stmtInsertTable: StatementSync;
29
+ stmtListTables: StatementSync;
30
+ stmtDeleteTable: StatementSync;
31
+ stmtDeleteAppTables: StatementSync;
32
+ }
33
+ export interface UserAppDbHandle {
34
+ db: DatabaseSync;
35
+ stmtGetRecord: StatementSync;
36
+ stmtGetRecordForUpdate: StatementSync;
37
+ stmtGetSnapshot: StatementSync;
38
+ stmtGetSnapshotByTable: StatementSync;
39
+ stmtInsertRecord: StatementSync;
40
+ stmtUpdateRecord: StatementSync;
41
+ stmtGetMeta: StatementSync;
42
+ stmtSetMeta: StatementSync;
43
+ stmtInsertChangelog: StatementSync;
44
+ stmtGetChangelogSince: StatementSync;
45
+ stmtPruneChangelog: StatementSync;
46
+ stmtCountTableRecords: StatementSync;
47
+ stmtDeleteTableRecords: StatementSync;
48
+ stmtDeleteTableChangelog: StatementSync;
49
+ }
50
+ export interface SqliteStorageOptions extends StorageOptions {
51
+ baseDir?: string;
52
+ inMemory?: boolean;
53
+ /** Maximum number of open SQLite user database handles retained in LRU cache (default: 100). */
54
+ maxOpenDatabases?: number;
55
+ }
56
+ /**
57
+ * SQLite-backed implementation of `Storage`.
58
+ */
59
+ export declare class SqliteStorage extends BaseStorage {
60
+ readonly backend = "sqlite";
61
+ readonly baseDir: string;
62
+ readonly inMemory: boolean;
63
+ readonly maxOpenDatabases: number;
64
+ readonly options: SqliteStorageOptions;
65
+ readonly secret: string;
66
+ private usersHandle;
67
+ private appsHandle;
68
+ private userAppDbs;
69
+ constructor(options?: SqliteStorageOptions);
70
+ protected getBaseDir(): string | undefined;
71
+ getUsersDb(): UsersDbHandle;
72
+ getAppsDb(): AppsDbHandle;
73
+ getUserAppDb(appId: string, userId: string): UserAppDbHandle;
74
+ findUserDataById(id: string): SqliteUserData | undefined;
75
+ updateUserData(id: string, passwordHash: string): void;
76
+ createApp(id: string): Promise<AppStorage>;
77
+ getApp(id: string): Promise<AppStorage | undefined>;
78
+ getApps(): Promise<AppStorage[]>;
79
+ createUser(username: string, password: string): Promise<UserStorage>;
80
+ getUser(id: string): Promise<UserStorage | undefined>;
81
+ getUserByUsername(username: string): Promise<UserStorage | undefined>;
82
+ getUsers(): Promise<UserStorage[]>;
83
+ deleteUser(id: string): boolean;
84
+ deleteApp(id: string): boolean;
85
+ deleteTable(appId: string, tableName: string): boolean;
86
+ checkpoint(appId?: string): Promise<MaintenanceResult>;
87
+ vacuum(appId?: string): Promise<MaintenanceResult>;
88
+ private executeOnAllDbs;
89
+ prune(appId?: string, keepCount?: number): Promise<MaintenanceResult>;
90
+ close(): Promise<void>;
91
+ }
92
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/sqlite/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { SnapshotRecord, StoredRecord } from '../../../shared/types.cjs';
2
+ import { TableBaseStorage } from '../base/table.cjs';
3
+ import type { UserStorage } from '../user.cjs';
4
+ import type { AppSqliteStorage } from './app.cjs';
5
+ /**
6
+ * SQLite-backed implementation of `TableStorage`.
7
+ */
8
+ export declare class TableSqliteStorage extends TableBaseStorage {
9
+ readonly app: AppSqliteStorage;
10
+ delete(): Promise<boolean>;
11
+ private parseData;
12
+ getRecord(user: UserStorage, id: string): Promise<StoredRecord | undefined>;
13
+ getAllRecords(user: UserStorage): Promise<SnapshotRecord[]>;
14
+ }
15
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1,15 @@
1
+ import type { SnapshotRecord, StoredRecord } from '../../../shared/types.js';
2
+ import { TableBaseStorage } from '../base/table.js';
3
+ import type { UserStorage } from '../user.js';
4
+ import type { AppSqliteStorage } from './app.js';
5
+ /**
6
+ * SQLite-backed implementation of `TableStorage`.
7
+ */
8
+ export declare class TableSqliteStorage extends TableBaseStorage {
9
+ readonly app: AppSqliteStorage;
10
+ delete(): Promise<boolean>;
11
+ private parseData;
12
+ getRecord(user: UserStorage, id: string): Promise<StoredRecord | undefined>;
13
+ getAllRecords(user: UserStorage): Promise<SnapshotRecord[]>;
14
+ }
15
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/sqlite/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAYjD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,SAAiB,GAAG,EAAE,gBAAgB,CAAC;IAEjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;IACD,OAAO,CAAC,SAAS;IASX,SAAS,CACb,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAkBnC;IAEK,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAehE;CACF"}
@@ -0,0 +1,14 @@
1
+ import { UserBaseStorage } from '../base/index.cjs';
2
+ import type { SqliteStorage, SqliteUserData } from './storage.cjs';
3
+ /**
4
+ * SQLite-backed implementation of `UserStorage`.
5
+ */
6
+ export declare class UserSqliteStorage extends UserBaseStorage {
7
+ private storage;
8
+ constructor(data: SqliteUserData, storage: SqliteStorage);
9
+ protected getSecret(): string;
10
+ verifyPassword(password: string): Promise<boolean>;
11
+ changePassword(newPassword: string): Promise<void>;
12
+ delete(): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1,14 @@
1
+ import { UserBaseStorage } from '../base/index.js';
2
+ import type { SqliteStorage, SqliteUserData } from './storage.js';
3
+ /**
4
+ * SQLite-backed implementation of `UserStorage`.
5
+ */
6
+ export declare class UserSqliteStorage extends UserBaseStorage {
7
+ private storage;
8
+ constructor(data: SqliteUserData, storage: SqliteStorage);
9
+ protected getSecret(): string;
10
+ verifyPassword(password: string): Promise<boolean>;
11
+ changePassword(newPassword: string): Promise<void>;
12
+ delete(): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/sqlite/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAElE;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,OAAO,CAAgB;IAE/B,YAAY,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAGvD;IAED,SAAS,CAAC,SAAS,IAAI,MAAM,CAE5B;IAEK,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGvD;IAEK,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvD;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;CACF"}
@@ -0,0 +1,152 @@
1
+ import type { AppStorage } from './app.cjs';
2
+ import type { UserStorage } from './user.cjs';
3
+ /**
4
+ * Configuration options and resource limits for storage engines.
5
+ */
6
+ export interface StorageOptions {
7
+ /** Maximum number of active records allowed per table (default: 10,000). */
8
+ maxRecordsPerTable?: number;
9
+ /** Maximum allowed payload size in bytes for an individual record (default: 512 KB). */
10
+ maxRecordSizeBytes?: number;
11
+ /** Maximum allowed size in bytes for a single change batch payload (default: 5 MB). */
12
+ maxBatchSizeBytes?: number;
13
+ /** Maximum number of changelog entries retained per user before compaction (default: 1,000). */
14
+ maxChangelogEntries?: number;
15
+ /** Secret key used for signing session tokens. */
16
+ secret?: string;
17
+ }
18
+ /**
19
+ * Summary status information describing the storage engine and its contents.
20
+ */
21
+ export interface StorageStatus {
22
+ /** Storage persistence type ('sqlite', 'file', or 'memory'). */
23
+ backend: string;
24
+ /** Storage base directory if disk-backed. */
25
+ baseDir?: string;
26
+ /** Number of registered user accounts. */
27
+ usersCount: number;
28
+ /** Number of registered applications. */
29
+ appsCount: number;
30
+ /** Detailed statistics per application if queried or available. */
31
+ apps?: Array<{
32
+ id: string;
33
+ tables: string[];
34
+ }>;
35
+ }
36
+ /**
37
+ * Result returned by a storage maintenance operation.
38
+ */
39
+ export interface MaintenanceResult {
40
+ /** Maintenance action performed ('checkpoint', 'vacuum', 'prune'). */
41
+ action: 'checkpoint' | 'vacuum' | 'prune';
42
+ /** Target backend name. */
43
+ backend: string;
44
+ /** Optional target application ID. */
45
+ appId?: string;
46
+ /** Number of entries or database files affected, if applicable. */
47
+ affectedCount?: number;
48
+ /** Human-readable status message. */
49
+ message: string;
50
+ }
51
+ /**
52
+ * Top-level storage coordinator managing application namespaces and user accounts.
53
+ */
54
+ export interface Storage {
55
+ /** Storage configuration options and resource limits. */
56
+ readonly options?: StorageOptions;
57
+ /**
58
+ * Creates/registers a new application namespace.
59
+ * Throws an error if an application with the specified ID already exists.
60
+ *
61
+ * @param id - Unique application identifier.
62
+ * @returns Created AppStorage handle.
63
+ * @throws Error if the application already exists.
64
+ */
65
+ createApp(id: string): Promise<AppStorage>;
66
+ /**
67
+ * Retrieves an application handle if it exists.
68
+ *
69
+ * @param id - Unique application identifier.
70
+ * @returns AppStorage handle or `undefined` if not found.
71
+ */
72
+ getApp(id: string): Promise<AppStorage | undefined>;
73
+ /**
74
+ * Lists all registered application handles.
75
+ *
76
+ * @returns Array of AppStorage handles.
77
+ */
78
+ getApps(): Promise<AppStorage[]>;
79
+ /**
80
+ * Creates a new user account with credentials.
81
+ * Throws an error if a user with the same username already exists.
82
+ *
83
+ * @param username - Username for the account.
84
+ * @param password - Account password.
85
+ * @returns Created UserStorage handle.
86
+ * @throws Error if the username is already registered.
87
+ */
88
+ createUser(username: string, password: string): Promise<UserStorage>;
89
+ /**
90
+ * Retrieves a user handle by user account ID.
91
+ *
92
+ * @param id - Unique user identifier.
93
+ * @returns UserStorage handle or `undefined` if not found.
94
+ */
95
+ getUser(id: string): Promise<UserStorage | undefined>;
96
+ /**
97
+ * Retrieves a user handle by username.
98
+ *
99
+ * @param username - User account username.
100
+ * @returns UserStorage handle or `undefined` if not found.
101
+ */
102
+ getUserByUsername(username: string): Promise<UserStorage | undefined>;
103
+ /**
104
+ * Retrieves a user handle by validating a session token.
105
+ *
106
+ * @param token - Signed session token.
107
+ * @returns UserStorage handle if token is valid and active, or `undefined`.
108
+ */
109
+ getUserByToken(token: string): Promise<UserStorage | undefined>;
110
+ /**
111
+ * Lists all user accounts.
112
+ *
113
+ * @returns Array of UserStorage handles.
114
+ */
115
+ getUsers(): Promise<UserStorage[]>;
116
+ /**
117
+ * Retrieves summary operational status of the storage backend.
118
+ *
119
+ * @param appId - Optional application identifier filter.
120
+ * @returns StorageStatus object.
121
+ */
122
+ getStatus(appId?: string): Promise<StorageStatus>;
123
+ /**
124
+ * Performs a WAL checkpoint on SQLite databases to truncate WAL files.
125
+ *
126
+ * @param appId - Optional target application identifier.
127
+ * @returns MaintenanceResult describing checkpoint outcome.
128
+ * @throws TetherServerError if checkpoint is not supported by this backend.
129
+ */
130
+ checkpoint(appId?: string): Promise<MaintenanceResult>;
131
+ /**
132
+ * Performs database vacuuming to reclaim disk space and defragment storage.
133
+ *
134
+ * @param appId - Optional target application identifier.
135
+ * @returns MaintenanceResult describing vacuum outcome.
136
+ * @throws TetherServerError if vacuum is not supported by this backend.
137
+ */
138
+ vacuum(appId?: string): Promise<MaintenanceResult>;
139
+ /**
140
+ * Prunes changelog history entries older than the retention threshold.
141
+ *
142
+ * @param appId - Optional target application identifier.
143
+ * @param keepCount - Optional maximum entries to retain per table/user (defaults to configured limit).
144
+ * @returns MaintenanceResult describing prune outcome.
145
+ */
146
+ prune(appId?: string, keepCount?: number): Promise<MaintenanceResult>;
147
+ /**
148
+ * Optional cleanup callback invoked when shutting down the storage engine.
149
+ */
150
+ close?(): Promise<void>;
151
+ }
152
+ //# sourceMappingURL=storage.d.ts.map