@harperfast/harper 5.2.1 → 5.2.2

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.
Files changed (117) hide show
  1. package/bin/copyDb.ts +19 -7
  2. package/components/deploymentRecorder.ts +102 -11
  3. package/components/operations.js +4 -0
  4. package/config/configUtils.ts +66 -11
  5. package/config/harperConfigEnvVars.ts +114 -17
  6. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  7. package/dist/bin/copyDb.js +20 -7
  8. package/dist/bin/copyDb.js.map +1 -1
  9. package/dist/components/deploymentRecorder.d.ts +6 -0
  10. package/dist/components/deploymentRecorder.js +94 -12
  11. package/dist/components/deploymentRecorder.js.map +1 -1
  12. package/dist/components/operations.js +4 -0
  13. package/dist/components/operations.js.map +1 -1
  14. package/dist/config/configUtils.d.ts +6 -0
  15. package/dist/config/configUtils.js +65 -9
  16. package/dist/config/configUtils.js.map +1 -1
  17. package/dist/config/harperConfigEnvVars.js +108 -16
  18. package/dist/config/harperConfigEnvVars.js.map +1 -1
  19. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  20. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
  21. package/dist/resources/DatabaseTransaction.d.ts +2 -0
  22. package/dist/resources/DatabaseTransaction.js +6 -5
  23. package/dist/resources/DatabaseTransaction.js.map +1 -1
  24. package/dist/resources/Table.d.ts +2 -1
  25. package/dist/resources/Table.js +66 -16
  26. package/dist/resources/Table.js.map +1 -1
  27. package/dist/resources/auditStore.js +27 -1
  28. package/dist/resources/auditStore.js.map +1 -1
  29. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
  30. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
  31. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  32. package/dist/resources/search.d.ts +1 -1
  33. package/dist/resources/search.js +7 -3
  34. package/dist/resources/search.js.map +1 -1
  35. package/dist/server/threads/manageThreads.js +8 -0
  36. package/dist/server/threads/manageThreads.js.map +1 -1
  37. package/dist/sqlEngine/parser/normalizer.js +37 -9
  38. package/dist/sqlEngine/parser/normalizer.js.map +1 -1
  39. package/dist/utility/environment/environmentManager.d.ts +11 -0
  40. package/dist/utility/environment/environmentManager.js +154 -0
  41. package/dist/utility/environment/environmentManager.js.map +1 -1
  42. package/dist/utility/lmdb/environmentUtility.js +2 -1
  43. package/dist/utility/lmdb/environmentUtility.js.map +1 -1
  44. package/npm-shrinkwrap.json +13 -7
  45. package/package.json +2 -2
  46. package/resources/DESIGN.md +1 -0
  47. package/resources/DatabaseTransaction.ts +7 -5
  48. package/resources/Table.ts +77 -16
  49. package/resources/auditStore.ts +32 -1
  50. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
  51. package/resources/search.ts +8 -3
  52. package/server/threads/manageThreads.js +8 -0
  53. package/studio/web/assets/{Chat-aApwhRmz.js → Chat-BMUjPklt.js} +5 -5
  54. package/studio/web/assets/{Chat-aApwhRmz.js.map → Chat-BMUjPklt.js.map} +1 -1
  55. package/studio/web/assets/{FloatingChat-sC0H91n9.js → FloatingChat-Cbghuxe5.js} +5 -5
  56. package/studio/web/assets/{FloatingChat-sC0H91n9.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
  57. package/studio/web/assets/{apiToken-DZ8JhHOI.js → apiToken-CkgTQAqc.js} +2 -2
  58. package/studio/web/assets/{apiToken-DZ8JhHOI.js.map → apiToken-CkgTQAqc.js.map} +1 -1
  59. package/studio/web/assets/{applications-9SEVLIO5.js → applications-WvF4NOTN.js} +13 -13
  60. package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
  61. package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
  62. package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
  63. package/studio/web/assets/index-CDeqVx71.css +1 -0
  64. package/studio/web/assets/index-Sevt3MVx.js +819 -0
  65. package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
  66. package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
  67. package/studio/web/assets/{index.lazy-CN1zq4I4.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
  68. package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
  69. package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
  70. package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
  71. package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
  72. package/studio/web/assets/{notifications-BFAF07xr.js → notifications-Ap84YyQp.js} +2 -2
  73. package/studio/web/assets/{notifications-BFAF07xr.js.map → notifications-Ap84YyQp.js.map} +1 -1
  74. package/studio/web/assets/notifications-vehqyOLM.js +2 -0
  75. package/studio/web/assets/{notifications-CKlYVvVN.js.map → notifications-vehqyOLM.js.map} +1 -1
  76. package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
  77. package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
  78. package/studio/web/assets/{profile-A1zhEdFG.js → profile-DzDpRLHY.js} +2 -2
  79. package/studio/web/assets/{profile-A1zhEdFG.js.map → profile-DzDpRLHY.js.map} +1 -1
  80. package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
  81. package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
  82. package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
  83. package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
  84. package/studio/web/assets/register-BDy01-q3.js +3 -0
  85. package/studio/web/assets/register-BDy01-q3.js.map +1 -0
  86. package/studio/web/assets/register-CQHRwNP4.js +3 -0
  87. package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
  88. package/studio/web/assets/{setComponentFile-SEtBt_GV.js → setComponentFile-D0aPcI3W.js} +2 -2
  89. package/studio/web/assets/{setComponentFile-SEtBt_GV.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
  90. package/studio/web/assets/setup-I15FAF9H.js +3 -0
  91. package/studio/web/assets/{setup-BisINqdH.js.map → setup-I15FAF9H.js.map} +1 -1
  92. package/studio/web/assets/status-BF1eJshJ.js +62 -0
  93. package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
  94. package/studio/web/assets/{swagger-ui-react-CAi_s1PC.js → swagger-ui-react-DwSPXXhl.js} +2 -2
  95. package/studio/web/assets/{swagger-ui-react-CAi_s1PC.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
  96. package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
  97. package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
  98. package/studio/web/assets/{tsMode-DT74tlkM.js → tsMode-Bu51A-VG.js} +2 -2
  99. package/studio/web/assets/{tsMode-DT74tlkM.js.map → tsMode-Bu51A-VG.js.map} +1 -1
  100. package/studio/web/assets/{useEntityRestURL-CGRGc1n7.js → useEntityRestURL-DrV1zMrN.js} +2 -2
  101. package/studio/web/assets/{useEntityRestURL-CGRGc1n7.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
  102. package/studio/web/index.html +6 -7
  103. package/utility/environment/environmentManager.ts +152 -0
  104. package/utility/lmdb/environmentUtility.ts +2 -1
  105. package/studio/web/assets/applications-9SEVLIO5.js.map +0 -1
  106. package/studio/web/assets/index-C8Mv9kHV.css +0 -1
  107. package/studio/web/assets/index-Dy3uDGXb.js +0 -809
  108. package/studio/web/assets/index-Dy3uDGXb.js.map +0 -1
  109. package/studio/web/assets/index.lazy-CN1zq4I4.js +0 -14
  110. package/studio/web/assets/notifications-CKlYVvVN.js +0 -2
  111. package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
  112. package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
  113. package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
  114. package/studio/web/assets/setup-BisINqdH.js +0 -3
  115. package/studio/web/assets/status-BuQoCc7l.js +0 -62
  116. package/studio/web/assets/status-BuQoCc7l.js.map +0 -1
  117. package/studio/web/assets/textarea-DhLMZ3PA.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"environmentUtility.js","sourceRoot":"","sources":["../../../utility/lmdb/environmentUtility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environmentUtility.js","sourceRoot":"","sources":["../../../utility/lmdb/environmentUtility.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "harper",
3
- "version": "5.2.1",
3
+ "version": "5.2.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "harper",
9
- "version": "5.2.1",
9
+ "version": "5.2.2",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@aws-sdk/client-s3": "^3.1012.0",
@@ -30,7 +30,7 @@
30
30
  "@turf/length": "6.5.0",
31
31
  "alasql": "4.17.3",
32
32
  "amaro": "^1.1.8",
33
- "argon2": "0.44.0",
33
+ "argon2": "0.45.1",
34
34
  "asn1js": "3.0.10",
35
35
  "busboy": "^1.6.0",
36
36
  "cbor-x": "1.6.4",
@@ -1937,13 +1937,15 @@
1937
1937
  }
1938
1938
  },
1939
1939
  "node_modules/argon2": {
1940
- "version": "0.44.0",
1940
+ "version": "0.45.1",
1941
+ "resolved": "https://registry.npmjs.org/argon2/-/argon2-0.45.1.tgz",
1942
+ "integrity": "sha512-skm+/WCjkGqCQxF7FG1LuZXM5yvbFjgbfiCGsud2oLgaDhh6b6dbH0b1EkghbM+xx4Bj8Ape+KKgixoIlWZicQ==",
1941
1943
  "hasInstallScript": true,
1942
1944
  "license": "MIT",
1943
1945
  "dependencies": {
1944
1946
  "@phc/format": "^1.0.0",
1945
- "cross-env": "^10.0.0",
1946
- "node-addon-api": "^8.5.0",
1947
+ "cross-env": "^10.1.0",
1948
+ "node-addon-api": "^8.9.0",
1947
1949
  "node-gyp-build": "^4.8.4"
1948
1950
  },
1949
1951
  "engines": {
@@ -1952,6 +1954,8 @@
1952
1954
  },
1953
1955
  "node_modules/argon2/node_modules/node-gyp-build": {
1954
1956
  "version": "4.8.4",
1957
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
1958
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
1955
1959
  "license": "MIT",
1956
1960
  "bin": {
1957
1961
  "node-gyp-build": "bin.js",
@@ -4082,7 +4086,9 @@
4082
4086
  }
4083
4087
  },
4084
4088
  "node_modules/node-addon-api": {
4085
- "version": "8.6.0",
4089
+ "version": "8.9.1",
4090
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.9.1.tgz",
4091
+ "integrity": "sha512-4eUQWVPCUUUiBjLnHS3cXWeC6ryoPUc0U3rP7IuzapoGbzMqd/r6KKO0clr0b+snQhsrueFEhCZDdK+LK7hxKg==",
4086
4092
  "license": "MIT",
4087
4093
  "engines": {
4088
4094
  "node": "^18 || ^20 || >= 21"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@harperfast/harper",
3
3
  "description": "Harper is an open-source Node.js performance platform that unifies database, cache, application, and messaging layers into one in-memory process.",
4
- "version": "5.2.1",
4
+ "version": "5.2.2",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://harper.fast",
7
7
  "bugs": {
@@ -192,7 +192,7 @@
192
192
  "@turf/length": "6.5.0",
193
193
  "alasql": "4.17.3",
194
194
  "amaro": "^1.1.8",
195
- "argon2": "0.44.0",
195
+ "argon2": "0.45.1",
196
196
  "asn1js": "3.0.10",
197
197
  "busboy": "^1.6.0",
198
198
  "cbor-x": "1.6.4",
@@ -94,6 +94,7 @@ One giant `makeTable()` factory that returns a `TableResource extends Resource`
94
94
  | How does a URL path map to a Resource? | `Resources.ts → getMatch` (exact/prefix fast path) then `matchParamRoute` (parameterised routes); see "Path routing" below |
95
95
  | How does HNSW keep the graph connected on delete? | `indexes/HierarchicalNavigableSmallWorld.ts → index()` delete path: zero-degree orphans reindexed via `needsReindexing`; severed multi-node islands detected and reconnected by `repairSeveredNeighbors` (#1712) |
96
96
  | How is a filter applied _during_ a vector search? | Predicate-aware traversal (#1241): `search.ts → executeConditions` composes companion AND conditions with request `vectorFilter` / `rowFilter` predicates into one `(primaryKey) => boolean` (`composeRecordFilter`) and passes it to `HierarchicalNavigableSmallWorld.search(cond, ctx, filter)`. The filter gates result admission at layer 0 only (routing ignores it, ACORN-style); a visit budget (`filterExpansion`) bounds the under-filled/selective case. Very selective _condition_ filters are instead diverted to the exact brute-force path by the query planner's `estimateCountAsSort` ordering. |
97
+ | How does post-ordering resolve vector distances safely? | Each comparator owns its `Sort`, passes it directly to the custom-index resolver, and caches distances by that immutable per-query sort object. |
97
98
  | How is application row filtering applied? | Authorization admission happens in the resource operation before query work. The legacy `allow*` hook, when armed by the protocol, is evaluated once with its historical receiver semantics; overriding it never changes its scope. An operation override may add indexed conditions and/or attach the JavaScript-only synchronous `target.rowFilter(record, context)`. `Table.search` composes it with query filters and rechecks the final materialized cache/source record. `SubscriptionRequest.rowFilter` covers full-row events; `eventFilter(event, context)` explicitly handles tombstones/messages/raw events. Prefer indexed conditions because an opaque predicate may inspect every admitted candidate and `limit` applies after filtering. |
98
99
 
99
100
  **QUERY admission uses the body projection.** `Resource.transactional` resolves an asynchronous HTTP QUERY body before resource resolution, recursively clones away client-supplied `checkPermission`, and copies the body's `select` onto the operation admission target before `allowRead`. After authorization, `Resource.query` transfers only the narrowed projection to the body target. This ensures a body-only relationship select is checked before `Table.search`; permission-control fields from QUERY data must never reach a search target.
@@ -335,6 +335,7 @@ export class DatabaseTransaction implements Transaction {
335
335
  // link with no writes that is being read in a loop would otherwise masquerade as write activity and
336
336
  // keep a write-holding head immortal.
337
337
  declare writeTimeout: number;
338
+ timeoutBudget = 0;
338
339
  validated = 0;
339
340
  timestamp = 0;
340
341
  retries = 0;
@@ -385,7 +386,7 @@ export class DatabaseTransaction implements Transaction {
385
386
  // `writes`/`next` are checked inline first: this is a hot path and the dominant case is a
386
387
  // single-store transaction that has never written.
387
388
  if ((this.writes.length === 0 && !this.next) || this.open !== TRANSACTION_STATE.OPEN || !this.hasPendingWrites()) {
388
- this.timeout = txnExpiration;
389
+ this.timeout = Math.max(txnExpiration, this.timeoutBudget);
389
390
  }
390
391
  if (this.transaction) {
391
392
  if ((this.transaction as any).openTimer) (this.transaction as any).openTimer = 0;
@@ -578,10 +579,10 @@ export class DatabaseTransaction implements Transaction {
578
579
  // A write is activity: it re-arms the idle limit on this link even though the reads it
579
580
  // performs no longer do (see getReadTxn), so a transaction that keeps writing stays alive
580
581
  // and only an idle one holding write intents is reaped.
581
- this.timeout = txnExpiration;
582
+ this.timeout = Math.max(txnExpiration, this.timeoutBudget ?? 0);
582
583
  // Independent write-recency signal for chainStillActive (see the field comment) — reads never
583
584
  // touch this, only writes do.
584
- this.writeTimeout = txnExpiration;
585
+ this.writeTimeout = this.timeout;
585
586
  this.linkWrite(operation);
586
587
  this.writes.push(operation);
587
588
  if (!operation.deferSave) {
@@ -1107,6 +1108,7 @@ export interface CommitResolution {
1107
1108
  next?: CommitResolution;
1108
1109
  }
1109
1110
  export interface Transaction {
1111
+ timeoutBudget?: number;
1110
1112
  commit(options): MaybePromise<CommitResolution>;
1111
1113
  abort?(): any;
1112
1114
  }
@@ -1190,7 +1192,7 @@ function startMonitoringTxns() {
1190
1192
  // receives them, and a multi-store transaction can be writing database B while this
1191
1193
  // head only reads A). The logical transaction is still active, so re-arm this link
1192
1194
  // rather than aborting the whole chain out from under it.
1193
- txn.timeout = txnExpiration;
1195
+ txn.timeout = Math.max(txnExpiration, txn.timeoutBudget ?? 0);
1194
1196
  } else if (txn.hasPendingWrites() && !txn.sourceApply && !txn.isReplay) {
1195
1197
  // Abort and surface an error rather than force-committing a partial write set: silently
1196
1198
  // committing on the application's behalf breaks atomicity and can leave orphaned
@@ -1226,7 +1228,7 @@ function startMonitoringTxns() {
1226
1228
  } catch (error) {
1227
1229
  harperLogger.debug?.(`Error committing timed out transaction: ${error.message}`);
1228
1230
  }
1229
- txn.timeout = txnExpiration;
1231
+ txn.timeout = Math.max(txnExpiration, txn.timeoutBudget ?? 0);
1230
1232
  }
1231
1233
  } else {
1232
1234
  txn.timeout -= txnExpiration;
@@ -389,6 +389,7 @@ export function makeTable(options) {
389
389
  if (!attributes) attributes = [];
390
390
  if (!properties) properties = projectAttributesToProperties(attributes);
391
391
  const updateRecord = recordUpdater(primaryStore, tableId, auditStore);
392
+ let warnedNullSourcePut = false; // latched: one warn per table per worker (see _writeUpdate)
392
393
  let sourceLoad: any; // if a source has a load function (replicator), record it here
393
394
  let hasSourceGet: any;
394
395
  let primaryKeyAttribute: Attribute | undefined;
@@ -2236,6 +2237,22 @@ export function makeTable(options) {
2236
2237
  const context = this.getContext();
2237
2238
  const transaction = txnForContext(context);
2238
2239
  checkValidId(id);
2240
+ if (fullUpdate && recordUpdate == null && options?.isNotification) {
2241
+ // A source/replication-applied put must carry the record; these applies skip record
2242
+ // validation, so this is the one path a nullish full update reaches (isNotification scopes
2243
+ // this to the apply dispatcher, not instance flows that fill from #changes). Applying it
2244
+ // stores nothing and mints an audit-only entry misrepresenting the write (#2153) — skip it;
2245
+ // a redelivery re-skips and a later real write supersedes.
2246
+ logger.trace?.('Skipped valueless source put', tableName, id, options?.nodeId);
2247
+ if (!warnedNullSourcePut) {
2248
+ warnedNullSourcePut = true;
2249
+ logger.warn?.(
2250
+ `Skipping a source-applied put with no record content for ${tableName} id ${id} from node ${options?.nodeId}`,
2251
+ new Error('valueless source put')
2252
+ );
2253
+ }
2254
+ return;
2255
+ }
2239
2256
  const entry = this.#entry ?? primaryStore.getEntry(id, { transaction: transaction.getReadTxn() });
2240
2257
  const writeToSource = () => {
2241
2258
  if (!(this.constructor as any).source || (context as any)?.source) return;
@@ -3346,6 +3363,11 @@ export function makeTable(options) {
3346
3363
  const operator = target.operator;
3347
3364
  if (conditions.length > 0 || operator) conditions = prepareConditions(conditions, operator);
3348
3365
  const sort = typeof target.sort === 'object' && target.sort;
3366
+ for (let order = sort; order; order = order.next) {
3367
+ if (typeof order.attribute !== 'string') continue;
3368
+ const customIndex = indices[order.attribute]?.customIndex;
3369
+ if (customIndex?.exactDistance) customIndex.exactDistance(order, null);
3370
+ }
3349
3371
  let postOrdering;
3350
3372
  if (sort) {
3351
3373
  // TODO: Support index-assisted sorts of unions, which will require potentially recursively adding/modifying an order aligned condition and be able to recursively undo it if necessary
@@ -3393,9 +3415,12 @@ export function makeTable(options) {
3393
3415
  if (sort.next) {
3394
3416
  postOrdering = {
3395
3417
  dbOrderedAttribute: sort.attribute,
3418
+ dbOrderedSort: sort,
3396
3419
  attribute: sort.next.attribute,
3397
3420
  descending: sort.next.descending,
3398
3421
  next: sort.next.next,
3422
+ target: (sort.next as any).target,
3423
+ distance: (sort.next as any).distance,
3399
3424
  };
3400
3425
  }
3401
3426
  } else {
@@ -3477,7 +3502,8 @@ export function makeTable(options) {
3477
3502
  ensure_loaded,
3478
3503
  true,
3479
3504
  boundRowFilter,
3480
- includeExpired
3505
+ includeExpired,
3506
+ postOrdering
3481
3507
  );
3482
3508
  let results = TableResource.transformToOrderedSelect(
3483
3509
  entries,
@@ -3538,10 +3564,9 @@ export function makeTable(options) {
3538
3564
  function createComparator(order: Sort) {
3539
3565
  const nextComparator = order.next && createComparator(order.next);
3540
3566
  const descending = order.descending;
3541
- (context as any).sort = order; // make sure this is set to the current sort order
3542
3567
  return (entryA, entryB) => {
3543
- const a = getAttributeValue(entryA, order.attribute, context);
3544
- const b = getAttributeValue(entryB, order.attribute, context);
3568
+ const a = getAttributeValue(entryA, order.attribute, context, order);
3569
+ const b = getAttributeValue(entryB, order.attribute, context, order);
3545
3570
  const diff = descending
3546
3571
  ? compareKeys(convertToComparableKeys(b), convertToComparableKeys(a))
3547
3572
  : compareKeys(convertToComparableKeys(a), convertToComparableKeys(b));
@@ -3582,7 +3607,12 @@ export function makeTable(options) {
3582
3607
  // if the index has already provided the first order of sorting, we only need to sort
3583
3608
  // within each grouping
3584
3609
  if (dbOrderedAttribute) {
3585
- const groupingValue = getAttributeValue(entry, dbOrderedAttribute, context);
3610
+ const groupingValue = getAttributeValue(
3611
+ entry,
3612
+ dbOrderedAttribute,
3613
+ context,
3614
+ (sort as any).dbOrderedSort
3615
+ );
3586
3616
  if (firstEntry) {
3587
3617
  firstEntry = false;
3588
3618
  lastGroupingValue = groupingValue;
@@ -3681,6 +3711,7 @@ export function makeTable(options) {
3681
3711
  * authorization verdict can't be made on bytes that differ from what the caller receives.
3682
3712
  * @param includeExpired when true, a row past its TTL but not yet swept is treated as a live
3683
3713
  * match rather than gone (used by the SQL engine's UPDATE/DELETE row-finder).
3714
+ * @param sort post-ordering owned by this selection
3684
3715
  * @returns
3685
3716
  */
3686
3717
  static transformEntryForSelect(
@@ -3691,7 +3722,8 @@ export function makeTable(options) {
3691
3722
  ensure_loaded?,
3692
3723
  canSkip?,
3693
3724
  rowFilter?,
3694
- includeExpired?
3725
+ includeExpired?,
3726
+ sort?
3695
3727
  ) {
3696
3728
  let checkLoaded;
3697
3729
  if (
@@ -3767,7 +3799,7 @@ export function makeTable(options) {
3767
3799
  swrResource.setRecord(record);
3768
3800
  const loadingFromSource = ensureLoadedFromSource(source, entry.key ?? entry, entry, context, swrResource);
3769
3801
  if (loadingFromSource?.then) {
3770
- return loadingFromSource.then(transform);
3802
+ return loadingFromSource.then(transform.bind(this));
3771
3803
  }
3772
3804
  }
3773
3805
  }
@@ -3797,7 +3829,7 @@ export function makeTable(options) {
3797
3829
  value = filterMap.fromRecord?.(record);
3798
3830
  }
3799
3831
  } else {
3800
- value = resolver(record, context, entry, true);
3832
+ value = resolver(record, context, entry, true, sort);
3801
3833
  }
3802
3834
  const handleResolvedValue = (value: any) => {
3803
3835
  if (resolver.directReturn) return callback(value, attribute_name);
@@ -3819,7 +3851,11 @@ export function makeTable(options) {
3819
3851
  context,
3820
3852
  targetReadTxn,
3821
3853
  filterMap,
3822
- ensure_loaded
3854
+ ensure_loaded,
3855
+ undefined,
3856
+ undefined,
3857
+ undefined,
3858
+ typeof attribute.sort === 'object' && attribute.sort
3823
3859
  ));
3824
3860
  if (Array.isArray(value)) {
3825
3861
  const results = [];
@@ -4871,8 +4907,24 @@ export function makeTable(options) {
4871
4907
  $updatedTime: (object, context, entry) => entry.version,
4872
4908
  $expiresAt: (object, context, entry) => entry.expiresAt,
4873
4909
  $record: (object, context, entry) => (entry ? { value: object } : object),
4874
- $distance: (object, context, entry) => {
4875
- return entry && (entry.distance ?? context?.vectorDistances?.get(entry));
4910
+ $distance: (object, context, entry, returnEntry, sort) => {
4911
+ if (!entry) return;
4912
+ if (entry.distance !== undefined) return entry.distance;
4913
+ let distanceSort = sort;
4914
+ while (
4915
+ distanceSort &&
4916
+ (typeof distanceSort.attribute !== 'string' ||
4917
+ !Array.isArray(distanceSort.target) ||
4918
+ !indices[distanceSort.attribute]?.customIndex?.propertyResolver)
4919
+ )
4920
+ distanceSort = distanceSort.next;
4921
+ if (!distanceSort) return;
4922
+ const customIndex = indices[distanceSort.attribute].customIndex;
4923
+ const vector = object[distanceSort.attribute];
4924
+ const distanceCache = context?.vectorDistanceCaches?.get(distanceSort);
4925
+ const cachedDistance = distanceCache?.get(entry) ?? distanceCache?.get(vector);
4926
+ if (cachedDistance !== undefined) return cachedDistance;
4927
+ return customIndex.propertyResolver(vector, context, entry, distanceSort);
4876
4928
  },
4877
4929
  };
4878
4930
  for (const attribute of this.attributes) {
@@ -5020,9 +5072,14 @@ export function makeTable(options) {
5020
5072
  attribute.resolve.directReturn = true;
5021
5073
  } else if (indices[attribute.name]?.customIndex?.propertyResolver) {
5022
5074
  const customIndex = indices[attribute.name].customIndex;
5023
- propertyResolvers[attribute.name] = (object, context, entry) => {
5075
+ propertyResolvers[attribute.name] = (object, context, entry, returnEntry, sort, comparing) => {
5024
5076
  const value = object[attribute.name];
5025
- return customIndex.propertyResolver(value, context, entry);
5077
+ const sortAttribute = sort?.attribute;
5078
+ const resolvesSort =
5079
+ comparing === true &&
5080
+ (sortAttribute === attribute.name ||
5081
+ (Array.isArray(sortAttribute) && sortAttribute[sortAttribute.length - 1] === attribute.name));
5082
+ return customIndex.propertyResolver(value, context, entry, resolvesSort ? sort : undefined);
5026
5083
  };
5027
5084
  propertyResolvers[attribute.name].directReturn = true;
5028
5085
  }
@@ -5557,6 +5614,7 @@ export function makeTable(options) {
5557
5614
  // Inherit never-drop-on-conflict so a source-applied multi-store transaction doesn't
5558
5615
  // drop the canonical write when a secondary store hits a transient conflict.
5559
5616
  transaction.next.sourceApply = transaction.sourceApply;
5617
+ transaction.next.timeoutBudget = transaction.timeoutBudget;
5560
5618
  // Inherit the replay marker so a multi-table replay transaction skips validation on
5561
5619
  // every store, not just the first (harper#1316).
5562
5620
  transaction.next.isReplay = transaction.isReplay;
@@ -5588,7 +5646,7 @@ export function makeTable(options) {
5588
5646
  return transaction;
5589
5647
  }
5590
5648
  }
5591
- function getAttributeValue(entry, attribute_name, context) {
5649
+ function getAttributeValue(entry, attribute_name, context, sort?) {
5592
5650
  if (!entry) {
5593
5651
  return;
5594
5652
  }
@@ -5600,14 +5658,17 @@ export function makeTable(options) {
5600
5658
  for (let i = 0, l = attribute_name.length; i < l; i++) {
5601
5659
  const attribute = attribute_name[i];
5602
5660
  const resolver = resolvers?.[attribute];
5603
- value = resolver && value ? resolver(value, context, entry) : value?.[attribute];
5661
+ value =
5662
+ resolver && value
5663
+ ? resolver(value, context, entry, false, i === l - 1 ? sort : undefined, true)
5664
+ : value?.[attribute];
5604
5665
  entry = null; // can't use this in the nested object
5605
5666
  resolvers = resolver?.definition?.tableClass?.propertyResolvers;
5606
5667
  }
5607
5668
  return value;
5608
5669
  }
5609
5670
  const resolver = propertyResolvers[attribute_name];
5610
- return resolver ? resolver(record, context, entry) : record[attribute_name];
5671
+ return resolver ? resolver(record, context, entry, false, sort, true) : record[attribute_name];
5611
5672
  }
5612
5673
  function transformToEntries(ids, select, context, readTxn, filters?) {
5613
5674
  // TODO: Test and ensure that we break out of these loops when a connection is lost
@@ -111,6 +111,10 @@ const MAX_DELETES_PER_CLEANUP = 1000;
111
111
  // setTimeout silently falls back to 1ms for delays past this, which would turn the backoff into the
112
112
  // hot loop it is meant to avoid — a `logging.auditRetention` over ~248 days reaches it via retention/10
113
113
  const MAX_CLEANUP_DELAY = 2 ** 31 - 1;
114
+ // separate mint/read latches so a legacy-entry read warn can't mask the still-minting signal;
115
+ // mint latch keyed per (table, type) so one entry type can't silence another's producer stack
116
+ const warnedBodylessMints = new Set<string>();
117
+ const warnedBodylessTables = new Set<number>();
114
118
  const FLOAT_TARGET = new Float64Array(1);
115
119
  const FLOAT_BUFFER = new Uint8Array(FLOAT_TARGET.buffer);
116
120
  let DEFAULT_AUDIT_CLEANUP_DELAY = 10000; // default delay of 10 seconds
@@ -416,10 +420,24 @@ export function createAuditEntry(auditRecord: AuditRecord, start = 0) {
416
420
  originatingOperation,
417
421
  previousAdditionalAuditRefs,
418
422
  } = auditRecord;
419
- const action = EVENT_TYPES[type];
423
+ let action = EVENT_TYPES[type];
420
424
  if (!action) {
421
425
  throw new Error(`Invalid audit entry type ${type}`);
422
426
  }
427
+ if (action & (HAS_RECORD | HAS_PARTIAL_RECORD) && !encodedRecord?.length) {
428
+ // Readers decode the remainder whenever HAS_RECORD is set, so an audit-only commit minted with
429
+ // no body must not advertise one (#2153). HAS_PARTIAL_RECORD is kept: it also drives
430
+ // record-history reconstruction, and the read path tolerates the empty body.
431
+ if (!warnedBodylessMints.has(`${tableId}:${type}`)) {
432
+ warnedBodylessMints.add(`${tableId}:${type}`);
433
+ // the Error's stack identifies which write path delivered the missing value
434
+ harperLogger.warn(
435
+ `Audit entry (${type}) for record ${recordId} in table ${tableId} has no record body`,
436
+ new Error('bodyless audit mint')
437
+ );
438
+ }
439
+ action &= ~HAS_RECORD;
440
+ }
423
441
  let position = start + 1;
424
442
  if (previousVersion) {
425
443
  if (previousVersion > 1) ENTRY_DATAVIEW.setFloat64(start, previousVersion);
@@ -621,6 +639,19 @@ export function readAuditEntry(buffer: Uint8Array, start = 0, end = undefined):
621
639
  },
622
640
  getValue(store, fullRecord?, auditTime?) {
623
641
  if (action & HAS_RECORD || (action & HAS_PARTIAL_RECORD && !fullRecord)) {
642
+ if (decoder.position >= (end ?? buffer.byteLength)) {
643
+ // Entry advertises a record but has no body (minted before #2153): nothing to decode, and
644
+ // return undefined rather than falling through — this branch means the caller asked for the
645
+ // entry's own content (full-record consumers with an auditTime never enter it for partials
646
+ // and still reconstruct below). Warn latched per table: this getter runs inside range scans.
647
+ if (!warnedBodylessTables.has(tableId)) {
648
+ warnedBodylessTables.add(tableId);
649
+ harperLogger.warn(
650
+ `Audit entry (${EVENT_TYPES[action & 0xf]}) for table ${tableId} advertises a record but has no body; treating as having no record`
651
+ );
652
+ }
653
+ return;
654
+ }
624
655
  if (!value) {
625
656
  value = decodeFromDatabase(
626
657
  // the audit value has no on-disk timestamp/metadata prefix (the audit entry carries