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,31 @@
|
|
|
1
|
+
import type { UserStorage } from '../user.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* Common abstract base class for UserStorage implementations.
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class UserBaseStorage implements UserStorage {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly username: string;
|
|
8
|
+
readonly createdAt: number;
|
|
9
|
+
constructor(id: string, username: string, createdAt: number);
|
|
10
|
+
/** Retrieves the secret key used for signing session tokens. */
|
|
11
|
+
protected abstract getSecret(): string;
|
|
12
|
+
/** Verifies if the plaintext password matches. */
|
|
13
|
+
abstract verifyPassword(password: string): Promise<boolean>;
|
|
14
|
+
/** Updates user credentials with a new password. */
|
|
15
|
+
abstract changePassword(newPassword: string): Promise<void>;
|
|
16
|
+
/** Deletes the user account and associated data. */
|
|
17
|
+
abstract delete(): Promise<boolean>;
|
|
18
|
+
/** Creates a signed session token for this user. */
|
|
19
|
+
createToken(expiresInSeconds?: number): Promise<string>;
|
|
20
|
+
/** Verifies whether the session token is valid for this user. */
|
|
21
|
+
verifyToken(token: string): Promise<boolean>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Verifies a candidate plaintext password against a stored bcrypt hash.
|
|
25
|
+
*/
|
|
26
|
+
export declare function verifyUserPassword(password: string, passwordHash: string | null | undefined): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Hashes a validated plaintext password.
|
|
29
|
+
*/
|
|
30
|
+
export declare function hashUserPassword(newPassword: string): Promise<string>;
|
|
31
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { UserStorage } from '../user.js';
|
|
2
|
+
/**
|
|
3
|
+
* Common abstract base class for UserStorage implementations.
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class UserBaseStorage implements UserStorage {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly username: string;
|
|
8
|
+
readonly createdAt: number;
|
|
9
|
+
constructor(id: string, username: string, createdAt: number);
|
|
10
|
+
/** Retrieves the secret key used for signing session tokens. */
|
|
11
|
+
protected abstract getSecret(): string;
|
|
12
|
+
/** Verifies if the plaintext password matches. */
|
|
13
|
+
abstract verifyPassword(password: string): Promise<boolean>;
|
|
14
|
+
/** Updates user credentials with a new password. */
|
|
15
|
+
abstract changePassword(newPassword: string): Promise<void>;
|
|
16
|
+
/** Deletes the user account and associated data. */
|
|
17
|
+
abstract delete(): Promise<boolean>;
|
|
18
|
+
/** Creates a signed session token for this user. */
|
|
19
|
+
createToken(expiresInSeconds?: number): Promise<string>;
|
|
20
|
+
/** Verifies whether the session token is valid for this user. */
|
|
21
|
+
verifyToken(token: string): Promise<boolean>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Verifies a candidate plaintext password against a stored bcrypt hash.
|
|
25
|
+
*/
|
|
26
|
+
export declare function verifyUserPassword(password: string, passwordHash: string | null | undefined): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Hashes a validated plaintext password.
|
|
29
|
+
*/
|
|
30
|
+
export declare function hashUserPassword(newPassword: string): Promise<string>;
|
|
31
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/base/user.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,8BAAsB,eAAgB,YAAW,WAAW;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAI1D;IAED,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC;IAEvC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5D,oDAAoD;IACpD,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D,oDAAoD;IACpD,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC,oDAAoD;IAC9C,WAAW,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5D;IAED,iEAAiE;IAC3D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjD;CACF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACtC,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3E"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ChangeRecord, type StoredRecord } from '../../../shared/types.cjs';
|
|
2
|
+
import { AppBaseStorage } from '../base/index.cjs';
|
|
3
|
+
import type { TableStorage } from '../table.cjs';
|
|
4
|
+
import type { UserStorage } from '../user.cjs';
|
|
5
|
+
import { type FileStorage } from './storage.cjs';
|
|
6
|
+
export interface AppManifest {
|
|
7
|
+
id: string;
|
|
8
|
+
tables: string[];
|
|
9
|
+
createdAt: number;
|
|
10
|
+
version: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Filesystem-backed application namespace storage implementation.
|
|
14
|
+
*/
|
|
15
|
+
export declare class AppFileStorage extends AppBaseStorage {
|
|
16
|
+
readonly storage: FileStorage;
|
|
17
|
+
constructor(id: string, storage: FileStorage);
|
|
18
|
+
get appDir(): string;
|
|
19
|
+
private get manifestFile();
|
|
20
|
+
getUserDir(userId: string): string;
|
|
21
|
+
private getUserMetaFile;
|
|
22
|
+
private getUserSyncFile;
|
|
23
|
+
getUserTablesDir(userId: string): string;
|
|
24
|
+
getUserTableFile(userId: string, tableName: string): string;
|
|
25
|
+
private readManifest;
|
|
26
|
+
private writeManifest;
|
|
27
|
+
private readUserMeta;
|
|
28
|
+
private writeUserMeta;
|
|
29
|
+
private readUserSync;
|
|
30
|
+
private appendUserSync;
|
|
31
|
+
private rewriteUserSync;
|
|
32
|
+
readTableRecords(userId: string, tableName: string): Promise<Map<string, StoredRecord>>;
|
|
33
|
+
private writeTableRecords;
|
|
34
|
+
createTable(name: string): Promise<TableStorage>;
|
|
35
|
+
getTable(name: string): Promise<TableStorage | undefined>;
|
|
36
|
+
getTables(): Promise<TableStorage[]>;
|
|
37
|
+
applyChanges(user: UserStorage, changes: ChangeRecord[]): Promise<{
|
|
38
|
+
applied: ChangeRecord[];
|
|
39
|
+
newSeq: number;
|
|
40
|
+
}>;
|
|
41
|
+
getChangesSince(user: UserStorage, fromSeq: number): Promise<{
|
|
42
|
+
changes: ChangeRecord[];
|
|
43
|
+
currentSeq: number;
|
|
44
|
+
requiresSnapshot?: boolean;
|
|
45
|
+
}>;
|
|
46
|
+
getCurrentSeq(user: UserStorage): Promise<number>;
|
|
47
|
+
delete(): Promise<boolean>;
|
|
48
|
+
deleteTable(name: string): Promise<boolean>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ChangeRecord, type StoredRecord } from '../../../shared/types.js';
|
|
2
|
+
import { AppBaseStorage } from '../base/index.js';
|
|
3
|
+
import type { TableStorage } from '../table.js';
|
|
4
|
+
import type { UserStorage } from '../user.js';
|
|
5
|
+
import { type FileStorage } from './storage.js';
|
|
6
|
+
export interface AppManifest {
|
|
7
|
+
id: string;
|
|
8
|
+
tables: string[];
|
|
9
|
+
createdAt: number;
|
|
10
|
+
version: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Filesystem-backed application namespace storage implementation.
|
|
14
|
+
*/
|
|
15
|
+
export declare class AppFileStorage extends AppBaseStorage {
|
|
16
|
+
readonly storage: FileStorage;
|
|
17
|
+
constructor(id: string, storage: FileStorage);
|
|
18
|
+
get appDir(): string;
|
|
19
|
+
private get manifestFile();
|
|
20
|
+
getUserDir(userId: string): string;
|
|
21
|
+
private getUserMetaFile;
|
|
22
|
+
private getUserSyncFile;
|
|
23
|
+
getUserTablesDir(userId: string): string;
|
|
24
|
+
getUserTableFile(userId: string, tableName: string): string;
|
|
25
|
+
private readManifest;
|
|
26
|
+
private writeManifest;
|
|
27
|
+
private readUserMeta;
|
|
28
|
+
private writeUserMeta;
|
|
29
|
+
private readUserSync;
|
|
30
|
+
private appendUserSync;
|
|
31
|
+
private rewriteUserSync;
|
|
32
|
+
readTableRecords(userId: string, tableName: string): Promise<Map<string, StoredRecord>>;
|
|
33
|
+
private writeTableRecords;
|
|
34
|
+
createTable(name: string): Promise<TableStorage>;
|
|
35
|
+
getTable(name: string): Promise<TableStorage | undefined>;
|
|
36
|
+
getTables(): Promise<TableStorage[]>;
|
|
37
|
+
applyChanges(user: UserStorage, changes: ChangeRecord[]): Promise<{
|
|
38
|
+
applied: ChangeRecord[];
|
|
39
|
+
newSeq: number;
|
|
40
|
+
}>;
|
|
41
|
+
getChangesSince(user: UserStorage, fromSeq: number): Promise<{
|
|
42
|
+
changes: ChangeRecord[];
|
|
43
|
+
currentSeq: number;
|
|
44
|
+
requiresSnapshot?: boolean;
|
|
45
|
+
}>;
|
|
46
|
+
getCurrentSeq(user: UserStorage): Promise<number>;
|
|
47
|
+
delete(): Promise<boolean>;
|
|
48
|
+
deleteTable(name: string): Promise<boolean>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/file/app.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAE9B,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAG3C;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIjC;IAED,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAIvB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;YAEa,YAAY;YAcZ,aAAa;YAIb,YAAY;YASZ,aAAa;YAOb,YAAY;YAmBZ,cAAc;YAUd,eAAe;IAWvB,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAepC;YAEa,iBAAiB;IAWzB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAcrD;IAEK,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAO9D;IAEK,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAGzC;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,CAuGtD;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,CAaD;IAEK,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAItD;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;IAEK,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAwChD;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/file/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { AppStorage } from '../app.cjs';
|
|
2
|
+
import { BaseStorage } from '../base/index.cjs';
|
|
3
|
+
import type { MaintenanceResult, StorageOptions } from '../storage.cjs';
|
|
4
|
+
import type { UserStorage } from '../user.cjs';
|
|
5
|
+
export interface FileUserData {
|
|
6
|
+
id: string;
|
|
7
|
+
username: string;
|
|
8
|
+
passwordHash: string | null;
|
|
9
|
+
createdAt: number;
|
|
10
|
+
}
|
|
11
|
+
export interface FileAppData {
|
|
12
|
+
id: string;
|
|
13
|
+
createdAt: number;
|
|
14
|
+
}
|
|
15
|
+
export interface FileStorageOptions extends StorageOptions {
|
|
16
|
+
baseDir?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Filesystem-backed implementation of `Storage`.
|
|
20
|
+
*/
|
|
21
|
+
export declare class FileStorage extends BaseStorage {
|
|
22
|
+
readonly backend = "file";
|
|
23
|
+
readonly baseDir: string;
|
|
24
|
+
readonly options: FileStorageOptions;
|
|
25
|
+
readonly secret: string;
|
|
26
|
+
private userLocks;
|
|
27
|
+
constructor(options?: FileStorageOptions);
|
|
28
|
+
protected getBaseDir(): string | undefined;
|
|
29
|
+
private get usersFile();
|
|
30
|
+
private get appsFile();
|
|
31
|
+
withLock<T>(key: string, fn: () => Promise<T>): Promise<T>;
|
|
32
|
+
withUserLock<T>(userId: string, appId: string, fn: () => Promise<T>): Promise<T>;
|
|
33
|
+
private readUsersFile;
|
|
34
|
+
private writeUsersFile;
|
|
35
|
+
private readAppsFile;
|
|
36
|
+
private writeAppsFile;
|
|
37
|
+
findUserDataById(id: string): Promise<FileUserData | undefined>;
|
|
38
|
+
updateUserData(id: string, update: Partial<FileUserData>): Promise<void>;
|
|
39
|
+
createApp(id: string): Promise<AppStorage>;
|
|
40
|
+
getApp(id: string): Promise<AppStorage | undefined>;
|
|
41
|
+
getApps(): Promise<AppStorage[]>;
|
|
42
|
+
createUser(username: string, password: string): Promise<UserStorage>;
|
|
43
|
+
getUser(id: string): Promise<UserStorage | undefined>;
|
|
44
|
+
getUserByUsername(username: string): Promise<UserStorage | undefined>;
|
|
45
|
+
getUsers(): Promise<UserStorage[]>;
|
|
46
|
+
deleteUser(id: string): Promise<boolean>;
|
|
47
|
+
deleteApp(id: string): Promise<boolean>;
|
|
48
|
+
checkpoint(appId?: string): Promise<MaintenanceResult>;
|
|
49
|
+
vacuum(appId?: string): Promise<MaintenanceResult>;
|
|
50
|
+
prune(appId?: string, keepCount?: number): Promise<MaintenanceResult>;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validates that no external TetherDB server process is actively running on this data directory.
|
|
55
|
+
*
|
|
56
|
+
* @param baseDir - Storage base directory.
|
|
57
|
+
* @throws TetherServerError if an active server lock is held by another process.
|
|
58
|
+
*/
|
|
59
|
+
export declare function assertNoActiveServerLock(baseDir: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Writes data atomically to a file using a unique temp file and atomic rename.
|
|
62
|
+
*
|
|
63
|
+
* @param filePath - The destination file path.
|
|
64
|
+
* @param content - File content to write.
|
|
65
|
+
*/
|
|
66
|
+
export declare function writeFileAtomic(filePath: string, content: string): Promise<void>;
|
|
67
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { AppStorage } from '../app.js';
|
|
2
|
+
import { BaseStorage } from '../base/index.js';
|
|
3
|
+
import type { MaintenanceResult, StorageOptions } from '../storage.js';
|
|
4
|
+
import type { UserStorage } from '../user.js';
|
|
5
|
+
export interface FileUserData {
|
|
6
|
+
id: string;
|
|
7
|
+
username: string;
|
|
8
|
+
passwordHash: string | null;
|
|
9
|
+
createdAt: number;
|
|
10
|
+
}
|
|
11
|
+
export interface FileAppData {
|
|
12
|
+
id: string;
|
|
13
|
+
createdAt: number;
|
|
14
|
+
}
|
|
15
|
+
export interface FileStorageOptions extends StorageOptions {
|
|
16
|
+
baseDir?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Filesystem-backed implementation of `Storage`.
|
|
20
|
+
*/
|
|
21
|
+
export declare class FileStorage extends BaseStorage {
|
|
22
|
+
readonly backend = "file";
|
|
23
|
+
readonly baseDir: string;
|
|
24
|
+
readonly options: FileStorageOptions;
|
|
25
|
+
readonly secret: string;
|
|
26
|
+
private userLocks;
|
|
27
|
+
constructor(options?: FileStorageOptions);
|
|
28
|
+
protected getBaseDir(): string | undefined;
|
|
29
|
+
private get usersFile();
|
|
30
|
+
private get appsFile();
|
|
31
|
+
withLock<T>(key: string, fn: () => Promise<T>): Promise<T>;
|
|
32
|
+
withUserLock<T>(userId: string, appId: string, fn: () => Promise<T>): Promise<T>;
|
|
33
|
+
private readUsersFile;
|
|
34
|
+
private writeUsersFile;
|
|
35
|
+
private readAppsFile;
|
|
36
|
+
private writeAppsFile;
|
|
37
|
+
findUserDataById(id: string): Promise<FileUserData | undefined>;
|
|
38
|
+
updateUserData(id: string, update: Partial<FileUserData>): Promise<void>;
|
|
39
|
+
createApp(id: string): Promise<AppStorage>;
|
|
40
|
+
getApp(id: string): Promise<AppStorage | undefined>;
|
|
41
|
+
getApps(): Promise<AppStorage[]>;
|
|
42
|
+
createUser(username: string, password: string): Promise<UserStorage>;
|
|
43
|
+
getUser(id: string): Promise<UserStorage | undefined>;
|
|
44
|
+
getUserByUsername(username: string): Promise<UserStorage | undefined>;
|
|
45
|
+
getUsers(): Promise<UserStorage[]>;
|
|
46
|
+
deleteUser(id: string): Promise<boolean>;
|
|
47
|
+
deleteApp(id: string): Promise<boolean>;
|
|
48
|
+
checkpoint(appId?: string): Promise<MaintenanceResult>;
|
|
49
|
+
vacuum(appId?: string): Promise<MaintenanceResult>;
|
|
50
|
+
prune(appId?: string, keepCount?: number): Promise<MaintenanceResult>;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validates that no external TetherDB server process is actively running on this data directory.
|
|
55
|
+
*
|
|
56
|
+
* @param baseDir - Storage base directory.
|
|
57
|
+
* @throws TetherServerError if an active server lock is held by another process.
|
|
58
|
+
*/
|
|
59
|
+
export declare function assertNoActiveServerLock(baseDir: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Writes data atomically to a file using a unique temp file and atomic rename.
|
|
62
|
+
*
|
|
63
|
+
* @param filePath - The destination file path.
|
|
64
|
+
* @param content - File content to write.
|
|
65
|
+
*/
|
|
66
|
+
export declare function writeFileAtomic(filePath: string, content: string): Promise<void>;
|
|
67
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/file/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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 { AppFileStorage } from './app.cjs';
|
|
5
|
+
/**
|
|
6
|
+
* Filesystem-backed implementation of `TableStorage`.
|
|
7
|
+
*/
|
|
8
|
+
export declare class TableFileStorage extends TableBaseStorage {
|
|
9
|
+
readonly app: AppFileStorage;
|
|
10
|
+
getRecord(user: UserStorage, id: string): Promise<StoredRecord | undefined>;
|
|
11
|
+
getAllRecords(user: UserStorage): Promise<SnapshotRecord[]>;
|
|
12
|
+
delete(): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
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 { AppFileStorage } from './app.js';
|
|
5
|
+
/**
|
|
6
|
+
* Filesystem-backed implementation of `TableStorage`.
|
|
7
|
+
*/
|
|
8
|
+
export declare class TableFileStorage extends TableBaseStorage {
|
|
9
|
+
readonly app: AppFileStorage;
|
|
10
|
+
getRecord(user: UserStorage, id: string): Promise<StoredRecord | undefined>;
|
|
11
|
+
getAllRecords(user: UserStorage): Promise<SnapshotRecord[]>;
|
|
12
|
+
delete(): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/file/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,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,SAAiB,GAAG,EAAE,cAAc,CAAC;IAE/B,SAAS,CACb,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CASnC;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,14 @@
|
|
|
1
|
+
import { UserBaseStorage } from '../base/index.cjs';
|
|
2
|
+
import type { FileStorage, FileUserData } from './storage.cjs';
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-backed implementation of `UserStorage`.
|
|
5
|
+
*/
|
|
6
|
+
export declare class UserFileStorage extends UserBaseStorage {
|
|
7
|
+
private storage;
|
|
8
|
+
constructor(data: FileUserData, storage: FileStorage);
|
|
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 { FileStorage, FileUserData } from './storage.js';
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-backed implementation of `UserStorage`.
|
|
5
|
+
*/
|
|
6
|
+
export declare class UserFileStorage extends UserBaseStorage {
|
|
7
|
+
private storage;
|
|
8
|
+
constructor(data: FileUserData, storage: FileStorage);
|
|
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/file/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE9D;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,OAAO,CAAc;IAE7B,YAAY,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAGnD;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,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TetherDB Server Storage — Modular storage architecture.
|
|
3
|
+
*
|
|
4
|
+
* @module tetherdb/server/storage
|
|
5
|
+
*/
|
|
6
|
+
export type { AppStorage } from './app.cjs';
|
|
7
|
+
export { AppBaseStorage, BaseStorage, TableBaseStorage, UserBaseStorage, } from './base/index.cjs';
|
|
8
|
+
export { FileStorage, type FileStorageOptions, } from './file/storage.cjs';
|
|
9
|
+
export { MemoryStorage, type MemoryStorageOptions, } from './memory/storage.cjs';
|
|
10
|
+
export { SqliteStorage, type SqliteStorageOptions, } from './sqlite/storage.cjs';
|
|
11
|
+
export type { Storage, StorageOptions } from './storage.cjs';
|
|
12
|
+
export type { TableStorage } from './table.cjs';
|
|
13
|
+
export type { UserStorage } from './user.cjs';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TetherDB Server Storage — Modular storage architecture.
|
|
3
|
+
*
|
|
4
|
+
* @module tetherdb/server/storage
|
|
5
|
+
*/
|
|
6
|
+
export type { AppStorage } from './app.js';
|
|
7
|
+
export { AppBaseStorage, BaseStorage, TableBaseStorage, UserBaseStorage, } from './base/index.js';
|
|
8
|
+
export { FileStorage, type FileStorageOptions, } from './file/storage.js';
|
|
9
|
+
export { MemoryStorage, type MemoryStorageOptions, } from './memory/storage.js';
|
|
10
|
+
export { SqliteStorage, type SqliteStorageOptions, } from './sqlite/storage.js';
|
|
11
|
+
export type { Storage, StorageOptions } from './storage.js';
|
|
12
|
+
export type { TableStorage } from './table.js';
|
|
13
|
+
export type { UserStorage } from './user.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/storage/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ChangeRecord } from '../../../shared/types.cjs';
|
|
2
|
+
import { AppBaseStorage } from '../base/index.cjs';
|
|
3
|
+
import type { TableStorage } from '../table.cjs';
|
|
4
|
+
import type { UserStorage } from '../user.cjs';
|
|
5
|
+
import type { MemoryStorage } from './storage.cjs';
|
|
6
|
+
/**
|
|
7
|
+
* In-memory implementation of `AppStorage`.
|
|
8
|
+
*/
|
|
9
|
+
export declare class AppMemoryStorage extends AppBaseStorage {
|
|
10
|
+
private tables;
|
|
11
|
+
private storage;
|
|
12
|
+
constructor(id: string, storage: MemoryStorage);
|
|
13
|
+
createTable(name: string): Promise<TableStorage>;
|
|
14
|
+
getTable(name: string): Promise<TableStorage | undefined>;
|
|
15
|
+
getTables(): Promise<TableStorage[]>;
|
|
16
|
+
applyChanges(user: UserStorage, changes: ChangeRecord[]): Promise<{
|
|
17
|
+
applied: ChangeRecord[];
|
|
18
|
+
newSeq: number;
|
|
19
|
+
}>;
|
|
20
|
+
getChangesSince(user: UserStorage, fromSeq: number): Promise<{
|
|
21
|
+
changes: ChangeRecord[];
|
|
22
|
+
currentSeq: number;
|
|
23
|
+
requiresSnapshot?: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
getCurrentSeq(user: UserStorage): Promise<number>;
|
|
26
|
+
delete(): Promise<boolean>;
|
|
27
|
+
deleteTable(name: string): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ChangeRecord } from '../../../shared/types.js';
|
|
2
|
+
import { AppBaseStorage } from '../base/index.js';
|
|
3
|
+
import type { TableStorage } from '../table.js';
|
|
4
|
+
import type { UserStorage } from '../user.js';
|
|
5
|
+
import type { MemoryStorage } from './storage.js';
|
|
6
|
+
/**
|
|
7
|
+
* In-memory implementation of `AppStorage`.
|
|
8
|
+
*/
|
|
9
|
+
export declare class AppMemoryStorage extends AppBaseStorage {
|
|
10
|
+
private tables;
|
|
11
|
+
private storage;
|
|
12
|
+
constructor(id: string, storage: MemoryStorage);
|
|
13
|
+
createTable(name: string): Promise<TableStorage>;
|
|
14
|
+
getTable(name: string): Promise<TableStorage | undefined>;
|
|
15
|
+
getTables(): Promise<TableStorage[]>;
|
|
16
|
+
applyChanges(user: UserStorage, changes: ChangeRecord[]): Promise<{
|
|
17
|
+
applied: ChangeRecord[];
|
|
18
|
+
newSeq: number;
|
|
19
|
+
}>;
|
|
20
|
+
getChangesSince(user: UserStorage, fromSeq: number): Promise<{
|
|
21
|
+
changes: ChangeRecord[];
|
|
22
|
+
currentSeq: number;
|
|
23
|
+
requiresSnapshot?: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
getCurrentSeq(user: UserStorage): Promise<number>;
|
|
26
|
+
delete(): Promise<boolean>;
|
|
27
|
+
deleteTable(name: string): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/memory/app.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,OAAO,CAAgB;IAE/B,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAG7C;IAEK,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAWrD;IAEK,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAG9D;IAEK,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEzC;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,CAgGtD;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,CAWD;IAEK,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAGtD;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKjC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/memory/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AppStorage } from '../app.cjs';
|
|
2
|
+
import { BaseStorage } from '../base/index.cjs';
|
|
3
|
+
import type { MaintenanceResult, StorageOptions } from '../storage.cjs';
|
|
4
|
+
import type { UserStorage } from '../user.cjs';
|
|
5
|
+
import { type MemoryUserData } from './user.cjs';
|
|
6
|
+
export interface UserState {
|
|
7
|
+
currentSeq: number;
|
|
8
|
+
minSeq: number;
|
|
9
|
+
tables: Map<string, Map<string, import('../../../shared/types.cjs').StoredRecord>>;
|
|
10
|
+
changelog: Array<import('../../../shared/types.cjs').ChangeRecord & {
|
|
11
|
+
seq: number;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export interface MemoryStorageOptions extends StorageOptions {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* In-memory implementation of `Storage`.
|
|
18
|
+
*/
|
|
19
|
+
export declare class MemoryStorage extends BaseStorage {
|
|
20
|
+
readonly backend = "memory";
|
|
21
|
+
private apps;
|
|
22
|
+
private userStates;
|
|
23
|
+
private users;
|
|
24
|
+
private usersByUsername;
|
|
25
|
+
readonly secret: string;
|
|
26
|
+
readonly options: MemoryStorageOptions;
|
|
27
|
+
constructor(options?: MemoryStorageOptions);
|
|
28
|
+
getUserState(userId: string, appId: string): UserState;
|
|
29
|
+
deleteUserState(userId: string): boolean;
|
|
30
|
+
deleteAppUserStates(appId: string): void;
|
|
31
|
+
deleteTableInUserStates(appId: string, tableName: string): void;
|
|
32
|
+
createApp(id: string): Promise<AppStorage>;
|
|
33
|
+
getApp(id: string): Promise<AppStorage | undefined>;
|
|
34
|
+
getApps(): Promise<AppStorage[]>;
|
|
35
|
+
createUser(username: string, password: string): Promise<UserStorage>;
|
|
36
|
+
getUserData(userId: string): MemoryUserData | undefined;
|
|
37
|
+
getUser(id: string): Promise<UserStorage | undefined>;
|
|
38
|
+
getUserByUsername(username: string): Promise<UserStorage | undefined>;
|
|
39
|
+
getUsers(): Promise<UserStorage[]>;
|
|
40
|
+
deleteUser(id: string): boolean;
|
|
41
|
+
deleteApp(id: string): boolean;
|
|
42
|
+
checkpoint(appId?: string): Promise<MaintenanceResult>;
|
|
43
|
+
vacuum(appId?: string): Promise<MaintenanceResult>;
|
|
44
|
+
prune(appId?: string, keepCount?: number): Promise<MaintenanceResult>;
|
|
45
|
+
close(): Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AppStorage } from '../app.js';
|
|
2
|
+
import { BaseStorage } from '../base/index.js';
|
|
3
|
+
import type { MaintenanceResult, StorageOptions } from '../storage.js';
|
|
4
|
+
import type { UserStorage } from '../user.js';
|
|
5
|
+
import { type MemoryUserData } from './user.js';
|
|
6
|
+
export interface UserState {
|
|
7
|
+
currentSeq: number;
|
|
8
|
+
minSeq: number;
|
|
9
|
+
tables: Map<string, Map<string, import('../../../shared/types.js').StoredRecord>>;
|
|
10
|
+
changelog: Array<import('../../../shared/types.js').ChangeRecord & {
|
|
11
|
+
seq: number;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export interface MemoryStorageOptions extends StorageOptions {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* In-memory implementation of `Storage`.
|
|
18
|
+
*/
|
|
19
|
+
export declare class MemoryStorage extends BaseStorage {
|
|
20
|
+
readonly backend = "memory";
|
|
21
|
+
private apps;
|
|
22
|
+
private userStates;
|
|
23
|
+
private users;
|
|
24
|
+
private usersByUsername;
|
|
25
|
+
readonly secret: string;
|
|
26
|
+
readonly options: MemoryStorageOptions;
|
|
27
|
+
constructor(options?: MemoryStorageOptions);
|
|
28
|
+
getUserState(userId: string, appId: string): UserState;
|
|
29
|
+
deleteUserState(userId: string): boolean;
|
|
30
|
+
deleteAppUserStates(appId: string): void;
|
|
31
|
+
deleteTableInUserStates(appId: string, tableName: string): void;
|
|
32
|
+
createApp(id: string): Promise<AppStorage>;
|
|
33
|
+
getApp(id: string): Promise<AppStorage | undefined>;
|
|
34
|
+
getApps(): Promise<AppStorage[]>;
|
|
35
|
+
createUser(username: string, password: string): Promise<UserStorage>;
|
|
36
|
+
getUserData(userId: string): MemoryUserData | undefined;
|
|
37
|
+
getUser(id: string): Promise<UserStorage | undefined>;
|
|
38
|
+
getUserByUsername(username: string): Promise<UserStorage | undefined>;
|
|
39
|
+
getUsers(): Promise<UserStorage[]>;
|
|
40
|
+
deleteUser(id: string): boolean;
|
|
41
|
+
deleteApp(id: string): boolean;
|
|
42
|
+
checkpoint(appId?: string): Promise<MaintenanceResult>;
|
|
43
|
+
vacuum(appId?: string): Promise<MaintenanceResult>;
|
|
44
|
+
prune(appId?: string, keepCount?: number): Promise<MaintenanceResult>;
|
|
45
|
+
close(): Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/server/storage/memory/storage.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,WAAW,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,GAAG,CACT,MAAM,EACN,GAAG,CAAC,MAAM,EAAE,OAAO,0BAA0B,EAAE,YAAY,CAAC,CAC7D,CAAC;IACF,SAAS,EAAE,KAAK,CACd,OAAO,0BAA0B,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAClE,CAAC;CACH;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;CAAG;AAE/D;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,OAAO,YAAY;IAC5B,OAAO,CAAC,IAAI,CAA4C;IACxD,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,eAAe,CAAkC;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IAEvC,YAAY,OAAO,GAAE,oBAAyB,EAI7C;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAerD;IAED,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUvC;IAED,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAOvC;IAED,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAO9D;IAEK,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAW/C;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAGxD;IAEK,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAErC;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBzE;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtD;IAEK,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAO1D;IAEK,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAU1E;IAEK,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAIvC;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAU9B;IAED,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAI7B;IAEK,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAK3D;IAEK,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAKvD;IAEK,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4B1E;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;CACF"}
|