@harperfast/harper 5.0.28 → 5.0.29
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/config-root.schema.json +4 -0
- package/dist/resources/RecordEncoder.d.ts +11 -0
- package/dist/resources/RecordEncoder.js +57 -4
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/Table.js +22 -0
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.js +5 -1
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/databases.js +9 -9
- package/dist/resources/databases.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +1 -0
- package/dist/utility/hdbTerms.js +1 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/package.json +2 -2
- package/resources/RecordEncoder.ts +56 -3
- package/resources/Table.ts +23 -0
- package/resources/auditStore.ts +4 -1
- package/resources/databases.ts +10 -10
- package/static/defaultConfig.yaml +1 -0
- package/studio/web/assets/{index-BJjklK4V.js → index-BFZovM68.js} +5 -5
- package/studio/web/assets/{index-BJjklK4V.js.map → index-BFZovM68.js.map} +1 -1
- package/studio/web/assets/{index.lazy-DPTCQseJ.js → index.lazy-CTCt7C_C.js} +2 -2
- package/studio/web/assets/{index.lazy-DPTCQseJ.js.map → index.lazy-CTCt7C_C.js.map} +1 -1
- package/studio/web/assets/{profile-D77bwywc.js → profile-Dy4qT0vm.js} +2 -2
- package/studio/web/assets/{profile-D77bwywc.js.map → profile-Dy4qT0vm.js.map} +1 -1
- package/studio/web/assets/{status-ChxVrrli.js → status-DQBR5qBd.js} +2 -2
- package/studio/web/assets/{status-ChxVrrli.js.map → status-DQBR5qBd.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/utility/hdbTerms.ts +1 -0
package/resources/auditStore.ts
CHANGED
|
@@ -552,7 +552,10 @@ export function readAuditEntry(buffer: Uint8Array, start = 0, end = undefined):
|
|
|
552
552
|
if (action & HAS_RECORD || (action & HAS_PARTIAL_RECORD && !fullRecord)) {
|
|
553
553
|
if (!value) {
|
|
554
554
|
value = decodeFromDatabase(
|
|
555
|
-
|
|
555
|
+
// the audit value has no on-disk timestamp/metadata prefix (the audit entry carries
|
|
556
|
+
// its own time), so skip the prefix heuristic — otherwise a classic record whose
|
|
557
|
+
// structure-id byte is 66 (0x42) is misread as a rocksdb timestamp. See RecordEncoder.decode.
|
|
558
|
+
() => store.decoder.decode(buffer.subarray(decoder.position, end), { noMetadata: true }),
|
|
556
559
|
store.rootStore
|
|
557
560
|
);
|
|
558
561
|
}
|
package/resources/databases.ts
CHANGED
|
@@ -22,7 +22,7 @@ import harperLogger from '../utility/logging/harper_logger.js';
|
|
|
22
22
|
const { forComponent } = harperLogger;
|
|
23
23
|
import * as manageThreads from '../server/threads/manageThreads.js';
|
|
24
24
|
import { openAuditStore, readAuditEntry, createAuditEntry, type AuditRecord } from './auditStore.ts';
|
|
25
|
-
import { handleLocalTimeForGets } from './RecordEncoder.ts';
|
|
25
|
+
import { handleLocalTimeForGets, IndexRecordEncoder } from './RecordEncoder.ts';
|
|
26
26
|
import { deleteRootBlobPathsForDB } from './blob.ts';
|
|
27
27
|
import { CUSTOM_INDEXES } from './indexes/customIndexes.ts';
|
|
28
28
|
import { OpenDBIObject } from '../utility/lmdb/OpenDBIObject.js';
|
|
@@ -134,15 +134,9 @@ function openRocksDatabase(path: string, options: RocksDatabaseOptions & { dupSo
|
|
|
134
134
|
const writeBufferManagerAllowStall = envGet(CONFIG_PARAMS.STORAGE_ROCKS_WRITEBUFFERMANAGERALLOWSTALL);
|
|
135
135
|
RocksDatabase.config({
|
|
136
136
|
blockCacheSize,
|
|
137
|
-
...(typeof writeBufferManagerSize === 'number' && writeBufferManagerSize > 0
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
...(typeof writeBufferManagerCostToCache === 'boolean'
|
|
141
|
-
? { writeBufferManagerCostToCache }
|
|
142
|
-
: {}),
|
|
143
|
-
...(typeof writeBufferManagerAllowStall === 'boolean'
|
|
144
|
-
? { writeBufferManagerAllowStall }
|
|
145
|
-
: {}),
|
|
137
|
+
...(typeof writeBufferManagerSize === 'number' && writeBufferManagerSize > 0 ? { writeBufferManagerSize } : {}),
|
|
138
|
+
...(typeof writeBufferManagerCostToCache === 'boolean' ? { writeBufferManagerCostToCache } : {}),
|
|
139
|
+
...(typeof writeBufferManagerAllowStall === 'boolean' ? { writeBufferManagerAllowStall } : {}),
|
|
146
140
|
});
|
|
147
141
|
if (!existsSync(path)) {
|
|
148
142
|
mkdirSync(path, { recursive: true });
|
|
@@ -824,6 +818,12 @@ function openIndex(dbiKey: string, rootStore: RootDatabaseKind, attribute: any)
|
|
|
824
818
|
const objectStorage =
|
|
825
819
|
attribute.isPrimaryKey || (attribute.indexed.type && CUSTOM_INDEXES[attribute.indexed.type]?.useObjectStore);
|
|
826
820
|
const dbiInit = createOpenDBIObject(!objectStorage, objectStorage);
|
|
821
|
+
// Custom-index object stores (e.g. HNSW vector graphs) must keep writing typed structs regardless
|
|
822
|
+
// of the storage.randomAccessFields opt-out — their internal nodes are mutated in place and depend
|
|
823
|
+
// on random-access struct encoding (see IndexRecordEncoder).
|
|
824
|
+
if (attribute.indexed?.type && CUSTOM_INDEXES[attribute.indexed.type]?.useObjectStore) {
|
|
825
|
+
dbiInit.encoder = { Encoder: IndexRecordEncoder };
|
|
826
|
+
}
|
|
827
827
|
let dbi:
|
|
828
828
|
| LMDBDatabase
|
|
829
829
|
| (RocksDatabase & {
|