Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
c925627
Work on rocksdb-js integration
cb1kenobi Jun 30, 2025
105cc09
Default to RocksDB
cb1kenobi Jul 9, 2025
dcda017
Work
cb1kenobi Jul 11, 2025
a26941d
More work
cb1kenobi Jul 12, 2025
4f34756
work
cb1kenobi Jul 15, 2025
ccdf5c4
Remove debug
cb1kenobi Jul 16, 2025
f2c1c10
Cleanup
cb1kenobi Jul 16, 2025
1a249e7
Work
cb1kenobi Jul 18, 2025
0fb219f
Work
cb1kenobi Jul 21, 2025
be5f66f
Cleanup
cb1kenobi Jul 21, 2025
65f16c5
Fix
cb1kenobi Jul 21, 2025
bbde402
Work
cb1kenobi Jul 21, 2025
29ad5d5
Add env, fix types
cb1kenobi Jul 22, 2025
44eb609
Bug fixes
cb1kenobi Jul 22, 2025
9fbbff1
Update lock api
cb1kenobi Jul 25, 2025
4bcc86d
clearTimeout
cb1kenobi Jul 31, 2025
ff582dd
Fix getIdMappingRecord and aggregation
cb1kenobi Aug 12, 2025
ee595c3
Fix path ref and error code check for .DS_Store files
cb1kenobi Aug 12, 2025
d3c15fd
Misc
cb1kenobi Aug 12, 2025
e576559
Cleanup getEntry
cb1kenobi Aug 13, 2025
86a1cc1
Re-enable rocksdb-js
cb1kenobi Aug 13, 2025
ddbe26b
Small fixes
cb1kenobi Aug 15, 2025
83f4e41
Embed timestamp in values
cb1kenobi Aug 29, 2025
dac57d3
Timestamp stuff
cb1kenobi Aug 29, 2025
acd8383
Comment
cb1kenobi Sep 8, 2025
8910531
Re-enable analytics aggregration
cb1kenobi Sep 25, 2025
83d67dc
Branch into separate transaction classes for RocksDB for distinct tra…
kriszyp Oct 20, 2025
137b97b
DRY up some functions and cleanup
kriszyp Oct 20, 2025
bdbf741
More work on decoding
kriszyp Oct 20, 2025
699ef11
Add audit store adapter for RocksDB and pass transactions through to …
kriszyp Nov 13, 2025
f19444a
Get simple transaction log querying running
kriszyp Nov 14, 2025
9bbfee6
No need for audit store cleanup with RocksDB
kriszyp Nov 26, 2025
65ec92c
Merge fix
kriszyp Nov 26, 2025
392f4ae
Adding transaction log replay functionality
kriszyp Nov 26, 2025
2cc16c3
No need for resource cache now that we have RocksDB
kriszyp Nov 26, 2025
1f20532
Make sure all system tables are audited, use @harperdb/extended-itera…
kriszyp Dec 1, 2025
59d4eeb
Restore prefer-const rule
kriszyp Dec 1, 2025
d701515
Adjust default cache size for databases
kriszyp Dec 1, 2025
ca587c2
Get audit log size with Rocks, tolerate commit errors
kriszyp Dec 1, 2025
74672a5
Merge branch 'main' into rocksdb
kriszyp Dec 5, 2025
7bdbf96
Add indexing support for RocksDB
kriszyp Dec 6, 2025
035962e
Go through full indexing functionality when replaying logs
kriszyp Dec 6, 2025
5da5b8e
Default to new resource API
kriszyp Dec 6, 2025
11ba669
Merge branch 'default-to-new-resource-api' into rocksdb
kriszyp Dec 6, 2025
76bff62
Remove blobs immediately when they are no longer referenced
kriszyp Dec 6, 2025
b4fef91
Fix username access from modifying memory map
kriszyp Dec 6, 2025
3edd4a2
Fix accessing database size
kriszyp Dec 6, 2025
d38b224
Fix reference to defaultConfig.yaml
kriszyp Dec 9, 2025
e4cbc83
Fix database path being passed into storage reclamation
kriszyp Dec 9, 2025
d4f971e
Finally must have an await to wait for the set of promises
kriszyp Dec 9, 2025
2297b40
Fixes for installing from external bundle
kriszyp Dec 9, 2025
db2c519
Fixes for accessing user shared buffer and accessing logs that haven'…
kriszyp Dec 9, 2025
c0dc370
Updates for shared structures
kriszyp Dec 9, 2025
b5a3c85
Use new startFromLastFlushed flag for replay logs
kriszyp Dec 16, 2025
91e3e2c
Updates for using harperfast scope and explicit exit handler
kriszyp Dec 18, 2025
6f970d1
Create methods on separate transaction log classes to differentiate f…
kriszyp Dec 22, 2025
76b0bfe
Fixes for audit record handling for Rocks
kriszyp Dec 22, 2025
4020c69
Use previousVersion as the property name for the reference to the las…
kriszyp Dec 23, 2025
80ec05a
Improve backwards compatibility using RocksDB
kriszyp Dec 30, 2025
b42508a
Simplify integration tests to run the one actual harper process, dete…
kriszyp Jan 2, 2026
836b7b8
Fixes for handling timeouts and different environments
kriszyp Jan 2, 2026
7783a05
Add necessary exports so that certificate management can be performed…
kriszyp Jan 2, 2026
f01c718
Add options for setting config and env vars
kriszyp Jan 3, 2026
ee96c09
Fix password to match current integration test password
kriszyp Jan 4, 2026
ed25fd7
Fixes for transactions and backwards compatibility for loading LMDB
kriszyp Jan 6, 2026
b5e3852
Clean out dead processes so we don't endlessly wait for them
kriszyp Jan 7, 2026
6922974
Fix casing
kriszyp Jan 8, 2026
039896c
Merge remote-tracking branch 'origin/main' into rocksdb
kriszyp Jan 8, 2026
52de851
Merge branch 'add-unit-tests' into rocksdb
kriszyp Jan 13, 2026
647b092
More fixes for RocksDB
kriszyp Jan 13, 2026
7232a4a
Move .mocharc.json to root so it is accessible to the IDE and enable …
kriszyp Jan 13, 2026
96acce4
Fix estimates and getting keys from indexes
kriszyp Jan 15, 2026
8f65d26
Fix some transaction log iteration
kriszyp Jan 15, 2026
3faf46c
More fixes for RocksDB and tests
kriszyp Jan 16, 2026
7fff246
Merge branch 'main' into rocksdb
kriszyp Jan 20, 2026
434d28f
Reset/clear rocksdb transaction after commit or abort
kriszyp Jan 20, 2026
51c003c
Normalizing putSync and attemptLock
kriszyp Jan 20, 2026
17c9c81
Add support for asynchronous before actions in a transaction with Roc…
kriszyp Jan 20, 2026
63a9e30
Fix for setting exclusiveStart/inclusiveEnd with reverse
kriszyp Jan 20, 2026
150d8a3
More consistent use of getSync
kriszyp Jan 20, 2026
6a8e7ef
Better isolated test database
kriszyp Jan 20, 2026
b8ff5a6
More fixes for tests and transactions
kriszyp Jan 21, 2026
e1be29e
Fixes for defaulting to new resource API
kriszyp Jan 21, 2026
78cf69f
Better API test isolation
kriszyp Jan 21, 2026
c977e1c
Merge branch 'add-unit-tests' into rocksdb
kriszyp Jan 24, 2026
6f36c58
Merge branch 'add-unit-tests' into rocksdb
kriszyp Jan 24, 2026
432e504
Try harder to enable source maps
kriszyp Jan 25, 2026
c415a83
Revert "Default to new resource API"
kriszyp Jan 25, 2026
1d94ff5
Resource API updates to for adding save() method, allowing delay savi…
kriszyp Jan 26, 2026
6d95649
Updates for testing update and permission check
kriszyp Jan 26, 2026
fdc430e
Cleanup testing scripts
kriszyp Jan 26, 2026
5be5225
Fixes for reading audit records (for CRDT updates), fixes for transac…
kriszyp Jan 26, 2026
228ecad
Fixes for reading audit records, for transaction timestamps and other…
kriszyp Jan 26, 2026
0cc602a
More fixes for reading audit records, setup flags on request target f…
kriszyp Jan 26, 2026
6fdc2c2
More loadedFromSource to request target
kriszyp Jan 27, 2026
8dae76c
Fixes for store open status and invalidations
kriszyp Jan 27, 2026
cc55827
Add a timeout
kriszyp Jan 27, 2026
23dda4c
Fix missing path for distinguishing subscriptions to databases and ot…
kriszyp Jan 27, 2026
e377539
Be a little more careful with user/usernames for the audit record
kriszyp Jan 27, 2026
94bd3a8
Fix for using async context tracking and setting initial entry for de…
kriszyp Jan 27, 2026
d87b182
Use newer lmdb with normalized tryLock
kriszyp Jan 27, 2026
e7a8966
Cleanup and fixes for tests
kriszyp Jan 27, 2026
7e8b685
Stricter request id handling
kriszyp Jan 27, 2026
8361fa5
Fix path handling for commit callback
kriszyp Jan 27, 2026
cdfb240
Fix test to not send computed property
kriszyp Jan 27, 2026
4607731
Include rocksdb-js as a dependency
kriszyp Jan 27, 2026
44ce527
Reverse order of tests
kriszyp Jan 27, 2026
884a607
Only listen for process exit event on main thread
kriszyp Jan 28, 2026
34e38b7
Add drop method passthrough for index
kriszyp Jan 28, 2026
8c34a29
Fix for errors and replay argument
kriszyp Jan 28, 2026
99bf0aa
Fix for dropping a database
kriszyp Jan 28, 2026
f541162
Stat correct primary store path
cb1kenobi Jan 28, 2026
68bfec6
Add getKeys(), fix removeSync() params
cb1kenobi Jan 28, 2026
fdad943
Fixes for dataLayer tests
kriszyp Jan 28, 2026
9a39e2e
Merge branch 'main' into rocksdb
kriszyp Feb 1, 2026
7c37f6b
Queries should go through static search method
kriszyp Feb 1, 2026
4b3ae75
Remove implicit transactions from static method handler
kriszyp Feb 1, 2026
78707a5
Fixes/updates for properly handling immediate transactions and differ…
kriszyp Feb 3, 2026
186d862
Revert wrapping static methods with transaction
kriszyp Feb 3, 2026
7066565
Fix query for statuses
kriszyp Feb 3, 2026
a812832
Ensure directory exists for database
kriszyp Feb 3, 2026
ce9aeac
Unit test fixes
kriszyp Feb 3, 2026
4d87f15
Update rocksdb-js, use new rocksdb-js db.destroy() and db.status
cb1kenobi Feb 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 23 additions & 16 deletions components/componentLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import { PluginModule } from './PluginModule.ts';
import { platform } from 'node:os';
import { getEnvBuiltInComponents } from './Application.ts';
import { RocksDatabase } from '@harperfast/rocksdb-js';

const CF_ROUTES_DIR = resolvePath(env.get(CONFIG_PARAMS.COMPONENTSROOT));
let loadedComponents = new Map<any, any>();
Expand Down Expand Up @@ -74,7 +75,7 @@
});
}

export const TRUSTED_RESOURCE_PLUGINS = {

Check failure on line 78 in components/componentLoader.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v20)

Exported variable 'TRUSTED_RESOURCE_PLUGINS' has or is using name 'AuthAuditLog' from external module "/home/runner/work/harper/harper/utility/logging/harper_logger" but cannot be named.

Check failure on line 78 in components/componentLoader.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v22)

Exported variable 'TRUSTED_RESOURCE_PLUGINS' has or is using name 'AuthAuditLog' from external module "/home/runner/work/harper/harper/utility/logging/harper_logger" but cannot be named.

Check failure on line 78 in components/componentLoader.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v24)

Exported variable 'TRUSTED_RESOURCE_PLUGINS' has or is using name 'AuthAuditLog' from external module "/home/runner/work/harper/harper/utility/logging/harper_logger" but cannot be named.

Check failure on line 78 in components/componentLoader.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v22)

Exported variable 'TRUSTED_RESOURCE_PLUGINS' has or is using name 'AuthAuditLog' from external module "/home/runner/work/harper/harper/utility/logging/harper_logger" but cannot be named.

Check failure on line 78 in components/componentLoader.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v24)

Exported variable 'TRUSTED_RESOURCE_PLUGINS' has or is using name 'AuthAuditLog' from external module "/home/runner/work/harper/harper/utility/logging/harper_logger" but cannot be named.

Check failure on line 78 in components/componentLoader.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v20)

Exported variable 'TRUSTED_RESOURCE_PLUGINS' has or is using name 'AuthAuditLog' from external module "/home/runner/work/harper/harper/utility/logging/harper_logger" but cannot be named.
REST, // for backwards compatibility with older configs
rest: REST,
graphql: graphqlQueryHandler,
Expand Down Expand Up @@ -116,16 +117,20 @@
return new Promise<void>((resolve, reject) => {
// Create timeout to avoid deadlocks
const timeout = setTimeout(() => {
Status.primaryStore.unlock(componentDirectory, 0);
store.unlock(componentDirectory);
reject(new Error('symlinking harperdb module timed out'));
}, 10_000);
if (
// Get lock for this component
Status.primaryStore.attemptLock(componentDirectory, 0, () => {
clearTimeout(timeout);
resolve();
})
) {

const callback = () => {
clearTimeout(timeout);
resolve();
};
const store = Status.primaryStore;
const lockAcquired = store.tryLock(componentDirectory, callback);

if (!lockAcquired) {
clearTimeout(timeout);
} else {
try {
// validate node_modules directory exists
const nodeModulesDir = join(componentDirectory, 'node_modules');
Expand All @@ -151,7 +156,7 @@
resolve();
} finally {
// finally release the lock
Status.primaryStore.unlock(componentDirectory, 0);
store.unlock(componentDirectory);
}
}
});
Expand All @@ -175,12 +180,14 @@
throw new Error(`Invalid timeout value for ${scope.name}. Expected a number, received: ${typeof timeout}`);
}
let whenResolved, timer;
if (
!Status.primaryStore.attemptLock(scope.name, 0, () => {
clearTimeout(timer);
whenResolved(sequentiallyHandleApplication(scope, plugin));
})
) {
const callback = () => {
clearTimeout(timer);
whenResolved(sequentiallyHandleApplication(scope, plugin));
};
const store = Status.primaryStore;
const lockAcquired = store.tryLock(scope.name, callback);

if (!lockAcquired) {
return new Promise((resolve, reject) => {
whenResolved = resolve;
timer = setTimeout(() => {
Expand All @@ -206,7 +213,7 @@
),
]);
} finally {
Status.primaryStore.unlock(scope.name, 0);
Status.primaryStore.unlock(scope.name);
clearTimeout(loadTimeout);
}
});
Expand Down
3 changes: 2 additions & 1 deletion config/configUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@ const { handleHDBError } = require('../utility/errors/hdbError.js');
const { HTTP_STATUS_CODES, HDB_ERROR_MSGS } = require('../utility/errors/commonErrors.js');
const { server } = require('../server/Server.ts');
const { getBackupDirPath } = require('./configHelpers.ts');
const { PACKAGE_ROOT } = require('../utility/packageUtils');

const { DATABASES_PARAM_CONFIG, CONFIG_PARAMS, CONFIG_PARAM_MAP } = hdbTerms;
const UNINIT_GET_CONFIG_ERR = 'Unable to get config value because config is uninitialized';
const CONFIG_INIT_MSG = 'Config successfully initialized';
const BACKUP_ERR = 'Error backing up config file';
const EMPTY_GET_VALUE = 'Empty parameter sent to getConfigValue';
const DEFAULT_CONFIG_FILE_PATH = path.join(__dirname, '../../static', hdbTerms.HDB_DEFAULT_CONFIG_FILE);
const DEFAULT_CONFIG_FILE_PATH = path.join(PACKAGE_ROOT, 'static', hdbTerms.HDB_DEFAULT_CONFIG_FILE);

const CONFIGURE_SUCCESS_RESPONSE =
'Configuration successfully set. You must restart Harper for new config settings to take effect.';
Expand Down
12 changes: 2 additions & 10 deletions dataLayer/harperBridge/ResourceBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
}

return table.search(
{

Check failure on line 69 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v20)

Argument of type '{ conditions: Conditions; operator: string; limit: number; offset: number; reverse: boolean; select: any; sort: Sort<any>; allowFullScan: true; }' is not assignable to parameter of type 'Id | RequestTarget'.

Check failure on line 69 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v22)

Argument of type '{ conditions: Conditions; operator: string; limit: number; offset: number; reverse: boolean; select: any; sort: Sort<any>; allowFullScan: true; }' is not assignable to parameter of type 'Id | RequestTarget'.

Check failure on line 69 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v24)

Argument of type '{ conditions: Conditions; operator: string; limit: number; offset: number; reverse: boolean; select: any; sort: Sort<any>; allowFullScan: true; }' is not assignable to parameter of type 'Id | RequestTarget'.

Check failure on line 69 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v22)

Argument of type '{ conditions: Conditions; operator: string; limit: number; offset: number; reverse: boolean; select: any; sort: Sort<any>; allowFullScan: true; }' is not assignable to parameter of type 'Id | RequestTarget'.

Check failure on line 69 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v24)

Argument of type '{ conditions: Conditions; operator: string; limit: number; offset: number; reverse: boolean; select: any; sort: Sort<any>; allowFullScan: true; }' is not assignable to parameter of type 'Id | RequestTarget'.

Check failure on line 69 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v20)

Argument of type '{ conditions: Conditions; operator: string; limit: number; offset: number; reverse: boolean; select: any; sort: Sort<any>; allowFullScan: true; }' is not assignable to parameter of type 'Id | RequestTarget'.
conditions: searchObject.conditions,
//set the operator to always be lowercase for later evaluations
operator: searchObject.operator ? searchObject.operator.toLowerCase() : undefined,
Expand Down Expand Up @@ -124,7 +124,7 @@
});
}

async createAttribute(createAttributeObj) {

Check failure on line 127 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v20)

Property 'createAttribute' in type 'ResourceBridge' is not assignable to the same property in base type 'LMDBBridge'.

Check failure on line 127 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v22)

Property 'createAttribute' in type 'ResourceBridge' is not assignable to the same property in base type 'LMDBBridge'.

Check failure on line 127 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Build Harper (Node.js v24)

Property 'createAttribute' in type 'ResourceBridge' is not assignable to the same property in base type 'LMDBBridge'.

Check failure on line 127 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v22)

Property 'createAttribute' in type 'ResourceBridge' is not assignable to the same property in base type 'LMDBBridge'.

Check failure on line 127 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v24)

Property 'createAttribute' in type 'ResourceBridge' is not assignable to the same property in base type 'LMDBBridge'.

Check failure on line 127 in dataLayer/harperBridge/ResourceBridge.ts

View workflow job for this annotation

GitHub Actions / Unit Test (Node.js v20)

Property 'createAttribute' in type 'ResourceBridge' is not assignable to the same property in base type 'LMDBBridge'.
await getTable(createAttributeObj).addAttributes([
{
name: createAttributeObj.attribute,
Expand All @@ -144,15 +144,7 @@
const deleteRecord = (key, record, version): Promise<void> => {
record = { ...record };
delete record[property];
return Table.primaryStore
.ifVersion(key, version, () => Table.primaryStore.put(key, record, version))
.then((success) => {
if (!success) {
// try again with the latest record
const { value: record, version } = Table.primaryStore.getEntry(key);
return deleteRecord(key, record, version);
}
});
return Table.primaryStore.put(key, record, version);
};
for (const { key, value: record, version } of Table.primaryStore.getRange({ start: true, versions: true })) {
resolution = deleteRecord(key, record, version);
Expand Down Expand Up @@ -459,7 +451,7 @@
}

resetReadTxn(schema, table) {
getTable({ schema, table })?.primaryStore.resetReadTxn();
getTable({ schema, table })?.primaryStore.resetReadTxn?.();
}

async deleteAuditLogsBefore(deleteObj) {
Expand Down
2 changes: 1 addition & 1 deletion dataLayer/schemaDescribe.js
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ async function descTable(describeTableObject, attrPerms) {
}
let db_size;
try {
db_size = (await fs.stat(tableObj.primaryStore.env.path)).size;
db_size = (await fs.stat(tableObj.primaryStore.path ?? tableObj.primaryStore.env.path)).size;
} catch (error) {
logger.warn(`unable to get database size`, error);
}
Expand Down
9 changes: 4 additions & 5 deletions integrationTests/apiTests/tests/8_deleteTests.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,6 @@ describe('8. Delete Tests', () => {
})
.expect((r) => assert.equal(r.body.message, "table 'drop_schema.drop_table' successfully created.", r.text))
.expect(200);
await setTimeout(2000);
});

it('Confirm correct attributes', () => {
Expand Down Expand Up @@ -717,15 +716,15 @@ describe('8. Delete Tests', () => {
it('create schema drop_attr', () => {
return req()
.send({ operation: 'create_schema', schema: 'drop_attr' })
.expect((r) => assert.ok(r.body.message.includes('successfully created'), r.text))
.expect(200);
.expect(200)
.expect((r) => assert.ok(r.body.message.includes('successfully created'), r.text));
});

it('create table test', async () => {
await req()
.send({ operation: 'create_table', schema: 'drop_attr', table: 'test', hash_attribute: 'id' })
.expect((r) => assert.ok(r.body.message.includes('successfully created'), r.text))
.expect(200);
.expect(200)
.expect((r) => assert.ok(r.body.message.includes('successfully created'), r.text));
await setTimeout(2000);
});

Expand Down
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,9 @@
"chai": "^6.2.0",
"chai-as-promised": "^8.0.2",
"chai-integer": "^0.1.0",
"eventsource": "^3.0.5",
"fast-glob": "^3.3.3",
"fs-extra": "^11.3.2",
"eventsource": "^3.0.5",
"globals": "^16.5.0",
"intercept-stdout": "0.1.2",
"mkcert": "^3.2.0",
Expand All @@ -138,6 +138,8 @@
"@fastify/compress": "~6.5.0",
"@fastify/cors": "~9.0.1",
"@fastify/static": "~7.0.4",
"@harperfast/extended-iterable": "^1.0.1",
"@harperfast/rocksdb-js": "^0.1.3",
"@turf/area": "6.5.0",
"@turf/boolean-contains": "6.5.0",
"@turf/boolean-disjoint": "6.5.0",
Expand Down Expand Up @@ -172,7 +174,7 @@
"json2csv": "5.0.7",
"jsonata": "1.8.7",
"jsonwebtoken": "9.0.3",
"lmdb": "3.4.4",
"lmdb": "3.5.1",
"lodash": "4.17.21",
"mathjs": "11.12.0",
"micromatch": "^4.0.8",
Expand Down
Loading
Loading