@based/db 0.0.67 → 0.0.69
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/README.md +6 -1
- package/dist/lib/darwin_aarch64/include/selva/fields.h +0 -9
- package/dist/lib/darwin_aarch64/include/selva_error.h +4 -1
- package/dist/lib/darwin_aarch64/libnode-v22.node +0 -0
- package/dist/lib/darwin_aarch64/libnode-v23.node +0 -0
- package/dist/lib/darwin_aarch64/libnode-v24.node +0 -0
- package/dist/lib/darwin_aarch64/libselva.dylib +0 -0
- package/dist/lib/linux_aarch64/include/selva/fields.h +0 -9
- package/dist/lib/linux_aarch64/include/selva_error.h +4 -1
- package/dist/lib/linux_aarch64/libnode-v22.node +0 -0
- package/dist/lib/linux_aarch64/libnode-v23.node +0 -0
- package/dist/lib/linux_aarch64/libnode-v24.node +0 -0
- package/dist/lib/linux_aarch64/libselva.so +0 -0
- package/dist/lib/linux_x86_64/include/selva/fields.h +0 -9
- package/dist/lib/linux_x86_64/include/selva_error.h +4 -1
- package/dist/lib/linux_x86_64/libnode-v22.node +0 -0
- package/dist/lib/linux_x86_64/libnode-v23.node +0 -0
- package/dist/lib/linux_x86_64/libnode-v24.node +0 -0
- package/dist/lib/linux_x86_64/libselva.so +0 -0
- package/dist/src/client/modify/alias.js +4 -0
- package/dist/src/client/modify/binary.d.ts +1 -1
- package/dist/src/client/modify/binary.js +22 -7
- package/dist/src/client/modify/create.js +87 -39
- package/dist/src/client/modify/fixed.d.ts +3 -3
- package/dist/src/client/modify/fixed.js +80 -20
- package/dist/src/client/modify/json.js +7 -0
- package/dist/src/client/modify/modify.js +3 -3
- package/dist/src/client/modify/references/edge.js +3 -3
- package/dist/src/client/modify/string.d.ts +1 -1
- package/dist/src/client/modify/string.js +17 -7
- package/dist/src/client/modify/text.d.ts +1 -1
- package/dist/src/client/modify/text.js +27 -15
- package/dist/src/client/modify/types.d.ts +2 -1
- package/dist/src/client/modify/types.js +6 -0
- package/dist/src/client/modify/update.js +1 -1
- package/dist/src/client/query/display.js +1 -1
- package/dist/src/client/query/filter/createFixedFilterBuffer.js +3 -0
- package/dist/src/client/query/filter/createReferenceFilter.js +3 -0
- package/dist/src/client/query/filter/createVariableFilterBuffer.js +21 -19
- package/dist/src/client/query/read/read.js +9 -10
- package/dist/src/native.d.ts +1 -0
- package/dist/src/native.js +3 -0
- package/dist/src/server/IoWorker.d.ts +16 -0
- package/dist/src/server/IoWorker.js +32 -3
- package/dist/src/server/QueryWorker.js +2 -2
- package/dist/src/server/blocks.d.ts +3 -1
- package/dist/src/server/blocks.js +31 -7
- package/dist/src/server/index.d.ts +1 -1
- package/dist/src/server/index.js +8 -11
- package/dist/src/server/migrate/index.js +5 -5
- package/dist/src/server/save.d.ts +7 -1
- package/dist/src/server/save.js +107 -50
- package/dist/src/server/schema.d.ts +1 -1
- package/dist/src/server/schema.js +6 -2
- package/dist/src/server/start.js +11 -5
- package/dist/src/server/tree.d.ts +11 -0
- package/dist/src/server/tree.js +0 -1
- package/dist/src/server/workers/DbWorker.d.ts +3 -2
- package/dist/src/server/workers/DbWorker.js +2 -1
- package/dist/src/server/workers/io_worker.js +22 -17
- package/dist/src/server/workers/io_worker_types.d.ts +9 -1
- package/dist/src/server/workers/worker.js +11 -3
- package/dist/src/types.d.ts +1 -0
- package/dist/src/types.js +1 -0
- package/dist/src/utils.js +1 -1
- package/package.json +3 -2
- package/dist/lib/darwin_aarch64/libnode-v20.node +0 -0
- package/dist/lib/darwin_aarch64/libnode-v21.node +0 -0
- package/dist/lib/linux_aarch64/libnode-v20.node +0 -0
- package/dist/lib/linux_aarch64/libnode-v21.node +0 -0
- package/dist/lib/linux_x86_64/libnode-v20.node +0 -0
- package/dist/lib/linux_x86_64/libnode-v21.node +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { MessagePort } from 'node:worker_threads';
|
|
1
2
|
import { DbServer } from '../index.js';
|
|
2
3
|
export declare abstract class DbWorker {
|
|
3
4
|
constructor(address: BigInt, db: DbServer, onExit: (code: number) => void, workerName: string);
|
|
4
5
|
protected db: DbServer;
|
|
5
|
-
|
|
6
|
+
protected channel: MessagePort;
|
|
6
7
|
private worker;
|
|
7
8
|
protected resolvers: ((x: any) => any)[];
|
|
8
9
|
readyPromise: Promise<true>;
|
|
9
|
-
terminate(): Promise<
|
|
10
|
+
terminate(): Promise<void>;
|
|
10
11
|
abstract handleMsg(buf: any): void;
|
|
11
12
|
protected callback: (resolve: (x: any) => any) => void;
|
|
12
13
|
/**
|
|
@@ -53,7 +53,8 @@ export class DbWorker {
|
|
|
53
53
|
resolvers = [];
|
|
54
54
|
readyPromise;
|
|
55
55
|
async terminate() {
|
|
56
|
-
|
|
56
|
+
// TODO do we want to force this.worker.terminate() after a timeout?
|
|
57
|
+
await this.call(0n);
|
|
57
58
|
}
|
|
58
59
|
callback = (resolve) => {
|
|
59
60
|
this.resolvers.push(resolve);
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import { registerMsgHandler } from './worker.js';
|
|
2
|
-
import {
|
|
2
|
+
import { writeInt32 } from '@saulx/utils';
|
|
3
3
|
import native from '../../native.js';
|
|
4
4
|
function loadBlock(dbCtx, filepath) {
|
|
5
|
-
|
|
6
|
-
native.loadBlock(filepath, dbCtx);
|
|
7
|
-
}
|
|
8
|
-
catch (e) {
|
|
9
|
-
// need to get rid of the shared buffer
|
|
10
|
-
return new Uint8Array(ENCODER.encode(e.toString())).buffer;
|
|
11
|
-
}
|
|
5
|
+
native.loadBlock(filepath, dbCtx);
|
|
12
6
|
return null;
|
|
13
7
|
}
|
|
14
8
|
function unloadBlock(dbCtx, filepath, typeId, start) {
|
|
@@ -25,15 +19,26 @@ function unloadBlock(dbCtx, filepath, typeId, start) {
|
|
|
25
19
|
return buf;
|
|
26
20
|
}
|
|
27
21
|
registerMsgHandler((dbCtx, msg) => {
|
|
28
|
-
if (typeof msg?.type
|
|
29
|
-
|
|
30
|
-
if (job.type === 'load') {
|
|
31
|
-
return loadBlock(dbCtx, job.filepath);
|
|
32
|
-
}
|
|
33
|
-
else if (job.type === 'unload') {
|
|
34
|
-
return unloadBlock(dbCtx, job.filepath, job.typeId, job.start);
|
|
35
|
-
}
|
|
22
|
+
if (typeof msg?.type !== 'string') {
|
|
23
|
+
throw new Error('Invalid message');
|
|
36
24
|
}
|
|
37
|
-
|
|
25
|
+
const job = msg;
|
|
26
|
+
if (job.type === 'save') {
|
|
27
|
+
const LEN = 20;
|
|
28
|
+
return job.blocks.reduce((buf, block, index) => {
|
|
29
|
+
const errCodeBuf = new Uint8Array(buf, index * LEN, 4);
|
|
30
|
+
const hash = new Uint8Array(buf, index * LEN + 4, 16);
|
|
31
|
+
const err = native.saveBlock(block.filepath, block.typeId, block.start, dbCtx, hash);
|
|
32
|
+
writeInt32(errCodeBuf, err, 0);
|
|
33
|
+
return buf;
|
|
34
|
+
}, new ArrayBuffer(job.blocks.length * LEN));
|
|
35
|
+
}
|
|
36
|
+
else if (job.type === 'load') {
|
|
37
|
+
return loadBlock(dbCtx, job.filepath);
|
|
38
|
+
}
|
|
39
|
+
else if (job.type === 'unload') {
|
|
40
|
+
return unloadBlock(dbCtx, job.filepath, job.typeId, job.start);
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`Unsupported type: "${msg.type}"`);
|
|
38
43
|
});
|
|
39
44
|
//# sourceMappingURL=io_worker.js.map
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
export type IoJobSave = {
|
|
2
|
+
type: 'save';
|
|
3
|
+
blocks: {
|
|
4
|
+
filepath: string;
|
|
5
|
+
typeId: number;
|
|
6
|
+
start: number;
|
|
7
|
+
}[];
|
|
8
|
+
};
|
|
1
9
|
type IoJobLoad = {
|
|
2
10
|
type: 'load';
|
|
3
11
|
filepath: string;
|
|
@@ -8,5 +16,5 @@ type IoJobUnload = {
|
|
|
8
16
|
typeId: number;
|
|
9
17
|
start: number;
|
|
10
18
|
};
|
|
11
|
-
export type IoJob = IoJobLoad | IoJobUnload;
|
|
19
|
+
export type IoJob = IoJobSave | IoJobLoad | IoJobUnload;
|
|
12
20
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isMainThread, parentPort, workerData } from 'node:worker_threads';
|
|
2
|
+
import { nextTick } from 'node:process';
|
|
2
3
|
import native from '../../native.js';
|
|
3
4
|
let dbCtx;
|
|
4
5
|
let wCtx; // This must be held until the worker exits otherwise the ctx will be autofreed instantly
|
|
@@ -21,9 +22,16 @@ export function registerMsgHandler(onMsg) {
|
|
|
21
22
|
const handleMsg = (msg) => {
|
|
22
23
|
try {
|
|
23
24
|
if (typeof msg === 'bigint') {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
if (msg === 0n) {
|
|
26
|
+
// terminate
|
|
27
|
+
nextTick(() => typeof self === 'undefined' ? process.exit() : self.close());
|
|
28
|
+
channel.postMessage(null);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// it's a ctx address
|
|
32
|
+
dbCtx = native.externalFromInt(msg);
|
|
33
|
+
channel.postMessage(null);
|
|
34
|
+
}
|
|
27
35
|
}
|
|
28
36
|
else {
|
|
29
37
|
// a message to the worker handler
|
package/dist/src/types.d.ts
CHANGED
package/dist/src/types.js
CHANGED
package/dist/src/utils.js
CHANGED
|
@@ -42,5 +42,5 @@ export const debugMode = (target, getInfo = null) => {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
|
-
export const debugServer = (server) => debugMode(server, () => `p: ${server.
|
|
45
|
+
export const debugServer = (server) => debugMode(server, () => `p: ${server.activeReaders} m: ${server.modifyQueue.length} q: ${server.queryQueue.size}`);
|
|
46
46
|
//# sourceMappingURL=utils.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@based/db",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.69",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"test": "npm run build && LOCPATH=../locale/locale-x86_64-gnu/locale ./scripts/lldb-node ./scripts/test.js",
|
|
21
21
|
"test-gdb": "npm run build && LOCPATH=../locale/locale-x86_64-gnu/locale gdb -ex run --args node ./scripts/test.js",
|
|
22
22
|
"test-fast": "LOCPATH=../locale/locale-x86_64-gnu/locale node ./scripts/test.js",
|
|
23
|
+
"test-fast-linux_aarch64-schema": "podman run --rm -v \"$PWD/../..:/usr/src/based-db\" based-db-clibs-build-linux_aarch64 sh -c '\\. \"/usr/local/nvm/nvm.sh\"; cd /usr/src/based-db/packages/db; npm run test-fast schemadebug'",
|
|
23
24
|
"test-fast-linux_aarch64": "podman run --rm -v \"$PWD/../..:/usr/src/based-db\" based-db-clibs-build-linux_aarch64 sh -c '\\. \"/usr/local/nvm/nvm.sh\"; cd /usr/src/based-db/packages/db; npm run test-fast'",
|
|
24
25
|
"test-fast-linux_aarch64-gdb": "podman run --rm -v \"$PWD/../..:/usr/src/based-db\" based-db-clibs-build-linux_aarch64 sh -c '\\. \"/usr/local/nvm/nvm.sh\"; cd /usr/src/based-db/packages/db; LOCPATH=../locale/locale-x86_64-gnu/locale gdb -ex run --args node ./scripts/test.js'",
|
|
25
26
|
"test-fast-linux_aarch64-valgrind": "podman run --rm -v \"$PWD/../..:/usr/src/based-db\" based-db-clibs-build-linux_aarch64 sh -c '\\. \"/usr/local/nvm/nvm.sh\"; cd /usr/src/based-db/packages/db; LOCPATH=../locale/locale-aarch64-gnu/locale valgrind --leak-check=full node ./scripts/test.js references:update2'",
|
|
@@ -38,7 +39,7 @@
|
|
|
38
39
|
"basedDbNative.cjs"
|
|
39
40
|
],
|
|
40
41
|
"dependencies": {
|
|
41
|
-
"@based/schema": "5.0.0-alpha.
|
|
42
|
+
"@based/schema": "5.0.0-alpha.25",
|
|
42
43
|
"@saulx/hash": "^3.0.0",
|
|
43
44
|
"@saulx/utils": "^6.7.2",
|
|
44
45
|
"exit-hook": "^4.0.0",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|