flatsql 1.0.0 → 1.0.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.
- package/package.json +2 -2
- package/wasm/flatsql-wasi.wasm +0 -0
- package/wasm/flatsql.wasm +0 -0
- package/wasm/index.d.ts +2 -0
- package/wasm/index.js +45 -23
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flatsql",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "SQL queries over raw FlatBuffer storage - zero conversion, real-time indexing, pure streaming",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"bench": "node bench/flatsql-perf.mjs",
|
|
71
71
|
"bench:perf": "node bench/flatsql-perf.mjs",
|
|
72
72
|
"bench:perf:profile": "node bench/flatsql-perf.mjs --profile",
|
|
73
|
-
"prepublishOnly": "npm run build && npm run test:wasi && npm run test:wasmedge && npm test -- --runInBand --runTestsByPath test/package-exports.test.ts",
|
|
73
|
+
"prepublishOnly": "npm run build && npm run test:wasi && npm run test:wasmedge && npm test -- --runInBand --runTestsByPath test/package-exports.test.ts test/wasm-generic-extractor.test.ts test/wasm-pointer.test.ts",
|
|
74
74
|
"emsdk:install": "bash scripts/install-emsdk.sh",
|
|
75
75
|
"emsdk:env": "echo 'Run: source packages/emsdk/emsdk_env.sh'",
|
|
76
76
|
"test:wasi": "node --experimental-wasm-exnref --experimental-vm-modules node_modules/jest/bin/jest.js --runTestsByPath test/wasi.test.ts test/standalone-wasm-imports.test.ts",
|
package/wasm/flatsql-wasi.wasm
CHANGED
|
Binary file
|
package/wasm/flatsql.wasm
CHANGED
|
Binary file
|
package/wasm/index.d.ts
CHANGED
package/wasm/index.js
CHANGED
|
@@ -359,10 +359,32 @@ export function wasIntegrityVerified() {
|
|
|
359
359
|
return integrityVerified;
|
|
360
360
|
}
|
|
361
361
|
|
|
362
|
+
function wasmPointerToByteOffset(ptr) {
|
|
363
|
+
const numeric = Number(ptr);
|
|
364
|
+
if (!Number.isFinite(numeric)) {
|
|
365
|
+
throw new TypeError(`Invalid WASM pointer: ${ptr}`);
|
|
366
|
+
}
|
|
367
|
+
return numeric >>> 0;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
export const __testWasmPointerToByteOffset = wasmPointerToByteOffset;
|
|
371
|
+
|
|
372
|
+
function heapBytes(ptr, size) {
|
|
373
|
+
return new Uint8Array(Module.HEAPU8.buffer, wasmPointerToByteOffset(ptr), size);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
function copyHeapBytes(ptr, size) {
|
|
377
|
+
return heapBytes(ptr, size).slice();
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
function setHeapBytes(data, ptr) {
|
|
381
|
+
Module.HEAPU8.set(data, wasmPointerToByteOffset(ptr));
|
|
382
|
+
}
|
|
383
|
+
|
|
362
384
|
function withHeapBytes(data, callback) {
|
|
363
385
|
const ptr = Module._malloc(data.length);
|
|
364
386
|
try {
|
|
365
|
-
|
|
387
|
+
setHeapBytes(data, ptr);
|
|
366
388
|
return callback(ptr);
|
|
367
389
|
} finally {
|
|
368
390
|
Module._free(ptr);
|
|
@@ -468,7 +490,7 @@ function readCellValue(row, col) {
|
|
|
468
490
|
const blobPtr = api.resultCellBlob(row, col);
|
|
469
491
|
const blobSize = api.resultCellBlobSize(row, col);
|
|
470
492
|
return blobPtr && blobSize > 0
|
|
471
|
-
? Array.from(
|
|
493
|
+
? Array.from(copyHeapBytes(blobPtr, blobSize))
|
|
472
494
|
: [];
|
|
473
495
|
}
|
|
474
496
|
default:
|
|
@@ -525,19 +547,19 @@ export class FlatSQL {
|
|
|
525
547
|
createTestUser(id, name, email, age) {
|
|
526
548
|
const ptr = api.createTestUser(id, name, email, age);
|
|
527
549
|
const size = api.testBufferSize();
|
|
528
|
-
return
|
|
550
|
+
return copyHeapBytes(ptr, size);
|
|
529
551
|
}
|
|
530
552
|
|
|
531
553
|
createTestPost(id, userId, title) {
|
|
532
554
|
const ptr = api.createTestPost(id, userId, title);
|
|
533
555
|
const size = api.testBufferSize();
|
|
534
|
-
return
|
|
556
|
+
return copyHeapBytes(ptr, size);
|
|
535
557
|
}
|
|
536
558
|
|
|
537
559
|
createTestPublishEvent(fileId, recordId, eventIndex, payloadSize) {
|
|
538
560
|
const ptr = api.createTestPublishEvent(fileId, recordId, eventIndex, payloadSize);
|
|
539
561
|
const size = api.testBufferSize();
|
|
540
|
-
return
|
|
562
|
+
return copyHeapBytes(ptr, size);
|
|
541
563
|
}
|
|
542
564
|
|
|
543
565
|
createTestMPE(entityId, epoch, meanMotion, eccentricity, inclination,
|
|
@@ -555,13 +577,13 @@ export class FlatSQL {
|
|
|
555
577
|
meanElementTheory
|
|
556
578
|
);
|
|
557
579
|
const size = api.testBufferSize();
|
|
558
|
-
return
|
|
580
|
+
return copyHeapBytes(ptr, size);
|
|
559
581
|
}
|
|
560
582
|
|
|
561
583
|
createTestTelemetry(packetId, spacecraft, subsystem, mode, temperatureC, signalDb, timestampS) {
|
|
562
584
|
const ptr = api.createTestTelemetry(packetId, spacecraft, subsystem, mode, temperatureC, signalDb, timestampS);
|
|
563
585
|
const size = api.testBufferSize();
|
|
564
|
-
return
|
|
586
|
+
return copyHeapBytes(ptr, size);
|
|
565
587
|
}
|
|
566
588
|
|
|
567
589
|
/**
|
|
@@ -799,18 +821,18 @@ export class FlatSQLDatabase {
|
|
|
799
821
|
|
|
800
822
|
const ptr = api.responseArtifactData();
|
|
801
823
|
const size = api.responseArtifactSize();
|
|
802
|
-
return ptr && size > 0 ?
|
|
824
|
+
return ptr && size > 0 ? copyHeapBytes(ptr, size) : new Uint8Array();
|
|
803
825
|
}
|
|
804
826
|
|
|
805
827
|
exportData() {
|
|
806
828
|
const ptr = api.exportData(this._handle);
|
|
807
829
|
const size = api.exportSize();
|
|
808
|
-
return
|
|
830
|
+
return copyHeapBytes(ptr, size);
|
|
809
831
|
}
|
|
810
832
|
|
|
811
833
|
loadAndRebuild(data) {
|
|
812
834
|
const ptr = Module._malloc(data.length);
|
|
813
|
-
|
|
835
|
+
setHeapBytes(data, ptr);
|
|
814
836
|
api.loadAndRebuild(this._handle, ptr, data.length);
|
|
815
837
|
Module._free(ptr);
|
|
816
838
|
}
|
|
@@ -921,7 +943,7 @@ export class FlatSQLDatabase {
|
|
|
921
943
|
if (!record) {
|
|
922
944
|
return null;
|
|
923
945
|
}
|
|
924
|
-
return
|
|
946
|
+
return copyHeapBytes(record.ptr, record.size);
|
|
925
947
|
}
|
|
926
948
|
|
|
927
949
|
getFlatBufferDataByIndex(tableName, columnName, value) {
|
|
@@ -929,7 +951,7 @@ export class FlatSQLDatabase {
|
|
|
929
951
|
if (!record) {
|
|
930
952
|
return null;
|
|
931
953
|
}
|
|
932
|
-
return
|
|
954
|
+
return copyHeapBytes(record.ptr, record.size);
|
|
933
955
|
}
|
|
934
956
|
|
|
935
957
|
getStorageInfo() {
|
|
@@ -947,7 +969,7 @@ export class FlatSQLDatabase {
|
|
|
947
969
|
*/
|
|
948
970
|
setEncryptionKey(key) {
|
|
949
971
|
const ptr = Module._malloc(key.length);
|
|
950
|
-
|
|
972
|
+
setHeapBytes(key, ptr);
|
|
951
973
|
const result = api.setEncryptionKey(this._handle, ptr, key.length);
|
|
952
974
|
Module._free(ptr);
|
|
953
975
|
if (!result) throw new Error(api.getError());
|
|
@@ -969,11 +991,11 @@ export class FlatSQLDatabase {
|
|
|
969
991
|
*/
|
|
970
992
|
encryptBuffer(buffer, schema) {
|
|
971
993
|
const bufPtr = Module._malloc(buffer.length);
|
|
972
|
-
|
|
994
|
+
setHeapBytes(buffer, bufPtr);
|
|
973
995
|
const schemaPtr = Module._malloc(schema.length);
|
|
974
|
-
|
|
996
|
+
setHeapBytes(schema, schemaPtr);
|
|
975
997
|
const result = api.encryptBuffer(this._handle, bufPtr, buffer.length, schemaPtr, schema.length);
|
|
976
|
-
const encrypted =
|
|
998
|
+
const encrypted = copyHeapBytes(bufPtr, buffer.length);
|
|
977
999
|
Module._free(bufPtr);
|
|
978
1000
|
Module._free(schemaPtr);
|
|
979
1001
|
if (!result) throw new Error(api.getError());
|
|
@@ -988,11 +1010,11 @@ export class FlatSQLDatabase {
|
|
|
988
1010
|
*/
|
|
989
1011
|
decryptBuffer(buffer, schema) {
|
|
990
1012
|
const bufPtr = Module._malloc(buffer.length);
|
|
991
|
-
|
|
1013
|
+
setHeapBytes(buffer, bufPtr);
|
|
992
1014
|
const schemaPtr = Module._malloc(schema.length);
|
|
993
|
-
|
|
1015
|
+
setHeapBytes(schema, schemaPtr);
|
|
994
1016
|
const result = api.decryptBuffer(this._handle, bufPtr, buffer.length, schemaPtr, schema.length);
|
|
995
|
-
const decrypted =
|
|
1017
|
+
const decrypted = copyHeapBytes(bufPtr, buffer.length);
|
|
996
1018
|
Module._free(bufPtr);
|
|
997
1019
|
Module._free(schemaPtr);
|
|
998
1020
|
if (!result) throw new Error(api.getError());
|
|
@@ -1026,10 +1048,10 @@ export class FlatSQLDatabase {
|
|
|
1026
1048
|
*/
|
|
1027
1049
|
computeHMAC(buffer) {
|
|
1028
1050
|
const bufPtr = Module._malloc(buffer.length);
|
|
1029
|
-
|
|
1051
|
+
setHeapBytes(buffer, bufPtr);
|
|
1030
1052
|
const macPtr = Module._malloc(32);
|
|
1031
1053
|
const result = api.computeHMAC(this._handle, bufPtr, buffer.length, macPtr);
|
|
1032
|
-
const mac =
|
|
1054
|
+
const mac = copyHeapBytes(macPtr, 32);
|
|
1033
1055
|
Module._free(bufPtr);
|
|
1034
1056
|
Module._free(macPtr);
|
|
1035
1057
|
if (!result) throw new Error('HMAC computation failed - is encryption key set?');
|
|
@@ -1044,9 +1066,9 @@ export class FlatSQLDatabase {
|
|
|
1044
1066
|
*/
|
|
1045
1067
|
verifyHMAC(buffer, mac) {
|
|
1046
1068
|
const bufPtr = Module._malloc(buffer.length);
|
|
1047
|
-
|
|
1069
|
+
setHeapBytes(buffer, bufPtr);
|
|
1048
1070
|
const macPtr = Module._malloc(32);
|
|
1049
|
-
|
|
1071
|
+
setHeapBytes(mac, macPtr);
|
|
1050
1072
|
const result = api.verifyHMAC(this._handle, bufPtr, buffer.length, macPtr);
|
|
1051
1073
|
Module._free(bufPtr);
|
|
1052
1074
|
Module._free(macPtr);
|