@minnowdb/core 0.1.1 → 0.2.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 (117) hide show
  1. package/README.md +12 -9
  2. package/dist/engine/client.d.ts +9 -1
  3. package/dist/engine/client.d.ts.map +1 -1
  4. package/dist/engine/client.js +29 -5
  5. package/dist/engine/client.js.map +1 -1
  6. package/dist/engine/database.d.ts +51 -6
  7. package/dist/engine/database.d.ts.map +1 -1
  8. package/dist/engine/database.js +2597 -865
  9. package/dist/engine/database.js.map +1 -1
  10. package/dist/engine/live.d.ts.map +1 -1
  11. package/dist/engine/live.js +35 -11
  12. package/dist/engine/live.js.map +1 -1
  13. package/dist/engine/query-cache.d.ts +13 -1
  14. package/dist/engine/query-cache.d.ts.map +1 -1
  15. package/dist/engine/query-cache.js +34 -5
  16. package/dist/engine/query-cache.js.map +1 -1
  17. package/dist/engine/query.d.ts +11 -1
  18. package/dist/engine/query.d.ts.map +1 -1
  19. package/dist/engine/query.js +49 -41
  20. package/dist/engine/query.js.map +1 -1
  21. package/dist/engine/result-wire.d.ts +68 -0
  22. package/dist/engine/result-wire.d.ts.map +1 -0
  23. package/dist/engine/result-wire.js +264 -0
  24. package/dist/engine/result-wire.js.map +1 -0
  25. package/dist/engine/sort-keys.d.ts +50 -12
  26. package/dist/engine/sort-keys.d.ts.map +1 -1
  27. package/dist/engine/sort-keys.js +371 -25
  28. package/dist/engine/sort-keys.js.map +1 -1
  29. package/dist/engine/vector.d.ts +11 -0
  30. package/dist/engine/vector.d.ts.map +1 -1
  31. package/dist/engine/vector.js +99 -203
  32. package/dist/engine/vector.js.map +1 -1
  33. package/dist/engine/worker-host.d.ts +17 -1
  34. package/dist/engine/worker-host.d.ts.map +1 -1
  35. package/dist/engine/worker-host.js +83 -13
  36. package/dist/engine/worker-host.js.map +1 -1
  37. package/dist/storage/index.d.ts +13 -0
  38. package/dist/storage/index.d.ts.map +1 -1
  39. package/dist/storage/index.js +13 -0
  40. package/dist/storage/index.js.map +1 -1
  41. package/dist/storage/indexeddb.d.ts +5 -1
  42. package/dist/storage/indexeddb.d.ts.map +1 -1
  43. package/dist/storage/indexeddb.js +484 -402
  44. package/dist/storage/indexeddb.js.map +1 -1
  45. package/dist/storage/memory.d.ts +24 -21
  46. package/dist/storage/memory.d.ts.map +1 -1
  47. package/dist/storage/memory.js +124 -1199
  48. package/dist/storage/memory.js.map +1 -1
  49. package/dist/storage/opfs/files.d.ts +64 -0
  50. package/dist/storage/opfs/files.d.ts.map +1 -0
  51. package/dist/storage/opfs/files.js +243 -0
  52. package/dist/storage/opfs/files.js.map +1 -0
  53. package/dist/storage/opfs/index.d.ts +3 -0
  54. package/dist/storage/opfs/index.d.ts.map +1 -0
  55. package/dist/storage/opfs/index.js +3 -0
  56. package/dist/storage/opfs/index.js.map +1 -0
  57. package/dist/storage/opfs/leader.d.ts +130 -0
  58. package/dist/storage/opfs/leader.d.ts.map +1 -0
  59. package/dist/storage/opfs/leader.js +1104 -0
  60. package/dist/storage/opfs/leader.js.map +1 -0
  61. package/dist/storage/opfs/rpc.d.ts +70 -0
  62. package/dist/storage/opfs/rpc.d.ts.map +1 -0
  63. package/dist/storage/opfs/rpc.js +58 -0
  64. package/dist/storage/opfs/rpc.js.map +1 -0
  65. package/dist/storage/opfs/store.d.ts +154 -0
  66. package/dist/storage/opfs/store.d.ts.map +1 -0
  67. package/dist/storage/opfs/store.js +958 -0
  68. package/dist/storage/opfs/store.js.map +1 -0
  69. package/dist/storage/toolkit/extents.d.ts +69 -0
  70. package/dist/storage/toolkit/extents.d.ts.map +1 -0
  71. package/dist/storage/toolkit/extents.js +175 -0
  72. package/dist/storage/toolkit/extents.js.map +1 -0
  73. package/dist/storage/toolkit/index.d.ts +30 -0
  74. package/dist/storage/toolkit/index.d.ts.map +1 -0
  75. package/dist/storage/toolkit/index.js +5 -0
  76. package/dist/storage/toolkit/index.js.map +1 -0
  77. package/dist/storage/toolkit/record-core.d.ts +252 -0
  78. package/dist/storage/toolkit/record-core.d.ts.map +1 -0
  79. package/dist/storage/toolkit/record-core.js +1670 -0
  80. package/dist/storage/toolkit/record-core.js.map +1 -0
  81. package/dist/storage/toolkit/sync-file.d.ts +29 -0
  82. package/dist/storage/toolkit/sync-file.d.ts.map +1 -0
  83. package/dist/storage/toolkit/sync-file.js +2 -0
  84. package/dist/storage/toolkit/sync-file.js.map +1 -0
  85. package/dist/storage/toolkit/wal.d.ts +22 -0
  86. package/dist/storage/toolkit/wal.d.ts.map +1 -0
  87. package/dist/storage/toolkit/wal.js +79 -0
  88. package/dist/storage/toolkit/wal.js.map +1 -0
  89. package/dist/storage/toolkit/wire.d.ts +25 -0
  90. package/dist/storage/toolkit/wire.d.ts.map +1 -0
  91. package/dist/storage/toolkit/wire.js +100 -0
  92. package/dist/storage/toolkit/wire.js.map +1 -0
  93. package/dist/storage/types.d.ts +343 -59
  94. package/dist/storage/types.d.ts.map +1 -1
  95. package/dist/storage/types.js +112 -11
  96. package/dist/storage/types.js.map +1 -1
  97. package/dist/testing/block-store-conformance.d.ts +51 -0
  98. package/dist/testing/block-store-conformance.d.ts.map +1 -0
  99. package/dist/testing/block-store-conformance.js +745 -0
  100. package/dist/testing/block-store-conformance.js.map +1 -0
  101. package/dist/testing/index.d.ts +3 -0
  102. package/dist/testing/index.d.ts.map +1 -1
  103. package/dist/testing/index.js +5 -0
  104. package/dist/testing/index.js.map +1 -1
  105. package/dist/testing/opfs-shim.d.ts +35 -0
  106. package/dist/testing/opfs-shim.d.ts.map +1 -0
  107. package/dist/testing/opfs-shim.js +295 -0
  108. package/dist/testing/opfs-shim.js.map +1 -0
  109. package/dist/transactions/index.d.ts +42 -1
  110. package/dist/transactions/index.d.ts.map +1 -1
  111. package/dist/transactions/index.js +219 -13
  112. package/dist/transactions/index.js.map +1 -1
  113. package/dist/worker-protocol/index.d.ts +2 -2
  114. package/dist/worker-protocol/index.d.ts.map +1 -1
  115. package/dist/worker-protocol/index.js +2 -1
  116. package/dist/worker-protocol/index.js.map +1 -1
  117. package/package.json +10 -2
@@ -0,0 +1,130 @@
1
+ import { type BeginTransactionInput, type BeginTransactionResult, type BlockWrite, type CatalogProbe, type CommitTransactionInput, type CompactionJobRecord, type CompactionJobRecordUpdate, type CreateGarbageCollectionJobInput, type FtsCandidates, type FtsColumnIndexRecord, type FtsPosting, type GarbageCollectionJobRecord, type GarbageCollectionStepResult, type LeaseRecord, type Manifest, type ManifestSummary, type PublishManifestInput, type QueryCatalogState, type RowIdRange, type RunGarbageCollectionStepInput, type SegmentRecord, type StageTransactionArtifactsInput, type StoragePage, type TableColumnRecord, type TableRecord, type TempOwnerRecord, type TempRunPage, type TransactionRecord, type TransactionRecordUpdate, type TriggerRecord, type WriteTransactionInput } from "../types.js";
2
+ import type { DatabaseSnapshot, SnapshotLoadProgress } from "../snapshot.js";
3
+ import { OpfsTree } from "./files.js";
4
+ /**
5
+ * The leader: the one instance holding the database's write-ahead log handle, and with it
6
+ * every other handle — checkpoint slots, the tail extent, a small cache of sealed extents.
7
+ *
8
+ * Because the handles are held, every operation's storage cost is a synchronous write or read
9
+ * measured in microseconds, and because leadership is exclusive by the browser's own file
10
+ * lock, the leader's in-memory `RecordCore` is always provably current — there are no
11
+ * freshness probes anywhere. An operation is: validate and mutate the core (synchronously),
12
+ * append one checksummed WAL frame (synchronously), acknowledge. The only awaits sit before
13
+ * that critical section (extent appends that may seal, temp-file IO), so no observer ever
14
+ * sees state mid-mutation.
15
+ *
16
+ * Checkpointing is also synchronous — dump, write to the older of two fixed slots, flush,
17
+ * reset the WAL — which is what makes a single WAL file safe: the flush precedes the reset,
18
+ * and a crash mid-checkpoint corrupts only the slot being written while the other slot plus
19
+ * the un-reset WAL still reconstruct everything.
20
+ */
21
+ export declare class OpfsLeader {
22
+ #private;
23
+ private constructor();
24
+ /** Builds a leader from held handles: newest valid checkpoint slot plus the WAL tail. */
25
+ static recover(tree: OpfsTree, strict: boolean, handles: {
26
+ wal: FileSystemSyncAccessHandle;
27
+ slotA: FileSystemSyncAccessHandle;
28
+ slotB: FileSystemSyncAccessHandle;
29
+ }, checkpointEntries?: number): Promise<OpfsLeader>;
30
+ /** Fully synchronous: dump, write the older slot, flush it, then and only then reset. */
31
+ checkpointNow(): void;
32
+ addBlock(id: string, bytes: Uint8Array): Promise<void>;
33
+ addBlocks(blocks: readonly BlockWrite[]): Promise<void>;
34
+ getBlock(id: string): Promise<Uint8Array | undefined>;
35
+ getBlocks(ids: readonly string[]): Promise<Array<Uint8Array | undefined>>;
36
+ removeBlock(id: string): Promise<void>;
37
+ listBlockIds(): Promise<string[]>;
38
+ putTempRunPage(page: TempRunPage): Promise<void>;
39
+ getTempRunPage(ownerId: string, runId: string, pageIndex: number): Promise<Uint8Array | undefined>;
40
+ removeTempRun(ownerId: string, runId: string): Promise<void>;
41
+ removeTempOwner(ownerId: string): Promise<void>;
42
+ createTempOwner(record: TempOwnerRecord): Promise<void>;
43
+ getTempOwner(ownerId: string): Promise<TempOwnerRecord | undefined>;
44
+ renewTempOwner(ownerId: string, expectedRevision: number, expiresAt: string): Promise<TempOwnerRecord>;
45
+ removeTempOwnerIfExpired(ownerId: string, expiresAtCutoff: string): Promise<boolean>;
46
+ listTempOwnerIdsPage(afterOwnerId: string | null, limit: number): Promise<StoragePage<string, string>>;
47
+ getTable(id: string): Promise<TableRecord | undefined>;
48
+ getTableByName(name: string): Promise<TableRecord | undefined>;
49
+ listTables(): Promise<TableRecord[]>;
50
+ getSegment(id: string): Promise<SegmentRecord | undefined>;
51
+ listSegments(tableId?: string): Promise<SegmentRecord[]>;
52
+ getExistingUniqueKeys(tableId: string, keyTokens: readonly string[]): Promise<string[]>;
53
+ getCurrentManifestVersion(): Promise<number | null>;
54
+ getCatalogProbe(): Promise<CatalogProbe>;
55
+ getQueryCatalogState(tableNames: readonly string[]): Promise<QueryCatalogState>;
56
+ getCurrentManifest(): Promise<Manifest | undefined>;
57
+ getManifest(version: number): Promise<Manifest | undefined>;
58
+ listManifests(): Promise<Manifest[]>;
59
+ listManifestPage(afterVersion: number | null, limit: number): Promise<StoragePage<Manifest, number>>;
60
+ getTransaction(id: string): Promise<TransactionRecord | undefined>;
61
+ getTransactions(ids: readonly string[]): Promise<Array<TransactionRecord | undefined>>;
62
+ listTransactions(): Promise<TransactionRecord[]>;
63
+ listTransactionPage(afterId: string | null, limit: number): Promise<StoragePage<TransactionRecord, string>>;
64
+ getLease(id: string): Promise<LeaseRecord | undefined>;
65
+ listLeases(): Promise<LeaseRecord[]>;
66
+ getCompactionJob(id: string): Promise<CompactionJobRecord | undefined>;
67
+ listCompactionJobs(tableId?: string): Promise<CompactionJobRecord[]>;
68
+ listCompactionJobPage(afterId: string | null, limit: number): Promise<StoragePage<CompactionJobRecord, string>>;
69
+ getGarbageCollectionJob(id: string): Promise<GarbageCollectionJobRecord | undefined>;
70
+ listGarbageCollectionJobs(): Promise<GarbageCollectionJobRecord[]>;
71
+ addTable(record: TableRecord): Promise<void>;
72
+ updateTable(id: string, expectedRevision: number, update: {
73
+ columns?: TableColumnRecord[];
74
+ ftsColumns?: Record<string, FtsColumnIndexRecord> | null;
75
+ triggers?: TriggerRecord[] | null;
76
+ }): Promise<TableRecord>;
77
+ removeTable(id: string, expectedRevision: number): Promise<void>;
78
+ addSegment(record: SegmentRecord): Promise<void>;
79
+ removeSegment(id: string): Promise<void>;
80
+ reserveRowIds(tableId: string, count: number): Promise<RowIdRange>;
81
+ reserveAutoIncrement(tableId: string, columnId: string, count: number, atLeast?: bigint): Promise<RowIdRange>;
82
+ publishManifest(input: PublishManifestInput): Promise<Manifest>;
83
+ beginTransaction(input: BeginTransactionInput): Promise<BeginTransactionResult>;
84
+ createTransaction(record: TransactionRecord): Promise<void>;
85
+ updateTransaction(id: string, expectedRevision: number, update: TransactionRecordUpdate): Promise<TransactionRecord>;
86
+ stageTransactionArtifacts(input: StageTransactionArtifactsInput): Promise<TransactionRecord>;
87
+ commitTransaction(input: CommitTransactionInput): Promise<ManifestSummary>;
88
+ writeTransaction(input: WriteTransactionInput): Promise<ManifestSummary>;
89
+ createLease(record: LeaseRecord): Promise<void>;
90
+ renewLease(id: string, expectedRevision: number, expiresAt: string): Promise<LeaseRecord>;
91
+ moveLease(id: string, expectedRevision: number, manifestVersion: number | null, expiresAt: string): Promise<LeaseRecord>;
92
+ removeLeaseIfExpired(id: string, expectedRevision: number, expiresAtCutoff: string): Promise<boolean>;
93
+ removeLease(id: string): Promise<void>;
94
+ createCompactionJob(record: CompactionJobRecord): Promise<void>;
95
+ updateCompactionJob(id: string, expectedRevision: number, update: CompactionJobRecordUpdate): Promise<CompactionJobRecord>;
96
+ cancelCompactionJob(id: string, expectedRevision: number, cancelledAt: string): Promise<CompactionJobRecord>;
97
+ removeCompactionJob(id: string): Promise<void>;
98
+ createGarbageCollectionJob(input: CreateGarbageCollectionJobInput): Promise<GarbageCollectionJobRecord>;
99
+ runGarbageCollectionStep(input: RunGarbageCollectionStepInput): Promise<GarbageCollectionStepResult>;
100
+ removeGarbageCollectionJob(id: string): Promise<void>;
101
+ removePrunedManifestRecords(): Promise<number>;
102
+ writeFtsBase(tableId: string, columnId: string, input: {
103
+ coversVersion: number;
104
+ chunks: FtsPosting[][];
105
+ totalTokens: number;
106
+ }): Promise<void>;
107
+ readFtsCandidates(tableId: string, columnId: string, terms: ReadonlyArray<{
108
+ term: string;
109
+ prefix: boolean;
110
+ }>, upToVersion: number): Promise<FtsCandidates & {
111
+ deltaChunkCount: number;
112
+ totalTokens: number;
113
+ coversVersion: number;
114
+ }>;
115
+ /**
116
+ * Consistent by construction: the export runs as one queue operation, so no commit or
117
+ * garbage collection interleaves with it. Full-text bases export as rebuilds.
118
+ */
119
+ exportSnapshot(): Promise<DatabaseSnapshot>;
120
+ importSnapshot(snapshot: DatabaseSnapshot, options?: {
121
+ onProgress?: (progress: SnapshotLoadProgress) => void;
122
+ }): Promise<void>;
123
+ /** Live payload bytes plus the control files — what this database logically occupies. */
124
+ getLogicalStorageBytes(): Promise<number>;
125
+ /** Graceful: flush, checkpoint (so the next leader's takeover is instant), release. */
126
+ shutdown(): Promise<void>;
127
+ /** Test-only: what tab death does — locks release, nothing is flushed or checkpointed. */
128
+ crash(): void;
129
+ }
130
+ //# sourceMappingURL=leader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leader.d.ts","sourceRoot":"","sources":["../../../src/storage/opfs/leader.ts"],"names":[],"mappings":"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"}