xitdb 0.1.0 → 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.
- package/dist/core-buffered-file.d.ts +41 -0
- package/dist/core-file.d.ts +18 -0
- package/dist/core-memory.d.ts +36 -0
- package/dist/core.d.ts +23 -0
- package/dist/database.d.ts +244 -0
- package/dist/exceptions.d.ts +51 -0
- package/dist/hasher.d.ts +9 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +429 -266
- package/dist/read-array-list.d.ts +13 -0
- package/dist/read-counted-hash-map.d.ts +7 -0
- package/dist/read-counted-hash-set.d.ts +7 -0
- package/dist/read-cursor.d.ts +57 -0
- package/dist/read-hash-map.d.ts +27 -0
- package/dist/read-hash-set.d.ts +18 -0
- package/dist/read-linked-array-list.d.ts +13 -0
- package/dist/slot-pointer.d.ts +7 -0
- package/dist/slot.d.ts +15 -0
- package/{src/slotted.ts → dist/slotted.d.ts} +1 -2
- package/dist/tag.d.ts +17 -0
- package/dist/write-array-list.d.ts +16 -0
- package/dist/write-counted-hash-map.d.ts +7 -0
- package/dist/write-counted-hash-set.d.ts +7 -0
- package/dist/write-cursor.d.ts +36 -0
- package/dist/write-hash-map.d.ts +25 -0
- package/dist/write-hash-set.d.ts +19 -0
- package/dist/write-linked-array-list.d.ts +19 -0
- package/dist/writeable-data.d.ts +20 -0
- package/package.json +12 -1
- package/.claude/settings.local.json +0 -9
- package/bun.lock +0 -24
- package/bunfig.toml +0 -1
- package/example/README.md +0 -46
- package/example/dump.ts +0 -201
- package/src/core-buffered-file.ts +0 -226
- package/src/core-file.ts +0 -137
- package/src/core-memory.ts +0 -179
- package/src/core.ts +0 -25
- package/src/database.ts +0 -2232
- package/src/exceptions.ts +0 -31
- package/src/hasher.ts +0 -52
- package/src/index.ts +0 -110
- package/src/read-array-list.ts +0 -45
- package/src/read-counted-hash-map.ts +0 -28
- package/src/read-counted-hash-set.ts +0 -28
- package/src/read-cursor.ts +0 -546
- package/src/read-hash-map.ts +0 -117
- package/src/read-hash-set.ts +0 -70
- package/src/read-linked-array-list.ts +0 -45
- package/src/slot-pointer.ts +0 -15
- package/src/slot.ts +0 -51
- package/src/tag.ts +0 -23
- package/src/write-array-list.ts +0 -65
- package/src/write-counted-hash-map.ts +0 -31
- package/src/write-counted-hash-set.ts +0 -31
- package/src/write-cursor.ts +0 -166
- package/src/write-hash-map.ts +0 -129
- package/src/write-hash-set.ts +0 -86
- package/src/write-linked-array-list.ts +0 -80
- package/src/writeable-data.ts +0 -67
- package/tests/database.test.ts +0 -2519
- package/tests/fixtures/test.db +0 -0
- package/tsconfig.json +0 -17
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Core, DataReader, DataWriter } from './core';
|
|
2
|
+
import { CoreFile } from './core-file';
|
|
3
|
+
export declare class CoreBufferedFile implements Core {
|
|
4
|
+
file: RandomAccessBufferedFile;
|
|
5
|
+
constructor(file: RandomAccessBufferedFile);
|
|
6
|
+
static create(filePath: string, bufferSize?: number): Promise<CoreBufferedFile>;
|
|
7
|
+
reader(): DataReader;
|
|
8
|
+
writer(): DataWriter;
|
|
9
|
+
length(): Promise<number>;
|
|
10
|
+
seek(pos: number): Promise<void>;
|
|
11
|
+
position(): number;
|
|
12
|
+
setLength(len: number): Promise<void>;
|
|
13
|
+
flush(): Promise<void>;
|
|
14
|
+
sync(): Promise<void>;
|
|
15
|
+
[Symbol.dispose](): void;
|
|
16
|
+
}
|
|
17
|
+
declare class RandomAccessBufferedFile implements DataReader, DataWriter {
|
|
18
|
+
file: CoreFile;
|
|
19
|
+
private memory;
|
|
20
|
+
private bufferSize;
|
|
21
|
+
private filePos;
|
|
22
|
+
private memoryPos;
|
|
23
|
+
private constructor();
|
|
24
|
+
static create(filePath: string, bufferSize?: number): Promise<RandomAccessBufferedFile>;
|
|
25
|
+
seek(pos: number): Promise<void>;
|
|
26
|
+
length(): Promise<number>;
|
|
27
|
+
position(): number;
|
|
28
|
+
setLength(len: number): Promise<void>;
|
|
29
|
+
flush(): Promise<void>;
|
|
30
|
+
sync(): Promise<void>;
|
|
31
|
+
write(buffer: Uint8Array): Promise<void>;
|
|
32
|
+
writeByte(v: number): Promise<void>;
|
|
33
|
+
writeShort(v: number): Promise<void>;
|
|
34
|
+
writeLong(v: number): Promise<void>;
|
|
35
|
+
readFully(buffer: Uint8Array): Promise<void>;
|
|
36
|
+
readByte(): Promise<number>;
|
|
37
|
+
readShort(): Promise<number>;
|
|
38
|
+
readInt(): Promise<number>;
|
|
39
|
+
readLong(): Promise<number>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Core, DataReader, DataWriter } from './core';
|
|
2
|
+
import type { FileHandle } from 'fs/promises';
|
|
3
|
+
export declare class CoreFile implements Core {
|
|
4
|
+
filePath: string;
|
|
5
|
+
private _position;
|
|
6
|
+
fileHandle: FileHandle;
|
|
7
|
+
private constructor();
|
|
8
|
+
static create(filePath: string): Promise<CoreFile>;
|
|
9
|
+
reader(): DataReader;
|
|
10
|
+
writer(): DataWriter;
|
|
11
|
+
length(): Promise<number>;
|
|
12
|
+
seek(pos: number): Promise<void>;
|
|
13
|
+
position(): number;
|
|
14
|
+
setLength(len: number): Promise<void>;
|
|
15
|
+
flush(): Promise<void>;
|
|
16
|
+
sync(): Promise<void>;
|
|
17
|
+
[Symbol.dispose](): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Core, DataReader, DataWriter } from './core';
|
|
2
|
+
export declare class CoreMemory implements Core {
|
|
3
|
+
memory: RandomAccessMemory;
|
|
4
|
+
constructor();
|
|
5
|
+
reader(): DataReader;
|
|
6
|
+
writer(): DataWriter;
|
|
7
|
+
length(): Promise<number>;
|
|
8
|
+
seek(pos: number): Promise<void>;
|
|
9
|
+
position(): number;
|
|
10
|
+
setLength(len: number): Promise<void>;
|
|
11
|
+
flush(): Promise<void>;
|
|
12
|
+
sync(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
declare class RandomAccessMemory implements DataReader, DataWriter {
|
|
15
|
+
private buffer;
|
|
16
|
+
private _position;
|
|
17
|
+
private _count;
|
|
18
|
+
constructor(initialSize?: number);
|
|
19
|
+
private ensureCapacity;
|
|
20
|
+
size(): number;
|
|
21
|
+
seek(pos: number): void;
|
|
22
|
+
getPosition(): number;
|
|
23
|
+
setLength(len: number): void;
|
|
24
|
+
reset(): void;
|
|
25
|
+
toByteArray(): Uint8Array;
|
|
26
|
+
write(data: Uint8Array): Promise<void>;
|
|
27
|
+
writeByte(v: number): Promise<void>;
|
|
28
|
+
writeShort(v: number): Promise<void>;
|
|
29
|
+
writeLong(v: number): Promise<void>;
|
|
30
|
+
readFully(b: Uint8Array): Promise<void>;
|
|
31
|
+
readByte(): Promise<number>;
|
|
32
|
+
readShort(): Promise<number>;
|
|
33
|
+
readInt(): Promise<number>;
|
|
34
|
+
readLong(): Promise<number>;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
package/dist/core.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface DataReader {
|
|
2
|
+
readFully(buffer: Uint8Array): Promise<void>;
|
|
3
|
+
readByte(): Promise<number>;
|
|
4
|
+
readShort(): Promise<number>;
|
|
5
|
+
readInt(): Promise<number>;
|
|
6
|
+
readLong(): Promise<number>;
|
|
7
|
+
}
|
|
8
|
+
export interface DataWriter {
|
|
9
|
+
write(buffer: Uint8Array): Promise<void>;
|
|
10
|
+
writeByte(v: number): Promise<void>;
|
|
11
|
+
writeShort(v: number): Promise<void>;
|
|
12
|
+
writeLong(v: number): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export interface Core {
|
|
15
|
+
reader(): DataReader;
|
|
16
|
+
writer(): DataWriter;
|
|
17
|
+
length(): Promise<number>;
|
|
18
|
+
seek(pos: number): Promise<void>;
|
|
19
|
+
position(): number;
|
|
20
|
+
setLength(len: number): Promise<void>;
|
|
21
|
+
flush(): Promise<void>;
|
|
22
|
+
sync(): Promise<void>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import type { Core } from './core';
|
|
2
|
+
import { Hasher } from './hasher';
|
|
3
|
+
import { Tag } from './tag';
|
|
4
|
+
import { Slot } from './slot';
|
|
5
|
+
import { SlotPointer } from './slot-pointer';
|
|
6
|
+
import { type WriteableData } from './writeable-data';
|
|
7
|
+
export declare const VERSION = 0;
|
|
8
|
+
export declare const MAGIC_NUMBER: Uint8Array<ArrayBuffer>;
|
|
9
|
+
export declare const BIT_COUNT = 4;
|
|
10
|
+
export declare const SLOT_COUNT: number;
|
|
11
|
+
export declare const MASK: bigint;
|
|
12
|
+
export declare const INDEX_BLOCK_SIZE: number;
|
|
13
|
+
export declare const LINKED_ARRAY_LIST_SLOT_LENGTH: number;
|
|
14
|
+
export declare const LINKED_ARRAY_LIST_INDEX_BLOCK_SIZE: number;
|
|
15
|
+
export declare const MAX_BRANCH_LENGTH = 16;
|
|
16
|
+
export declare enum WriteMode {
|
|
17
|
+
READ_ONLY = 0,
|
|
18
|
+
READ_WRITE = 1
|
|
19
|
+
}
|
|
20
|
+
export declare class Header {
|
|
21
|
+
hashId: number;
|
|
22
|
+
hashSize: number;
|
|
23
|
+
version: number;
|
|
24
|
+
tag: Tag;
|
|
25
|
+
magicNumber: Uint8Array;
|
|
26
|
+
static readonly LENGTH = 12;
|
|
27
|
+
constructor(hashId: number, hashSize: number, version: number, tag: Tag, magicNumber: Uint8Array);
|
|
28
|
+
toBytes(): Uint8Array;
|
|
29
|
+
static read(core: Core): Promise<Header>;
|
|
30
|
+
write(core: Core): Promise<void>;
|
|
31
|
+
validate(): void;
|
|
32
|
+
withTag(tag: Tag): Header;
|
|
33
|
+
}
|
|
34
|
+
export declare class ArrayListHeader {
|
|
35
|
+
ptr: number;
|
|
36
|
+
size: number;
|
|
37
|
+
static readonly LENGTH = 16;
|
|
38
|
+
constructor(ptr: number, size: number);
|
|
39
|
+
toBytes(): Uint8Array;
|
|
40
|
+
static fromBytes(bytes: Uint8Array): ArrayListHeader;
|
|
41
|
+
withPtr(ptr: number): ArrayListHeader;
|
|
42
|
+
}
|
|
43
|
+
export declare class TopLevelArrayListHeader {
|
|
44
|
+
fileSize: number;
|
|
45
|
+
parent: ArrayListHeader;
|
|
46
|
+
static readonly LENGTH: number;
|
|
47
|
+
constructor(fileSize: number, parent: ArrayListHeader);
|
|
48
|
+
toBytes(): Uint8Array;
|
|
49
|
+
}
|
|
50
|
+
export declare class LinkedArrayListHeader {
|
|
51
|
+
shift: number;
|
|
52
|
+
ptr: number;
|
|
53
|
+
size: number;
|
|
54
|
+
static readonly LENGTH = 17;
|
|
55
|
+
constructor(shift: number, ptr: number, size: number);
|
|
56
|
+
toBytes(): Uint8Array;
|
|
57
|
+
static fromBytes(bytes: Uint8Array): LinkedArrayListHeader;
|
|
58
|
+
withPtr(ptr: number): LinkedArrayListHeader;
|
|
59
|
+
}
|
|
60
|
+
export declare class KeyValuePair {
|
|
61
|
+
valueSlot: Slot;
|
|
62
|
+
keySlot: Slot;
|
|
63
|
+
hash: Uint8Array;
|
|
64
|
+
constructor(valueSlot: Slot, keySlot: Slot, hash: Uint8Array);
|
|
65
|
+
static length(hashSize: number): number;
|
|
66
|
+
toBytes(): Uint8Array;
|
|
67
|
+
static fromBytes(bytes: Uint8Array, hashSize: number): KeyValuePair;
|
|
68
|
+
}
|
|
69
|
+
export declare class LinkedArrayListSlot {
|
|
70
|
+
size: number;
|
|
71
|
+
slot: Slot;
|
|
72
|
+
static readonly LENGTH: number;
|
|
73
|
+
constructor(size: number, slot: Slot);
|
|
74
|
+
withSize(size: number): LinkedArrayListSlot;
|
|
75
|
+
toBytes(): Uint8Array;
|
|
76
|
+
static fromBytes(bytes: Uint8Array): LinkedArrayListSlot;
|
|
77
|
+
}
|
|
78
|
+
export declare class LinkedArrayListSlotPointer {
|
|
79
|
+
slotPtr: SlotPointer;
|
|
80
|
+
leafCount: number;
|
|
81
|
+
constructor(slotPtr: SlotPointer, leafCount: number);
|
|
82
|
+
withSlotPointer(slotPtr: SlotPointer): LinkedArrayListSlotPointer;
|
|
83
|
+
}
|
|
84
|
+
export declare class LinkedArrayListBlockInfo {
|
|
85
|
+
block: LinkedArrayListSlot[];
|
|
86
|
+
i: number;
|
|
87
|
+
parentSlot: LinkedArrayListSlot;
|
|
88
|
+
constructor(block: LinkedArrayListSlot[], i: number, parentSlot: LinkedArrayListSlot);
|
|
89
|
+
}
|
|
90
|
+
export type PathPart = ArrayListInit | ArrayListGet | ArrayListAppend | ArrayListSlice | LinkedArrayListInit | LinkedArrayListGet | LinkedArrayListAppend | LinkedArrayListSlice | LinkedArrayListConcat | LinkedArrayListInsert | LinkedArrayListRemove | HashMapInit | HashMapGet | HashMapRemove | WriteData | Context;
|
|
91
|
+
export interface PathPartBase {
|
|
92
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
93
|
+
}
|
|
94
|
+
export type HashMapGetTarget = HashMapGetKVPair | HashMapGetKey | HashMapGetValue;
|
|
95
|
+
export declare class HashMapGetKVPair {
|
|
96
|
+
hash: Uint8Array;
|
|
97
|
+
readonly kind = "kv_pair";
|
|
98
|
+
constructor(hash: Uint8Array);
|
|
99
|
+
}
|
|
100
|
+
export declare class HashMapGetKey {
|
|
101
|
+
hash: Uint8Array;
|
|
102
|
+
readonly kind = "key";
|
|
103
|
+
constructor(hash: Uint8Array);
|
|
104
|
+
}
|
|
105
|
+
export declare class HashMapGetValue {
|
|
106
|
+
hash: Uint8Array;
|
|
107
|
+
readonly kind = "value";
|
|
108
|
+
constructor(hash: Uint8Array);
|
|
109
|
+
}
|
|
110
|
+
export type ContextFunction = (cursor: any) => Promise<void>;
|
|
111
|
+
export declare class ArrayListInit implements PathPartBase {
|
|
112
|
+
readonly kind = "ArrayListInit";
|
|
113
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
114
|
+
}
|
|
115
|
+
export declare class ArrayListGet implements PathPartBase {
|
|
116
|
+
index: number;
|
|
117
|
+
readonly kind = "ArrayListGet";
|
|
118
|
+
constructor(index: number);
|
|
119
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
120
|
+
}
|
|
121
|
+
export declare class ArrayListAppend implements PathPartBase {
|
|
122
|
+
readonly kind = "ArrayListAppend";
|
|
123
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
124
|
+
}
|
|
125
|
+
export declare class ArrayListSlice implements PathPartBase {
|
|
126
|
+
size: number;
|
|
127
|
+
readonly kind = "ArrayListSlice";
|
|
128
|
+
constructor(size: number);
|
|
129
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
130
|
+
}
|
|
131
|
+
export declare class LinkedArrayListInit implements PathPartBase {
|
|
132
|
+
readonly kind = "LinkedArrayListInit";
|
|
133
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
134
|
+
}
|
|
135
|
+
export declare class LinkedArrayListGet implements PathPartBase {
|
|
136
|
+
index: number;
|
|
137
|
+
readonly kind = "LinkedArrayListGet";
|
|
138
|
+
constructor(index: number);
|
|
139
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
140
|
+
}
|
|
141
|
+
export declare class LinkedArrayListAppend implements PathPartBase {
|
|
142
|
+
readonly kind = "LinkedArrayListAppend";
|
|
143
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
144
|
+
}
|
|
145
|
+
export declare class LinkedArrayListSlice implements PathPartBase {
|
|
146
|
+
offset: number;
|
|
147
|
+
size: number;
|
|
148
|
+
readonly kind = "LinkedArrayListSlice";
|
|
149
|
+
constructor(offset: number, size: number);
|
|
150
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
151
|
+
}
|
|
152
|
+
export declare class LinkedArrayListConcat implements PathPartBase {
|
|
153
|
+
list: Slot;
|
|
154
|
+
readonly kind = "LinkedArrayListConcat";
|
|
155
|
+
constructor(list: Slot);
|
|
156
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
157
|
+
}
|
|
158
|
+
export declare class LinkedArrayListInsert implements PathPartBase {
|
|
159
|
+
index: number;
|
|
160
|
+
readonly kind = "LinkedArrayListInsert";
|
|
161
|
+
constructor(index: number);
|
|
162
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
163
|
+
}
|
|
164
|
+
export declare class LinkedArrayListRemove implements PathPartBase {
|
|
165
|
+
index: number;
|
|
166
|
+
readonly kind = "LinkedArrayListRemove";
|
|
167
|
+
constructor(index: number);
|
|
168
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
169
|
+
}
|
|
170
|
+
export declare class HashMapInit implements PathPartBase {
|
|
171
|
+
counted: boolean;
|
|
172
|
+
set: boolean;
|
|
173
|
+
readonly kind = "HashMapInit";
|
|
174
|
+
constructor(counted?: boolean, set?: boolean);
|
|
175
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
176
|
+
}
|
|
177
|
+
export declare class HashMapGet implements PathPartBase {
|
|
178
|
+
target: HashMapGetTarget;
|
|
179
|
+
readonly kind = "HashMapGet";
|
|
180
|
+
constructor(target: HashMapGetTarget);
|
|
181
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
182
|
+
}
|
|
183
|
+
export declare class HashMapRemove implements PathPartBase {
|
|
184
|
+
hash: Uint8Array;
|
|
185
|
+
readonly kind = "HashMapRemove";
|
|
186
|
+
constructor(hash: Uint8Array);
|
|
187
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
188
|
+
}
|
|
189
|
+
export declare class WriteData implements PathPartBase {
|
|
190
|
+
data: WriteableData | null;
|
|
191
|
+
readonly kind = "WriteData";
|
|
192
|
+
constructor(data: WriteableData | null);
|
|
193
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
194
|
+
}
|
|
195
|
+
export declare class Context implements PathPartBase {
|
|
196
|
+
fn: ContextFunction;
|
|
197
|
+
readonly kind = "Context";
|
|
198
|
+
constructor(fn: ContextFunction);
|
|
199
|
+
readSlotPointer(db: Database, isTopLevel: boolean, writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
200
|
+
}
|
|
201
|
+
declare class HashMapGetResult {
|
|
202
|
+
slotPtr: SlotPointer;
|
|
203
|
+
isEmpty: boolean;
|
|
204
|
+
constructor(slotPtr: SlotPointer, isEmpty: boolean);
|
|
205
|
+
}
|
|
206
|
+
declare class ArrayListAppendResult {
|
|
207
|
+
header: ArrayListHeader;
|
|
208
|
+
slotPtr: SlotPointer;
|
|
209
|
+
constructor(header: ArrayListHeader, slotPtr: SlotPointer);
|
|
210
|
+
}
|
|
211
|
+
declare class LinkedArrayListAppendResult {
|
|
212
|
+
header: LinkedArrayListHeader;
|
|
213
|
+
slotPtr: LinkedArrayListSlotPointer;
|
|
214
|
+
constructor(header: LinkedArrayListHeader, slotPtr: LinkedArrayListSlotPointer);
|
|
215
|
+
}
|
|
216
|
+
export declare class Database {
|
|
217
|
+
core: Core;
|
|
218
|
+
hasher: Hasher;
|
|
219
|
+
header: Header;
|
|
220
|
+
txStart: number | null;
|
|
221
|
+
private constructor();
|
|
222
|
+
static create(core: Core, hasher: Hasher): Promise<Database>;
|
|
223
|
+
rootCursor(): Promise<any>;
|
|
224
|
+
freeze(): Promise<void>;
|
|
225
|
+
truncate(): Promise<void>;
|
|
226
|
+
checkHashBytes(hash: Uint8Array): Uint8Array;
|
|
227
|
+
checkHash(target: HashMapGetTarget): Uint8Array;
|
|
228
|
+
readSlotPointer(writeMode: WriteMode, path: PathPart[], pathI: number, slotPtr: SlotPointer): Promise<SlotPointer>;
|
|
229
|
+
readMapSlot(indexPos: number, keyHash: Uint8Array, keyOffset: number, writeMode: WriteMode, isTopLevel: boolean, target: HashMapGetTarget): Promise<HashMapGetResult>;
|
|
230
|
+
removeMapSlot(indexPos: number, keyHash: Uint8Array, keyOffset: number, isTopLevel: boolean): Promise<Slot>;
|
|
231
|
+
readArrayListSlotAppend(header: ArrayListHeader, writeMode: WriteMode, isTopLevel: boolean): Promise<ArrayListAppendResult>;
|
|
232
|
+
readArrayListSlot(indexPos: number, key: number, shift: number, writeMode: WriteMode, isTopLevel: boolean): Promise<SlotPointer>;
|
|
233
|
+
readArrayListSlice(header: ArrayListHeader, size: number): Promise<ArrayListHeader>;
|
|
234
|
+
readLinkedArrayListSlotAppend(header: LinkedArrayListHeader, writeMode: WriteMode, isTopLevel: boolean): Promise<LinkedArrayListAppendResult>;
|
|
235
|
+
private static blockLeafCount;
|
|
236
|
+
private static slotLeafCount;
|
|
237
|
+
private static keyAndIndexForLinkedArrayList;
|
|
238
|
+
readLinkedArrayListSlot(indexPos: number, key: number, shift: number, writeMode: WriteMode, isTopLevel: boolean): Promise<LinkedArrayListSlotPointer>;
|
|
239
|
+
readLinkedArrayListBlocks(indexPos: number, key: number, shift: number, blocks: LinkedArrayListBlockInfo[]): Promise<void>;
|
|
240
|
+
private populateArray;
|
|
241
|
+
readLinkedArrayListSlice(header: LinkedArrayListHeader, offset: number, size: number): Promise<LinkedArrayListHeader>;
|
|
242
|
+
readLinkedArrayListConcat(headerA: LinkedArrayListHeader, headerB: LinkedArrayListHeader): Promise<LinkedArrayListHeader>;
|
|
243
|
+
}
|
|
244
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export declare class DatabaseException extends Error {
|
|
2
|
+
constructor(message?: string);
|
|
3
|
+
}
|
|
4
|
+
export declare class NotImplementedException extends DatabaseException {
|
|
5
|
+
}
|
|
6
|
+
export declare class UnreachableException extends DatabaseException {
|
|
7
|
+
}
|
|
8
|
+
export declare class InvalidDatabaseException extends DatabaseException {
|
|
9
|
+
}
|
|
10
|
+
export declare class InvalidVersionException extends DatabaseException {
|
|
11
|
+
}
|
|
12
|
+
export declare class InvalidHashSizeException extends DatabaseException {
|
|
13
|
+
}
|
|
14
|
+
export declare class KeyNotFoundException extends DatabaseException {
|
|
15
|
+
}
|
|
16
|
+
export declare class WriteNotAllowedException extends DatabaseException {
|
|
17
|
+
}
|
|
18
|
+
export declare class UnexpectedTagException extends DatabaseException {
|
|
19
|
+
}
|
|
20
|
+
export declare class CursorNotWriteableException extends DatabaseException {
|
|
21
|
+
}
|
|
22
|
+
export declare class ExpectedTxStartException extends DatabaseException {
|
|
23
|
+
}
|
|
24
|
+
export declare class KeyOffsetExceededException extends DatabaseException {
|
|
25
|
+
}
|
|
26
|
+
export declare class PathPartMustBeAtEndException extends DatabaseException {
|
|
27
|
+
}
|
|
28
|
+
export declare class StreamTooLongException extends DatabaseException {
|
|
29
|
+
}
|
|
30
|
+
export declare class EndOfStreamException extends DatabaseException {
|
|
31
|
+
}
|
|
32
|
+
export declare class InvalidOffsetException extends DatabaseException {
|
|
33
|
+
}
|
|
34
|
+
export declare class InvalidTopLevelTypeException extends DatabaseException {
|
|
35
|
+
}
|
|
36
|
+
export declare class ExpectedUnsignedLongException extends DatabaseException {
|
|
37
|
+
}
|
|
38
|
+
export declare class NoAvailableSlotsException extends DatabaseException {
|
|
39
|
+
}
|
|
40
|
+
export declare class MustSetNewSlotsToFullException extends DatabaseException {
|
|
41
|
+
}
|
|
42
|
+
export declare class EmptySlotException extends DatabaseException {
|
|
43
|
+
}
|
|
44
|
+
export declare class ExpectedRootNodeException extends DatabaseException {
|
|
45
|
+
}
|
|
46
|
+
export declare class InvalidFormatTagSizeException extends DatabaseException {
|
|
47
|
+
}
|
|
48
|
+
export declare class UnexpectedWriterPositionException extends DatabaseException {
|
|
49
|
+
}
|
|
50
|
+
export declare class MaxShiftExceededException extends DatabaseException {
|
|
51
|
+
}
|
package/dist/hasher.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class Hasher {
|
|
2
|
+
readonly algorithm: string;
|
|
3
|
+
readonly id: number;
|
|
4
|
+
readonly digestLength: number;
|
|
5
|
+
constructor(algorithm: string, id?: number);
|
|
6
|
+
digest(data: Uint8Array): Promise<Uint8Array>;
|
|
7
|
+
static stringToId(hashIdName: string): number;
|
|
8
|
+
static idToString(id: number): string;
|
|
9
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export { Tag, tagValueOf } from './tag';
|
|
2
|
+
export { Slot } from './slot';
|
|
3
|
+
export { SlotPointer } from './slot-pointer';
|
|
4
|
+
export type { Slotted } from './slotted';
|
|
5
|
+
export { Uint, Int, Float, Bytes, type WriteableData } from './writeable-data';
|
|
6
|
+
export { DatabaseException, NotImplementedException, UnreachableException, InvalidDatabaseException, InvalidVersionException, InvalidHashSizeException, KeyNotFoundException, WriteNotAllowedException, UnexpectedTagException, CursorNotWriteableException, ExpectedTxStartException, KeyOffsetExceededException, PathPartMustBeAtEndException, StreamTooLongException, EndOfStreamException, InvalidOffsetException, InvalidTopLevelTypeException, ExpectedUnsignedLongException, NoAvailableSlotsException, MustSetNewSlotsToFullException, EmptySlotException, ExpectedRootNodeException, InvalidFormatTagSizeException, UnexpectedWriterPositionException, MaxShiftExceededException, } from './exceptions';
|
|
7
|
+
export type { Core, DataReader, DataWriter } from './core';
|
|
8
|
+
export { CoreMemory } from './core-memory';
|
|
9
|
+
export { CoreFile } from './core-file';
|
|
10
|
+
export { CoreBufferedFile } from './core-buffered-file';
|
|
11
|
+
export { Hasher } from './hasher';
|
|
12
|
+
export { Database, WriteMode, Header, ArrayListHeader, TopLevelArrayListHeader, LinkedArrayListHeader, KeyValuePair, LinkedArrayListSlot, LinkedArrayListSlotPointer, LinkedArrayListBlockInfo, VERSION, MAGIC_NUMBER, BIT_COUNT, SLOT_COUNT, MASK, INDEX_BLOCK_SIZE, LINKED_ARRAY_LIST_INDEX_BLOCK_SIZE, MAX_BRANCH_LENGTH, type PathPart, ArrayListInit, ArrayListGet, ArrayListAppend, ArrayListSlice, LinkedArrayListInit, LinkedArrayListGet, LinkedArrayListAppend, LinkedArrayListSlice, LinkedArrayListConcat, LinkedArrayListInsert, LinkedArrayListRemove, HashMapInit, HashMapGet, HashMapRemove, WriteData, Context, type HashMapGetTarget, HashMapGetKVPair, HashMapGetKey, HashMapGetValue, type ContextFunction, } from './database';
|
|
13
|
+
export { ReadCursor, Reader, CursorIterator, KeyValuePairCursor } from './read-cursor';
|
|
14
|
+
export { WriteCursor, Writer, WriteCursorIterator, WriteKeyValuePairCursor } from './write-cursor';
|
|
15
|
+
export { ReadArrayList } from './read-array-list';
|
|
16
|
+
export { WriteArrayList } from './write-array-list';
|
|
17
|
+
export { ReadHashMap } from './read-hash-map';
|
|
18
|
+
export { WriteHashMap } from './write-hash-map';
|
|
19
|
+
export { ReadHashSet } from './read-hash-set';
|
|
20
|
+
export { WriteHashSet } from './write-hash-set';
|
|
21
|
+
export { ReadLinkedArrayList } from './read-linked-array-list';
|
|
22
|
+
export { WriteLinkedArrayList } from './write-linked-array-list';
|
|
23
|
+
export { ReadCountedHashMap } from './read-counted-hash-map';
|
|
24
|
+
export { WriteCountedHashMap } from './write-counted-hash-map';
|
|
25
|
+
export { ReadCountedHashSet } from './read-counted-hash-set';
|
|
26
|
+
export { WriteCountedHashSet } from './write-counted-hash-set';
|