@harperfast/harper 5.2.10 → 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 (554) 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 -3
  150. package/dist/resources/DatabaseTransaction.js +460 -134
  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 +30 -2
  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 -10
  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 +1071 -197
  174. package/dist/resources/Table.js.map +1 -1
  175. package/dist/resources/auditStore.d.ts +11 -2
  176. package/dist/resources/auditStore.js +183 -18
  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 -9
  187. package/dist/resources/databases.js +1247 -525
  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 -32
  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 +5 -0
  341. package/dist/server/storageReclamation.js +16 -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 -4
  347. package/dist/server/threads/manageThreads.js +517 -72
  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 +235 -233
  423. package/package.json +8 -7
  424. package/resources/DESIGN.md +114 -52
  425. package/resources/DatabaseTransaction.ts +522 -130
  426. package/resources/LMDBTransaction.ts +26 -4
  427. package/resources/PrimaryRocksDatabase.ts +29 -3
  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 -10
  433. package/resources/RocksTransactionLogStore.ts +78 -21
  434. package/resources/Table.ts +1107 -164
  435. package/resources/auditStore.ts +187 -21
  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 +1354 -522
  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 -32
  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 +13 -0
  498. package/server/threads/itc.js +11 -1
  499. package/server/threads/manageThreads.js +526 -63
  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-Br06zdMA.js → Chat-BnCBegQz.js} +1 -1
  505. package/studio/web/assets/{FloatingChat-BWImX5fA.js → FloatingChat-CoDW1ySS.js} +3 -3
  506. package/studio/web/assets/{apiToken-DN0nmDsq.js → apiToken-Bwk5BLXW.js} +1 -1
  507. package/studio/web/assets/{applications-kSxVoyeU.js → applications-DHxGi7JH.js} +1 -1
  508. package/studio/web/assets/{cssMode-C1JeufH5.js → cssMode-s0cWI-_M.js} +1 -1
  509. package/studio/web/assets/{editor-qoo9CrGO.js → editor-DNcRHK54.js} +1 -1
  510. package/studio/web/assets/{html-Dt4IIy04.js → html-Bdssedlg.js} +1 -1
  511. package/studio/web/assets/{htmlMode-DXgKKr4C.js → htmlMode-CoDlJ3fw.js} +1 -1
  512. package/studio/web/assets/{index-6onkYFOG.js → index-D6sxmFLR.js} +5 -5
  513. package/studio/web/assets/{index.lazy-BrCFnpNJ.js → index.lazy-tmU5BS8s.js} +1 -1
  514. package/studio/web/assets/{javascript-DNCQGUBc.js → javascript-B8meVSTH.js} +1 -1
  515. package/studio/web/assets/{jsonMode-CR6HWruP.js → jsonMode-DpIPd35T.js} +1 -1
  516. package/studio/web/assets/{languageServices-BM4fI4rS.js → languageServices-C_5FMJzQ.js} +1 -1
  517. package/studio/web/assets/{lspLanguageFeatures-DSa1ttcD.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
  518. package/studio/web/assets/{notifications-BHXLnh6x.js → notifications-CQf18QKb.js} +1 -1
  519. package/studio/web/assets/{notifications-CUmtIA6z.js → notifications-CvZivSbh.js} +1 -1
  520. package/studio/web/assets/{profile-8BeFSF3j.js → profile-DdOwtntb.js} +1 -1
  521. package/studio/web/assets/{regions-C8qR0HhD.js → regions-n69fwagr.js} +1 -1
  522. package/studio/web/assets/{register-B4n5i0SD.js → register-PfWTCXWB.js} +2 -2
  523. package/studio/web/assets/{setComponentFile-g0_B0lgX.js → setComponentFile-Bg6O7X0S.js} +1 -1
  524. package/studio/web/assets/{setup-B0CTj_Q5.js → setup-CUx_aUDl.js} +2 -2
  525. package/studio/web/assets/{status-C6Yib7-K.js → status-D7BVKqX9.js} +1 -1
  526. package/studio/web/assets/{toggleHighContrast-Dgta7bVi.js → toggleHighContrast-DBSyXzMr.js} +1 -1
  527. package/studio/web/assets/{tsMode-CH_jHvU-.js → tsMode-BByKCjBS.js} +1 -1
  528. package/studio/web/assets/{typescript-Co9LCXd5.js → typescript-DDLnLpw9.js} +1 -1
  529. package/studio/web/assets/{useEntityRestURL-wKC8NsC_.js → useEntityRestURL-31CHGaHk.js} +1 -1
  530. package/studio/web/assets/{workers-CWeLxCXA.js → workers-pR3jRY9D.js} +1 -1
  531. package/studio/web/assets/{xml-BadC-0Rk.js → xml-2iRnMhQO.js} +1 -1
  532. package/studio/web/assets/{yaml-BiUfxPbC.js → yaml-Bf92gJpd.js} +1 -1
  533. package/studio/web/index.html +1 -1
  534. package/upgrade/directives/5-3-0.ts +132 -0
  535. package/upgrade/directives/directivesController.ts +2 -1
  536. package/utility/OperationFunctionCaller.ts +2 -1
  537. package/utility/common_utils.ts +30 -5
  538. package/utility/componentNames.ts +12 -0
  539. package/utility/environment/environmentManager.ts +3 -7
  540. package/utility/environment/systemInformation.ts +7 -0
  541. package/utility/errors/commonErrors.ts +4 -0
  542. package/utility/errors/hdbError.ts +29 -0
  543. package/utility/hdbTerms.ts +17 -0
  544. package/utility/logging/harper_logger.ts +87 -14
  545. package/utility/logging/logRotator.ts +72 -45
  546. package/utility/nodeIdentity.ts +45 -0
  547. package/utility/npmUtilities.ts +10 -8
  548. package/utility/operationPermissions.ts +18 -1
  549. package/utility/operation_authorization.ts +231 -42
  550. package/utility/watchPath.ts +63 -0
  551. package/utility/watcherFallback.ts +270 -0
  552. package/validation/configValidator.ts +209 -72
  553. package/validation/installValidator.ts +15 -0
  554. package/validation/validationWrapper.ts +18 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branchDatabase.js","sourceRoot":"","sources":["../../resources/branchDatabase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFA,kDAEC;AASD,4CAWC;AAgTD,8CAUC;AAwJD,sCAKC;AA8LD,wCAEC;AAiDD,kEAGC;AAWD,oEAoBC;AAWD,0CA4EC;AA56BD,qCAA8E;AAC9E,+CAAuE;AACvE,yCAA8D;AAC9D,2FAAyD;AACzD,wDAA8E;AAC9E,6EAAsE;AACtE,kFAAoE;AACpE,8DAAsD;AACtD,uCAA+E;AAC/E,uDAA4E;AAC5E,iDAgBwB;AACxB,mDAAiE;AAEjE;;;;;;;;;;;;;GAaG;AAEH,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,eAAe,GAAG,uCAAgB,CAAC,aAAa,CAAC,OAAO,CAAC;AAE/D;;;;2CAI2C;AAC3C,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAWxC,qGAAqG;AACrG,sGAAsG;AACtG,MAAM,cAAc,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE9D;;;;;GAKG;AACH,SAAS,aAAa,CAAC,QAAgB,EAAE,UAAkB;IAC1D,MAAM,SAAS,GAAG,IAAA,uBAAQ,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,mBAAmB,CAAC,gBAAgB,UAAU,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAoB;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,KAAoB,EAAE,MAAc;IACpE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IAC7B,OAAO,GAAG,EAAE;QACX,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,QAAQ,CAAC;YAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,cAAc,CAC5B,QAAgB,EAChB,SAAmB,EACnB,WAAqB,EACrB,QAAoB;IAEpB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,qGAAqG;IACrG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;QAChD,MAAM,IAAA,aAAE,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,iGAAiG;QACjG,gGAAgG;QAChG,cAAc;QACd,MAAM,IAAA,gBAAK,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAQ,EAC5B,MAAM,EACN,OAAO,EACP,IAAI,EACJ;gBACC,IAAI,EAAE,uEAAuE;gBAC7E,OAAO,EAAE,uEAAuE;aAChF,EACD,QAAQ,CACR,CAAC;YACF,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;YAClC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QACD,MAAM,IAAA,aAAE,EAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAA,iBAAM,EAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,QAAQ,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACrB,0BAAM,CAAC,IAAI,EAAE,CACZ,cAAc,QAAQ,iBAAiB,WAAW,+CAA+C;YAChG,kGAAkG,CACnG,CAAC;IACH,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAChB,+FAA+F;QAC/F,2FAA2F;QAC3F,0BAAM,CAAC,IAAI,EAAE,CACZ,cAAc,QAAQ,yBAAyB,MAAM,gDAAgD;YACpG,iGAAiG;YACjG,2DAA2D,CAC5D,CAAC;IACH,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,eAAe,CAAC,KAAe;IAC7C,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;YAChD,MAAM,IAAA,aAAE,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAClE,OAAO,GAAG,KAAK,CAAC;gBAChB,0BAAM,CAAC,IAAI,EAAE,CAAC,qCAAqC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAuB7C;;;;GAIG;AACH,SAAS,cAAc,CAAC,UAAkB;IACzC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACJ,OAAO,GAAG,IAAA,qBAAW,EAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAClB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,eAAe,CAAC,UAAkB,EAAE,SAAiB;IAC7D,IAAI,CAAC,IAAA,oBAAU,EAAC,UAAU,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACxD,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,QAA0B,CAAC;IAC/B,IAAI,CAAC;QACJ,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,sCAAsC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACnH,CAAC;IACD,kGAAkG;IAClG,gGAAgG;IAChG,0FAA0F;IAC1F,IACC,QAAQ,IAAI,IAAI;QAChB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAC/B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EACpD,CAAC;QACF,iGAAiG;QACjG,gFAAgF;QAChF,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,oCAAoC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjH,CAAC;IACD,MAAM,UAAU,GAAG,IAAA,qCAA2B,EAAC,SAAS,CAAC,CAAC;IAC1D,2FAA2F;IAC3F,iGAAiG;IACjG,mGAAmG;IACnG,kGAAkG;IAClG,sEAAsE;IACtE,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,OAAO,EACN,kEAAkE;gBAClE,aAAa,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG;YAC7F,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC7B,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,MAAM;QACpB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE;QACjH,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAkB,EAAE,SAAiB,EAAE,SAAmB;IAC3F,MAAM,UAAU,GAAG,IAAA,qCAA2B,EAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,0BAAM,CAAC,IAAI,EAAE,CACZ,sBAAsB,UAAU,cAAc,SAAS,CAAC,MAAM,iCAAiC;YAC9F,aAAa,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,gDAAgD;YACjG,6FAA6F;YAC7F,8BAA8B,CAC/B,CAAC;IACH,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,MAA2D;IAE3D,MAAM,OAAO,GAAG,GAAG,UAAU,UAAU,CAAC;IACxC,MAAM,SAAS,GAAG,IAAA,qCAA2B,EAAC,SAAS,CAAC,CAAC;IACzD,oGAAoG;IACpG,oGAAoG;IACpG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACd,+BAA+B,UAAU,wDAAwD;YAChG,iDAAiD,CAClD,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,IAAA,uBAAQ,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,oGAAoG;IACpG,iGAAiG;IACjG,sFAAsF;IACtF,MAAM,SAAS,GAAG,IAAA,+BAAqB,EAAC,IAAa,CAAC,CAAC;IACvD,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACd,8BAA8B,QAAQ,qCAAqC,SAAS,CAAC,MAAM,QAAQ;YAClG,+CAA+C,SAAS,CAAC,MAAM,gCAAgC;YAC/F,+CAA+C,CAChD,CAAC;IACH,CAAC;IACD,MAAM,IAAA,aAAE,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC;QACJ,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,IAAA,oBAAS,EAAC,IAAA,gBAAI,EAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAA6B,CAAC,CAAC,CAAC;QAC5G,MAAM,IAAA,iBAAM,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAA,aAAE,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpE,iGAAiG;QACjG,iGAAiG;QACjG,gGAAgG;QAChG,oBAAoB;QACpB,6FAA6F;QAC7F,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;YAAE,MAAM,CAAC,aAAa,EAAE,CAAC;QAChE,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,KAAoB;IACrC,OAAO,OAAO,iBAAiB,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,YAAY,iBAAiB,CAAC;AAC9F,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB;IACxC,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAED,gFAAgF;AAChF,KAAK,UAAU,UAAU,CAAC,KAAoB,EAAE,UAAkB,EAAE,QAAsB;IACzF,qGAAqG;IACrG,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,SAAS,CAAC;QACT,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QACzC,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,SAAS,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,UAAU,EAAE,CAAC,CAAC;QAClH,gGAAgG;QAChG,4EAA4E;QAC5E,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;YAClE,SAAS,GAAG,IAAI,CAAC;YACjB,0BAAM,CAAC,IAAI,EAAE,CACZ,4DAA4D,UAAU,oBAAoB;gBACzF,qEAAqE,CACtE,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,GAAI,OAAe,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC7E,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,OAAe;IACxE,MAAM,UAAU,GAAG,IAAA,gCAAiB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACtD,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxC,2FAA2F;QAC3F,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,QAAgB;IACzD,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAe,EAAE,UAAkB;IAChF,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,8FAA8F;IAC9F,mGAAmG;IACnG,8FAA8F;IAC9F,6BAA6B;IAC7B,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;IACjC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,mGAAmG;IACnG,oGAAoG;IACpG,kGAAkG;IAClG,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC;QACJ,2FAA2F;QAC3F,8FAA8F;QAC9F,2FAA2F;QAC3F,8FAA8F;QAC9F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAA,kCAAkB,GAAE,CAAC,CAAC;QACvF,SAAS,CAAC;YACT,8FAA8F;YAC9F,6FAA6F;YAC7F,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;YAC/F,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACvF,IAAI,QAAQ,KAAK,KAAK;gBAAE,MAAM;YAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,MAAkC,CAAC;gBACvC,IAAI,SAAS,GAAa,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACJ,wFAAwF;oBACxF,wFAAwF;oBACxF,uFAAuF;oBACvF,8DAA8D;oBAC9D,MAAM,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9E,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBACxD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAC/E,MAAM,IAAI,KAAK,CACd,sBAAsB,UAAU,uBAAuB,OAAO,iCAAiC;4BAC9F,2FAA2F;4BAC3F,4FAA4F;4BAC5F,mDAAmD,CACpD,CAAC;oBACH,CAAC;oBACD,IAAI,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBACnC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;wBAC/B,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBAC5D,CAAC;yBAAM,CAAC;wBACP,uEAAuE;wBACvE,MAAM,IAAA,aAAE,EAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBACvD,SAAS,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE;4BACpE,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC;4BAC/C,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;yBAC/C,CAAC,CAAC;oBACJ,CAAC;oBACD,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;oBACjC,MAAM,GAAG,IAAA,iCAAkB,EAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBACxE,qFAAqF;oBACrF,mFAAmF;oBACnF,mFAAmF;oBACnF,uFAAuF;oBACvF,oFAAoF;oBACpF,qFAAqF;oBACrF,iDAAiD;oBACjD,IAAI,CAAC,IAAA,6BAAc,GAAE;wBAAE,MAAM,IAAA,0BAAU,EAAC,MAAM,CAAC,SAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAChG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,qFAAqF;oBACrF,yFAAyF;oBACzF,yFAAyF;oBACzF,wFAAwF;oBACxF,sFAAsF;oBACtF,IAAI,CAAC;wBACJ,MAAM,EAAE,KAAK,EAAE,CAAC;oBACjB,CAAC;oBAAC,OAAO,UAAU,EAAE,CAAC;wBACrB,0BAAM,CAAC,IAAI,CAAC,2BAA2B,UAAU,sBAAsB,EAAE,UAAU,CAAC,CAAC;oBACtF,CAAC;oBACD,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;oBAClD,MAAM,KAAK,CAAC;gBACb,CAAC;wBAAS,CAAC;oBACV,WAAW,CAAC,UAAU,CAAC,CAAC;gBACzB,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAC1C,CAAC;YACD,6FAA6F;YAC7F,qDAAqD;YACrD,IAAI,CAAC,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK;gBAAE,MAAM;QAC3E,CAAC;QACD,+FAA+F;QAC/F,+FAA+F;QAC/F,6BAA6B;QAC7B,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACd,sBAAsB,UAAU,0DAA0D;gBACzF,aAAa,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CACpI,CAAC;QACH,CAAC;QACD,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACrE,iGAAiG;QACjG,+FAA+F;QAC/F,yFAAyF;QACzF,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,IAAA,iCAAkB,EAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACzF,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;IACxE,CAAC;YAAS,CAAC;QACV,6FAA6F;QAC7F,qFAAqF;QACrF,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,IAAI,iBAAiB;gBAAE,IAAA,uCAAwB,EAAC,SAAS,CAAC,CAAC;;gBACtD,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;AACF,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,UAAkB;IAChE,IAAI,GAAG,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;IAC9B,sGAAsG;IACtG,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,IAAA,oBAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC;YACJ,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACR,OAAO;QACR,CAAC;QACD,GAAG,GAAG,IAAA,mBAAO,EAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB;IACvC,OAAO,IAAA,mBAAO,EAAC,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,aAAa,CAAC,UAAkB;IACrD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,UAAkB;IAC/C,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,CAAC;QACJ,QAAQ,GAAG,IAAA,sBAAY,EAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACjE,MAAM,KAAK,CAAC;IACb,CAAC;IACD,OAAO,CACN,IAAA,2BAAc,GAAE,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;QACzG,EAAE,QAAQ,IAAI,CAAC,CAChB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACpC,IAAI,CAAC;QACJ,OAAO,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,oBAAoB,CAAC,UAAkB,EAAE,MAAyB;IAChF,MAAM,IAAI,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACd,+BAA+B,UAAU,KAAK,IAAI,iDAAiD;YAClG,+FAA+F;YAC/F,uCAAuC,CACxC,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAClF,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,MAAM,EAAE,CAAC;QACZ,IAAA,mCAAoB,EAAC,SAAS,CAAC,CAAC;QAChC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACP,IAAI,CAAC;YACJ,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,GAAG,KAAK,CAAC;YACtB,0BAAM,CAAC,IAAI,EAAE,CAAC,2CAA2C,UAAU,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAChH,CAAC;IACF,CAAC;IACD,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,GAAG,UAAU,GAAG,qCAAsB,EAAE,CAAC;IAC1D,IAAI,CAAC;QACJ,MAAM,IAAA,aAAE,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,IAAI,IAAA,oBAAU,EAAC,UAAU,CAAC;YAAE,MAAM,IAAA,iBAAM,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,aAAa,IAAI,CAAC,IAAA,oBAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBACzC,iBAAiB,GAAG,IAAI,CAAC;gBACzB,0BAAM,CAAC,IAAI,EAAE,CACZ,aAAa,SAAS,qEAAqE;oBAC1F,aAAa,UAAU,+DAA+D;oBACtF,mBAAmB,CACpB,CAAC;YACH,CAAC;QACF,CAAC;QACD,uGAAuG;QACvG,IAAI,CAAC,MAAM,IAAI,wBAAS,CAAC,IAAA,oBAAQ,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC;gBACJ,YAAY,CAAC,aAAa,CAAC,IAAA,oBAAQ,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,0BAAM,CAAC,IAAI,EAAE,CAAC,0CAA0C,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9E,CAAC;QACF,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,iBAAiB,UAAU,qEAAqE;gBAC/F,0FAA0F,CAC3F,CAAC;QACH,CAAC;QACD,MAAM,IAAA,aAAE,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;YAAS,CAAC;QACV,IAAI,aAAa,EAAE,CAAC;YACnB,IAAI,iBAAiB;gBAAE,IAAA,uCAAwB,EAAC,SAAS,CAAC,CAAC;;gBACtD,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,wBAAwB,CACtC,UAAkB,EAClB,SAAiB,EACjB,EAAE,YAAY,EAA6B;IAE3C,MAAM,QAAQ,GAAG,GAAG,UAAU,GAAG,qCAAsB,EAAE,CAAC;IAC1D,IAAI,CAAC,IAAA,oBAAU,EAAC,QAAQ,CAAC;QAAE,OAAO;IAClC,0BAAM,CAAC,IAAI,EAAE,CAAC,qDAAqD,UAAU,EAAE,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY;QAAE,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;IACpD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACJ,+FAA+F;QAC/F,gGAAgG;QAChG,+FAA+F;QAC/F,eAAe;QACf,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,UAAU,GAAG,IAAA,qCAA2B,EAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/F,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,IAAI,KAAK,CACd,2CAA2C,UAAU,yCAAyC;oBAC7F,qCAAqC,CACtC,CAAC;YACH,CAAC;QACF,CAAC;aAAM,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC;YAChB,0BAAM,CAAC,IAAI,EAAE,CACZ,0CAA0C,UAAU,+CAA+C;gBAClG,sCAAsC,SAAS,oBAAoB,CACpE,CAAC;QACH,CAAC;QACD,MAAM,IAAA,aAAE,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;YAAS,CAAC;QACV,IAAI,QAAQ;YAAE,IAAA,uCAAwB,EAAC,SAAS,CAAC,CAAC;aAC7C,IAAI,CAAC,YAAY;YAAE,IAAA,oCAAqB,EAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,UAAyB;IAC9C,IAAI,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK;QAAE,WAAW,CAAC,UAAU,CAAC,CAAC;AAC3G,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,UAAkB;IAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,MAAM,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;IACjE,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAA,qCAA2B,EAAC,SAAS,CAAC,CAAC;IAC1D,mGAAmG;IACnG,4FAA4F;IAC5F,mGAAmG;IACnG,iDAAiD;IACjD,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS;QACrE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,UAAU,CAAC;AACf,CAAC;AAED,sGAAsG;AACtG,SAAS,kBAAkB,CAAC,UAAkB;IAC7C,OAAO,eAAe,CAAC,IAAA,oBAAQ,EAAC,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC,EAAE,IAAA,oBAAQ,EAAC,UAAU,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,cAAc;IACnC,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QAAE,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;AACvF,CAAC;AAED,wHAAwH;AACxH,SAAS,oBAAoB,CAAC,OAAe;IAC5C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACxG,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAA,2BAAY,GAAE,CAAC;IACf,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,KAAM,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;IACtG,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS;QACjC,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAS,CAAC;QACzB,mCAAqB;QACrB,8EAA8E;QAC9E,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,2BAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC;YACJ,WAAW,CAAC,GAAG,CAAC,IAAA,gBAAI,EAAC,IAAA,yCAA0B,EAAC,QAAQ,CAAC,EAAE,8BAAe,CAAC,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,iCAAiC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACJ,OAAO,GAAG,IAAA,qBAAW,EAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAClF,SAAS;QACV,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,qCAAsB,CAAC;gBAC9C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,qCAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;iBAChE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;;gBAC9E,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,yFAAyF;AACzF,SAAgB,2BAA2B,CAAC,OAAe;IAC1D,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,4BAA4B,CAAC,OAAe;IACjE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,KAAM,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;IACtG,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC;YACJ,MAAM,wBAAwB,CAAC,UAAU,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACrG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,UAAU,GAAG,qCAAsB,EAAE,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC;YACJ,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oDAAoD,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,eAAe,CACpC,OAAe,EACf,iBAA8C,EAC9C,UAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAErD,4FAA4F;IAC5F,0FAA0F;IAC1F,2DAA2D;IAC3D,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACd,gBAAgB,OAAO,0EAA0E;YAChG,mGAAmG,CACpG,CAAC;IACH,CAAC;IACD,+EAA+E;IAC/E,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE7E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC,GAAG,CAAC,2BAAa,CAAC,cAAc,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,yEAAyE,CAAC,CAAC;IACnH,CAAC;IAED,IAAA,2BAAY,GAAE,CAAC;IACf,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAChC,iGAAiG;QACjG,4FAA4F;QAC5F,gGAAgG;QAChG,wFAAwF;QACxF,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC/C,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QAC1C,IAAI,CAAC,wBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,oCAAoC,QAAQ,yBAAyB,CAAC,CAAC;QAC/G,CAAC;QACD,gGAAgG;QAChG,gGAAgG;QAChG,yDAAyD;QACzD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,SAAS,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACd,gBAAgB,OAAO,oBAAoB,QAAQ,wCAAwC;gBAC1F,GAAG,SAAS,CAAC,MAAM,yBAAyB,eAAe,UAAU,CACtE,CAAC;QACH,CAAC;IACF,CAAC;IACD,6FAA6F;IAC7F,+FAA+F;IAC/F,4FAA4F;IAC5F,mCAAmC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACJ,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAA,gCAAiB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACnE,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QACD,8FAA8F;QAC9F,gGAAgG;QAChG,4EAA4E;QAC5E,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,eAAe,GAAG,QAAQ,CAAC;YAClC,IAAA,yCAA0B,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,4FAA4F;QAC5F,8FAA8F;QAC9F,+FAA+F;QAC/F,wEAAwE;QACxE,KAAK,MAAM,UAAU,IAAI,MAAM;YAAE,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACjF,MAAM,KAAK,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -135,21 +135,21 @@ function applyForward(record, update) {
135
135
  * against, and everything newer than the delete is irrelevant to a `timestamp` that precedes it (a
136
136
  * key that was deleted then re-inserted, see issue #1330).
137
137
  *
138
- * `fromVersion` is the newest pre-delete entry (the delete's previousVersion); the walk follows the
139
- * previousVersion chain from there. Entries newer than `timestamp` are skipped (the cutoff may fall
138
+ * `fromPosition` is the newest pre-delete audit position; the walk follows the previous links from
139
+ * there. Entries newer than `timestamp` are skipped (the cutoff may fall
140
140
  * between entries). Returns null if the record did not exist at `timestamp` (the nearest in-range
141
141
  * history boundary is a delete with no surviving writes, or there is no in-range history).
142
142
  */
143
- function reconstructForward(auditStore, store, tableId, recordId, fromVersion, timestamp) {
143
+ function reconstructForward(auditStore, store, tableId, recordId, fromPosition, timestamp) {
144
144
  // Collect the in-range entries (at or before `timestamp`) back to a base boundary, newest-first.
145
145
  // The boundary is a full `put` (snapshot) or a `delete` (everything older is erased); a record
146
146
  // whose first write was a `patch` has no put and bottoms out at the start of history. Only
147
147
  // `put`/`patch` contribute to the value, matching the reverse walk's switch (other partial types
148
148
  // such as `invalidate` are ignored).
149
149
  const entries = [];
150
- let auditTime = fromVersion;
150
+ let { txnLogKey: auditTime, nodeId: auditNodeId } = fromPosition;
151
151
  while (auditTime > 0) {
152
- const auditEntry = auditStore.get(auditTime, tableId, recordId);
152
+ const auditEntry = auditStore.get(auditTime, tableId, recordId, auditNodeId);
153
153
  if (!auditEntry)
154
154
  break;
155
155
  if (auditEntry.type === 'delete') {
@@ -168,7 +168,9 @@ function reconstructForward(auditStore, store, tableId, recordId, fromVersion, t
168
168
  entries.push(auditEntry);
169
169
  }
170
170
  }
171
- auditTime = auditEntry.previousVersion;
171
+ const previousPosition = previousAuditPosition(auditStore, tableId, recordId, auditEntry);
172
+ auditTime = previousPosition.txnLogKey;
173
+ auditNodeId = previousPosition.nodeId;
172
174
  }
173
175
  if (entries.length === 0)
174
176
  return null; // record did not exist at `timestamp`
@@ -190,6 +192,33 @@ function reconstructForward(auditStore, store, tableId, recordId, fromVersion, t
190
192
  }
191
193
  return record;
192
194
  }
195
+ function resolveAuditPosition(auditStore, tableId, recordId, version, nodeId, refs) {
196
+ if (!refs?.length)
197
+ return { txnLogKey: version, nodeId };
198
+ const visited = new Set();
199
+ const pending = refs.slice().reverse();
200
+ while (pending.length > 0) {
201
+ const ref = pending.pop();
202
+ const identity = `${ref.nodeId ?? 0}:${ref.version}`;
203
+ if (visited.has(identity))
204
+ continue;
205
+ visited.add(identity);
206
+ const entry = auditStore.get(ref.version, tableId, recordId, ref.nodeId);
207
+ if (!entry)
208
+ continue;
209
+ if (entry.version === version && (nodeId == null || (entry.nodeId ?? 0) === nodeId))
210
+ return { txnLogKey: ref.version, nodeId: ref.nodeId };
211
+ const previousRefs = entry.previousAdditionalAuditRefs;
212
+ if (previousRefs) {
213
+ for (let index = previousRefs.length - 1; index >= 0; index--)
214
+ pending.push(previousRefs[index]);
215
+ }
216
+ }
217
+ return { txnLogKey: version, nodeId };
218
+ }
219
+ function previousAuditPosition(auditStore, tableId, recordId, auditEntry) {
220
+ return resolveAuditPosition(auditStore, tableId, recordId, auditEntry.previousVersion, auditEntry.previousNodeId, auditEntry.previousAdditionalAuditRefs);
221
+ }
193
222
  /**
194
223
  * Reconstruct the record state at a given timestamp by going back through the audit history and reversing any changes
195
224
  * @param currentEntry
@@ -200,11 +229,18 @@ function reconstructForward(auditStore, store, tableId, recordId, fromVersion, t
200
229
  function getRecordAtTime(currentEntry, timestamp, store, tableId, recordId) {
201
230
  const auditStore = store.rootStore.auditStore;
202
231
  let record = { ...currentEntry.value };
203
- let auditTime = currentEntry.localTime;
232
+ // `localTime` is the record's audit head on both engines: the audit-store key on LMDB, where it
233
+ // is a different clock than the record version, and the transaction-log key on RocksDB. Only a
234
+ // RocksDB record carrying `additionalAuditRefs` needs its head resolved from the version.
235
+ const initialPosition = currentEntry.additionalAuditRefs?.length
236
+ ? resolveAuditPosition(auditStore, tableId, recordId, currentEntry.version, currentEntry.nodeId, currentEntry.additionalAuditRefs)
237
+ : { txnLogKey: currentEntry.localTime ?? currentEntry.version, nodeId: currentEntry.nodeId };
238
+ let auditTime = initialPosition.txnLogKey;
239
+ let auditNodeId = initialPosition.nodeId;
204
240
  // Iterate in reverse through the record history, trying to reverse all changes
205
241
  const unknowns = new Set();
206
242
  while (auditTime > timestamp) {
207
- const auditEntry = auditStore.get(auditTime, tableId, recordId);
243
+ const auditEntry = auditStore.get(auditTime, tableId, recordId, auditNodeId);
208
244
  if (!auditEntry)
209
245
  break;
210
246
  switch (auditEntry.type) {
@@ -218,15 +254,17 @@ function getRecordAtTime(currentEntry, timestamp, store, tableId, recordId) {
218
254
  // The reverse walk reached a delete that is newer than `timestamp`. There is no
219
255
  // base record to keep reversing patches against, so reconstruct the pre-delete
220
256
  // state forward instead (issue #1330: a key deleted then re-inserted).
221
- return reconstructForward(auditStore, store, tableId, recordId, auditEntry.previousVersion, timestamp);
257
+ return reconstructForward(auditStore, store, tableId, recordId, previousAuditPosition(auditStore, tableId, recordId, auditEntry), timestamp);
222
258
  }
223
- auditTime = auditEntry.previousVersion;
259
+ const previousPosition = previousAuditPosition(auditStore, tableId, recordId, auditEntry);
260
+ auditTime = previousPosition.txnLogKey;
261
+ auditNodeId = previousPosition.nodeId;
224
262
  }
225
263
  // If the most recent entry at or before `timestamp` is a delete, the record did not exist then.
226
264
  // (A delete reached as a boundary — rather than crossed, which returns via reconstructForward —
227
265
  // is otherwise missed, leaving `record` holding a newer re-inserted value. See issue #1330.)
228
266
  if (auditTime > 0) {
229
- const boundaryEntry = auditStore.get(auditTime, tableId, recordId);
267
+ const boundaryEntry = auditStore.get(auditTime, tableId, recordId, auditNodeId);
230
268
  if (boundaryEntry?.type === 'delete')
231
269
  return null;
232
270
  }
@@ -238,7 +276,7 @@ function getRecordAtTime(currentEntry, timestamp, store, tableId, recordId) {
238
276
  // single delta rather than the folded value at `timestamp`. If the history needed to reconstruct a
239
277
  // key is unavailable (pruned), the key keeps its live value (best effort, as before).
240
278
  if (unknowns.size > 0 && auditTime > 0) {
241
- const priorRecord = reconstructForward(auditStore, store, tableId, recordId, auditTime, timestamp);
279
+ const priorRecord = reconstructForward(auditStore, store, tableId, recordId, { txnLogKey: auditTime, nodeId: auditNodeId }, timestamp);
242
280
  if (priorRecord) {
243
281
  for (const key of unknowns) {
244
282
  // Object.hasOwn, not `in`: an unknown field named like a prototype member (toString,
@@ -1 +1 @@
1
- {"version":3,"file":"crdt.js","sourceRoot":"","sources":["../../resources/crdt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crdt.js","sourceRoot":"","sources":["../../resources/crdt.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,12 @@ import { makeTable } from './Table.ts';
4
4
  import { RocksDatabase } from '@harperfast/rocksdb-js';
5
5
  export declare function isReadOnlyMode(): boolean;
6
6
  declare const DEFINED_TABLES: unique symbol;
7
+ type RelationshipHydration = {
8
+ table: any;
9
+ databaseName: string;
10
+ tableName: string;
11
+ definitions: unknown[];
12
+ };
7
13
  export declare function getRocksCompression(): string | undefined;
8
14
  /**
9
15
  * Test-only: un-freezes the resolved codec. Production code never calls this — the freeze is the
@@ -102,6 +108,12 @@ export declare function getTables(): Tables;
102
108
  * can span any tables in the database.
103
109
  */
104
110
  export declare function getDatabases(): Databases;
111
+ /**
112
+ * Hydrate one branch's relationships, resolving each target against the application's own branches
113
+ * first and only then against the real databases: a target the application also branched must be its
114
+ * branch's table, and a target it did not branch is legitimately the shared one.
115
+ */
116
+ export declare function hydrateBranchRelationships(branch: BranchDatabase, branches: Map<string, BranchDatabase>): void;
105
117
  /**
106
118
  * This is responsible for reading the internal dbi of a single database file to get a list of all the tables and
107
119
  * their indexed or registered attributes
@@ -110,6 +122,128 @@ export declare function getDatabases(): Databases;
110
122
  * @param databaseName
111
123
  */
112
124
  export declare function readMetaDb(path: string, defaultTable?: string, databaseName?: string, auditPath?: string, isLegacy?: boolean): RootDatabaseKind;
125
+ /**
126
+ * Branch directories live beside the base database's own storage root, never under the HDB root: a
127
+ * database can be placed on its own volume, and `createCheckpoint` only hardlinks when source and
128
+ * target share a filesystem — off-volume it degrades to a full byte copy, which is the property the
129
+ * whole feature rests on.
130
+ *
131
+ * The backticks are what make the name reserved rather than merely conventional: `schemaRegex`
132
+ * (validation/common_validators.ts) excludes 0x60, so no database can ever be created under this
133
+ * name and shadow the branch root -- the same protection RESTORE_META_DIR uses.
134
+ */
135
+ export declare const BRANCH_ROOT_DIR = "`branches`";
136
+ /**
137
+ * Where the branch of `baseName` belonging to `appName` lives. Derived only from those two names, so
138
+ * every node in a cluster resolves the same application's branch to the same place — the identity an
139
+ * application's data needs if it is to be addressed, and eventually replicated, cluster-wide.
140
+ *
141
+ * App and database are separate path segments: joining them (`<app>__<db>`) is not injective —
142
+ * `(a__b, c)` and `(a, b__c)` collide — so two declarations could otherwise open one directory.
143
+ */
144
+ export declare function resolveBranchPath(baseName: string, appName: string): string;
145
+ /** A branch's private table graph plus the handle needed to tear it down. */
146
+ export interface BranchDatabase {
147
+ tables: Tables;
148
+ rootStore: RootDatabaseKind;
149
+ /** The realpath of the branch directory; what a schema-change signal names to address this branch. */
150
+ path: string;
151
+ /** The logical name the application uses (`data`); every Table class in `tables` carries it. */
152
+ databaseName: string;
153
+ /** The branch's own store identity, which its blob roots resolve from. */
154
+ storeName: string;
155
+ /**
156
+ * Every column-family wrapper opened on this store -- by the open, by a reload, or by a table
157
+ * declaration -- so `close()` can release them all. Recorded at acquisition rather than
158
+ * reconstructed from `tables` at close: a re-declaration displaces the index and catalog wrappers it
159
+ * replaces, and a failed declaration can leave one that no class ever held.
160
+ */
161
+ openedStores: any[];
162
+ /**
163
+ * Relationships this branch's tables declared, still un-hydrated. They cannot be resolved at open
164
+ * time: a branch's definitions name the BASE database (its tables carry the base's logical names),
165
+ * so resolving them through the global map would point the application's relationship reads at the
166
+ * base. `hydrateBranchRelationships` finishes the job once the whole branch set is known.
167
+ */
168
+ pendingRelationships: RelationshipHydration[];
169
+ /**
170
+ * The application's whole branch set, once `prepareBranches` has opened it, so a reload can hydrate
171
+ * a relationship whose target the application also branched against that branch.
172
+ */
173
+ relatedBranches?: Map<string, BranchDatabase>;
174
+ close(): void;
175
+ }
176
+ /**
177
+ * Suffix of the sibling a branch is renamed to while being removed. A backtick, not a dot:
178
+ * `schemaRegex` excludes 0x60, so no database can be named such that `<db>` + this suffix is another
179
+ * branch's directory (with `.removing`, an application branching both `data` and `data.removing`, both
180
+ * legal names, would destroy one by opening the other).
181
+ */
182
+ export declare const BRANCH_REMOVING_SUFFIX = "`removing`";
183
+ export declare function quarantineBranchIdentity(storeName: string): void;
184
+ /**
185
+ * Refuse a branch store identity that something else already answers to.
186
+ *
187
+ * `storeName` picks the branch's blob roots, and blob file ids restart from each store's own counter,
188
+ * so two holders of one identity write the same file paths and truncate each other. It must be
189
+ * checked BEFORE anything destructive runs: materialization removes and replaces the blob root that
190
+ * this name resolves to, and a real database may legally be called `5_myapp__data` -- `schemaRegex`
191
+ * permits digits, `_` and `.`. The `.staging` sibling materialization writes is covered too, since a
192
+ * database may legally carry that name as well.
193
+ */
194
+ export declare function assertBranchIdentityAvailable(storeName: string): void;
195
+ /**
196
+ * Claim the identity as well as checking it, so the window between the check and the branch actually
197
+ * opening cannot be filled by a concurrent create or a second branch. `releaseBranchIdentity` hands
198
+ * it back if materialization never gets as far as opening.
199
+ */
200
+ export declare function reserveBranchIdentity(storeName: string): void;
201
+ /**
202
+ * Take the pair back for an operation that owned it a statement ago -- cleanup, which has to keep
203
+ * holding the names through the deletions its `close()` just released them for. Deliberately without
204
+ * the availability check: nothing can have taken a name the caller held until now, and the check runs
205
+ * the database scan, which at that exact moment would find the branch directory unowned.
206
+ */
207
+ export declare function retakeBranchIdentity(storeName: string): void;
208
+ export declare function releaseBranchIdentity(storeName: string): void;
209
+ /** Is this name spoken for by a branch? Database creation has to refuse it -- they share a blob root. */
210
+ export declare function isBranchIdentity(name: string): boolean;
211
+ /**
212
+ * Open a RocksDB directory as a **scope-private** database: its Table classes are built into an
213
+ * object the caller owns and nothing is registered in the global `databases` map, so no enumerator
214
+ * of that map — analytics, `describe_all`, worker teardown, replication — can observe it.
215
+ *
216
+ * `databaseName` is the *logical* name the application knows (`data`), so its schema and code need
217
+ * no changes. `storeName` is the branch's own identity and is what `getRootBlobPathsForDB` resolves
218
+ * blob directories from, which is how a branch gets its own blob roots rather than writing into the
219
+ * base's.
220
+ *
221
+ * The caller owns the returned handle; the only thing that closes it on the caller's behalf is
222
+ * `closeBranchDatabases`, run by an exiting job worker (via `closeLoadedDatabases`) and by an HTTP
223
+ * worker's shutdown path, so a branch left open on an exiting worker does not linger in the
224
+ * process-global RocksDB registry.
225
+ *
226
+ * Schema changes reach a branch only through its own bound factory (`scopedTableFactory`): a
227
+ * declaration re-asserted against the branch's store. A branch's Table classes carry the base's
228
+ * logical name, so the Table statics (`dropTable()`, `addAttributes()`) — which resolve the global
229
+ * schema by that name and would act on the live base table — stay refused (`assertSchemaMutable`).
230
+ *
231
+ * A branch's blob roots are a hard-link clone of the base's, taken with the checkpoint, so a row
232
+ * whose blob predates the branch reads back normally and the branch allocates new file ids in its own
233
+ * directory (harper#644).
234
+ *
235
+ * A branch is the checkpoint's SST content plus its own transaction-log tail. This function opens
236
+ * only the stores; replaying the tail is `openOrCreate`'s job (branchDatabase.ts), where the
237
+ * cross-thread claim elects exactly one replayer and awaits it before any thread may open the
238
+ * branch — the same recovery contract a base database gets at boot, without which a process that
239
+ * died unflushed silently rewinds the branch to its last memtable flush (harper#643).
240
+ *
241
+ * Pass `blobRoots` to pin the handle to the roots the branch was published with; without it the
242
+ * store resolves them from current configuration, which is only right for a branch being created.
243
+ */
244
+ export declare function openBranchDatabase(path: string, databaseName: string, storeName: string, blobRoots?: string[]): BranchDatabase;
245
+ /** Branches are process-local, so this is shutdown, not a data operation. */
246
+ export declare function closeBranchDatabases(): void;
113
247
  export declare function resetDatabases(): Databases;
114
248
  interface TableDefinition {
115
249
  table: string;
@@ -126,6 +260,7 @@ interface TableDefinition {
126
260
  trackDeletes?: boolean;
127
261
  attributes: any[];
128
262
  schemaDefined?: boolean;
263
+ schemaRelationshipsDefined?: boolean;
129
264
  origin?: string;
130
265
  description?: string;
131
266
  properties?: Record<string, any>;
@@ -177,6 +312,9 @@ export declare function closeDatabase(databaseName: string): boolean;
177
312
  * database is closed). The `system` database is intentionally left open: it is non-enumerable here
178
313
  * (skipped by the loop), is never restored online, and the exiting worker may still touch the job
179
314
  * table during teardown. Best-effort: closing failures are swallowed inside `closeDatabase`.
315
+ *
316
+ * Branches are invisible to the loop below but hold handles from the same registry, so this — the
317
+ * thread's one teardown entry point — closes them too.
180
318
  */
181
319
  export declare function closeLoadedDatabases(): void;
182
320
  /**
@@ -194,6 +332,18 @@ export declare function closeLoadedDatabases(): void;
194
332
  * @param replicate
195
333
  */
196
334
  export declare function table<TableResourceType>(tableDefinition: TableDefinition): TableResourceType;
335
+ /**
336
+ * The factory a branched application declares tables through: each declaration goes to the branch
337
+ * of the database it names, or to `table()` itself for a database the application did not branch.
338
+ * An unbranched application gets `table` by identity -- no wrapper, no per-call routing.
339
+ */
340
+ export declare function scopedTableFactory(branches?: Map<string, BranchDatabase>): typeof table;
341
+ /**
342
+ * The receiving side of a branch's schema-change signal: a thread that holds this branch open reloads
343
+ * it, any other thread has nothing to do. Returns the branch's tables so the caller can address the
344
+ * table the signal named.
345
+ */
346
+ export declare function reloadBranchAt(path: string): Tables | undefined;
197
347
  /**
198
348
  * Canonical form used ONLY for the structural (reindex-triggering) comparison of index options.
199
349
  * `@indexed(...)` records options in source-argument order and as strings, while the operations API
@@ -207,15 +357,6 @@ export declare function table<TableResourceType>(tableDefinition: TableDefinitio
207
357
  * descriptor self-heals toward this shape over time. harper#1357
208
358
  */
209
359
  export declare function canonicalizeIndexOptions(value: any): any;
210
- export declare function setIndexingCheckpointPeriod(ms: number, minRecords?: number): {
211
- ms: number;
212
- minRecords: number;
213
- };
214
- export declare function resumeStartKey(attributes: {
215
- lastIndexedKey?: any;
216
- }[]): any;
217
- export declare const ABANDONED_MARK_LOCK_TIMEOUT = 10000;
218
- export declare function tryAcquireUpdateAttributesLock(rootStore: RocksDatabase, timeout?: number): boolean;
219
360
  export declare function dropTableMeta({ table: tableName, database: databaseName }: {
220
361
  table: any;
221
362
  database: any;