@harperfast/harper-pro 5.0.6 → 5.0.8

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 (89) hide show
  1. package/core/components/EntryHandler.ts +2 -4
  2. package/core/components/OptionsWatcher.ts +9 -1
  3. package/core/components/Scope.ts +1 -1
  4. package/core/components/componentLoader.ts +4 -11
  5. package/core/components/requestRestart.ts +2 -17
  6. package/core/package-lock.json +67 -975
  7. package/core/resources/RecordEncoder.ts +9 -1
  8. package/core/resources/Table.ts +30 -14
  9. package/core/resources/databases.ts +1 -0
  10. package/core/resources/graphql.ts +168 -158
  11. package/core/resources/indexes/HierarchicalNavigableSmallWorld.ts +3 -14
  12. package/core/resources/indexes/vector.ts +0 -17
  13. package/core/resources/loadEnv.ts +16 -20
  14. package/core/resources/login.ts +3 -4
  15. package/core/resources/roles.ts +65 -60
  16. package/core/security/auth.ts +14 -15
  17. package/core/security/keys.js +1 -1
  18. package/core/server/DurableSubscriptionsSession.ts +1 -0
  19. package/core/server/REST.ts +11 -10
  20. package/core/server/fastifyRoutes.ts +29 -30
  21. package/core/server/graphqlQuerying.ts +3 -4
  22. package/core/server/http.ts +1 -175
  23. package/core/server/mqtt.ts +2 -8
  24. package/core/server/threads/threadServer.js +2 -30
  25. package/core/server/throttle.ts +0 -18
  26. package/core/utility/environment/environmentManager.js +4 -10
  27. package/core/utility/hdbTerms.ts +0 -1
  28. package/dist/core/components/EntryHandler.js +2 -4
  29. package/dist/core/components/EntryHandler.js.map +1 -1
  30. package/dist/core/components/OptionsWatcher.js +8 -1
  31. package/dist/core/components/OptionsWatcher.js.map +1 -1
  32. package/dist/core/components/Scope.js +1 -1
  33. package/dist/core/components/Scope.js.map +1 -1
  34. package/dist/core/components/componentLoader.js +3 -11
  35. package/dist/core/components/componentLoader.js.map +1 -1
  36. package/dist/core/components/requestRestart.js +1 -12
  37. package/dist/core/components/requestRestart.js.map +1 -1
  38. package/dist/core/resources/RecordEncoder.js +10 -1
  39. package/dist/core/resources/RecordEncoder.js.map +1 -1
  40. package/dist/core/resources/Table.js +31 -16
  41. package/dist/core/resources/Table.js.map +1 -1
  42. package/dist/core/resources/databases.js.map +1 -1
  43. package/dist/core/resources/graphql.js +12 -5
  44. package/dist/core/resources/graphql.js.map +1 -1
  45. package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js +2 -14
  46. package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  47. package/dist/core/resources/indexes/vector.js +0 -14
  48. package/dist/core/resources/indexes/vector.js.map +1 -1
  49. package/dist/core/resources/loadEnv.js +17 -20
  50. package/dist/core/resources/loadEnv.js.map +1 -1
  51. package/dist/core/resources/login.js +4 -4
  52. package/dist/core/resources/login.js.map +1 -1
  53. package/dist/core/resources/roles.js +68 -64
  54. package/dist/core/resources/roles.js.map +1 -1
  55. package/dist/core/security/auth.js +15 -17
  56. package/dist/core/security/auth.js.map +1 -1
  57. package/dist/core/security/keys.js +1 -1
  58. package/dist/core/security/keys.js.map +1 -1
  59. package/dist/core/server/DurableSubscriptionsSession.js +2 -0
  60. package/dist/core/server/DurableSubscriptionsSession.js.map +1 -1
  61. package/dist/core/server/REST.js +11 -11
  62. package/dist/core/server/REST.js.map +1 -1
  63. package/dist/core/server/fastifyRoutes.js +29 -30
  64. package/dist/core/server/fastifyRoutes.js.map +1 -1
  65. package/dist/core/server/graphqlQuerying.js +4 -5
  66. package/dist/core/server/graphqlQuerying.js.map +1 -1
  67. package/dist/core/server/http.js +0 -179
  68. package/dist/core/server/http.js.map +1 -1
  69. package/dist/core/server/mqtt.js +3 -5
  70. package/dist/core/server/mqtt.js.map +1 -1
  71. package/dist/core/server/threads/threadServer.js +2 -26
  72. package/dist/core/server/threads/threadServer.js.map +1 -1
  73. package/dist/core/server/throttle.js +0 -17
  74. package/dist/core/server/throttle.js.map +1 -1
  75. package/dist/core/utility/environment/environmentManager.js +4 -9
  76. package/dist/core/utility/environment/environmentManager.js.map +1 -1
  77. package/dist/core/utility/hdbTerms.js +0 -1
  78. package/dist/core/utility/hdbTerms.js.map +1 -1
  79. package/dist/replication/replicationConnection.js +13 -6
  80. package/dist/replication/replicationConnection.js.map +1 -1
  81. package/dist/security/certificate.js +1 -1
  82. package/dist/security/certificate.js.map +1 -1
  83. package/npm-shrinkwrap.json +58 -978
  84. package/package.json +2 -3
  85. package/replication/replicationConnection.ts +24 -18
  86. package/security/certificate.ts +1 -1
  87. package/studio/web/assets/{index-qbLPhOzw.js → index-BftP-yQ8.js} +2 -2
  88. package/studio/web/assets/{index-qbLPhOzw.js.map → index-BftP-yQ8.js.map} +1 -1
  89. package/studio/web/index.html +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harperfast/harper-pro",
3
- "version": "5.0.6",
3
+ "version": "5.0.8",
4
4
  "description": "Harper is a distributed database, caching service, streaming broker, and application development platform focused on performance and ease of use.",
5
5
  "keywords": [
6
6
  "database",
@@ -125,7 +125,7 @@
125
125
  "@fastify/autoload": "^6.3.1",
126
126
  "@fastify/compress": "^8.3.1",
127
127
  "@fastify/cors": "^11.2.0",
128
- "@fastify/static": "^9.0.0",
128
+ "@fastify/static": "^9.1.3",
129
129
  "@harperfast/extended-iterable": "^1.0.1",
130
130
  "@harperfast/rocksdb-js": "^1.1.0",
131
131
  "@turf/area": "6.5.0",
@@ -201,7 +201,6 @@
201
201
  },
202
202
  "devDependencies": {
203
203
  "@harperdb/code-guidelines": "^0.0.6",
204
- "@harperfast/integration-testing": "^0.2.0",
205
204
  "@types/fs-extra": "^11.0.4",
206
205
  "@types/gunzip-maybe": "^1.4.3",
207
206
  "@types/jsonwebtoken": "^9.0.10",
@@ -1542,6 +1542,7 @@ export function replicateOverWS(ws: WebSocket, options: any, authorization: Prom
1542
1542
  );
1543
1543
  }
1544
1544
  const id = auditRecord.recordId;
1545
+ event = undefined; // reset before each decode attempt
1545
1546
  try {
1546
1547
  decodeBlobsWithWrites(
1547
1548
  () => {
@@ -1573,19 +1574,6 @@ export function replicateOverWS(ws: WebSocket, options: any, authorization: Prom
1573
1574
  error
1574
1575
  );
1575
1576
  }
1576
- beginTxn = false;
1577
- // TODO: Once it is committed, also record the localtime in the table with symbol metadata, so we can resume from that point
1578
- logger.debug?.(
1579
- connectionId,
1580
- 'received replication message',
1581
- auditRecord.type,
1582
- 'id',
1583
- event.id,
1584
- 'version',
1585
- new Date(auditRecord.version),
1586
- 'nodeId',
1587
- event.nodeId
1588
- );
1589
1577
  replicationSharedStatus[RECEIVED_VERSION_POSITION] = Math.max(
1590
1578
  // ensure monotonicity
1591
1579
  auditRecord.version,
@@ -1594,7 +1582,22 @@ export function replicateOverWS(ws: WebSocket, options: any, authorization: Prom
1594
1582
  replicationSharedStatus[RECEIVED_TIME_POSITION] = Date.now();
1595
1583
  replicationSharedStatus[RECEIVING_STATUS_POSITION] = RECEIVING_STATUS_RECEIVING;
1596
1584
 
1597
- tableSubscriptionToReplicator.send(event);
1585
+ if (event) {
1586
+ beginTxn = false;
1587
+ // TODO: Once it is committed, also record the localtime in the table with symbol metadata, so we can resume from that point
1588
+ logger.debug?.(
1589
+ connectionId,
1590
+ 'received replication message',
1591
+ auditRecord.type,
1592
+ 'id',
1593
+ event.id,
1594
+ 'version',
1595
+ new Date(auditRecord.version),
1596
+ 'nodeId',
1597
+ event.nodeId
1598
+ );
1599
+ tableSubscriptionToReplicator.send(event);
1600
+ }
1598
1601
  decoder.position = start + eventLength;
1599
1602
  } while (decoder.position < body.byteLength);
1600
1603
  outstandingCommits++;
@@ -1803,10 +1806,13 @@ export function replicateOverWS(ws: WebSocket, options: any, authorization: Prom
1803
1806
  if (finished) {
1804
1807
  finished.blobId = blobId;
1805
1808
  outstandingBlobsToFinish.push(finished);
1806
- finished.finally(() => {
1807
- logger.debug?.(`Finished receiving blob stream ${blobId}`);
1808
- outstandingBlobsToFinish.splice(outstandingBlobsToFinish.indexOf(finished), 1);
1809
- });
1809
+ finished
1810
+ .catch((err) => logger.error?.(`Blob save failed for ${blobId} from ${remoteNodeName}`, err))
1811
+ .finally(() => {
1812
+ logger.debug?.(`Finished receiving blob stream ${blobId}`);
1813
+ const index = outstandingBlobsToFinish.indexOf(finished);
1814
+ if (index > -1) outstandingBlobsToFinish.splice(index, 1);
1815
+ });
1810
1816
  }
1811
1817
  return localBlob;
1812
1818
  }
@@ -116,7 +116,7 @@ export async function createCsr() {
116
116
  const privateKeys: Map<string, string> = getPrivateKeys();
117
117
  let opsCert, opsPrivateKey, certName, privateKeyName;
118
118
  for await (const cert of certificateTable.search([])) {
119
- if (cert.is_self_signed && !cert.is_authority) {
119
+ if (cert.is_self_signed && (cert.details?.issuer?.includes('Harper-Certificate-Authority') || cert.details?.issuer?.includes('HarperDB-Certificate-Authority'))) {
120
120
  const key = privateKeys.get(cert.private_key_name);
121
121
  if (key) {
122
122
  opsCert = pki.certificateFromPem(cert.certificate);