@harperfast/harper 5.2.9 → 5.3.0-alpha.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.
Files changed (668) hide show
  1. package/agent/mcpTools.ts +1 -1
  2. package/agent/session.ts +25 -14
  3. package/bin/cliOperations.ts +46 -9
  4. package/bin/copyDb.ts +282 -59
  5. package/bin/deploySetup.ts +16 -5
  6. package/bin/harper.ts +1 -1
  7. package/bin/help.ts +4 -1
  8. package/bin/lite.ts +4 -1
  9. package/bin/restart.ts +59 -3
  10. package/bin/run.ts +6 -11
  11. package/bin/upgrade.js +7 -3
  12. package/bin/workloadIdentity.ts +119 -0
  13. package/components/Application.ts +2414 -242
  14. package/components/ApplicationScope.ts +8 -0
  15. package/components/EntryHandler.ts +59 -39
  16. package/components/OptionsWatcher.ts +150 -74
  17. package/components/RuntimeModuleTracker.ts +38 -7
  18. package/components/Scope.ts +37 -15
  19. package/components/awaitRestart.ts +84 -0
  20. package/components/componentLoader.ts +340 -30
  21. package/components/componentPreparationLock.ts +16 -5
  22. package/components/mcp/adapters/harperHttp.ts +4 -0
  23. package/components/mcp/listChanged.ts +4 -0
  24. package/components/mcp/toolRegistry.ts +2 -0
  25. package/components/mcp/tools/operations.ts +9 -0
  26. package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
  27. package/components/operations.js +270 -78
  28. package/components/operationsValidation.js +49 -1
  29. package/components/status/ComponentStatusRegistry.ts +59 -0
  30. package/config/RootConfigWatcher.ts +80 -34
  31. package/config/configUtils.ts +291 -34
  32. package/config/harperConfigEnvVars.ts +170 -27
  33. package/config-root.schema.json +29 -0
  34. package/dataLayer/blobBackup.ts +160 -50
  35. package/dataLayer/delete.ts +6 -1
  36. package/dataLayer/harperBridge/ResourceBridge.ts +52 -8
  37. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  38. package/dataLayer/hdbInfoController.ts +34 -1
  39. package/dataLayer/insert.ts +44 -1
  40. package/dataLayer/rocksdbBackup.ts +53 -10
  41. package/dataLayer/schema.ts +11 -1
  42. package/dataLayer/schemaDescribe.ts +8 -1
  43. package/dist/agent/mcpTools.js +1 -1
  44. package/dist/agent/mcpTools.js.map +1 -1
  45. package/dist/agent/session.d.ts +22 -0
  46. package/dist/agent/session.js +26 -15
  47. package/dist/agent/session.js.map +1 -1
  48. package/dist/bin/cliOperations.js +48 -9
  49. package/dist/bin/cliOperations.js.map +1 -1
  50. package/dist/bin/copyDb.d.ts +12 -1
  51. package/dist/bin/copyDb.js +248 -60
  52. package/dist/bin/copyDb.js.map +1 -1
  53. package/dist/bin/deploySetup.d.ts +2 -0
  54. package/dist/bin/deploySetup.js +11 -3
  55. package/dist/bin/deploySetup.js.map +1 -1
  56. package/dist/bin/harper.js +1 -1
  57. package/dist/bin/harper.js.map +1 -1
  58. package/dist/bin/help.js +4 -1
  59. package/dist/bin/help.js.map +1 -1
  60. package/dist/bin/lite.js +4 -1
  61. package/dist/bin/lite.js.map +1 -1
  62. package/dist/bin/restart.js +54 -5
  63. package/dist/bin/restart.js.map +1 -1
  64. package/dist/bin/run.js +4 -10
  65. package/dist/bin/run.js.map +1 -1
  66. package/dist/bin/upgrade.js +4 -3
  67. package/dist/bin/upgrade.js.map +1 -1
  68. package/dist/bin/workloadIdentity.d.ts +18 -0
  69. package/dist/bin/workloadIdentity.js +100 -0
  70. package/dist/bin/workloadIdentity.js.map +1 -0
  71. package/dist/components/Application.d.ts +139 -16
  72. package/dist/components/Application.js +2215 -267
  73. package/dist/components/Application.js.map +1 -1
  74. package/dist/components/ApplicationScope.d.ts +8 -0
  75. package/dist/components/ApplicationScope.js +7 -0
  76. package/dist/components/ApplicationScope.js.map +1 -1
  77. package/dist/components/EntryHandler.js +26 -10
  78. package/dist/components/EntryHandler.js.map +1 -1
  79. package/dist/components/OptionsWatcher.d.ts +1 -0
  80. package/dist/components/OptionsWatcher.js +141 -74
  81. package/dist/components/OptionsWatcher.js.map +1 -1
  82. package/dist/components/RuntimeModuleTracker.js +40 -6
  83. package/dist/components/RuntimeModuleTracker.js.map +1 -1
  84. package/dist/components/Scope.js +38 -13
  85. package/dist/components/Scope.js.map +1 -1
  86. package/dist/components/awaitRestart.d.ts +33 -0
  87. package/dist/components/awaitRestart.js +61 -0
  88. package/dist/components/awaitRestart.js.map +1 -0
  89. package/dist/components/componentLoader.d.ts +38 -1
  90. package/dist/components/componentLoader.js +279 -22
  91. package/dist/components/componentLoader.js.map +1 -1
  92. package/dist/components/componentPreparationLock.d.ts +5 -0
  93. package/dist/components/componentPreparationLock.js +14 -6
  94. package/dist/components/componentPreparationLock.js.map +1 -1
  95. package/dist/components/mcp/adapters/harperHttp.js +4 -0
  96. package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
  97. package/dist/components/mcp/listChanged.js +5 -0
  98. package/dist/components/mcp/listChanged.js.map +1 -1
  99. package/dist/components/mcp/toolRegistry.d.ts +1 -0
  100. package/dist/components/mcp/toolRegistry.js.map +1 -1
  101. package/dist/components/mcp/tools/operations.d.ts +5 -0
  102. package/dist/components/mcp/tools/operations.js +9 -0
  103. package/dist/components/mcp/tools/operations.js.map +1 -1
  104. package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
  105. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  106. package/dist/components/operations.js +231 -77
  107. package/dist/components/operations.js.map +1 -1
  108. package/dist/components/operationsValidation.js +49 -1
  109. package/dist/components/operationsValidation.js.map +1 -1
  110. package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
  111. package/dist/components/status/ComponentStatusRegistry.js +63 -0
  112. package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
  113. package/dist/config/RootConfigWatcher.d.ts +7 -1
  114. package/dist/config/RootConfigWatcher.js +64 -27
  115. package/dist/config/RootConfigWatcher.js.map +1 -1
  116. package/dist/config/configUtils.d.ts +9 -1
  117. package/dist/config/configUtils.js +254 -33
  118. package/dist/config/configUtils.js.map +1 -1
  119. package/dist/config/harperConfigEnvVars.d.ts +16 -0
  120. package/dist/config/harperConfigEnvVars.js +162 -25
  121. package/dist/config/harperConfigEnvVars.js.map +1 -1
  122. package/dist/dataLayer/blobBackup.d.ts +49 -20
  123. package/dist/dataLayer/blobBackup.js +139 -50
  124. package/dist/dataLayer/blobBackup.js.map +1 -1
  125. package/dist/dataLayer/delete.js +1 -1
  126. package/dist/dataLayer/delete.js.map +1 -1
  127. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
  128. package/dist/dataLayer/harperBridge/ResourceBridge.js +51 -10
  129. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  130. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
  131. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  132. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
  133. package/dist/dataLayer/hdbInfoController.d.ts +10 -0
  134. package/dist/dataLayer/hdbInfoController.js +30 -1
  135. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  136. package/dist/dataLayer/insert.d.ts +9 -1
  137. package/dist/dataLayer/insert.js +30 -0
  138. package/dist/dataLayer/insert.js.map +1 -1
  139. package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
  140. package/dist/dataLayer/rocksdbBackup.js +45 -8
  141. package/dist/dataLayer/rocksdbBackup.js.map +1 -1
  142. package/dist/dataLayer/schema.js +8 -0
  143. package/dist/dataLayer/schema.js.map +1 -1
  144. package/dist/dataLayer/schemaDescribe.js +8 -1
  145. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  146. package/dist/index.d.ts +1 -1
  147. package/dist/index.js.map +1 -1
  148. package/dist/json/systemSchema.json +52 -0
  149. package/dist/resources/DatabaseTransaction.d.ts +55 -0
  150. package/dist/resources/DatabaseTransaction.js +459 -45
  151. package/dist/resources/DatabaseTransaction.js.map +1 -1
  152. package/dist/resources/LMDBTransaction.js +22 -4
  153. package/dist/resources/LMDBTransaction.js.map +1 -1
  154. package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
  155. package/dist/resources/PrimaryRocksDatabase.js +29 -0
  156. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  157. package/dist/resources/RecordEncoder.d.ts +20 -0
  158. package/dist/resources/RecordEncoder.js +94 -9
  159. package/dist/resources/RecordEncoder.js.map +1 -1
  160. package/dist/resources/RequestTarget.d.ts +2 -0
  161. package/dist/resources/RequestTarget.js.map +1 -1
  162. package/dist/resources/Resource.js +20 -11
  163. package/dist/resources/Resource.js.map +1 -1
  164. package/dist/resources/ResourceInterface.d.ts +20 -1
  165. package/dist/resources/ResourceInterface.js.map +1 -1
  166. package/dist/resources/RocksIndexStore.d.ts +6 -1
  167. package/dist/resources/RocksIndexStore.js +24 -9
  168. package/dist/resources/RocksIndexStore.js.map +1 -1
  169. package/dist/resources/RocksTransactionLogStore.d.ts +14 -1
  170. package/dist/resources/RocksTransactionLogStore.js +57 -17
  171. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  172. package/dist/resources/Table.d.ts +112 -8
  173. package/dist/resources/Table.js +1073 -191
  174. package/dist/resources/Table.js.map +1 -1
  175. package/dist/resources/auditStore.d.ts +11 -2
  176. package/dist/resources/auditStore.js +325 -71
  177. package/dist/resources/auditStore.js.map +1 -1
  178. package/dist/resources/blob.d.ts +129 -9
  179. package/dist/resources/blob.js +992 -114
  180. package/dist/resources/blob.js.map +1 -1
  181. package/dist/resources/branchDatabase.d.ts +48 -0
  182. package/dist/resources/branchDatabase.js +892 -0
  183. package/dist/resources/branchDatabase.js.map +1 -0
  184. package/dist/resources/crdt.js +50 -12
  185. package/dist/resources/crdt.js.map +1 -1
  186. package/dist/resources/databases.d.ts +150 -0
  187. package/dist/resources/databases.js +1200 -239
  188. package/dist/resources/databases.js.map +1 -1
  189. package/dist/resources/defineTable.d.ts +10 -2
  190. package/dist/resources/defineTable.js +9 -1
  191. package/dist/resources/defineTable.js.map +1 -1
  192. package/dist/resources/graphql.d.ts +1 -1
  193. package/dist/resources/graphql.js +50 -15
  194. package/dist/resources/graphql.js.map +1 -1
  195. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +1 -0
  196. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +6 -2
  197. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  198. package/dist/resources/longLivedTransactions.d.ts +71 -0
  199. package/dist/resources/longLivedTransactions.js +358 -0
  200. package/dist/resources/longLivedTransactions.js.map +1 -0
  201. package/dist/resources/models/backendRegistry.d.ts +26 -0
  202. package/dist/resources/models/backendRegistry.js +60 -2
  203. package/dist/resources/models/backendRegistry.js.map +1 -1
  204. package/dist/resources/models/bootstrap.d.ts +33 -1
  205. package/dist/resources/models/bootstrap.js +416 -31
  206. package/dist/resources/models/bootstrap.js.map +1 -1
  207. package/dist/resources/recordLock.d.ts +80 -0
  208. package/dist/resources/recordLock.js +184 -0
  209. package/dist/resources/recordLock.js.map +1 -0
  210. package/dist/resources/replayLogs.d.ts +14 -1
  211. package/dist/resources/replayLogs.js +152 -24
  212. package/dist/resources/replayLogs.js.map +1 -1
  213. package/dist/resources/replayLogsGuards.d.ts +94 -7
  214. package/dist/resources/replayLogsGuards.js +111 -7
  215. package/dist/resources/replayLogsGuards.js.map +1 -1
  216. package/dist/resources/search.js +158 -6
  217. package/dist/resources/search.js.map +1 -1
  218. package/dist/resources/transactionBroadcast.d.ts +1 -1
  219. package/dist/resources/transactionBroadcast.js +2 -2
  220. package/dist/resources/transactionBroadcast.js.map +1 -1
  221. package/dist/security/auth.js +61 -30
  222. package/dist/security/auth.js.map +1 -1
  223. package/dist/security/authn/oidc/claims.d.ts +22 -0
  224. package/dist/security/authn/oidc/claims.js +71 -0
  225. package/dist/security/authn/oidc/claims.js.map +1 -0
  226. package/dist/security/authn/oidc/identityToken.d.ts +27 -0
  227. package/dist/security/authn/oidc/identityToken.js +111 -0
  228. package/dist/security/authn/oidc/identityToken.js.map +1 -0
  229. package/dist/security/authn/oidc/jwks.d.ts +25 -0
  230. package/dist/security/authn/oidc/jwks.js +261 -0
  231. package/dist/security/authn/oidc/jwks.js.map +1 -0
  232. package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
  233. package/dist/security/authn/oidc/providers/generic.js +34 -0
  234. package/dist/security/authn/oidc/providers/generic.js.map +1 -0
  235. package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
  236. package/dist/security/authn/oidc/providers/githubActions.js +129 -0
  237. package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
  238. package/dist/security/authn/oidc/providers/index.d.ts +37 -0
  239. package/dist/security/authn/oidc/providers/index.js +24 -0
  240. package/dist/security/authn/oidc/providers/index.js.map +1 -0
  241. package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
  242. package/dist/security/authn/oidc/tokenExchange.js +306 -0
  243. package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
  244. package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
  245. package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
  246. package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
  247. package/dist/security/authn/oidc/types.d.ts +38 -0
  248. package/dist/security/authn/oidc/types.js +6 -0
  249. package/dist/security/authn/oidc/types.js.map +1 -0
  250. package/dist/security/certificateVerification/index.js +40 -11
  251. package/dist/security/certificateVerification/index.js.map +1 -1
  252. package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
  253. package/dist/security/certificateVerification/trustedIssuers.js +79 -0
  254. package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
  255. package/dist/security/certificateVerification/types.d.ts +1 -0
  256. package/dist/security/credentialProvenance.d.ts +35 -0
  257. package/dist/security/credentialProvenance.js +51 -0
  258. package/dist/security/credentialProvenance.js.map +1 -0
  259. package/dist/security/credentialRejection.d.ts +4 -0
  260. package/dist/security/credentialRejection.js +24 -0
  261. package/dist/security/credentialRejection.js.map +1 -0
  262. package/dist/security/deferredAuthentication.d.ts +36 -0
  263. package/dist/security/deferredAuthentication.js +70 -0
  264. package/dist/security/deferredAuthentication.js.map +1 -0
  265. package/dist/security/impersonation.d.ts +21 -0
  266. package/dist/security/impersonation.js +108 -9
  267. package/dist/security/impersonation.js.map +1 -1
  268. package/dist/security/jsLoader.d.ts +6 -0
  269. package/dist/security/jsLoader.js +75 -15
  270. package/dist/security/jsLoader.js.map +1 -1
  271. package/dist/security/keys.js +301 -71
  272. package/dist/security/keys.js.map +1 -1
  273. package/dist/security/operationScope.d.ts +21 -0
  274. package/dist/security/operationScope.js +36 -0
  275. package/dist/security/operationScope.js.map +1 -0
  276. package/dist/security/permissionsTranslator.js +21 -0
  277. package/dist/security/permissionsTranslator.js.map +1 -1
  278. package/dist/security/tokenAuthentication.d.ts +19 -1
  279. package/dist/security/tokenAuthentication.js +191 -10
  280. package/dist/security/tokenAuthentication.js.map +1 -1
  281. package/dist/security/user.js +4 -3
  282. package/dist/security/user.js.map +1 -1
  283. package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
  284. package/dist/server/DurableSubscriptionsSession.js +67 -10
  285. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  286. package/dist/server/REST.js +73 -0
  287. package/dist/server/REST.js.map +1 -1
  288. package/dist/server/graphqlQuerying.js +4 -0
  289. package/dist/server/graphqlQuerying.js.map +1 -1
  290. package/dist/server/http.d.ts +11 -0
  291. package/dist/server/http.js +88 -15
  292. package/dist/server/http.js.map +1 -1
  293. package/dist/server/itc/serverHandlers.js +8 -1
  294. package/dist/server/itc/serverHandlers.js.map +1 -1
  295. package/dist/server/jobs/jobProcess.js +6 -2
  296. package/dist/server/jobs/jobProcess.js.map +1 -1
  297. package/dist/server/jobs/jobs.js +4 -1
  298. package/dist/server/jobs/jobs.js.map +1 -1
  299. package/dist/server/liveSubscriptionAuth.d.ts +26 -4
  300. package/dist/server/liveSubscriptionAuth.js +105 -39
  301. package/dist/server/liveSubscriptionAuth.js.map +1 -1
  302. package/dist/server/loadRootComponents.js +49 -10
  303. package/dist/server/loadRootComponents.js.map +1 -1
  304. package/dist/server/mqtt.d.ts +2 -0
  305. package/dist/server/mqtt.js +165 -30
  306. package/dist/server/mqtt.js.map +1 -1
  307. package/dist/server/nodeName.d.ts +2 -0
  308. package/dist/server/nodeName.js +107 -23
  309. package/dist/server/nodeName.js.map +1 -1
  310. package/dist/server/serverHelpers/Headers.d.ts +25 -0
  311. package/dist/server/serverHelpers/Headers.js +139 -1
  312. package/dist/server/serverHelpers/Headers.js.map +1 -1
  313. package/dist/server/serverHelpers/contentTypes.d.ts +9 -0
  314. package/dist/server/serverHelpers/contentTypes.js +32 -25
  315. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  316. package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
  317. package/dist/server/serverHelpers/deployValidationState.js +9 -19
  318. package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
  319. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
  320. package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
  321. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
  322. package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
  323. package/dist/server/serverHelpers/registeredOperations.js +74 -21
  324. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  325. package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
  326. package/dist/server/serverHelpers/requestSanitization.js +20 -0
  327. package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
  328. package/dist/server/serverHelpers/serverHandlers.js +6 -3
  329. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  330. package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
  331. package/dist/server/serverHelpers/serverUtilities.js +90 -20
  332. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  333. package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
  334. package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
  335. package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
  336. package/dist/server/serverHelpers/uwsServer.js +19 -1
  337. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  338. package/dist/server/static.js +24 -28
  339. package/dist/server/static.js.map +1 -1
  340. package/dist/server/storageReclamation.d.ts +12 -0
  341. package/dist/server/storageReclamation.js +26 -0
  342. package/dist/server/storageReclamation.js.map +1 -1
  343. package/dist/server/threads/itc.d.ts +7 -2
  344. package/dist/server/threads/itc.js +5 -1
  345. package/dist/server/threads/itc.js.map +1 -1
  346. package/dist/server/threads/manageThreads.d.ts +26 -3
  347. package/dist/server/threads/manageThreads.js +517 -65
  348. package/dist/server/threads/manageThreads.js.map +1 -1
  349. package/dist/server/threads/socketRouter.js +89 -26
  350. package/dist/server/threads/socketRouter.js.map +1 -1
  351. package/dist/server/threads/threadHeapMemory.d.ts +2 -0
  352. package/dist/server/threads/threadHeapMemory.js +31 -0
  353. package/dist/server/threads/threadHeapMemory.js.map +1 -0
  354. package/dist/server/threads/threadServer.js +46 -15
  355. package/dist/server/threads/threadServer.js.map +1 -1
  356. package/dist/sqlEngine/config.d.ts +1 -3
  357. package/dist/sqlEngine/config.js +19 -16
  358. package/dist/sqlEngine/config.js.map +1 -1
  359. package/dist/sqlTranslator/index.d.ts +1 -1
  360. package/dist/sqlTranslator/index.js +30 -7
  361. package/dist/sqlTranslator/index.js.map +1 -1
  362. package/dist/upgrade/directives/5-3-0.d.ts +7 -0
  363. package/dist/upgrade/directives/5-3-0.js +148 -0
  364. package/dist/upgrade/directives/5-3-0.js.map +1 -0
  365. package/dist/upgrade/directives/directivesController.js +2 -1
  366. package/dist/upgrade/directives/directivesController.js.map +1 -1
  367. package/dist/utility/OperationFunctionCaller.js +2 -1
  368. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  369. package/dist/utility/common_utils.d.ts +16 -0
  370. package/dist/utility/common_utils.js +32 -6
  371. package/dist/utility/common_utils.js.map +1 -1
  372. package/dist/utility/componentNames.d.ts +8 -0
  373. package/dist/utility/componentNames.js +12 -1
  374. package/dist/utility/componentNames.js.map +1 -1
  375. package/dist/utility/environment/environmentManager.js +3 -6
  376. package/dist/utility/environment/environmentManager.js.map +1 -1
  377. package/dist/utility/environment/systemInformation.d.ts +1 -0
  378. package/dist/utility/environment/systemInformation.js +1 -0
  379. package/dist/utility/environment/systemInformation.js.map +1 -1
  380. package/dist/utility/errors/commonErrors.d.ts +2 -0
  381. package/dist/utility/errors/commonErrors.js +2 -0
  382. package/dist/utility/errors/commonErrors.js.map +1 -1
  383. package/dist/utility/errors/hdbError.d.ts +17 -0
  384. package/dist/utility/errors/hdbError.js +30 -1
  385. package/dist/utility/errors/hdbError.js.map +1 -1
  386. package/dist/utility/globalSchema.d.ts +18 -0
  387. package/dist/utility/hdbTerms.d.ts +16 -0
  388. package/dist/utility/hdbTerms.js +18 -2
  389. package/dist/utility/hdbTerms.js.map +1 -1
  390. package/dist/utility/logging/harper_logger.d.ts +2 -0
  391. package/dist/utility/logging/harper_logger.js +91 -14
  392. package/dist/utility/logging/harper_logger.js.map +1 -1
  393. package/dist/utility/logging/logRotator.js +76 -49
  394. package/dist/utility/logging/logRotator.js.map +1 -1
  395. package/dist/utility/nodeIdentity.d.ts +9 -0
  396. package/dist/utility/nodeIdentity.js +58 -0
  397. package/dist/utility/nodeIdentity.js.map +1 -0
  398. package/dist/utility/npmUtilities.js +9 -7
  399. package/dist/utility/npmUtilities.js.map +1 -1
  400. package/dist/utility/operationPermissions.d.ts +3 -1
  401. package/dist/utility/operationPermissions.js +16 -1
  402. package/dist/utility/operationPermissions.js.map +1 -1
  403. package/dist/utility/operation_authorization.d.ts +10 -7
  404. package/dist/utility/operation_authorization.js +212 -41
  405. package/dist/utility/operation_authorization.js.map +1 -1
  406. package/dist/utility/watchPath.d.ts +29 -0
  407. package/dist/utility/watchPath.js +68 -0
  408. package/dist/utility/watchPath.js.map +1 -0
  409. package/dist/utility/watcherFallback.d.ts +86 -0
  410. package/dist/utility/watcherFallback.js +278 -1
  411. package/dist/utility/watcherFallback.js.map +1 -1
  412. package/dist/validation/configValidator.d.ts +12 -0
  413. package/dist/validation/configValidator.js +199 -72
  414. package/dist/validation/configValidator.js.map +1 -1
  415. package/dist/validation/installValidator.js +12 -0
  416. package/dist/validation/installValidator.js.map +1 -1
  417. package/dist/validation/validationWrapper.d.ts +11 -0
  418. package/dist/validation/validationWrapper.js +16 -3
  419. package/dist/validation/validationWrapper.js.map +1 -1
  420. package/index.ts +2 -0
  421. package/json/systemSchema.json +52 -0
  422. package/npm-shrinkwrap.json +196 -194
  423. package/package.json +7 -6
  424. package/resources/DESIGN.md +114 -52
  425. package/resources/DatabaseTransaction.ts +521 -43
  426. package/resources/LMDBTransaction.ts +26 -4
  427. package/resources/PrimaryRocksDatabase.ts +28 -1
  428. package/resources/RecordEncoder.ts +103 -8
  429. package/resources/RequestTarget.ts +2 -0
  430. package/resources/Resource.ts +17 -9
  431. package/resources/ResourceInterface.ts +23 -0
  432. package/resources/RocksIndexStore.ts +30 -9
  433. package/resources/RocksTransactionLogStore.ts +78 -21
  434. package/resources/Table.ts +1110 -159
  435. package/resources/auditStore.ts +331 -73
  436. package/resources/blob.ts +1029 -110
  437. package/resources/branchDatabase.ts +941 -0
  438. package/resources/crdt.ts +76 -12
  439. package/resources/databases.ts +1310 -252
  440. package/resources/defineTable.ts +18 -2
  441. package/resources/graphql.ts +70 -16
  442. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +6 -2
  443. package/resources/longLivedTransactions.ts +360 -0
  444. package/resources/models/backendRegistry.ts +84 -2
  445. package/resources/models/bootstrap.ts +473 -28
  446. package/resources/recordLock.ts +253 -0
  447. package/resources/replayLogs.ts +147 -26
  448. package/resources/replayLogsGuards.ts +171 -8
  449. package/resources/search.ts +154 -7
  450. package/resources/transactionBroadcast.ts +3 -3
  451. package/security/auth.ts +68 -29
  452. package/security/authn/oidc/claims.ts +72 -0
  453. package/security/authn/oidc/identityToken.ts +129 -0
  454. package/security/authn/oidc/jwks.ts +260 -0
  455. package/security/authn/oidc/providers/generic.ts +40 -0
  456. package/security/authn/oidc/providers/githubActions.ts +137 -0
  457. package/security/authn/oidc/providers/index.ts +52 -0
  458. package/security/authn/oidc/tokenExchange.ts +300 -0
  459. package/security/authn/oidc/trustPolicyOperations.ts +343 -0
  460. package/security/authn/oidc/types.ts +41 -0
  461. package/security/certificateVerification/index.ts +54 -13
  462. package/security/certificateVerification/trustedIssuers.ts +76 -0
  463. package/security/certificateVerification/types.ts +1 -0
  464. package/security/credentialProvenance.ts +47 -0
  465. package/security/credentialRejection.ts +22 -0
  466. package/security/deferredAuthentication.ts +71 -0
  467. package/security/impersonation.ts +117 -12
  468. package/security/jsLoader.ts +81 -18
  469. package/security/keys.ts +298 -72
  470. package/security/operationScope.ts +33 -0
  471. package/security/permissionsTranslator.js +23 -0
  472. package/security/tokenAuthentication.ts +233 -12
  473. package/security/user.ts +4 -3
  474. package/server/DESIGN.md +183 -16
  475. package/server/DurableSubscriptionsSession.ts +71 -11
  476. package/server/REST.ts +79 -1
  477. package/server/graphqlQuerying.ts +4 -0
  478. package/server/http.ts +99 -18
  479. package/server/itc/serverHandlers.js +8 -1
  480. package/server/jobs/jobProcess.ts +8 -2
  481. package/server/jobs/jobs.ts +4 -1
  482. package/server/liveSubscriptionAuth.ts +129 -46
  483. package/server/loadRootComponents.js +50 -8
  484. package/server/mqtt.ts +179 -38
  485. package/server/nodeName.ts +103 -21
  486. package/server/serverHelpers/Headers.ts +131 -0
  487. package/server/serverHelpers/contentTypes.ts +29 -21
  488. package/server/serverHelpers/deployValidationState.ts +24 -13
  489. package/server/serverHelpers/operationAuthorizationState.ts +34 -3
  490. package/server/serverHelpers/registeredOperations.ts +79 -22
  491. package/server/serverHelpers/requestSanitization.ts +15 -0
  492. package/server/serverHelpers/serverHandlers.js +6 -3
  493. package/server/serverHelpers/serverUtilities.ts +104 -31
  494. package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
  495. package/server/serverHelpers/uwsServer.ts +17 -2
  496. package/server/static.ts +23 -29
  497. package/server/storageReclamation.ts +23 -0
  498. package/server/threads/itc.js +11 -1
  499. package/server/threads/manageThreads.js +526 -56
  500. package/server/threads/socketRouter.ts +81 -26
  501. package/server/threads/threadHeapMemory.ts +26 -0
  502. package/server/threads/threadServer.js +43 -15
  503. package/sqlTranslator/index.ts +31 -8
  504. package/studio/web/assets/Chat-BnCBegQz.js +2267 -0
  505. package/studio/web/assets/FloatingChat-CoDW1ySS.js +23 -0
  506. package/studio/web/assets/{abnfDiagram-VCTEODGH-C0_BAZyO.js → abnfDiagram-VCTEODGH-B0BebmD2.js} +1 -1
  507. package/studio/web/assets/{alertDialog-DIHt7Z0r.js → alertDialog-CQyAJJhl.js} +1 -1
  508. package/studio/web/assets/{apiToken-c3Rd-w6g.js → apiToken-Bwk5BLXW.js} +1 -1
  509. package/studio/web/assets/applications-DHxGi7JH.js +296 -0
  510. package/studio/web/assets/architecture-7GRP2DOG-LB-MLAAb.js +1 -0
  511. package/studio/web/assets/{architectureDiagram-5GKGNRK7-BWzrASgm.js → architectureDiagram-5GKGNRK7-7SW3GD-K.js} +1 -1
  512. package/studio/web/assets/authStore-C3Nfubqr.js +3 -0
  513. package/studio/web/assets/{blockDiagram-NRAW4CY4-BdJX9Khj.js → blockDiagram-I7D4REHJ-BqguiadH.js} +2 -2
  514. package/studio/web/assets/{button-DhiX-njv.js → button-BIsUKRZq.js} +2 -2
  515. package/studio/web/assets/{c4Diagram-UCG6FXSJ-CI6MzGmQ.js → c4Diagram-7LVT6UL2-LBNf8t_X.js} +1 -1
  516. package/studio/web/assets/channel-yictG-U-.js +1 -0
  517. package/studio/web/assets/{chevron-up-Df2c8uoU.js → chevron-up-DtKGqDn3.js} +1 -1
  518. package/studio/web/assets/{chunk-TEH6E4GO-P87k5mNi.js → chunk-4HAMMTFA-DWtTut21.js} +1 -1
  519. package/studio/web/assets/{chunk-75Z2AOVW-BT8tVmks.js → chunk-75Z2AOVW-QGQD6th2.js} +1 -1
  520. package/studio/web/assets/{chunk-DU6HZSFF-9kAOOmI6.js → chunk-DU6HZSFF-Chq20Ba5.js} +1 -1
  521. package/studio/web/assets/{chunk-F27PBJKO-BW7ao8AY.js → chunk-F27PBJKO-BVA5EPhV.js} +1 -1
  522. package/studio/web/assets/{chunk-GMAD6QVW-BNyXpoQO.js → chunk-GMAD6QVW-BeS7S07A.js} +1 -1
  523. package/studio/web/assets/{chunk-OBVCFTLP-D4wWOqDQ.js → chunk-GVQU2GXP-sbwVIQ8i.js} +1 -1
  524. package/studio/web/assets/{chunk-G27WJ6UU-COyLMcgK.js → chunk-IMKFNOWR-Bnh3tAVd.js} +1 -1
  525. package/studio/web/assets/{chunk-JQ64N6SF-Cyz1IeLf.js → chunk-L3NEJ4N5-COfUyKII.js} +1 -1
  526. package/studio/web/assets/chunk-OSK3NFVY-ByciRftO.js +10 -0
  527. package/studio/web/assets/{chunk-P2QGCYS3-DmIFY4d7.js → chunk-P2QGCYS3-CP1VhG_c.js} +1 -1
  528. package/studio/web/assets/{chunk-POPQ4Y6H-BPrvMyKz.js → chunk-POPQ4Y6H-ClWhhkwW.js} +1 -1
  529. package/studio/web/assets/{chunk-PWAF6VOD-2zB6IW9i.js → chunk-PWAF6VOD-1z1THyS5.js} +1 -1
  530. package/studio/web/assets/{chunk-RHFEMEQ7-2FgyI8YU.js → chunk-SHT3W25Y-LpQkMsah.js} +2 -2
  531. package/studio/web/assets/{chunk-SVP7TREG-FwtbH2QC.js → chunk-SVP7TREG-jtdAHw0S.js} +1 -1
  532. package/studio/web/assets/{chunk-LCL6LL3I-HOzK_ppE.js → chunk-TICWLB2K-VOwzetX-.js} +1 -1
  533. package/studio/web/assets/classDiagram-ZZMXUADV-VaEwSy_g.js +1 -0
  534. package/studio/web/assets/classDiagram-v2-VYDZK3BY-VaEwSy_g.js +1 -0
  535. package/studio/web/assets/{createLucideIcon-BKGPfjm2.js → createLucideIcon-CzW9508A.js} +1 -1
  536. package/studio/web/assets/{cssMode-CEN2mzSA.js → cssMode-s0cWI-_M.js} +1 -1
  537. package/studio/web/assets/{cynefin-OW5HDTMX-BRkpLFQV.js → cynefin-OW5HDTMX-BbdbCvub.js} +1 -1
  538. package/studio/web/assets/{cynefinDiagram-5FMLGOSQ-CHT1DaX6.js → cynefinDiagram-5FMLGOSQ-TP-aIqbt.js} +1 -1
  539. package/studio/web/assets/{dagre-3AP2YEHR-DpUXBh63.js → dagre-GXQ25YYZ-DShnGpGo.js} +1 -1
  540. package/studio/web/assets/{diagram-S7CK7UJ4-BuymVFZT.js → diagram-S7CK7UJ4-aoCVTtcy.js} +1 -1
  541. package/studio/web/assets/{diagram-UQ7AKVKN-CyP148RM.js → diagram-UQ7AKVKN-DglXtQ6x.js} +1 -1
  542. package/studio/web/assets/{diagram-VSXAHHWV-CoCAg3M9.js → diagram-VSXAHHWV-fhEdmkwM.js} +1 -1
  543. package/studio/web/assets/{diagram-VX7I27RA-BpOqCFca.js → diagram-VX7I27RA-DccVJet6.js} +1 -1
  544. package/studio/web/assets/{diagram-Z3DM3KII-Bfpw7Vbj.js → diagram-Z3DM3KII-D-RyJJb7.js} +1 -1
  545. package/studio/web/assets/{dialog-CBf0Mr1d.js → dialog-Cn2uWgD4.js} +1 -1
  546. package/studio/web/assets/{dist-lkA3O3eM.js → dist-DP8UjMB_.js} +1 -1
  547. package/studio/web/assets/{download-BtTOBem-.js → download-B5T5r7ss.js} +1 -1
  548. package/studio/web/assets/{ebnfDiagram-PWID7BFC-DS_6aWqL.js → ebnfDiagram-PWID7BFC-DJGpIpz_.js} +1 -1
  549. package/studio/web/assets/{editor-D8oDeCTL.js → editor-DNcRHK54.js} +1 -1
  550. package/studio/web/assets/{erDiagram-SSCWMZ5O-DJNk6Fgw.js → erDiagram-RLTQ6QDP-CIfNlgkC.js} +1 -1
  551. package/studio/web/assets/eventmodeling-NTZA5JFV-CLxnp2CR.js +1 -0
  552. package/studio/web/assets/flowDiagram-HODETNUW-BIbhmz9f.js +1 -0
  553. package/studio/web/assets/{ganttDiagram-EL5Y4UJY-2pOExxMY.js → ganttDiagram-EL5Y4UJY-BxToTzzD.js} +1 -1
  554. package/studio/web/assets/{getAnalytics-D4LKGeVy.js → getAnalytics-GHK8ORfM.js} +1 -1
  555. package/studio/web/assets/{gitGraph-4MIJSDKK-CH5ZxwzF.js → gitGraph-4MIJSDKK-D2s2w8lE.js} +1 -1
  556. package/studio/web/assets/{gitGraphDiagram-WWUBYQGX-DVIsIhbO.js → gitGraphDiagram-WWUBYQGX-Dwntd4-x.js} +1 -1
  557. package/studio/web/assets/{html-u3vOg7LJ.js → html-Bdssedlg.js} +1 -1
  558. package/studio/web/assets/{htmlMode-DyO31v-P.js → htmlMode-CoDlJ3fw.js} +1 -1
  559. package/studio/web/assets/{index-Cxj2_wsl.css → index-7RMEgVG1.css} +1 -1
  560. package/studio/web/assets/index-D6sxmFLR.js +824 -0
  561. package/studio/web/assets/index.lazy-tmU5BS8s.js +2 -0
  562. package/studio/web/assets/{info-A6RAGUB7-CPQfTnaG.js → info-A6RAGUB7-DYjkvb0C.js} +1 -1
  563. package/studio/web/assets/{infoDiagram-RXCK75RN-DlwLYlwm.js → infoDiagram-27XIBGKW-Bnp1FJE5.js} +1 -1
  564. package/studio/web/assets/{ishikawaDiagram-5VMMS53U-BRXRp29U.js → ishikawaDiagram-5VMMS53U-D9Xh2r6X.js} +1 -1
  565. package/studio/web/assets/{javascript-CUvxOyTC.js → javascript-B8meVSTH.js} +1 -1
  566. package/studio/web/assets/{journeyDiagram-EYS64GPL-B0ou8k0n.js → journeyDiagram-3NMN7TZE-CokIi6ll.js} +2 -2
  567. package/studio/web/assets/{jsonMode-f_IwbF3D.js → jsonMode-DpIPd35T.js} +1 -1
  568. package/studio/web/assets/{kanban-definition-3QL26DDD-uYg7iYzp.js → kanban-definition-UXKFOSKX-CukSFJfX.js} +1 -1
  569. package/studio/web/assets/{languageServices-DXtZ6rEF.js → languageServices-C_5FMJzQ.js} +1 -1
  570. package/studio/web/assets/{lspLanguageFeatures-B4pCF1zO.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
  571. package/studio/web/assets/{mermaid-parser.core-Ck-fC8b7.js → mermaid-parser.core-BlEsOWNO.js} +3 -3
  572. package/studio/web/assets/{mermaid.core-CP8aNNYm.js → mermaid.core-BlkGaMIH.js} +5 -5
  573. package/studio/web/assets/{mindmap-definition-FBJOCRG2-CgTZ-rit.js → mindmap-definition-YA3MSWOX-IprMc_0j.js} +1 -1
  574. package/studio/web/assets/{notifications-D3tIQ4sg.js → notifications-CQf18QKb.js} +1 -1
  575. package/studio/web/assets/notifications-CvZivSbh.js +1 -0
  576. package/studio/web/assets/{packet-AYTQ26CC-DEyoPtPb.js → packet-AYTQ26CC-Bi3V04Zi.js} +1 -1
  577. package/studio/web/assets/{pegDiagram-XKGWAZYB-DrD-7sD9.js → pegDiagram-XKGWAZYB-BNuPDLZY.js} +1 -1
  578. package/studio/web/assets/{pie-WAS4IAKB-wjj-EI1d.js → pie-WAS4IAKB-_6DoDbng.js} +1 -1
  579. package/studio/web/assets/{pieDiagram-E7YTZNPT-GntqDCzv.js → pieDiagram-E7YTZNPT-DqNb6Ht2.js} +1 -1
  580. package/studio/web/assets/{profile-DZWU7MgT.js → profile-DdOwtntb.js} +1 -1
  581. package/studio/web/assets/{quadrantDiagram-AXDQQJYC-0UeqXQGd.js → quadrantDiagram-AXDQQJYC-BGH9E2YR.js} +1 -1
  582. package/studio/web/assets/{radar-RG4KPBEZ-DFSA5h7k.js → radar-RG4KPBEZ-DDdVczcL.js} +1 -1
  583. package/studio/web/assets/{railroad-74A4TZTK-CaOUG9wR.js → railroad-74A4TZTK-BJUP4Jds.js} +1 -1
  584. package/studio/web/assets/railroad-abnf-HS5TGJTU-Bm3L1L0h.js +1 -0
  585. package/studio/web/assets/railroad-ebnf-LZEXJU2U-CKzLGlkw.js +1 -0
  586. package/studio/web/assets/railroad-peg-WCYAUIDC-S8xLjslx.js +1 -0
  587. package/studio/web/assets/{railroadDiagram-O6MQD6OU-yHUELZaV.js → railroadDiagram-O6MQD6OU-DGTPh2KZ.js} +1 -1
  588. package/studio/web/assets/{regions-CkyurXzE.js → regions-n69fwagr.js} +1 -1
  589. package/studio/web/assets/{register-BUyhWjBO.js → register-PfWTCXWB.js} +3 -3
  590. package/studio/web/assets/{requirementDiagram-EFPCY7ZU-DNEGFjuW.js → requirementDiagram-BXWQKSXE-BJnO6uLz.js} +1 -1
  591. package/studio/web/assets/{sankeyDiagram-P5KCCOFB-DpyAmSVR.js → sankeyDiagram-P5KCCOFB-0vSOdymH.js} +1 -1
  592. package/studio/web/assets/{sequenceDiagram-WJ2MYXX4-TyaT7xNk.js → sequenceDiagram-WJ2MYXX4-hETizDWE.js} +1 -1
  593. package/studio/web/assets/{setComponentFile-CeyKSZAa.js → setComponentFile-Bg6O7X0S.js} +1 -1
  594. package/studio/web/assets/{setup-D2kn7cAA.js → setup-CUx_aUDl.js} +2 -2
  595. package/studio/web/assets/{stateDiagram-HBIQ2CUA-CeEdTArZ.js → stateDiagram-D77RDMKH-CdYQ_KtC.js} +1 -1
  596. package/studio/web/assets/stateDiagram-v2-MP3YSRHH-CdKuzQMT.js +1 -0
  597. package/studio/web/assets/status-D7BVKqX9.js +61 -0
  598. package/studio/web/assets/{swimlanes-XN3QIQJK-B54FmF46.js → swimlanes-42K2YHIH-B8cHIpU4.js} +1 -1
  599. package/studio/web/assets/swimlanesDiagram-VR7AAH4N-DmOSJwaH.js +8 -0
  600. package/studio/web/assets/{tabs-B_G5zscN.js → tabs-BrHu7gJi.js} +1 -1
  601. package/studio/web/assets/{timeline-definition-24CTP7MA-D-a9ujbo.js → timeline-definition-24CTP7MA-BJWYSXqF.js} +1 -1
  602. package/studio/web/assets/{toggleHighContrast-C0UW6rI2.js → toggleHighContrast-DBSyXzMr.js} +1 -1
  603. package/studio/web/assets/{treeView-Q6P3EWNA-CrW_6JnS.js → treeView-Q6P3EWNA-qxe_v6CQ.js} +1 -1
  604. package/studio/web/assets/{treemap-WGGIJYW6-BxyYLdP_.js → treemap-WGGIJYW6-dDo97XXF.js} +1 -1
  605. package/studio/web/assets/{tsMode-DBC0zmDx.js → tsMode-BByKCjBS.js} +1 -1
  606. package/studio/web/assets/{typescript-DApRQir3.js → typescript-DDLnLpw9.js} +1 -1
  607. package/studio/web/assets/{useEntityRestURL-DB6JStU1.js → useEntityRestURL-31CHGaHk.js} +1 -1
  608. package/studio/web/assets/{useLocalStorage-Dtj1QS8_.js → useLocalStorage-BqMR3D8_.js} +1 -1
  609. package/studio/web/assets/vendor-core-c2JRRJpV.js +58 -0
  610. package/studio/web/assets/vendor-datadog-CLUcJXOo.js +6 -0
  611. package/studio/web/assets/{vendor-react-Dyj4O3HE.js → vendor-react-CJV_K1u4.js} +1 -1
  612. package/studio/web/assets/vendor-tanstack-DxzraizX.js +1 -0
  613. package/studio/web/assets/{vendor-ui-vhu-UHhF.js → vendor-ui-BUjK0h8a.js} +2 -2
  614. package/studio/web/assets/{vennDiagram-4TSXK5OY-Cy7s7Mpy.js → vennDiagram-4TSXK5OY-A3i-lCdl.js} +1 -1
  615. package/studio/web/assets/{wardley-WFR3VGLG-BeBL35g2.js → wardley-WFR3VGLG-B0ik-_6g.js} +1 -1
  616. package/studio/web/assets/{wardleyDiagram-VM6X3IG4-BylmIGSg.js → wardleyDiagram-VM6X3IG4-CjrkKWUR.js} +1 -1
  617. package/studio/web/assets/{workers-C0bFIedw.js → workers-pR3jRY9D.js} +1 -1
  618. package/studio/web/assets/x-DIzaLEdK.js +1 -0
  619. package/studio/web/assets/{xml-HWd01lU-.js → xml-2iRnMhQO.js} +1 -1
  620. package/studio/web/assets/{xychartDiagram-S5SC5T6Z-CoKALMXr.js → xychartDiagram-S5SC5T6Z-Biok4GYV.js} +1 -1
  621. package/studio/web/assets/{yaml-CIH0Nt-h.js → yaml-Bf92gJpd.js} +1 -1
  622. package/studio/web/index.html +14 -14
  623. package/upgrade/directives/5-3-0.ts +132 -0
  624. package/upgrade/directives/directivesController.ts +2 -1
  625. package/utility/OperationFunctionCaller.ts +2 -1
  626. package/utility/common_utils.ts +30 -5
  627. package/utility/componentNames.ts +12 -0
  628. package/utility/environment/environmentManager.ts +3 -7
  629. package/utility/environment/systemInformation.ts +7 -0
  630. package/utility/errors/commonErrors.ts +4 -0
  631. package/utility/errors/hdbError.ts +29 -0
  632. package/utility/hdbTerms.ts +17 -0
  633. package/utility/logging/harper_logger.ts +87 -14
  634. package/utility/logging/logRotator.ts +72 -45
  635. package/utility/nodeIdentity.ts +45 -0
  636. package/utility/npmUtilities.ts +10 -8
  637. package/utility/operationPermissions.ts +18 -1
  638. package/utility/operation_authorization.ts +231 -42
  639. package/utility/watchPath.ts +63 -0
  640. package/utility/watcherFallback.ts +270 -0
  641. package/validation/configValidator.ts +209 -72
  642. package/validation/installValidator.ts +15 -0
  643. package/validation/validationWrapper.ts +18 -4
  644. package/studio/web/assets/Chat-JpO8EtUu.js +0 -2067
  645. package/studio/web/assets/FloatingChat-Bcj3xSZu.js +0 -23
  646. package/studio/web/assets/applications-ByqLRKyZ.js +0 -296
  647. package/studio/web/assets/architecture-7GRP2DOG-DNdx5tEU.js +0 -1
  648. package/studio/web/assets/authStore-qKmCZcaf.js +0 -3
  649. package/studio/web/assets/channel-DtCV8PTL.js +0 -1
  650. package/studio/web/assets/chunk-R7TYR2AO-Irip67yr.js +0 -10
  651. package/studio/web/assets/classDiagram-DTDB5LWJ-DbO_dCNE.js +0 -1
  652. package/studio/web/assets/classDiagram-v2-JRS7N3AN-DbO_dCNE.js +0 -1
  653. package/studio/web/assets/eventmodeling-NTZA5JFV-5jbe4A5P.js +0 -1
  654. package/studio/web/assets/flowDiagram-A5DVABFB-Dp9Ezlow.js +0 -1
  655. package/studio/web/assets/index-aSt5tY-L.js +0 -824
  656. package/studio/web/assets/index.lazy-B9jiPwT8.js +0 -2
  657. package/studio/web/assets/notifications-CUoYgU98.js +0 -1
  658. package/studio/web/assets/railroad-abnf-HS5TGJTU-Bc0Qi0WH.js +0 -1
  659. package/studio/web/assets/railroad-ebnf-LZEXJU2U-G8rVVZ2C.js +0 -1
  660. package/studio/web/assets/railroad-peg-WCYAUIDC-CrehKBhC.js +0 -1
  661. package/studio/web/assets/stateDiagram-v2-4QOOHH4V-D4tuw9Su.js +0 -1
  662. package/studio/web/assets/status-D7Xn5ePA.js +0 -61
  663. package/studio/web/assets/swimlanesDiagram-VK2B7HYN-XOhmNEvq.js +0 -8
  664. package/studio/web/assets/vendor-core-RCcadM3e.js +0 -73
  665. package/studio/web/assets/vendor-datadog-BRv-mOv1.js +0 -6
  666. package/studio/web/assets/vendor-tanstack-BiFWSB3W.js +0 -1
  667. package/studio/web/assets/x-B9o9hsep.js +0 -1
  668. /package/studio/web/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
@@ -4,6 +4,7 @@ import { DatabaseTransaction } from './DatabaseTransaction.ts';
4
4
  import { IterableEventQueue } from './IterableEventQueue.ts';
5
5
  import type { Entry, RecordObject } from './RecordEncoder.ts';
6
6
  import { RequestTarget } from './RequestTarget.ts';
7
+ import type { RecordLockOptions } from './recordLock.ts';
7
8
  export interface ResourceInterface<Record extends object = any> extends Partial<RecordObject>, Pick<UpdatableRecord<Record>, 'addTo' | 'subtractFrom'> {
8
9
  allowRead(user: User, target: RequestTarget, context: Context): boolean | Promise<boolean>;
9
10
  get?(target?: RequestTargetOrId): (Record & Partial<RecordObject>) | Promise<Record & Partial<RecordObject>> | AsyncIterable<Record & Partial<RecordObject>> | Promise<AsyncIterable<Record & Partial<RecordObject>>>;
@@ -18,6 +19,10 @@ export interface ResourceInterface<Record extends object = any> extends Partial<
18
19
  allowDelete(user: User, target: RequestTarget, context: Context): boolean | Promise<boolean>;
19
20
  delete?(target: RequestTargetOrId): boolean | Promise<boolean>;
20
21
  invalidate(target: RequestTargetOrId): void | Promise<void>;
22
+ /** Acquire an exclusive lock on a record and return it ready for updates (see `RecordLockOptions`) */
23
+ lock?(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<WritableRecord<Record>>;
24
+ /** Release the lock this instance holds; resolves true when this call cleared it */
25
+ unlock?(): Promise<boolean>;
21
26
  publish?(target: RequestTargetOrId, record: Record, options?: any): void;
22
27
  subscribe?(request: SubscriptionRequest): AsyncIterable<Record> | Promise<AsyncIterable<Record>>;
23
28
  doesExist(): boolean;
@@ -196,6 +201,21 @@ interface TypedUpdatableRecord<Record extends object, Property extends keyof Rec
196
201
  addTo(property: Property, value: Record[Property]): void;
197
202
  subtractFrom(property: Property, value: Record[Property]): void;
198
203
  }
204
+ export type { RecordLockOptions } from './recordLock.ts';
205
+ /**
206
+ * What `lock()` resolves with: the locked record, loaded after the lock committed and tracking
207
+ * changes for `save()`. Inside an explicit `transaction()` scope a scoped lock is released when
208
+ * that transaction commits or aborts. Outside any explicit scope (ImmediateTransaction context),
209
+ * a scoped lock persists until `unlock()` is called or the lease expires. A held lock
210
+ * (`{ hold: true }`) is always released by `unlock()` or its lease, regardless of scope.
211
+ */
212
+ export type WritableRecord<Record extends object = any> = UpdatableRecord<Record> & {
213
+ save(): void | Promise<void>;
214
+ update(updates?: Partial<Record>): unknown;
215
+ delete(target?: RequestTargetOrId): boolean | Promise<boolean>;
216
+ lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<WritableRecord<Record>>;
217
+ unlock(): Promise<boolean>;
218
+ };
199
219
  export interface Subscription<Event extends object = any> extends IterableEventQueue<Event> {
200
220
  new (listener: Listener<Event>): any;
201
221
  listener: Listener<Event>;
@@ -215,4 +235,3 @@ export interface ListenerPayload<Payload extends object = any> {
215
235
  type: string;
216
236
  beginTxn: boolean;
217
237
  }
218
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceInterface.js","sourceRoot":"","sources":["../../resources/ResourceInterface.ts"],"names":[],"mappings":";;;AAsKa,QAAA,WAAW,GAAG;IAC1B,SAAS;IACT,UAAU;IACV,WAAW;IACX,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,cAAc;IACd,oBAAoB;IACpB,IAAI;IACJ,WAAW;IACX,iBAAiB;IACjB,IAAI;IACJ,WAAW;IACX,aAAa;CACJ,CAAC"}
1
+ {"version":3,"file":"ResourceInterface.js","sourceRoot":"","sources":["../../resources/ResourceInterface.ts"],"names":[],"mappings":";;;AA4Ka,QAAA,WAAW,GAAG;IAC1B,SAAS;IACT,UAAU;IACV,WAAW;IACX,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,cAAc;IACd,oBAAoB;IACpB,IAAI;IACJ,WAAW;IACX,iBAAiB;IACjB,IAAI;IACJ,WAAW;IACX,aAAa;CACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type StoreIteratorOptions, type StorePutOptions, type StoreRemoveOptions, RocksDatabase } from '@harperfast/rocksdb-js';
1
+ import { type CountEstimate, type CountEstimateOptions, type StoreIteratorOptions, type StorePutOptions, type StoreRemoveOptions, RocksDatabase } from '@harperfast/rocksdb-js';
2
2
  import { Id } from './ResourceInterface.ts';
3
3
  declare module '@harperfast/rocksdb-js' {
4
4
  interface DBI<T> {
@@ -18,6 +18,11 @@ export declare class RocksIndexStore extends RocksDatabase {
18
18
  * @param options
19
19
  */
20
20
  getRange(options: StoreIteratorOptions): Iterable<any>;
21
+ /**
22
+ * Estimate the entry count of a range of indexed values. Shares `getRange`'s bound translation
23
+ * so a planner estimate always covers exactly the range execution would iterate.
24
+ */
25
+ estimateCount(options?: CountEstimateOptions): CountEstimate;
21
26
  /**
22
27
  * Translate a put with indexed value and primary key to an underlying put
23
28
  * @param indexedValue - ignored, only used by LMDB
@@ -3,6 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RocksIndexStore = void 0;
4
4
  const rocksdb_js_1 = require("@harperfast/rocksdb-js");
5
5
  const ordered_binary_1 = require("ordered-binary");
6
+ /**
7
+ * Widen value-space bounds to `[value, MAXIMUM_KEY]` composite bounds. The base implementation's
8
+ * encoded-byte successor of the bare indexed value would exclude the wrong entries on composite
9
+ * `[indexedValue, primaryKey]` keys.
10
+ */
11
+ function translateIndexBounds(options) {
12
+ let { start, end } = options;
13
+ const { exclusiveStart, inclusiveEnd, reverse } = options;
14
+ if ((reverse ? !exclusiveStart : exclusiveStart) && start !== undefined) {
15
+ start = [start, ordered_binary_1.MAXIMUM_KEY];
16
+ }
17
+ if ((reverse ? !inclusiveEnd : inclusiveEnd) && end !== undefined) {
18
+ end = [end, ordered_binary_1.MAXIMUM_KEY];
19
+ }
20
+ return { ...options, start, end };
21
+ }
6
22
  /**
7
23
  * A specialized RocksDB-based index store that maintains indexed references to primary keys.
8
24
  * This store uses composite keys consisting of indexed values and primary keys, enabling
@@ -16,18 +32,17 @@ class RocksIndexStore extends rocksdb_js_1.RocksDatabase {
16
32
  * @param options
17
33
  */
18
34
  getRange(options) {
19
- let { start, end, exclusiveStart, inclusiveEnd, reverse } = options;
20
- if ((reverse ? !exclusiveStart : exclusiveStart) && start !== undefined) {
21
- start = [start, ordered_binary_1.MAXIMUM_KEY];
22
- }
23
- if ((reverse ? !inclusiveEnd : inclusiveEnd) && end !== undefined) {
24
- end = [end, ordered_binary_1.MAXIMUM_KEY];
25
- }
26
- const translatedOptions = { ...options, start, end };
27
- return super.getRange(translatedOptions).map(({ key }) => {
35
+ return super.getRange(translateIndexBounds(options)).map(({ key }) => {
28
36
  return { key: key[0], value: key.length > 2 ? key.slice(1) : key[1] };
29
37
  });
30
38
  }
39
+ /**
40
+ * Estimate the entry count of a range of indexed values. Shares `getRange`'s bound translation
41
+ * so a planner estimate always covers exactly the range execution would iterate.
42
+ */
43
+ estimateCount(options) {
44
+ return super.estimateCount(translateIndexBounds(options ?? {}));
45
+ }
31
46
  /**
32
47
  * Translate a put with indexed value and primary key to an underlying put
33
48
  * @param indexedValue - ignored, only used by LMDB
@@ -1 +1 @@
1
- {"version":3,"file":"RocksIndexStore.js","sourceRoot":"","sources":["../../resources/RocksIndexStore.ts"],"names":[],"mappings":";;;AAAA,uDAMgC;AAEhC,mDAA6C;AAQ7C;;;;;;GAMG;AACH,MAAa,eAAgB,SAAQ,0BAAa;IACjD;;;OAGG;IACH,QAAQ,CAAC,OAA6B;QACrC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzE,KAAK,GAAG,CAAC,KAAK,EAAE,4BAAW,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACnE,GAAG,GAAG,CAAC,GAAG,EAAE,4BAAW,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,iBAAiB,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YACxD,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,aAAa;IACb,GAAG,CAAC,YAAiB,EAAE,UAAc,EAAE,OAAwB;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,YAAiB,EAAE,UAAc,EAAE,OAAwB;QAClE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,aAAa;IACb,MAAM,CAAC,YAAiB,EAAE,UAAc,EAAE,OAA4B;QACrE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa;IACb,UAAU,CAAC,YAAiB,EAAE,UAAc,EAAE,OAA4B;QACzE,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACD;AA3CD,0CA2CC;AAED;;;GAGG;AACH,gBAAG,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,YAAiB;IACvE,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,4BAAW,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACrE,CAAC,CAAC"}
1
+ {"version":3,"file":"RocksIndexStore.js","sourceRoot":"","sources":["../../resources/RocksIndexStore.ts"],"names":[],"mappings":";;;AAAA,uDAQgC;AAEhC,mDAA6C;AAQ7C;;;;GAIG;AACH,SAAS,oBAAoB,CAE3B,OAAU;IACX,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC1D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzE,KAAK,GAAG,CAAC,KAAK,EAAE,4BAAW,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACnE,GAAG,GAAG,CAAC,GAAG,EAAE,4BAAW,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAa,eAAgB,SAAQ,0BAAa;IACjD;;;OAGG;IACH,QAAQ,CAAC,OAA6B;QACrC,OAAO,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YACpE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,OAA8B;QAC3C,OAAO,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,aAAa;IACb,GAAG,CAAC,YAAiB,EAAE,UAAc,EAAE,OAAwB;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,YAAiB,EAAE,UAAc,EAAE,OAAwB;QAClE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,aAAa;IACb,MAAM,CAAC,YAAiB,EAAE,UAAc,EAAE,OAA4B;QACrE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa;IACb,UAAU,CAAC,YAAiB,EAAE,UAAc,EAAE,OAA4B;QACzE,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACD;AA3CD,0CA2CC;AAED;;;GAGG;AACH,gBAAG,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,YAAiB;IACvE,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,4BAAW,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACrE,CAAC,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import { TransactionLog, RocksDatabase } from '@harperfast/rocksdb-js';
2
2
  import { AuditRecord } from './auditStore.ts';
3
+ import { type CorruptFrameStop } from './replayLogsGuards.ts';
3
4
  import { EventEmitter } from 'node:events';
5
+ export type TransactionLogIterable = Iterable<AuditRecord> & {
6
+ /** Corrupt frames that ended a log's iteration during this range. */
7
+ corruptFrameStop: CorruptFrameStop;
8
+ };
4
9
  /**
5
10
  * Represents a transaction log store backed by RocksDB.
6
11
  * This class provides methods that conform to a standard store interface
@@ -13,6 +18,7 @@ export declare class RocksTransactionLogStore extends EventEmitter {
13
18
  logByName: Map<string, TransactionLog>;
14
19
  updates: number;
15
20
  rootStore: RocksDatabase;
21
+ corruptFrameScope: string;
16
22
  reusableIterable: boolean;
17
23
  structureVersionByLogTable: WeakMap<TransactionLog, Map<number, number>>;
18
24
  constructor(rootDatabase: RocksDatabase);
@@ -46,7 +52,14 @@ export declare class RocksTransactionLogStore extends EventEmitter {
46
52
  startByLog?: Map<string, number>;
47
53
  startFromLastFlushed?: boolean;
48
54
  readUncommitted?: boolean;
49
- }): Iterable<AuditRecord>;
55
+ /**
56
+ * Track which version a break truncated, in `corruptFrameStop.truncatedVersions`. Costs two
57
+ * property stores per yielded entry (see below), so it defaults off: only boot replay reads
58
+ * `truncatedVersions`, but this range is also the always-on source for live subscriptions and
59
+ * replication, where every healthy entry would otherwise pay bookkeeping nothing consumes.
60
+ */
61
+ trackCorruptTransactions?: boolean;
62
+ }): TransactionLogIterable;
50
63
  getKeys(_options?: any): any[];
51
64
  getStats(): {
52
65
  logs: any[];
@@ -51,11 +51,7 @@ if (!process.env.HARPER_NO_FLUSH_ON_EXIT && node_worker_threads_1.isMainThread)
51
51
  // reserving 0x80000000 for future use if we need a flag to indicate 64-bits of flag bits for more flags
52
52
  const HAS_PREVIOUS_RESIDENCY_ID = 0x40000000;
53
53
  const HAS_PREVIOUS_VERSION = 0x20000000;
54
- // Logs (once per log) when a corrupt frame ends a query iterator early; see
55
- // endIteratorOnCorruptFrame in replayLogsGuards.ts for why this is end-of-log, not a crash.
56
- function warnCorruptFrame(logName) {
57
- return (error) => harperLogger.warn(`Stopping transaction log "${logName}" at a corrupt entry during replay`, error);
58
- }
54
+ const reportCorruptFrame = (0, replayLogsGuards_ts_1.createCorruptFrameReporter)(harperLogger);
59
55
  /**
60
56
  * Represents a transaction log store backed by RocksDB.
61
57
  * This class provides methods that conform to a standard store interface
@@ -68,6 +64,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
68
64
  logByName = new Map();
69
65
  updates = 0; // the number of updates to the list of logs that have occurred
70
66
  rootStore;
67
+ corruptFrameScope;
71
68
  reusableIterable = true; // flag indicating that iterable can be reused to resume iterating through audit log
72
69
  // Highest structureVersion appended to each per-node TransactionLog, tracked per tableId. Drives the
73
70
  // per-log HAS_STRUCTURE_UPDATE flag in put(). Keyed by (log, tableId): a per-node log interleaves entries
@@ -80,6 +77,10 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
80
77
  super();
81
78
  this.log = rootDatabase.useLog('local');
82
79
  this.rootStore = rootDatabase;
80
+ // Break reports are keyed per log name, but every store has its own 'local' log, so they
81
+ // need a scope. The path, not `databaseName`: one root store can back several logical
82
+ // databases and they share these logs, and `databaseName` is not set on it yet here.
83
+ this.corruptFrameScope = rootDatabase.path;
83
84
  }
84
85
  /**
85
86
  * Translate a put to an addEntry
@@ -145,10 +146,9 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
145
146
  }
146
147
  if (this.listenerCount('aftercommit')) {
147
148
  if (!(auditRecord instanceof Uint8Array)) {
148
- const txnTimestamp = options.transaction.getTimestamp?.();
149
- if (txnTimestamp != null)
150
- auditRecord.localTime = txnTimestamp;
151
- auditRecord.recordVersion = auditRecord.version;
149
+ const txnLogKey = options.transaction.getTimestamp?.();
150
+ if (txnLogKey != null)
151
+ auditRecord.txnLogKey = txnLogKey;
152
152
  }
153
153
  (options.transaction.logEntries ??= []).push(auditRecord);
154
154
  }
@@ -199,7 +199,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
199
199
  if (entry.recordId === recordId && entry.tableId === tableId) {
200
200
  return entry;
201
201
  }
202
- if (entry.version !== key)
202
+ if (entry.txnLogKey !== key)
203
203
  return; // no longer in this transaction
204
204
  }
205
205
  }
@@ -259,6 +259,34 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
259
259
  getRange(options) {
260
260
  let iterable = new extended_iterable_1.ExtendedIterable();
261
261
  let aggregateIterator;
262
+ let singleLogIterator;
263
+ const attributeCorruption = options.trackCorruptTransactions === true;
264
+ const corruptFrameStop = { breaks: 0, truncatedVersions: new Set(), midLogBreak: false };
265
+ // Each log's iterator carries the version and endTxn of the last entry it yielded, so a break
266
+ // can be attributed to the source transaction whose remaining entries it swallowed — unless
267
+ // that entry's own endTxn already closed the transaction, in which case the break fell after
268
+ // it, not inside it. On the iterator itself, not in a map keyed by log: this is written per
269
+ // entry on the replay/broadcast path (when `attributeCorruption`), and it stays attached when a
270
+ // removed log is spliced out of the aggregate.
271
+ const trackCorruptFrames = (log, queryOptions) => {
272
+ const report = reportCorruptFrame(`${this.corruptFrameScope}/${log.name}`);
273
+ const iterator = (0, replayLogsGuards_ts_1.endIteratorOnCorruptFrame)(log.query(queryOptions), (error) => {
274
+ corruptFrameStop.breaks++;
275
+ if (iterator.lastVersion !== undefined && iterator.lastEndTxn !== true) {
276
+ corruptFrameStop.truncatedVersions.add(iterator.lastVersion);
277
+ }
278
+ if ((0, replayLogsGuards_ts_1.isMidLogBreak)(error))
279
+ corruptFrameStop.midLogBreak = true;
280
+ report(error);
281
+ });
282
+ // Set here, once, rather than left for the per-entry write sites below to add these fields
283
+ // on their first call: every TrackedIterator then reaches its final shape before any entry
284
+ // is consumed, so the hot per-entry writes hit an already-stable shape instead of each
285
+ // triggering its own transition on that iterator's first entry.
286
+ iterator.lastVersion = undefined;
287
+ iterator.lastEndTxn = undefined;
288
+ return iterator;
289
+ };
262
290
  if (options.log !== undefined) {
263
291
  let log = typeof options.log === 'number' ? this.nodeLogs?.[options.log] : this.logByName.get(options.log);
264
292
  if (!log) {
@@ -273,7 +301,8 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
273
301
  log = this.rootStore.useLog(options.log);
274
302
  }
275
303
  }
276
- const queryIterator = (0, replayLogsGuards_ts_1.endIteratorOnCorruptFrame)(log.query(options), warnCorruptFrame(log.name));
304
+ const queryIterator = trackCorruptFrames(log, options);
305
+ singleLogIterator = queryIterator;
277
306
  iterable.iterate = () => queryIterator;
278
307
  }
279
308
  else {
@@ -326,7 +355,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
326
355
  // condition of potentially missing an initial update
327
356
  queryOptions = { ...options, start: options.start ?? 0 };
328
357
  }
329
- iterators.push((0, replayLogsGuards_ts_1.endIteratorOnCorruptFrame)(log.query(queryOptions), warnCorruptFrame(log.name)));
358
+ iterators.push(trackCorruptFrames(log, queryOptions));
330
359
  }
331
360
  }
332
361
  latestUpdates = this.updates;
@@ -382,7 +411,11 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
382
411
  }
383
412
  }
384
413
  if (earliestIndex >= 0) {
385
- // replace the entry with the next one from the iterator we pulled from
414
+ if (attributeCorruption) {
415
+ // before the refill, which is where a break surfaces and needs this entry's version
416
+ iterators[earliestIndex].lastVersion = earliest.timestamp;
417
+ iterators[earliestIndex].lastEndTxn = earliest.endTxn;
418
+ }
386
419
  nextEntries[earliestIndex] = safeNext(iterators[earliestIndex], logs[earliestIndex]);
387
420
  return {
388
421
  value: onlyKeys ? earliest.timestamp : earliest,
@@ -416,6 +449,13 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
416
449
  iterable.iterate = () => aggregateIterator;
417
450
  }
418
451
  const mappedAggregateIterable = iterable.map(({ timestamp, data, endTxn }) => {
452
+ // A break surfaces on the pull after this entry, so recording it here is in time to attribute
453
+ // that break to this entry's transaction. The aggregate branch records its own, per source
454
+ // log, because there this callback cannot tell which log an entry came from.
455
+ if (attributeCorruption && singleLogIterator) {
456
+ singleLogIterator.lastVersion = timestamp;
457
+ singleLogIterator.lastEndTxn = endTxn;
458
+ }
419
459
  // Per-entry try/catch: a corrupt rocks prelude (first 4-16 bytes) would otherwise
420
460
  // throw a raw `RangeError: Offset is outside the bounds of the DataView` out
421
461
  // through `iterable.map`, escape the for-of consumer, and land as an
@@ -441,10 +481,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
441
481
  position += 8;
442
482
  }
443
483
  const auditRecord = (0, auditStore_ts_1.readAuditEntry)(data, position, undefined);
444
- // version stays the log key (replication resume relies on version === log key);
445
- // the record's own version survives as recordVersion
446
- auditRecord.version = timestamp;
447
- auditRecord.localTime = timestamp;
484
+ auditRecord.txnLogKey = timestamp;
448
485
  auditRecord.endTxn = endTxn;
449
486
  auditRecord.previousResidencyId = previousResidencyId;
450
487
  auditRecord.previousVersion = previousVersion;
@@ -457,7 +494,9 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
457
494
  byteLength: data?.byteLength,
458
495
  });
459
496
  return {
497
+ // the log key is all this entry still yields; its record version is undecodable
460
498
  version: timestamp,
499
+ txnLogKey: timestamp,
461
500
  endTxn,
462
501
  type: undefined,
463
502
  tableId: undefined,
@@ -473,6 +512,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
473
512
  mappedAggregateIterable.addLog = aggregateIterator.addLog;
474
513
  mappedAggregateIterable.removeLog = aggregateIterator.removeLog;
475
514
  }
515
+ mappedAggregateIterable.corruptFrameStop = corruptFrameStop;
476
516
  return mappedAggregateIterable;
477
517
  }
478
518
  getKeys(_options) {
@@ -1 +1 @@
1
- {"version":3,"file":"RocksTransactionLogStore.js","sourceRoot":"","sources":["../../resources/RocksTransactionLogStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RocksTransactionLogStore.js","sourceRoot":"","sources":["../../resources/RocksTransactionLogStore.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,11 @@
6
6
  import { type Database } from 'lmdb';
7
7
  import type { ResourceInterface, SubscriptionRequest, Id, Context, Sort, SubSelect, RequestTargetOrId } from './ResourceInterface.ts';
8
8
  import type { User } from '../security/user.ts';
9
+ import { type RecordLockHandle, type RecordLockOptions } from './recordLock.ts';
9
10
  import { type EmbedAttribute, type Embedder } from './models/embedHook.ts';
10
- import { RecordObject, type Entry } from './RecordEncoder.ts';
11
+ import { RecordObject, type Entry, type StructureCounts } from './RecordEncoder.ts';
11
12
  import { RequestTarget } from './RequestTarget.ts';
12
- import { Transaction as RocksTransaction } from '@harperfast/rocksdb-js';
13
+ import { RocksDatabase, Transaction as RocksTransaction } from '@harperfast/rocksdb-js';
13
14
  import { type JsonSchemaFragment } from './jsonSchemaTypes.ts';
14
15
  export type Attribute = {
15
16
  name: string;
@@ -40,6 +41,12 @@ export type Attribute = {
40
41
  select?: any;
41
42
  };
42
43
  type MaybePromise<T> = T | Promise<T>;
44
+ export declare const UPDATE_ATTRIBUTES_LOCK_TIMEOUT = 10000;
45
+ export declare const UPDATE_ATTRIBUTES_LOCK_SLOW_WAIT = 1000;
46
+ /** The wait blocks the event loop, so the locked section must stay synchronous. */
47
+ export declare function acquireUpdateAttributesLock(rootStore: RocksDatabase, scopeDescription: string, timeout?: number): void;
48
+ export declare function releaseUpdateAttributesLock(rootStore: RocksDatabase): void;
49
+ export declare function withUpdateAttributesLock<Callback extends () => unknown>(rootStore: RocksDatabase, scopeDescription: string, callback: Callback & (ReturnType<Callback> extends PromiseLike<unknown> ? never : unknown)): ReturnType<Callback>;
43
50
  export declare function ignoreAlreadyDropped(error: any): void;
44
51
  export declare function freezeRecord(value: any): void;
45
52
  export declare function frozenRecordView(record: any): any;
@@ -73,7 +80,16 @@ export declare function makeTable(options: any): {
73
80
  "__#private@#version"?: number;
74
81
  "__#private@#entry"?: Entry;
75
82
  "__#private@#savingOperation"?: any;
83
+ "__#private@#lockHandle"?: RecordLockHandle;
84
+ "__#private@#lockWritable"?: boolean;
76
85
  getProperty: (name: string) => any;
86
+ /**
87
+ * Shared guard: if this instance is lock-writable but the handle is gone (expired or
88
+ * released), throw 409 before staging any write. Covers update/invalidate/relocate/delete
89
+ * in addition to the save() path. Every lock-writable instance carries its own handle in
90
+ * #lockHandle (scoped and hold alike), so we never need to search the registry here.
91
+ */
92
+ "__#private@#assertLiveHandle"(id: Id): void;
77
93
  _loadRecord(target: RequestTarget, request: Context, resourceOptions?: any): MaybePromise</*elided*/ any>;
78
94
  /**
79
95
  * This is a request to explicitly ensure that the record is loaded from source, rather than only using the local record.
@@ -129,9 +145,25 @@ export declare function makeTable(options: any): {
129
145
  _writeInvalidate(id: Id, partialRecord?: any, options?: any): void;
130
146
  _writeRelocate(id: Id, options: any): void;
131
147
  /**
132
- * This is intended to acquire a lock on a record from the whole cluster.
148
+ * Acquire an exclusive lock on this record (or on `target`'s) and return it ready for updates
149
+ * (harper#483, Phase 0: exclusive across every worker thread of this node). The lock is held
150
+ * in process memory only — no durable writes. Phase 0 contract: lock() is mutually exclusive
151
+ * with other lock() calls on the same key; plain writes (put/patch/delete/create) are never
152
+ * gated or blocked. The generation expires after `lease` if it is never released.
153
+ *
154
+ * Transaction-scoped (default): write through the returned record (or the table's static verbs
155
+ * in the same transaction), and the commit or abort releases it. `{ hold: true }`: the lock
156
+ * outlives the transaction; write through the returned record and release with `unlock()`, or
157
+ * let the lease expire.
158
+ */
159
+ lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<any>;
160
+ "__#private@#reloadLocked"(id: Id, holdHandle?: RecordLockHandle | null, preserveChanges?: boolean): any;
161
+ /**
162
+ * Release the lock this instance holds. Resolves true when this call cleared the native key lock.
163
+ * Works for both held (`{ hold: true }`) and transaction-scoped locks. After unlock() the
164
+ * instance is no longer lock-writable; writes through it require a fresh lock.
133
165
  */
134
- lock(): void;
166
+ unlock(): Promise<boolean>;
135
167
  /**
136
168
  * Store the provided record data into the current resource. This is not written
137
169
  * until the corresponding transaction is committed.
@@ -237,7 +269,16 @@ export declare function makeTable(options: any): {
237
269
  "__#private@#version"?: number;
238
270
  "__#private@#entry"?: Entry;
239
271
  "__#private@#savingOperation"?: any;
272
+ "__#private@#lockHandle"?: RecordLockHandle;
273
+ "__#private@#lockWritable"?: boolean;
240
274
  getProperty: (name: string) => any;
275
+ /**
276
+ * Shared guard: if this instance is lock-writable but the handle is gone (expired or
277
+ * released), throw 409 before staging any write. Covers update/invalidate/relocate/delete
278
+ * in addition to the save() path. Every lock-writable instance carries its own handle in
279
+ * #lockHandle (scoped and hold alike), so we never need to search the registry here.
280
+ */
281
+ "__#private@#assertLiveHandle"(id: Id): void;
241
282
  _loadRecord(target: RequestTarget, request: Context, resourceOptions?: any): MaybePromise</*elided*/ any>;
242
283
  /**
243
284
  * This is a request to explicitly ensure that the record is loaded from source, rather than only using the local record.
@@ -293,9 +334,25 @@ export declare function makeTable(options: any): {
293
334
  _writeInvalidate(id: Id, partialRecord?: any, options?: any): void;
294
335
  _writeRelocate(id: Id, options: any): void;
295
336
  /**
296
- * This is intended to acquire a lock on a record from the whole cluster.
337
+ * Acquire an exclusive lock on this record (or on `target`'s) and return it ready for updates
338
+ * (harper#483, Phase 0: exclusive across every worker thread of this node). The lock is held
339
+ * in process memory only — no durable writes. Phase 0 contract: lock() is mutually exclusive
340
+ * with other lock() calls on the same key; plain writes (put/patch/delete/create) are never
341
+ * gated or blocked. The generation expires after `lease` if it is never released.
342
+ *
343
+ * Transaction-scoped (default): write through the returned record (or the table's static verbs
344
+ * in the same transaction), and the commit or abort releases it. `{ hold: true }`: the lock
345
+ * outlives the transaction; write through the returned record and release with `unlock()`, or
346
+ * let the lease expire.
347
+ */
348
+ lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<any>;
349
+ "__#private@#reloadLocked"(id: Id, holdHandle?: RecordLockHandle | null, preserveChanges?: boolean): any;
350
+ /**
351
+ * Release the lock this instance holds. Resolves true when this call cleared the native key lock.
352
+ * Works for both held (`{ hold: true }`) and transaction-scoped locks. After unlock() the
353
+ * instance is no longer lock-writable; writes through it require a fresh lock.
297
354
  */
298
- lock(): void;
355
+ unlock(): Promise<boolean>;
299
356
  /**
300
357
  * Store the provided record data into the current resource. This is not written
301
358
  * until the corresponding transaction is committed.
@@ -335,7 +392,16 @@ export declare function makeTable(options: any): {
335
392
  "__#private@#version"?: number;
336
393
  "__#private@#entry"?: Entry;
337
394
  "__#private@#savingOperation"?: any;
395
+ "__#private@#lockHandle"?: RecordLockHandle;
396
+ "__#private@#lockWritable"?: boolean;
338
397
  getProperty: (name: string) => any;
398
+ /**
399
+ * Shared guard: if this instance is lock-writable but the handle is gone (expired or
400
+ * released), throw 409 before staging any write. Covers update/invalidate/relocate/delete
401
+ * in addition to the save() path. Every lock-writable instance carries its own handle in
402
+ * #lockHandle (scoped and hold alike), so we never need to search the registry here.
403
+ */
404
+ "__#private@#assertLiveHandle"(id: Id): void;
339
405
  _loadRecord(target: RequestTarget, request: Context, resourceOptions?: any): MaybePromise</*elided*/ any>;
340
406
  /**
341
407
  * This is a request to explicitly ensure that the record is loaded from source, rather than only using the local record.
@@ -391,9 +457,25 @@ export declare function makeTable(options: any): {
391
457
  _writeInvalidate(id: Id, partialRecord?: any, options?: any): void;
392
458
  _writeRelocate(id: Id, options: any): void;
393
459
  /**
394
- * This is intended to acquire a lock on a record from the whole cluster.
460
+ * Acquire an exclusive lock on this record (or on `target`'s) and return it ready for updates
461
+ * (harper#483, Phase 0: exclusive across every worker thread of this node). The lock is held
462
+ * in process memory only — no durable writes. Phase 0 contract: lock() is mutually exclusive
463
+ * with other lock() calls on the same key; plain writes (put/patch/delete/create) are never
464
+ * gated or blocked. The generation expires after `lease` if it is never released.
465
+ *
466
+ * Transaction-scoped (default): write through the returned record (or the table's static verbs
467
+ * in the same transaction), and the commit or abort releases it. `{ hold: true }`: the lock
468
+ * outlives the transaction; write through the returned record and release with `unlock()`, or
469
+ * let the lease expire.
470
+ */
471
+ lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<any>;
472
+ "__#private@#reloadLocked"(id: Id, holdHandle?: RecordLockHandle | null, preserveChanges?: boolean): any;
473
+ /**
474
+ * Release the lock this instance holds. Resolves true when this call cleared the native key lock.
475
+ * Works for both held (`{ hold: true }`) and transaction-scoped locks. After unlock() the
476
+ * instance is no longer lock-writable; writes through it require a fresh lock.
395
477
  */
396
- lock(): void;
478
+ unlock(): Promise<boolean>;
397
479
  /**
398
480
  * Store the provided record data into the current resource. This is not written
399
481
  * until the corresponding transaction is committed.
@@ -456,6 +538,14 @@ export declare function makeTable(options: any): {
456
538
  * @returns
457
539
  */
458
540
  coerceId(id: string): number | string;
541
+ /**
542
+ * A branch's Table classes deliberately carry the BASE's logical database name so an
543
+ * application's schema and code resolve unchanged (harper#643). That makes every schema
544
+ * mutation resolve against the global catalog — a `dropTable()` through a branch would delete
545
+ * the live base table. Reads and writes are per-branch and unaffected; DDL is refused until a
546
+ * branch owns a schema identity of its own.
547
+ */
548
+ assertSchemaMutable(operation: string): void;
459
549
  dropTable(): Promise<void>;
460
550
  /**
461
551
  * Record the relocation of an entry (when a record is moved to a different node), return true if it is now located locally
@@ -467,6 +557,17 @@ export declare function makeTable(options: any): {
467
557
  * Evicting a record will remove it from a caching table. This is not considered a canonical data change, and it is assumed that retrieving this record from the source will still yield the same record, this is only removing the local copy of the record.
468
558
  */
469
559
  evict(id: any, existingRecord: any, existingVersion: any): any;
560
+ /**
561
+ * Static entry point: `Table.lock(id, options?, context?)` — creates an instance in the given,
562
+ * ambient, or a fresh context and delegates to the instance lock(). This shadows Resource.static
563
+ * lock so that both callers share the same transaction link (required for cross-instance upgrade
564
+ * detection). lock() is an in-process API with no authorization hook of its own; it is not
565
+ * protocol-dispatched, so no allowUpdate/allowCreate check runs on acquisition.
566
+ *
567
+ * Dropping the trailing `context` leaks the key: the bare `{}` fallback is an
568
+ * ImmediateTransaction, which releases no record locks.
569
+ */
570
+ lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions, context?: any): Promise<any>;
470
571
  operation(operation: any, context: any): any;
471
572
  /**
472
573
  * This is responsible for ordering and select()ing the attributes/properties from returned entries
@@ -518,6 +619,8 @@ export declare function makeTable(options: any): {
518
619
  * @param options
519
620
  */
520
621
  getSize(): number;
622
+ /** Sizes of this table's durable record-structure dictionaries. */
623
+ getStructureCounts(): StructureCounts | undefined;
521
624
  getAuditSize(): number;
522
625
  /**
523
626
  * Get available/free/size storage stats for the table's underlying volume. Async because
@@ -556,6 +659,7 @@ export declare function makeTable(options: any): {
556
659
  }, void, unknown>;
557
660
  getHistoryOfRecord(id: any): Promise<any[]>;
558
661
  clear(): Promise<any[]>;
662
+ /** Release everything makeTable() registered process-wide; the class must not be used afterwards. */
559
663
  cleanup(): void;
560
664
  _readTxnForContext(context: any): (RocksTransaction | import("lmdb").Transaction) & {
561
665
  openTimer?: number;