@moyodb/sdk 0.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +51 -0
  2. package/dist/assets/worker-CaOzbBz1.js +2351 -0
  3. package/dist/assets/worker-CaOzbBz1.js.map +1 -0
  4. package/dist/change-events.d.ts +29 -0
  5. package/dist/change-events.d.ts.map +1 -0
  6. package/dist/codec.d.ts +17 -0
  7. package/dist/codec.d.ts.map +1 -0
  8. package/dist/compression.d.ts +11 -0
  9. package/dist/compression.d.ts.map +1 -0
  10. package/dist/demo.d.ts +21 -0
  11. package/dist/demo.d.ts.map +1 -0
  12. package/dist/engine/README.md +56 -0
  13. package/dist/engine/moyodb_engine.d.ts +127 -0
  14. package/dist/engine/moyodb_engine.js +1193 -0
  15. package/dist/engine/moyodb_engine_bg.wasm +0 -0
  16. package/dist/engine/moyodb_engine_bg.wasm.d.ts +52 -0
  17. package/dist/engine/package.json +21 -0
  18. package/dist/engine/snippets/moyodb-engine-cff0a0e2441a7a8f/js/opfs_shim.js +402 -0
  19. package/dist/errors.d.ts +77 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/index.d.ts +9 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/indexing.d.ts +33 -0
  24. package/dist/indexing.d.ts.map +1 -0
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.d.ts.map +1 -0
  27. package/dist/moyodb-sdk.js +1988 -0
  28. package/dist/moyodb-sdk.js.map +1 -0
  29. package/dist/moyodb-sdk.umd.cjs +2 -0
  30. package/dist/moyodb-sdk.umd.cjs.map +1 -0
  31. package/dist/registry.d.ts +33 -0
  32. package/dist/registry.d.ts.map +1 -0
  33. package/dist/subscriptions.d.ts +10 -0
  34. package/dist/subscriptions.d.ts.map +1 -0
  35. package/dist/types.d.ts +158 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/worker-api.d.ts +51 -0
  38. package/dist/worker-api.d.ts.map +1 -0
  39. package/dist/worker-client.d.ts +67 -0
  40. package/dist/worker-client.d.ts.map +1 -0
  41. package/dist/worker-protocol.d.ts +86 -0
  42. package/dist/worker-protocol.d.ts.map +1 -0
  43. package/dist/worker-server.d.ts +6 -0
  44. package/dist/worker-server.d.ts.map +1 -0
  45. package/dist/worker.d.ts +2 -0
  46. package/dist/worker.d.ts.map +1 -0
  47. package/package.json +71 -0
@@ -0,0 +1,158 @@
1
+ export type TxMode = 'readonly' | 'readwrite';
2
+ export type TxId = number;
3
+ export type DebugFailpoint = 'after_wal_flush' | 'after_main_flush' | 'before_superblock_flush' | null;
4
+ export type ChangeKind = 'put' | 'delete';
5
+ export type Unsubscribe = () => void;
6
+ export type BatchOp = {
7
+ kind: 'put';
8
+ key: Uint8Array;
9
+ value: Uint8Array;
10
+ } | {
11
+ kind: 'delete';
12
+ key: Uint8Array;
13
+ };
14
+ export type MigrateHook = (context: MigrationContext) => Promise<void> | void;
15
+ export interface DbChange {
16
+ key: Uint8Array;
17
+ kind: ChangeKind;
18
+ }
19
+ export type DbSubscriptionCallback = (store: string, changes: DbChange[], txnId: number) => void;
20
+ export interface Range {
21
+ gt?: Uint8Array;
22
+ gte?: Uint8Array;
23
+ lt?: Uint8Array;
24
+ lte?: Uint8Array;
25
+ reverse?: boolean;
26
+ limit?: number;
27
+ }
28
+ export interface IndexDef {
29
+ store: string;
30
+ name: string;
31
+ keyPath: string | string[];
32
+ unique?: boolean;
33
+ }
34
+ export interface OpenOptions {
35
+ createIfMissing?: boolean;
36
+ ownerWaitMs?: number;
37
+ requestPersistence?: boolean;
38
+ cachePages?: number;
39
+ debugFailpoint?: DebugFailpoint;
40
+ version?: number;
41
+ migrate?: MigrateHook;
42
+ indexes?: IndexDef[];
43
+ }
44
+ export interface PutOptions {
45
+ ttl?: number;
46
+ }
47
+ export type CompressionKind = 'gzip' | 'deflate';
48
+ export interface CreateStoreOptions {
49
+ compression?: CompressionKind | false;
50
+ }
51
+ export interface ExportSnapshotOptions {
52
+ compression?: CompressionKind | false;
53
+ }
54
+ export interface ChangeRecord {
55
+ txId: TxId;
56
+ store: string;
57
+ key: Uint8Array;
58
+ kind: ChangeKind;
59
+ value?: Uint8Array;
60
+ }
61
+ export interface ChangeFeedOptions {
62
+ stores?: string[];
63
+ limit?: number;
64
+ }
65
+ export interface ChangeFeed {
66
+ changes: ChangeRecord[];
67
+ latestTxId: TxId;
68
+ }
69
+ export interface DbStats {
70
+ db_name: string;
71
+ db_id: number;
72
+ page_size: number;
73
+ catalog_root_page_id: number;
74
+ next_page_id: number;
75
+ last_committed_txid: number;
76
+ last_replayed_wal_offset: number;
77
+ store_count: number;
78
+ manifest_len: number;
79
+ main_len: number;
80
+ wal_len: number;
81
+ active_txns: number;
82
+ write_tx_open: boolean;
83
+ cache_pages: number;
84
+ }
85
+ export interface StorageInfo {
86
+ dbSize: number;
87
+ originUsage: number;
88
+ originQuota: number;
89
+ persisted: boolean;
90
+ }
91
+ export interface CompactionResult {
92
+ sizeBefore: number;
93
+ sizeAfter: number;
94
+ reclaimedBytes: number;
95
+ durationMs: number;
96
+ }
97
+ export interface ScanItem {
98
+ key: Uint8Array;
99
+ value: Uint8Array;
100
+ }
101
+ export interface Transaction {
102
+ readonly mode: TxMode;
103
+ get(store: string, key: Uint8Array): Promise<Uint8Array | null>;
104
+ getMany(store: string, keys: Array<Uint8Array>): Promise<Array<Uint8Array | null>>;
105
+ has(store: string, key: Uint8Array): Promise<boolean>;
106
+ put(store: string, key: Uint8Array, value: Uint8Array, options?: PutOptions): Promise<void>;
107
+ putMany(store: string, entries: Array<[key: Uint8Array, value: Uint8Array]>, options?: PutOptions): Promise<void>;
108
+ delete(store: string, key: Uint8Array): Promise<boolean>;
109
+ deleteMany(store: string, keys: Array<Uint8Array>): Promise<void>;
110
+ applyBatch(store: string, ops: Array<BatchOp>): Promise<void>;
111
+ scan(store: string, range?: Range): Promise<ScanItem[]>;
112
+ getByIndex(store: string, indexName: string, key: Uint8Array): Promise<Uint8Array | null>;
113
+ scanByIndex(store: string, indexName: string, range?: Range): AsyncIterable<[key: Uint8Array, value: Uint8Array]>;
114
+ createStore(name: string, options?: CreateStoreOptions): Promise<void>;
115
+ dropStore(name: string): Promise<void>;
116
+ clearStore(name: string): Promise<void>;
117
+ commit(): Promise<void>;
118
+ rollback(): Promise<void>;
119
+ }
120
+ export interface MigrationContext {
121
+ db: DB;
122
+ oldVersion: number;
123
+ newVersion: number;
124
+ transaction: Transaction;
125
+ }
126
+ export interface DB {
127
+ begin(mode?: TxMode): Promise<Transaction>;
128
+ createStore(name: string, options?: CreateStoreOptions): Promise<void>;
129
+ dropStore(name: string): Promise<void>;
130
+ clearStore(name: string): Promise<void>;
131
+ listStores(): Promise<string[]>;
132
+ getVersion(): Promise<number>;
133
+ changesSince(txid: TxId, options?: ChangeFeedOptions): Promise<ChangeFeed>;
134
+ get(store: string, key: Uint8Array): Promise<Uint8Array | null>;
135
+ getMany(store: string, keys: Array<Uint8Array>): Promise<Array<Uint8Array | null>>;
136
+ has(store: string, key: Uint8Array): Promise<boolean>;
137
+ put(store: string, key: Uint8Array, value: Uint8Array, options?: PutOptions): Promise<void>;
138
+ delete(store: string, key: Uint8Array): Promise<boolean>;
139
+ scan(store: string, range?: Range): Promise<ScanItem[]>;
140
+ exportSnapshot(options?: ExportSnapshotOptions): Promise<Uint8Array>;
141
+ importSnapshot(data: Uint8Array): Promise<void>;
142
+ reset(): Promise<void>;
143
+ compact(): Promise<CompactionResult>;
144
+ rebuild(): Promise<CompactionResult>;
145
+ stats(): Promise<DbStats>;
146
+ storageInfo(): Promise<StorageInfo>;
147
+ requestPersistence(): Promise<boolean>;
148
+ close(): Promise<void>;
149
+ destroy(): Promise<void>;
150
+ setFailpoint(failpoint: DebugFailpoint): Promise<void>;
151
+ subscribe(callback: DbSubscriptionCallback): Unsubscribe;
152
+ subscribe(storeName: string, callback: DbSubscriptionCallback): Unsubscribe;
153
+ subscribe(storeName: string, keyPrefix: Uint8Array, callback: DbSubscriptionCallback): Unsubscribe;
154
+ watch(callback: DbSubscriptionCallback): Unsubscribe;
155
+ watch(storeName: string, callback: DbSubscriptionCallback): Unsubscribe;
156
+ watch(storeName: string, keyPrefix: Uint8Array, callback: DbSubscriptionCallback): Unsubscribe;
157
+ }
158
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { BatchOp, ChangeFeed, ChangeFeedOptions, CompactionResult, CreateStoreOptions, DebugFailpoint, DbStats, ExportSnapshotOptions, IndexDef, PutOptions, Range, ScanItem, StorageInfo, TxMode } from './types';
2
+ export interface WorkerRuntimeOpenOptions {
3
+ createIfMissing: boolean;
4
+ ownerWaitMs: number;
5
+ requestPersistence: boolean;
6
+ cachePages: number;
7
+ debugFailpoint: DebugFailpoint;
8
+ }
9
+ export interface WorkerOpenRequest {
10
+ dbName: string;
11
+ options: WorkerRuntimeOpenOptions;
12
+ }
13
+ export interface WorkerApi {
14
+ open(request: WorkerOpenRequest): Promise<void>;
15
+ close(): Promise<void>;
16
+ destroy(): Promise<void>;
17
+ deleteDB(dbName: string): Promise<void>;
18
+ begin(mode: TxMode): Promise<number>;
19
+ commit(txId: number): Promise<number>;
20
+ rollback(txId: number): Promise<void>;
21
+ createStore(txId: number, name: string, options?: CreateStoreOptions): Promise<void>;
22
+ dropStore(txId: number, name: string): Promise<void>;
23
+ clearStore(txId: number, name: string): Promise<void>;
24
+ get(txId: number, store: string, key: Uint8Array): Promise<Uint8Array | null>;
25
+ getMany(txId: number, store: string, keys: Array<Uint8Array>): Promise<Array<Uint8Array | null>>;
26
+ has(txId: number, store: string, key: Uint8Array): Promise<boolean>;
27
+ put(txId: number, store: string, key: Uint8Array, value: Uint8Array, options?: PutOptions): Promise<void>;
28
+ putMany(txId: number, store: string, entries: Array<[Uint8Array, Uint8Array]>, options?: PutOptions): Promise<void>;
29
+ delete(txId: number, store: string, key: Uint8Array): Promise<boolean>;
30
+ deleteMany(txId: number, store: string, keys: Array<Uint8Array>): Promise<void>;
31
+ applyBatch(txId: number, store: string, ops: Array<BatchOp>): Promise<void>;
32
+ scan(txId: number, store: string, range: Range): Promise<ScanItem[]>;
33
+ getByIndex(txId: number, store: string, indexName: string, key: Uint8Array): Promise<Uint8Array | null>;
34
+ scanByIndex(txId: number, store: string, indexName: string, range: Range): Promise<ScanItem[]>;
35
+ getIndexes(): Promise<IndexDef[]>;
36
+ reconcileIndexes(txId: number, indexes: IndexDef[]): Promise<void>;
37
+ listStores(): Promise<string[]>;
38
+ getVersion(): Promise<number>;
39
+ changesSince(txId: number, options: ChangeFeedOptions): Promise<ChangeFeed>;
40
+ setSchemaVersion(txId: number, version: number): Promise<void>;
41
+ exportSnapshot(options?: ExportSnapshotOptions): Promise<Uint8Array>;
42
+ importSnapshot(data: Uint8Array): Promise<void>;
43
+ reset(): Promise<void>;
44
+ compact(): Promise<CompactionResult>;
45
+ rebuild(): Promise<CompactionResult>;
46
+ stats(): Promise<DbStats>;
47
+ storageInfo(): Promise<StorageInfo>;
48
+ requestPersistence(): Promise<boolean>;
49
+ setFailpoint(failpoint: DebugFailpoint): Promise<void>;
50
+ }
51
+ //# sourceMappingURL=worker-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-api.d.ts","sourceRoot":"","sources":["../src/worker-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { WorkerApi, WorkerOpenRequest } from './worker-api';
2
+ import type { BatchOp, ChangeFeed, ChangeFeedOptions, CompactionResult, CreateStoreOptions, DebugFailpoint, DbStats, ExportSnapshotOptions, IndexDef, PutOptions, Range, ScanItem, StorageInfo, TxMode } from './types';
3
+ import { type WorkerCommand, type WorkerCommandArgs, type WorkerCommandResult } from './worker-protocol';
4
+ export interface WorkerProtocolClientOptions {
5
+ requestTimeoutMs?: number;
6
+ }
7
+ export declare class WorkerProtocolClient implements WorkerApi {
8
+ private readonly worker;
9
+ private nextRequestId;
10
+ private pending;
11
+ private closed;
12
+ private readyResolved;
13
+ private readyResolve;
14
+ private readyReject;
15
+ private ready;
16
+ private requestTimeoutMs;
17
+ private fatalHandler;
18
+ private closeReason;
19
+ constructor(worker: Worker, options?: WorkerProtocolClientOptions);
20
+ setFatalHandler(handler: ((error: Error) => void) | null): void;
21
+ whenReady(): Promise<void>;
22
+ dispose(reason?: Error): void;
23
+ open(request: WorkerOpenRequest): Promise<void>;
24
+ close(): Promise<void>;
25
+ destroy(): Promise<void>;
26
+ deleteDB(dbName: string): Promise<void>;
27
+ begin(mode: TxMode): Promise<number>;
28
+ commit(txId: number): Promise<number>;
29
+ rollback(txId: number): Promise<void>;
30
+ createStore(txId: number, name: string, options?: CreateStoreOptions): Promise<void>;
31
+ dropStore(txId: number, name: string): Promise<void>;
32
+ clearStore(txId: number, name: string): Promise<void>;
33
+ get(txId: number, store: string, key: Uint8Array): Promise<Uint8Array | null>;
34
+ getMany(txId: number, store: string, keys: Array<Uint8Array>): Promise<Array<Uint8Array | null>>;
35
+ has(txId: number, store: string, key: Uint8Array): Promise<boolean>;
36
+ put(txId: number, store: string, key: Uint8Array, value: Uint8Array, options?: PutOptions): Promise<void>;
37
+ putMany(txId: number, store: string, entries: Array<[Uint8Array, Uint8Array]>, options?: PutOptions): Promise<void>;
38
+ delete(txId: number, store: string, key: Uint8Array): Promise<boolean>;
39
+ deleteMany(txId: number, store: string, keys: Array<Uint8Array>): Promise<void>;
40
+ applyBatch(txId: number, store: string, ops: Array<BatchOp>): Promise<void>;
41
+ scan(txId: number, store: string, range: Range): Promise<ScanItem[]>;
42
+ getByIndex(txId: number, store: string, indexName: string, key: Uint8Array): Promise<Uint8Array | null>;
43
+ scanByIndex(txId: number, store: string, indexName: string, range: Range): Promise<ScanItem[]>;
44
+ getIndexes(): Promise<IndexDef[]>;
45
+ reconcileIndexes(txId: number, indexes: IndexDef[]): Promise<void>;
46
+ listStores(): Promise<string[]>;
47
+ getVersion(): Promise<number>;
48
+ changesSince(txId: number, options: ChangeFeedOptions): Promise<ChangeFeed>;
49
+ setSchemaVersion(txId: number, version: number): Promise<void>;
50
+ exportSnapshot(options?: ExportSnapshotOptions): Promise<Uint8Array>;
51
+ importSnapshot(data: Uint8Array): Promise<void>;
52
+ reset(): Promise<void>;
53
+ compact(): Promise<CompactionResult>;
54
+ rebuild(): Promise<CompactionResult>;
55
+ stats(): Promise<DbStats>;
56
+ storageInfo(): Promise<StorageInfo>;
57
+ requestPersistence(): Promise<boolean>;
58
+ setFailpoint(failpoint: DebugFailpoint): Promise<void>;
59
+ request<M extends WorkerCommand>(command: M, args: WorkerCommandArgs<M>): Promise<WorkerCommandResult<M>>;
60
+ private ensureOpen;
61
+ private handleMessage;
62
+ private handleMessageError;
63
+ private handleError;
64
+ private rejectPending;
65
+ private disposeInternal;
66
+ }
67
+ //# sourceMappingURL=worker-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../src/worker-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { WorkerApi } from './worker-api';
2
+ import type { BatchOp } from './types';
3
+ export declare const WORKER_PROTOCOL_VERSION = 1;
4
+ export declare const WORKER_PROTOCOL_READY = "moyodb:worker-protocol:ready";
5
+ export declare const WORKER_PROTOCOL_REQUEST = "moyodb:worker-protocol:request";
6
+ export declare const WORKER_PROTOCOL_RESPONSE = "moyodb:worker-protocol:response";
7
+ export declare const WORKER_COMMANDS: readonly ["open", "close", "destroy", "deleteDB", "begin", "commit", "rollback", "createStore", "dropStore", "clearStore", "get", "getMany", "has", "put", "putMany", "delete", "deleteMany", "applyBatch", "scan", "getByIndex", "scanByIndex", "getIndexes", "reconcileIndexes", "listStores", "getVersion", "changesSince", "setSchemaVersion", "exportSnapshot", "importSnapshot", "reset", "compact", "rebuild", "stats", "storageInfo", "requestPersistence", "setFailpoint"];
8
+ export type WorkerCommand = (typeof WORKER_COMMANDS)[number];
9
+ type WorkerMethod<M extends WorkerCommand> = WorkerApi[M] extends (...args: infer Args) => Promise<infer Result> ? {
10
+ args: Args;
11
+ result: Result;
12
+ } : never;
13
+ export type WorkerCommandArgs<M extends WorkerCommand> = WorkerMethod<M>['args'];
14
+ export type WorkerCommandResult<M extends WorkerCommand> = WorkerMethod<M>['result'];
15
+ export type PackedBatchOpKey = {
16
+ kind: 'put' | 'delete';
17
+ key: Uint8Array;
18
+ };
19
+ type PreparedWorkerCommandArgs<M extends WorkerCommand> = WorkerCommandArgs<M> | unknown[];
20
+ export type WorkerProtocolReadyMessage = {
21
+ type: typeof WORKER_PROTOCOL_READY;
22
+ version: typeof WORKER_PROTOCOL_VERSION;
23
+ };
24
+ export type WorkerProtocolRequestMessage = {
25
+ [M in WorkerCommand]: {
26
+ type: typeof WORKER_PROTOCOL_REQUEST;
27
+ version: typeof WORKER_PROTOCOL_VERSION;
28
+ id: number;
29
+ command: M;
30
+ args: PreparedWorkerCommandArgs<M>;
31
+ };
32
+ }[WorkerCommand];
33
+ export interface SerializedWorkerError {
34
+ name: string;
35
+ code?: string;
36
+ message: string;
37
+ stack?: string;
38
+ }
39
+ export type WorkerProtocolSuccessMessage = {
40
+ [M in WorkerCommand]: {
41
+ type: typeof WORKER_PROTOCOL_RESPONSE;
42
+ version: typeof WORKER_PROTOCOL_VERSION;
43
+ id: number;
44
+ ok: true;
45
+ result: WorkerCommandResult<M>;
46
+ };
47
+ }[WorkerCommand];
48
+ export interface WorkerProtocolErrorMessage {
49
+ type: typeof WORKER_PROTOCOL_RESPONSE;
50
+ version: typeof WORKER_PROTOCOL_VERSION;
51
+ id: number;
52
+ ok: false;
53
+ error: SerializedWorkerError;
54
+ }
55
+ export type WorkerProtocolResponseMessage = WorkerProtocolSuccessMessage | WorkerProtocolErrorMessage;
56
+ export declare function isWorkerCommand(value: unknown): value is WorkerCommand;
57
+ export declare function isWorkerProtocolReadyMessage(value: unknown): value is WorkerProtocolReadyMessage;
58
+ export declare function isWorkerProtocolResponseMessage(value: unknown): value is WorkerProtocolResponseMessage;
59
+ export declare function isWorkerProtocolRequestMessage(value: unknown): value is WorkerProtocolRequestMessage;
60
+ export declare function isWorkerProtocolEnvelope(value: unknown): value is {
61
+ type: string;
62
+ id?: unknown;
63
+ };
64
+ export declare function serializeWorkerError(error: unknown): SerializedWorkerError;
65
+ export declare function deserializeWorkerError(error: SerializedWorkerError): Error;
66
+ export declare function workerProtocolError(name: string, message: string, code?: string): Error;
67
+ export declare function prepareWorkerCommandPayload<M extends WorkerCommand>(command: M, args: WorkerCommandArgs<M>): {
68
+ args: PreparedWorkerCommandArgs<M>;
69
+ transfer: Transferable[];
70
+ };
71
+ export declare function decodeWorkerCommandPayload<M extends WorkerCommand>(command: M, args: PreparedWorkerCommandArgs<M>): WorkerCommandArgs<M>;
72
+ export declare function packedBinaryListBytes(value: unknown): Uint8Array | null;
73
+ export declare function packedBatchOpsBytes(value: unknown): Uint8Array | null;
74
+ export declare function unpackPackedBinaryList(bytes: Uint8Array): Uint8Array[];
75
+ export declare function unpackPackedBinaryPairs(bytes: Uint8Array): Array<[Uint8Array, Uint8Array]>;
76
+ export declare function unpackPackedBinaryPairKeys(bytes: Uint8Array): Uint8Array[];
77
+ export declare function unpackPackedBatchOps(bytes: Uint8Array): Array<BatchOp>;
78
+ export declare function unpackPackedBatchOpKeys(bytes: Uint8Array): PackedBatchOpKey[];
79
+ export declare function prepareWorkerResponsePayload<M extends WorkerCommand>(command: M, result: WorkerCommandResult<M>): {
80
+ result: WorkerCommandResult<M> | unknown;
81
+ transfer: Transferable[];
82
+ };
83
+ export declare function decodeWorkerResponsePayload<M extends WorkerCommand>(command: M, result: unknown): WorkerCommandResult<M>;
84
+ export declare function collectTransferablesForValue(value: unknown): Transferable[];
85
+ export {};
86
+ //# sourceMappingURL=worker-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-protocol.d.ts","sourceRoot":"","sources":["../src/worker-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { WorkerApi } from './worker-api';
2
+ export interface WorkerServerHandle {
3
+ close(): void;
4
+ }
5
+ export declare function exposeWorkerApi(api: WorkerApi, scope?: DedicatedWorkerGlobalScope): WorkerServerHandle;
6
+ //# sourceMappingURL=worker-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-server.d.ts","sourceRoot":"","sources":["../src/worker-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA2B9C,MAAM,WAAW,kBAAkB;IAC/B,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,eAAe,CAC3B,GAAG,EAAE,SAAS,EACd,KAAK,GAAE,0BAA+D,GACvE,kBAAkB,CAcpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@moyodb/sdk",
3
+ "version": "0.0.0-alpha.1",
4
+ "private": false,
5
+ "type": "module",
6
+ "scripts": {
7
+ "typecheck": "tsc --noEmit",
8
+ "build:wasm": "npm run build:wasm:release",
9
+ "build:wasm:release": "wasm-pack build ../../crates/engine --release --target web --out-dir ../../packages/sdk/public/engine --out-name moyodb_engine",
10
+ "build:wasm:dev": "wasm-pack build ../../crates/engine --dev --target web --out-dir ../../packages/sdk/public/engine --out-name moyodb_engine",
11
+ "build": "npm run build:wasm:release && vite build && npm run build:types && npm run prepare:dist",
12
+ "dev": "npm run build:wasm:release && vite --host 127.0.0.1 --port 4173",
13
+ "dev:test": "npm run build:wasm:release && vite --host 127.0.0.1 --port 4173",
14
+ "test:e2e": "npm run build:wasm:release && playwright test",
15
+ "build:types": "tsc -p tsconfig.build.json",
16
+ "bench:browser": "node scripts/run-playwright-env.mjs bench:browser",
17
+ "bench:indexeddb": "node scripts/run-playwright-env.mjs bench:indexeddb",
18
+ "bench:opfs": "node scripts/run-playwright-env.mjs bench:opfs",
19
+ "bench:report": "node bench/generate-report.mjs",
20
+ "test:soak": "node scripts/run-playwright-env.mjs test:soak",
21
+ "test:browser:soak": "npm run test:soak",
22
+ "prepare:dist": "node scripts/prepare-dist.mjs"
23
+ },
24
+ "devDependencies": {
25
+ "@playwright/test": "1.61.1",
26
+ "typescript": "6.0.3",
27
+ "vite": "7.3.6"
28
+ },
29
+ "description": "Experimental Rust/WASM transactional key-value storage engine SDK for browser apps, backed by OPFS.",
30
+ "license": "MIT OR Apache-2.0",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/moyodb/moyodb.git"
34
+ },
35
+ "keywords": [
36
+ "moyodb",
37
+ "rust",
38
+ "wasm",
39
+ "webassembly",
40
+ "database",
41
+ "storage-engine",
42
+ "browser",
43
+ "opfs",
44
+ "local-first",
45
+ "key-value",
46
+ "typescript",
47
+ "transactions",
48
+ "wal",
49
+ "web-worker"
50
+ ],
51
+ "sideEffects": false,
52
+ "files": [
53
+ "dist",
54
+ "README.md"
55
+ ],
56
+ "exports": {
57
+ ".": {
58
+ "types": "./dist/index.d.ts",
59
+ "import": "./dist/moyodb-sdk.js"
60
+ }
61
+ },
62
+ "types": "./dist/index.d.ts",
63
+ "homepage": "https://github.com/moyodb/moyodb#readme",
64
+ "bugs": {
65
+ "url": "https://github.com/moyodb/moyodb/issues"
66
+ },
67
+ "engines": {
68
+ "node": ">=22.0.0",
69
+ "npm": ">=10.0.0"
70
+ }
71
+ }