quiverdb 0.6.2 → 0.9.3
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 +95 -17
- package/libs/{linux-x64 → linux-x86_64}/libquiver.so +0 -0
- package/libs/{linux-x64 → linux-x86_64}/libquiver.so.0 +0 -0
- package/libs/linux-x86_64/libquiver_c.so +0 -0
- package/libs/{win32-x64 → windows-x86_64}/libquiver.dll +0 -0
- package/libs/windows-x86_64/libquiver_c.dll +0 -0
- package/mod.ts +25 -0
- package/package.json +17 -31
- package/src/composites.ts +89 -0
- package/src/create.ts +152 -0
- package/src/csv.ts +118 -0
- package/src/database.ts +171 -0
- package/src/errors.ts +21 -0
- package/src/ffi-helpers.ts +157 -0
- package/src/index.ts +17 -0
- package/src/introspection.ts +33 -0
- package/src/loader.ts +285 -0
- package/src/lua-runner.ts +48 -0
- package/src/metadata.ts +218 -0
- package/src/query.ts +160 -0
- package/src/read.ts +572 -0
- package/src/time-series.ts +291 -0
- package/src/transaction.ts +27 -0
- package/{dist/types.d.ts → src/types.ts} +8 -1
- package/dist/composites.d.ts +0 -9
- package/dist/composites.d.ts.map +0 -1
- package/dist/composites.js +0 -69
- package/dist/composites.js.map +0 -1
- package/dist/create.d.ts +0 -9
- package/dist/create.d.ts.map +0 -1
- package/dist/create.js +0 -104
- package/dist/create.js.map +0 -1
- package/dist/csv.d.ts +0 -11
- package/dist/csv.d.ts.map +0 -1
- package/dist/csv.js +0 -67
- package/dist/csv.js.map +0 -1
- package/dist/database.d.ts +0 -13
- package/dist/database.d.ts.map +0 -1
- package/dist/database.js +0 -42
- package/dist/database.js.map +0 -1
- package/dist/errors.d.ts +0 -5
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -18
- package/dist/errors.js.map +0 -1
- package/dist/ffi-helpers.d.ts +0 -57
- package/dist/ffi-helpers.d.ts.map +0 -1
- package/dist/ffi-helpers.js +0 -136
- package/dist/ffi-helpers.js.map +0 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -13
- package/dist/index.js.map +0 -1
- package/dist/introspection.d.ts +0 -10
- package/dist/introspection.d.ts.map +0 -1
- package/dist/introspection.js +0 -27
- package/dist/introspection.js.map +0 -1
- package/dist/loader.d.ts +0 -7
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -192
- package/dist/loader.js.map +0 -1
- package/dist/lua-runner.d.ts +0 -11
- package/dist/lua-runner.d.ts.map +0 -1
- package/dist/lua-runner.js +0 -43
- package/dist/lua-runner.js.map +0 -1
- package/dist/metadata.d.ts +0 -28
- package/dist/metadata.d.ts.map +0 -1
- package/dist/metadata.js +0 -100
- package/dist/metadata.js.map +0 -1
- package/dist/query.d.ts +0 -9
- package/dist/query.d.ts.map +0 -1
- package/dist/query.js +0 -90
- package/dist/query.js.map +0 -1
- package/dist/read.d.ts +0 -25
- package/dist/read.d.ts.map +0 -1
- package/dist/read.js +0 -220
- package/dist/read.js.map +0 -1
- package/dist/time-series.d.ts +0 -12
- package/dist/time-series.d.ts.map +0 -1
- package/dist/time-series.js +0 -155
- package/dist/time-series.js.map +0 -1
- package/dist/transaction.d.ts +0 -10
- package/dist/transaction.d.ts.map +0 -1
- package/dist/transaction.js +0 -22
- package/dist/transaction.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/libs/linux-x64/libquiver.so.0.6.2 +0 -0
- package/libs/linux-x64/libquiver_c.so +0 -0
- package/libs/linux-x64/libquiver_c.so.0 +0 -0
- package/libs/linux-x64/libquiver_c.so.0.6.2 +0 -0
- package/libs/win32-x64/libquiver_c.dll +0 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { CString, type Pointer, ptr, read, toArrayBuffer } from "bun:ffi";
|
|
2
|
+
import { Database } from "./database.ts";
|
|
3
|
+
import { check } from "./errors.ts";
|
|
4
|
+
import {
|
|
5
|
+
allocNativeFloat64,
|
|
6
|
+
allocNativeInt64,
|
|
7
|
+
allocNativePtrTable,
|
|
8
|
+
allocNativeString,
|
|
9
|
+
allocNativeStringArray,
|
|
10
|
+
allocPtrOut,
|
|
11
|
+
allocUint64Out,
|
|
12
|
+
decodeFloat64Array,
|
|
13
|
+
decodeInt64Array,
|
|
14
|
+
decodePtrArray,
|
|
15
|
+
decodeStringArray,
|
|
16
|
+
readPtrOut,
|
|
17
|
+
readUint64Out,
|
|
18
|
+
toCString,
|
|
19
|
+
} from "./ffi-helpers.ts";
|
|
20
|
+
import { getSymbols } from "./loader.ts";
|
|
21
|
+
import type { Allocation } from "./types.ts";
|
|
22
|
+
|
|
23
|
+
export type TimeSeriesData = Record<string, (number | string)[]>;
|
|
24
|
+
|
|
25
|
+
const DATA_TYPE_INTEGER = 0;
|
|
26
|
+
const DATA_TYPE_FLOAT = 1;
|
|
27
|
+
const DATA_TYPE_STRING = 2;
|
|
28
|
+
const DATA_TYPE_DATE_TIME = 3;
|
|
29
|
+
|
|
30
|
+
Database.prototype.readTimeSeriesGroup = function (
|
|
31
|
+
this: Database,
|
|
32
|
+
collection: string,
|
|
33
|
+
group: string,
|
|
34
|
+
id: number,
|
|
35
|
+
): TimeSeriesData {
|
|
36
|
+
const lib = getSymbols();
|
|
37
|
+
const collBuf = toCString(collection);
|
|
38
|
+
const grpBuf = toCString(group);
|
|
39
|
+
const outNames = allocPtrOut();
|
|
40
|
+
const outTypes = allocPtrOut();
|
|
41
|
+
const outData = allocPtrOut();
|
|
42
|
+
const outColCount = allocUint64Out();
|
|
43
|
+
const outRowCount = allocUint64Out();
|
|
44
|
+
|
|
45
|
+
check(
|
|
46
|
+
lib.quiver_database_read_time_series_group(
|
|
47
|
+
this._handle,
|
|
48
|
+
collBuf.buf,
|
|
49
|
+
grpBuf.buf,
|
|
50
|
+
BigInt(id),
|
|
51
|
+
outNames.ptr,
|
|
52
|
+
outTypes.ptr,
|
|
53
|
+
outData.ptr,
|
|
54
|
+
outColCount.ptr,
|
|
55
|
+
outRowCount.ptr,
|
|
56
|
+
),
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const colCount = readUint64Out(outColCount);
|
|
60
|
+
const rowCount = readUint64Out(outRowCount);
|
|
61
|
+
if (colCount === 0) return {};
|
|
62
|
+
|
|
63
|
+
const namesPtr = readPtrOut(outNames);
|
|
64
|
+
const typesPtr = readPtrOut(outTypes);
|
|
65
|
+
const dataPtr = readPtrOut(outData);
|
|
66
|
+
|
|
67
|
+
const colNames = decodeStringArray(namesPtr, colCount);
|
|
68
|
+
const typesAb = toArrayBuffer(typesPtr as Pointer, 0, colCount * 4);
|
|
69
|
+
const types = Array.from(new Int32Array(typesAb));
|
|
70
|
+
const dataPtrs = decodePtrArray(dataPtr, colCount);
|
|
71
|
+
|
|
72
|
+
const result: TimeSeriesData = {};
|
|
73
|
+
for (let c = 0; c < colCount; c++) {
|
|
74
|
+
const colName = colNames[c];
|
|
75
|
+
switch (types[c]) {
|
|
76
|
+
case DATA_TYPE_INTEGER:
|
|
77
|
+
result[colName] = decodeInt64Array(dataPtrs[c], rowCount);
|
|
78
|
+
break;
|
|
79
|
+
case DATA_TYPE_FLOAT:
|
|
80
|
+
result[colName] = decodeFloat64Array(dataPtrs[c], rowCount);
|
|
81
|
+
break;
|
|
82
|
+
case DATA_TYPE_STRING:
|
|
83
|
+
case DATA_TYPE_DATE_TIME:
|
|
84
|
+
result[colName] = decodeStringArray(dataPtrs[c], rowCount);
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
lib.quiver_database_free_time_series_data(
|
|
90
|
+
namesPtr,
|
|
91
|
+
typesPtr,
|
|
92
|
+
dataPtr,
|
|
93
|
+
BigInt(colCount),
|
|
94
|
+
BigInt(rowCount),
|
|
95
|
+
);
|
|
96
|
+
return result;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
Database.prototype.updateTimeSeriesGroup = function (
|
|
100
|
+
this: Database,
|
|
101
|
+
collection: string,
|
|
102
|
+
group: string,
|
|
103
|
+
id: number,
|
|
104
|
+
data: TimeSeriesData,
|
|
105
|
+
): void {
|
|
106
|
+
const lib = getSymbols();
|
|
107
|
+
const collBuf = toCString(collection);
|
|
108
|
+
const grpBuf = toCString(group);
|
|
109
|
+
const entries = Object.entries(data);
|
|
110
|
+
|
|
111
|
+
if (entries.length === 0) {
|
|
112
|
+
check(
|
|
113
|
+
lib.quiver_database_update_time_series_group(
|
|
114
|
+
this._handle,
|
|
115
|
+
collBuf.buf,
|
|
116
|
+
grpBuf.buf,
|
|
117
|
+
BigInt(id),
|
|
118
|
+
null,
|
|
119
|
+
null,
|
|
120
|
+
null,
|
|
121
|
+
0n,
|
|
122
|
+
0n,
|
|
123
|
+
),
|
|
124
|
+
);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const columnCount = entries.length;
|
|
129
|
+
const rowCount = entries[0][1].length;
|
|
130
|
+
const keepalive: Allocation[] = [];
|
|
131
|
+
|
|
132
|
+
// Build column names as native string array
|
|
133
|
+
const colNames = entries.map(([name]) => name);
|
|
134
|
+
const { table: namesTable, keepalive: namesPtrs } = allocNativeStringArray(colNames);
|
|
135
|
+
keepalive.push(namesTable, ...namesPtrs);
|
|
136
|
+
|
|
137
|
+
// Build column types and data
|
|
138
|
+
const typesBuf = new Uint8Array(columnCount * 4);
|
|
139
|
+
const typesDv = new DataView(typesBuf.buffer);
|
|
140
|
+
const dataPtrs: (Pointer | null)[] = [];
|
|
141
|
+
|
|
142
|
+
for (let c = 0; c < columnCount; c++) {
|
|
143
|
+
const values = entries[c][1];
|
|
144
|
+
|
|
145
|
+
if (values.length === 0) {
|
|
146
|
+
typesDv.setInt32(c * 4, DATA_TYPE_STRING, true);
|
|
147
|
+
dataPtrs.push(null);
|
|
148
|
+
} else if (typeof values[0] === "string") {
|
|
149
|
+
typesDv.setInt32(c * 4, DATA_TYPE_STRING, true);
|
|
150
|
+
const { table, keepalive: strPtrs } = allocNativeStringArray(values as string[]);
|
|
151
|
+
keepalive.push(table, ...strPtrs);
|
|
152
|
+
dataPtrs.push(table.ptr);
|
|
153
|
+
} else if (typeof values[0] === "number") {
|
|
154
|
+
const allIntegers = (values as number[]).every((v) => Number.isInteger(v));
|
|
155
|
+
if (allIntegers) {
|
|
156
|
+
typesDv.setInt32(c * 4, DATA_TYPE_INTEGER, true);
|
|
157
|
+
const p = allocNativeInt64(values as number[]);
|
|
158
|
+
keepalive.push(p);
|
|
159
|
+
dataPtrs.push(p.ptr);
|
|
160
|
+
} else {
|
|
161
|
+
typesDv.setInt32(c * 4, DATA_TYPE_FLOAT, true);
|
|
162
|
+
const p = allocNativeFloat64(values as number[]);
|
|
163
|
+
keepalive.push(p);
|
|
164
|
+
dataPtrs.push(p.ptr);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const typesAlloc: Allocation = { ptr: ptr(typesBuf), buf: typesBuf };
|
|
170
|
+
keepalive.push(typesAlloc);
|
|
171
|
+
const dataTable = allocNativePtrTable(dataPtrs);
|
|
172
|
+
keepalive.push(dataTable);
|
|
173
|
+
|
|
174
|
+
check(
|
|
175
|
+
lib.quiver_database_update_time_series_group(
|
|
176
|
+
this._handle,
|
|
177
|
+
collBuf.buf,
|
|
178
|
+
grpBuf.buf,
|
|
179
|
+
BigInt(id),
|
|
180
|
+
namesTable.ptr,
|
|
181
|
+
typesAlloc.ptr,
|
|
182
|
+
dataTable.ptr,
|
|
183
|
+
BigInt(columnCount),
|
|
184
|
+
BigInt(rowCount),
|
|
185
|
+
),
|
|
186
|
+
);
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
Database.prototype.hasTimeSeriesFiles = function (this: Database, collection: string): boolean {
|
|
190
|
+
const lib = getSymbols();
|
|
191
|
+
const collBuf = toCString(collection);
|
|
192
|
+
const outResult = new Uint8Array(4);
|
|
193
|
+
check(lib.quiver_database_has_time_series_files(this._handle, collBuf.buf, outResult));
|
|
194
|
+
return new DataView(outResult.buffer).getInt32(0, true) !== 0;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
Database.prototype.listTimeSeriesFilesColumns = function (
|
|
198
|
+
this: Database,
|
|
199
|
+
collection: string,
|
|
200
|
+
): string[] {
|
|
201
|
+
const lib = getSymbols();
|
|
202
|
+
const collBuf = toCString(collection);
|
|
203
|
+
const outColumns = allocPtrOut();
|
|
204
|
+
const outCount = allocUint64Out();
|
|
205
|
+
check(
|
|
206
|
+
lib.quiver_database_list_time_series_files_columns(
|
|
207
|
+
this._handle,
|
|
208
|
+
collBuf.buf,
|
|
209
|
+
outColumns.ptr,
|
|
210
|
+
outCount.ptr,
|
|
211
|
+
),
|
|
212
|
+
);
|
|
213
|
+
const count = readUint64Out(outCount);
|
|
214
|
+
if (count === 0) return [];
|
|
215
|
+
const arrPtr = readPtrOut(outColumns);
|
|
216
|
+
const result = decodeStringArray(arrPtr, count);
|
|
217
|
+
lib.quiver_database_free_string_array(arrPtr, BigInt(count));
|
|
218
|
+
return result;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
Database.prototype.readTimeSeriesFiles = function (
|
|
222
|
+
this: Database,
|
|
223
|
+
collection: string,
|
|
224
|
+
): Record<string, string | null> {
|
|
225
|
+
const lib = getSymbols();
|
|
226
|
+
const collBuf = toCString(collection);
|
|
227
|
+
const outColumns = allocPtrOut();
|
|
228
|
+
const outPaths = allocPtrOut();
|
|
229
|
+
const outCount = allocUint64Out();
|
|
230
|
+
check(
|
|
231
|
+
lib.quiver_database_read_time_series_files(
|
|
232
|
+
this._handle,
|
|
233
|
+
collBuf.buf,
|
|
234
|
+
outColumns.ptr,
|
|
235
|
+
outPaths.ptr,
|
|
236
|
+
outCount.ptr,
|
|
237
|
+
),
|
|
238
|
+
);
|
|
239
|
+
const count = readUint64Out(outCount);
|
|
240
|
+
if (count === 0) return {};
|
|
241
|
+
const colsPtr = readPtrOut(outColumns);
|
|
242
|
+
const pathsPtr = readPtrOut(outPaths);
|
|
243
|
+
const colNames = decodeStringArray(colsPtr, count);
|
|
244
|
+
const paths: (string | null)[] = new Array(count);
|
|
245
|
+
for (let i = 0; i < count; i++) {
|
|
246
|
+
const strPtr = read.ptr(pathsPtr as Pointer, i * 8);
|
|
247
|
+
paths[i] = strPtr === 0 ? null : new CString(strPtr as Pointer).toString();
|
|
248
|
+
}
|
|
249
|
+
const result: Record<string, string | null> = {};
|
|
250
|
+
for (let i = 0; i < count; i++) {
|
|
251
|
+
result[colNames[i]] = paths[i];
|
|
252
|
+
}
|
|
253
|
+
lib.quiver_database_free_time_series_files(colsPtr, pathsPtr, BigInt(count));
|
|
254
|
+
return result;
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
Database.prototype.updateTimeSeriesFiles = function (
|
|
258
|
+
this: Database,
|
|
259
|
+
collection: string,
|
|
260
|
+
data: Record<string, string | null>,
|
|
261
|
+
): void {
|
|
262
|
+
const lib = getSymbols();
|
|
263
|
+
const collBuf = toCString(collection);
|
|
264
|
+
const entries = Object.entries(data);
|
|
265
|
+
if (entries.length === 0) return;
|
|
266
|
+
const keepalive: Allocation[] = [];
|
|
267
|
+
|
|
268
|
+
const colNames = entries.map(([name]) => name);
|
|
269
|
+
const { table: colsTable, keepalive: colPtrs } = allocNativeStringArray(colNames);
|
|
270
|
+
keepalive.push(colsTable, ...colPtrs);
|
|
271
|
+
|
|
272
|
+
const pathPtrs: (Pointer | null)[] = entries.map(([, value]) => {
|
|
273
|
+
if (value === null) return null;
|
|
274
|
+
const p = allocNativeString(value);
|
|
275
|
+
keepalive.push(p);
|
|
276
|
+
return p.ptr;
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
const pathsTable = allocNativePtrTable(pathPtrs);
|
|
280
|
+
keepalive.push(pathsTable);
|
|
281
|
+
|
|
282
|
+
check(
|
|
283
|
+
lib.quiver_database_update_time_series_files(
|
|
284
|
+
this._handle,
|
|
285
|
+
collBuf.buf,
|
|
286
|
+
colsTable.ptr,
|
|
287
|
+
pathsTable.ptr,
|
|
288
|
+
BigInt(entries.length),
|
|
289
|
+
),
|
|
290
|
+
);
|
|
291
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ptr } from "bun:ffi";
|
|
2
|
+
import { Database } from "./database.ts";
|
|
3
|
+
import { check } from "./errors.ts";
|
|
4
|
+
import { getSymbols } from "./loader.ts";
|
|
5
|
+
|
|
6
|
+
Database.prototype.beginTransaction = function (this: Database): void {
|
|
7
|
+
const lib = getSymbols();
|
|
8
|
+
check(lib.quiver_database_begin_transaction(this._handle));
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
Database.prototype.commit = function (this: Database): void {
|
|
12
|
+
const lib = getSymbols();
|
|
13
|
+
check(lib.quiver_database_commit(this._handle));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
Database.prototype.rollback = function (this: Database): void {
|
|
17
|
+
const lib = getSymbols();
|
|
18
|
+
check(lib.quiver_database_rollback(this._handle));
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
Database.prototype.inTransaction = function (this: Database): boolean {
|
|
22
|
+
const lib = getSymbols();
|
|
23
|
+
const outBuf = new Uint8Array(4);
|
|
24
|
+
const outPtr = ptr(outBuf);
|
|
25
|
+
check(lib.quiver_database_in_transaction(this._handle, outPtr));
|
|
26
|
+
return new DataView(outBuf.buffer).getInt32(0, true) !== 0;
|
|
27
|
+
};
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import type { Pointer } from "bun:ffi";
|
|
2
|
+
|
|
1
3
|
export type ScalarValue = number | bigint | string | null;
|
|
2
4
|
export type ArrayValue = number[] | bigint[] | string[];
|
|
3
5
|
export type Value = ScalarValue | ArrayValue;
|
|
4
6
|
export type ElementData = Record<string, Value | undefined>;
|
|
5
7
|
export type QueryParam = number | string | null;
|
|
6
|
-
|
|
8
|
+
|
|
9
|
+
/** Native memory allocation result. Callers MUST hold `buf` in scope to prevent GC. */
|
|
10
|
+
export type Allocation = {
|
|
11
|
+
ptr: Pointer;
|
|
12
|
+
buf: Uint8Array<ArrayBuffer>;
|
|
13
|
+
};
|
package/dist/composites.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
declare module "./database.js" {
|
|
2
|
-
interface Database {
|
|
3
|
-
readScalarsById(collection: string, id: number): Record<string, number | string | null>;
|
|
4
|
-
readVectorsById(collection: string, id: number): Record<string, number[] | string[]>;
|
|
5
|
-
readSetsById(collection: string, id: number): Record<string, number[] | string[]>;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=composites.d.ts.map
|
package/dist/composites.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"composites.d.ts","sourceRoot":"","sources":["../src/composites.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,QAAQ;QAChB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;QACxF,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACrF,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;KACnF;CACF"}
|
package/dist/composites.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Database } from "./database.js";
|
|
2
|
-
Database.prototype.readScalarsById = function (collection, id) {
|
|
3
|
-
const attributes = this.listScalarAttributes(collection);
|
|
4
|
-
const result = {};
|
|
5
|
-
for (const attr of attributes) {
|
|
6
|
-
switch (attr.dataType) {
|
|
7
|
-
case 0: // INTEGER
|
|
8
|
-
result[attr.name] = this.readScalarIntegerById(collection, attr.name, id);
|
|
9
|
-
break;
|
|
10
|
-
case 1: // FLOAT
|
|
11
|
-
result[attr.name] = this.readScalarFloatById(collection, attr.name, id);
|
|
12
|
-
break;
|
|
13
|
-
case 2: // STRING
|
|
14
|
-
case 3: // DATE_TIME
|
|
15
|
-
result[attr.name] = this.readScalarStringById(collection, attr.name, id);
|
|
16
|
-
break;
|
|
17
|
-
default:
|
|
18
|
-
throw new Error(`Unknown data type ${attr.dataType} for attribute '${attr.name}'`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return result;
|
|
22
|
-
};
|
|
23
|
-
Database.prototype.readVectorsById = function (collection, id) {
|
|
24
|
-
const groups = this.listVectorGroups(collection);
|
|
25
|
-
const result = {};
|
|
26
|
-
for (const group of groups) {
|
|
27
|
-
for (const col of group.valueColumns) {
|
|
28
|
-
switch (col.dataType) {
|
|
29
|
-
case 0: // INTEGER
|
|
30
|
-
result[col.name] = this.readVectorIntegersById(collection, col.name, id);
|
|
31
|
-
break;
|
|
32
|
-
case 1: // FLOAT
|
|
33
|
-
result[col.name] = this.readVectorFloatsById(collection, col.name, id);
|
|
34
|
-
break;
|
|
35
|
-
case 2: // STRING
|
|
36
|
-
case 3: // DATE_TIME
|
|
37
|
-
result[col.name] = this.readVectorStringsById(collection, col.name, id);
|
|
38
|
-
break;
|
|
39
|
-
default:
|
|
40
|
-
throw new Error(`Unknown data type ${col.dataType} for column '${col.name}'`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
Database.prototype.readSetsById = function (collection, id) {
|
|
47
|
-
const groups = this.listSetGroups(collection);
|
|
48
|
-
const result = {};
|
|
49
|
-
for (const group of groups) {
|
|
50
|
-
for (const col of group.valueColumns) {
|
|
51
|
-
switch (col.dataType) {
|
|
52
|
-
case 0: // INTEGER
|
|
53
|
-
result[col.name] = this.readSetIntegersById(collection, col.name, id);
|
|
54
|
-
break;
|
|
55
|
-
case 1: // FLOAT
|
|
56
|
-
result[col.name] = this.readSetFloatsById(collection, col.name, id);
|
|
57
|
-
break;
|
|
58
|
-
case 2: // STRING
|
|
59
|
-
case 3: // DATE_TIME
|
|
60
|
-
result[col.name] = this.readSetStringsById(collection, col.name, id);
|
|
61
|
-
break;
|
|
62
|
-
default:
|
|
63
|
-
throw new Error(`Unknown data type ${col.dataType} for column '${col.name}'`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return result;
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=composites.js.map
|
package/dist/composites.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"composites.js","sourceRoot":"","sources":["../src/composites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAUzC,QAAQ,CAAC,SAAS,CAAC,eAAe,GAAG,UAEnC,UAAkB,EAClB,EAAU;IAEV,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,MAAM,GAA2C,EAAE,CAAC;IAE1D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,CAAC,EAAE,UAAU;gBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1E,MAAM;YACR,KAAK,CAAC,EAAE,QAAQ;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxE,MAAM;YACR,KAAK,CAAC,CAAC,CAAC,SAAS;YACjB,KAAK,CAAC,EAAE,YAAY;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzE,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,QAAQ,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,QAAQ,CAAC,SAAS,CAAC,eAAe,GAAG,UAEnC,UAAkB,EAClB,EAAU;IAEV,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,MAAM,GAAwC,EAAE,CAAC;IAEvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrC,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACrB,KAAK,CAAC,EAAE,UAAU;oBAChB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACzE,MAAM;gBACR,KAAK,CAAC,EAAE,QAAQ;oBACd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACvE,MAAM;gBACR,KAAK,CAAC,CAAC,CAAC,SAAS;gBACjB,KAAK,CAAC,EAAE,YAAY;oBAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACxE,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,QAAQ,gBAAgB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,UAEhC,UAAkB,EAClB,EAAU;IAEV,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAwC,EAAE,CAAC;IAEvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACrC,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACrB,KAAK,CAAC,EAAE,UAAU;oBAChB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACtE,MAAM;gBACR,KAAK,CAAC,EAAE,QAAQ;oBACd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACpE,MAAM;gBACR,KAAK,CAAC,CAAC,CAAC,SAAS;gBACjB,KAAK,CAAC,EAAE,YAAY;oBAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACrE,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,QAAQ,gBAAgB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/dist/create.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ElementData } from "./types.js";
|
|
2
|
-
declare module "./database.js" {
|
|
3
|
-
interface Database {
|
|
4
|
-
createElement(collection: string, data: ElementData): number;
|
|
5
|
-
updateElement(collection: string, id: number, data: ElementData): void;
|
|
6
|
-
deleteElement(collection: string, id: number): void;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=create.d.ts.map
|
package/dist/create.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,YAAY,CAAC;AAErD,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,QAAQ;QAChB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;QAC7D,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;QACvE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;KACrD;CACF"}
|
package/dist/create.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Database } from "./database.js";
|
|
2
|
-
import { check, QuiverError } from "./errors.js";
|
|
3
|
-
import { allocPtrOut, readPtrOut } from "./ffi-helpers.js";
|
|
4
|
-
import { getSymbols } from "./loader.js";
|
|
5
|
-
function setElementArray(lib, elemPtr, name, values) {
|
|
6
|
-
if (values.length === 0) {
|
|
7
|
-
check(lib.quiver_element_set_array_integer(elemPtr, name, null, 0));
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const first = values[0];
|
|
11
|
-
if (typeof first === "bigint") {
|
|
12
|
-
const arr = BigInt64Array.from(values, (v) => BigInt(v));
|
|
13
|
-
check(lib.quiver_element_set_array_integer(elemPtr, name, arr, values.length));
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (typeof first === "number") {
|
|
17
|
-
const allIntegers = values.every((v) => Number.isInteger(v));
|
|
18
|
-
if (allIntegers) {
|
|
19
|
-
const arr = BigInt64Array.from(values, (v) => BigInt(v));
|
|
20
|
-
check(lib.quiver_element_set_array_integer(elemPtr, name, arr, values.length));
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const arr = Float64Array.from(values);
|
|
24
|
-
check(lib.quiver_element_set_array_float(elemPtr, name, arr, values.length));
|
|
25
|
-
}
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (typeof first === "string") {
|
|
29
|
-
check(lib.quiver_element_set_array_string(elemPtr, name, values, values.length));
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
throw new QuiverError(`Unsupported array element type for '${name}': ${typeof first}`);
|
|
33
|
-
}
|
|
34
|
-
function setElementField(lib, elemPtr, name, value) {
|
|
35
|
-
if (value === null) {
|
|
36
|
-
check(lib.quiver_element_set_null(elemPtr, name));
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (typeof value === "bigint") {
|
|
40
|
-
check(lib.quiver_element_set_integer(elemPtr, name, value));
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if (typeof value === "number") {
|
|
44
|
-
if (Number.isInteger(value)) {
|
|
45
|
-
check(lib.quiver_element_set_integer(elemPtr, name, value));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
check(lib.quiver_element_set_float(elemPtr, name, value));
|
|
49
|
-
}
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (typeof value === "string") {
|
|
53
|
-
check(lib.quiver_element_set_string(elemPtr, name, value));
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
if (Array.isArray(value)) {
|
|
57
|
-
setElementArray(lib, elemPtr, name, value);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
throw new QuiverError(`Unsupported value type for '${name}': ${typeof value}`);
|
|
61
|
-
}
|
|
62
|
-
Database.prototype.createElement = function (collection, data) {
|
|
63
|
-
const lib = getSymbols();
|
|
64
|
-
const handle = this._handle;
|
|
65
|
-
const outElem = allocPtrOut();
|
|
66
|
-
check(lib.quiver_element_create(outElem));
|
|
67
|
-
const elemPtr = readPtrOut(outElem);
|
|
68
|
-
try {
|
|
69
|
-
for (const [key, value] of Object.entries(data)) {
|
|
70
|
-
if (value === undefined)
|
|
71
|
-
continue;
|
|
72
|
-
setElementField(lib, elemPtr, key, value);
|
|
73
|
-
}
|
|
74
|
-
const outId = new BigInt64Array(1);
|
|
75
|
-
check(lib.quiver_database_create_element(handle, collection, elemPtr, outId));
|
|
76
|
-
return Number(outId[0]);
|
|
77
|
-
}
|
|
78
|
-
finally {
|
|
79
|
-
lib.quiver_element_destroy(elemPtr);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
Database.prototype.updateElement = function (collection, id, data) {
|
|
83
|
-
const lib = getSymbols();
|
|
84
|
-
const handle = this._handle;
|
|
85
|
-
const outElem = allocPtrOut();
|
|
86
|
-
check(lib.quiver_element_create(outElem));
|
|
87
|
-
const elemPtr = readPtrOut(outElem);
|
|
88
|
-
try {
|
|
89
|
-
for (const [key, value] of Object.entries(data)) {
|
|
90
|
-
if (value === undefined)
|
|
91
|
-
continue;
|
|
92
|
-
setElementField(lib, elemPtr, key, value);
|
|
93
|
-
}
|
|
94
|
-
check(lib.quiver_database_update_element(handle, collection, id, elemPtr));
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
lib.quiver_element_destroy(elemPtr);
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
Database.prototype.deleteElement = function (collection, id) {
|
|
101
|
-
const lib = getSymbols();
|
|
102
|
-
check(lib.quiver_database_delete_element(this._handle, collection, id));
|
|
103
|
-
};
|
|
104
|
-
//# sourceMappingURL=create.js.map
|
package/dist/create.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
|
package/dist/csv.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface CsvOptions {
|
|
2
|
-
dateTimeFormat?: string;
|
|
3
|
-
enumLabels?: Record<string, Record<string, Record<string, number>>>;
|
|
4
|
-
}
|
|
5
|
-
declare module "./database.js" {
|
|
6
|
-
interface Database {
|
|
7
|
-
exportCsv(collection: string, group: string, filePath: string, options?: CsvOptions): void;
|
|
8
|
-
importCsv(collection: string, group: string, filePath: string, options?: CsvOptions): void;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=csv.d.ts.map
|
package/dist/csv.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../src/csv.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACrE;AAED,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,QAAQ;QAChB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;QAC3F,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;KAC5F;CACF"}
|
package/dist/csv.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import koffi from "koffi";
|
|
2
|
-
import { Database } from "./database.js";
|
|
3
|
-
import { check } from "./errors.js";
|
|
4
|
-
import { allocNativeInt64, allocNativeString, allocNativeStringArray, nativeAddress } from "./ffi-helpers.js";
|
|
5
|
-
import { getSymbols } from "./loader.js";
|
|
6
|
-
/**
|
|
7
|
-
* Build the 56-byte quiver_csv_options_t struct as a Buffer.
|
|
8
|
-
* Returns [structBuffer, keepalive] where keepalive prevents GC of native allocations.
|
|
9
|
-
*/
|
|
10
|
-
function buildCsvOptionsBuffer(options) {
|
|
11
|
-
const buf = Buffer.alloc(56);
|
|
12
|
-
const keepalive = [];
|
|
13
|
-
const dtfStr = allocNativeString(options?.dateTimeFormat ?? "");
|
|
14
|
-
keepalive.push(dtfStr);
|
|
15
|
-
buf.writeBigUInt64LE(nativeAddress(dtfStr), 0);
|
|
16
|
-
if (!options?.enumLabels || Object.keys(options.enumLabels).length === 0) {
|
|
17
|
-
return [buf, keepalive];
|
|
18
|
-
}
|
|
19
|
-
const groupAttrNames = [];
|
|
20
|
-
const groupLocaleNames = [];
|
|
21
|
-
const groupEntryCounts = [];
|
|
22
|
-
const allLabels = [];
|
|
23
|
-
const allValues = [];
|
|
24
|
-
for (const [attrName, locales] of Object.entries(options.enumLabels)) {
|
|
25
|
-
for (const [localeName, entries] of Object.entries(locales)) {
|
|
26
|
-
groupAttrNames.push(attrName);
|
|
27
|
-
groupLocaleNames.push(localeName);
|
|
28
|
-
groupEntryCounts.push(Object.keys(entries).length);
|
|
29
|
-
for (const [label, value] of Object.entries(entries)) {
|
|
30
|
-
allLabels.push(label);
|
|
31
|
-
allValues.push(value);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
const groupCount = groupAttrNames.length;
|
|
36
|
-
const { table: attrTable, keepalive: attrPtrs } = allocNativeStringArray(groupAttrNames);
|
|
37
|
-
keepalive.push(attrTable, ...attrPtrs);
|
|
38
|
-
const { table: localeTable, keepalive: localePtrs } = allocNativeStringArray(groupLocaleNames);
|
|
39
|
-
keepalive.push(localeTable, ...localePtrs);
|
|
40
|
-
const entryCounts = koffi.alloc("uint64_t", groupCount);
|
|
41
|
-
for (let i = 0; i < groupCount; i++) {
|
|
42
|
-
koffi.encode(entryCounts, i * 8, "uint64_t", BigInt(groupEntryCounts[i]));
|
|
43
|
-
}
|
|
44
|
-
keepalive.push(entryCounts);
|
|
45
|
-
const { table: labelsTable, keepalive: labelPtrs } = allocNativeStringArray(allLabels);
|
|
46
|
-
keepalive.push(labelsTable, ...labelPtrs);
|
|
47
|
-
const valuesArr = allocNativeInt64(allValues);
|
|
48
|
-
keepalive.push(valuesArr);
|
|
49
|
-
buf.writeBigUInt64LE(nativeAddress(attrTable), 8);
|
|
50
|
-
buf.writeBigUInt64LE(nativeAddress(localeTable), 16);
|
|
51
|
-
buf.writeBigUInt64LE(nativeAddress(entryCounts), 24);
|
|
52
|
-
buf.writeBigUInt64LE(nativeAddress(labelsTable), 32);
|
|
53
|
-
buf.writeBigUInt64LE(nativeAddress(valuesArr), 40);
|
|
54
|
-
buf.writeBigUInt64LE(BigInt(groupCount), 48);
|
|
55
|
-
return [buf, keepalive];
|
|
56
|
-
}
|
|
57
|
-
Database.prototype.exportCsv = function (collection, group, filePath, options) {
|
|
58
|
-
const lib = getSymbols();
|
|
59
|
-
const [optsBuf, _keepalive] = buildCsvOptionsBuffer(options);
|
|
60
|
-
check(lib.quiver_database_export_csv(this._handle, collection, group, filePath, optsBuf));
|
|
61
|
-
};
|
|
62
|
-
Database.prototype.importCsv = function (collection, group, filePath, options) {
|
|
63
|
-
const lib = getSymbols();
|
|
64
|
-
const [optsBuf, _keepalive] = buildCsvOptionsBuffer(options);
|
|
65
|
-
check(lib.quiver_database_import_csv(this._handle, collection, group, filePath, optsBuf));
|
|
66
|
-
};
|
|
67
|
-
//# sourceMappingURL=csv.js.map
|
package/dist/csv.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../src/csv.ts"],"names":[],"mappings":"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"}
|
package/dist/database.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { NativePointer } from "./loader.js";
|
|
2
|
-
export declare class Database {
|
|
3
|
-
private _ptr;
|
|
4
|
-
private _closed;
|
|
5
|
-
private constructor();
|
|
6
|
-
static fromSchema(dbPath: string, schemaPath: string): Database;
|
|
7
|
-
static fromMigrations(dbPath: string, migrationsPath: string): Database;
|
|
8
|
-
close(): void;
|
|
9
|
-
private ensureOpen;
|
|
10
|
-
/** @internal */
|
|
11
|
-
get _handle(): NativePointer;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=database.d.ts.map
|
package/dist/database.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAIP,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ;IAU/D,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,QAAQ;IAUvE,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,UAAU;IAMlB,gBAAgB;IAChB,IAAI,OAAO,IAAI,aAAa,CAG3B;CACF"}
|