@harperfast/harper 5.2.13 → 5.3.0-beta.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 (655) hide show
  1. package/agent/mcpTools.ts +1 -1
  2. package/agent/session.ts +25 -14
  3. package/bin/cliOperations.ts +58 -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 +120 -4
  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 +3436 -242
  14. package/components/ApplicationScope.ts +8 -0
  15. package/components/EntryHandler.ts +59 -39
  16. package/components/OptionsWatcher.ts +440 -98
  17. package/components/RuntimeModuleTracker.ts +38 -7
  18. package/components/Scope.ts +56 -15
  19. package/components/awaitRestart.ts +84 -0
  20. package/components/componentLoader.ts +381 -32
  21. package/components/componentPreparationLock.ts +16 -5
  22. package/components/deploymentOperations.ts +4 -1
  23. package/components/deploymentRecorder.ts +9 -2
  24. package/components/mcp/adapters/harperHttp.ts +4 -0
  25. package/components/mcp/listChanged.ts +4 -0
  26. package/components/mcp/toolRegistry.ts +2 -0
  27. package/components/mcp/tools/operations.ts +9 -0
  28. package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
  29. package/components/operations.js +537 -113
  30. package/components/operationsValidation.js +98 -3
  31. package/components/packageComponent.ts +25 -1
  32. package/components/requestRestart.ts +11 -0
  33. package/components/status/ComponentStatusRegistry.ts +59 -0
  34. package/config/RootConfigWatcher.ts +240 -40
  35. package/config/configReadRetry.ts +62 -0
  36. package/config/configUtils.ts +357 -48
  37. package/config/harperConfigEnvVars.ts +170 -27
  38. package/config/parseConfigFile.ts +34 -0
  39. package/config/readConfigFileSync.ts +44 -0
  40. package/config/watcherArming.ts +59 -0
  41. package/config-root.schema.json +33 -0
  42. package/dataLayer/blobBackup.ts +160 -50
  43. package/dataLayer/delete.ts +6 -1
  44. package/dataLayer/harperBridge/ResourceBridge.ts +80 -10
  45. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  46. package/dataLayer/hdbInfoController.ts +34 -1
  47. package/dataLayer/insert.ts +44 -1
  48. package/dataLayer/rocksdbBackup.ts +53 -10
  49. package/dataLayer/schema.ts +11 -1
  50. package/dataLayer/schemaDescribe.ts +8 -1
  51. package/dist/agent/mcpTools.js +1 -1
  52. package/dist/agent/mcpTools.js.map +1 -1
  53. package/dist/agent/session.d.ts +22 -0
  54. package/dist/agent/session.js +26 -15
  55. package/dist/agent/session.js.map +1 -1
  56. package/dist/bin/cliOperations.js +61 -9
  57. package/dist/bin/cliOperations.js.map +1 -1
  58. package/dist/bin/copyDb.d.ts +12 -1
  59. package/dist/bin/copyDb.js +248 -60
  60. package/dist/bin/copyDb.js.map +1 -1
  61. package/dist/bin/deploySetup.d.ts +2 -0
  62. package/dist/bin/deploySetup.js +11 -3
  63. package/dist/bin/deploySetup.js.map +1 -1
  64. package/dist/bin/harper.js +1 -1
  65. package/dist/bin/harper.js.map +1 -1
  66. package/dist/bin/help.js +4 -1
  67. package/dist/bin/help.js.map +1 -1
  68. package/dist/bin/lite.js +4 -1
  69. package/dist/bin/lite.js.map +1 -1
  70. package/dist/bin/restart.js +91 -6
  71. package/dist/bin/restart.js.map +1 -1
  72. package/dist/bin/run.js +4 -10
  73. package/dist/bin/run.js.map +1 -1
  74. package/dist/bin/upgrade.js +4 -3
  75. package/dist/bin/upgrade.js.map +1 -1
  76. package/dist/bin/workloadIdentity.d.ts +18 -0
  77. package/dist/bin/workloadIdentity.js +100 -0
  78. package/dist/bin/workloadIdentity.js.map +1 -0
  79. package/dist/components/Application.d.ts +235 -17
  80. package/dist/components/Application.js +3038 -238
  81. package/dist/components/Application.js.map +1 -1
  82. package/dist/components/ApplicationScope.d.ts +8 -0
  83. package/dist/components/ApplicationScope.js +7 -0
  84. package/dist/components/ApplicationScope.js.map +1 -1
  85. package/dist/components/EntryHandler.js +26 -10
  86. package/dist/components/EntryHandler.js.map +1 -1
  87. package/dist/components/OptionsWatcher.d.ts +4 -0
  88. package/dist/components/OptionsWatcher.js +440 -99
  89. package/dist/components/OptionsWatcher.js.map +1 -1
  90. package/dist/components/RuntimeModuleTracker.js +40 -6
  91. package/dist/components/RuntimeModuleTracker.js.map +1 -1
  92. package/dist/components/Scope.js +52 -13
  93. package/dist/components/Scope.js.map +1 -1
  94. package/dist/components/awaitRestart.d.ts +33 -0
  95. package/dist/components/awaitRestart.js +61 -0
  96. package/dist/components/awaitRestart.js.map +1 -0
  97. package/dist/components/componentLoader.d.ts +38 -1
  98. package/dist/components/componentLoader.js +313 -24
  99. package/dist/components/componentLoader.js.map +1 -1
  100. package/dist/components/componentPreparationLock.d.ts +5 -0
  101. package/dist/components/componentPreparationLock.js +14 -6
  102. package/dist/components/componentPreparationLock.js.map +1 -1
  103. package/dist/components/deploymentOperations.js +4 -1
  104. package/dist/components/deploymentOperations.js.map +1 -1
  105. package/dist/components/deploymentRecorder.d.ts +4 -2
  106. package/dist/components/deploymentRecorder.js +1 -0
  107. package/dist/components/deploymentRecorder.js.map +1 -1
  108. package/dist/components/mcp/adapters/harperHttp.js +4 -0
  109. package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
  110. package/dist/components/mcp/listChanged.js +5 -0
  111. package/dist/components/mcp/listChanged.js.map +1 -1
  112. package/dist/components/mcp/toolRegistry.d.ts +1 -0
  113. package/dist/components/mcp/toolRegistry.js.map +1 -1
  114. package/dist/components/mcp/tools/operations.d.ts +5 -0
  115. package/dist/components/mcp/tools/operations.js +9 -0
  116. package/dist/components/mcp/tools/operations.js.map +1 -1
  117. package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
  118. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  119. package/dist/components/operations.d.ts +28 -0
  120. package/dist/components/operations.js +476 -113
  121. package/dist/components/operations.js.map +1 -1
  122. package/dist/components/operationsValidation.js +97 -3
  123. package/dist/components/operationsValidation.js.map +1 -1
  124. package/dist/components/packageComponent.js +24 -0
  125. package/dist/components/packageComponent.js.map +1 -1
  126. package/dist/components/requestRestart.d.ts +1 -0
  127. package/dist/components/requestRestart.js +7 -0
  128. package/dist/components/requestRestart.js.map +1 -1
  129. package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
  130. package/dist/components/status/ComponentStatusRegistry.js +63 -0
  131. package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
  132. package/dist/config/RootConfigWatcher.d.ts +9 -1
  133. package/dist/config/RootConfigWatcher.js +228 -37
  134. package/dist/config/RootConfigWatcher.js.map +1 -1
  135. package/dist/config/configReadRetry.d.ts +8 -0
  136. package/dist/config/configReadRetry.js +62 -0
  137. package/dist/config/configReadRetry.js.map +1 -0
  138. package/dist/config/configUtils.d.ts +11 -2
  139. package/dist/config/configUtils.js +304 -47
  140. package/dist/config/configUtils.js.map +1 -1
  141. package/dist/config/harperConfigEnvVars.d.ts +16 -0
  142. package/dist/config/harperConfigEnvVars.js +162 -25
  143. package/dist/config/harperConfigEnvVars.js.map +1 -1
  144. package/dist/config/parseConfigFile.d.ts +4 -0
  145. package/dist/config/parseConfigFile.js +35 -0
  146. package/dist/config/parseConfigFile.js.map +1 -0
  147. package/dist/config/readConfigFileSync.d.ts +1 -0
  148. package/dist/config/readConfigFileSync.js +47 -0
  149. package/dist/config/readConfigFileSync.js.map +1 -0
  150. package/dist/config/watcherArming.d.ts +15 -0
  151. package/dist/config/watcherArming.js +59 -0
  152. package/dist/config/watcherArming.js.map +1 -0
  153. package/dist/dataLayer/blobBackup.d.ts +49 -20
  154. package/dist/dataLayer/blobBackup.js +139 -50
  155. package/dist/dataLayer/blobBackup.js.map +1 -1
  156. package/dist/dataLayer/delete.js +1 -1
  157. package/dist/dataLayer/delete.js.map +1 -1
  158. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
  159. package/dist/dataLayer/harperBridge/ResourceBridge.js +72 -12
  160. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  161. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
  162. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  163. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
  164. package/dist/dataLayer/hdbInfoController.d.ts +10 -0
  165. package/dist/dataLayer/hdbInfoController.js +30 -1
  166. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  167. package/dist/dataLayer/insert.d.ts +9 -1
  168. package/dist/dataLayer/insert.js +30 -0
  169. package/dist/dataLayer/insert.js.map +1 -1
  170. package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
  171. package/dist/dataLayer/rocksdbBackup.js +45 -8
  172. package/dist/dataLayer/rocksdbBackup.js.map +1 -1
  173. package/dist/dataLayer/schema.js +8 -0
  174. package/dist/dataLayer/schema.js.map +1 -1
  175. package/dist/dataLayer/schemaDescribe.js +8 -1
  176. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  177. package/dist/index.d.ts +2 -1
  178. package/dist/index.js +4 -1
  179. package/dist/index.js.map +1 -1
  180. package/dist/json/systemSchema.json +55 -0
  181. package/dist/resources/DatabaseTransaction.d.ts +77 -0
  182. package/dist/resources/DatabaseTransaction.js +586 -54
  183. package/dist/resources/DatabaseTransaction.js.map +1 -1
  184. package/dist/resources/LMDBTransaction.d.ts +2 -1
  185. package/dist/resources/LMDBTransaction.js +43 -6
  186. package/dist/resources/LMDBTransaction.js.map +1 -1
  187. package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
  188. package/dist/resources/PrimaryRocksDatabase.js +49 -5
  189. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  190. package/dist/resources/RecordEncoder.d.ts +20 -0
  191. package/dist/resources/RecordEncoder.js +110 -9
  192. package/dist/resources/RecordEncoder.js.map +1 -1
  193. package/dist/resources/RequestTarget.d.ts +2 -0
  194. package/dist/resources/RequestTarget.js.map +1 -1
  195. package/dist/resources/Resource.js +117 -24
  196. package/dist/resources/Resource.js.map +1 -1
  197. package/dist/resources/ResourceInterface.d.ts +28 -1
  198. package/dist/resources/ResourceInterface.js.map +1 -1
  199. package/dist/resources/RocksIndexStore.d.ts +6 -1
  200. package/dist/resources/RocksIndexStore.js +24 -9
  201. package/dist/resources/RocksIndexStore.js.map +1 -1
  202. package/dist/resources/RocksTransactionLogStore.d.ts +24 -1
  203. package/dist/resources/RocksTransactionLogStore.js +160 -49
  204. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  205. package/dist/resources/Table.d.ts +165 -10
  206. package/dist/resources/Table.js +1805 -303
  207. package/dist/resources/Table.js.map +1 -1
  208. package/dist/resources/analytics/write.js +10 -3
  209. package/dist/resources/analytics/write.js.map +1 -1
  210. package/dist/resources/auditStore.d.ts +181 -2
  211. package/dist/resources/auditStore.js +640 -29
  212. package/dist/resources/auditStore.js.map +1 -1
  213. package/dist/resources/blob.d.ts +129 -9
  214. package/dist/resources/blob.js +992 -114
  215. package/dist/resources/blob.js.map +1 -1
  216. package/dist/resources/branchDatabase.d.ts +48 -0
  217. package/dist/resources/branchDatabase.js +892 -0
  218. package/dist/resources/branchDatabase.js.map +1 -0
  219. package/dist/resources/crdt.js +50 -12
  220. package/dist/resources/crdt.js.map +1 -1
  221. package/dist/resources/dataLoader.js +3 -4
  222. package/dist/resources/dataLoader.js.map +1 -1
  223. package/dist/resources/databases.d.ts +157 -14
  224. package/dist/resources/databases.js +1462 -325
  225. package/dist/resources/databases.js.map +1 -1
  226. package/dist/resources/defineTable.d.ts +10 -2
  227. package/dist/resources/defineTable.js +9 -1
  228. package/dist/resources/defineTable.js.map +1 -1
  229. package/dist/resources/derivedIndexRegistry.d.ts +5 -0
  230. package/dist/resources/derivedIndexRegistry.js +68 -0
  231. package/dist/resources/derivedIndexRegistry.js.map +1 -0
  232. package/dist/resources/derivedIndexRuntime.d.ts +215 -0
  233. package/dist/resources/derivedIndexRuntime.js +2027 -0
  234. package/dist/resources/derivedIndexRuntime.js.map +1 -0
  235. package/dist/resources/graphql.d.ts +1 -1
  236. package/dist/resources/graphql.js +52 -16
  237. package/dist/resources/graphql.js.map +1 -1
  238. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +103 -9
  239. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +854 -41
  240. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  241. package/dist/resources/indexes/hnswDerivedIndex.d.ts +67 -0
  242. package/dist/resources/indexes/hnswDerivedIndex.js +464 -0
  243. package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -0
  244. package/dist/resources/indexes/hnswPlaneBinding.d.ts +65 -0
  245. package/dist/resources/indexes/hnswPlaneBinding.js +91 -0
  246. package/dist/resources/indexes/hnswPlaneBinding.js.map +1 -0
  247. package/dist/resources/longLivedTransactions.d.ts +71 -0
  248. package/dist/resources/longLivedTransactions.js +358 -0
  249. package/dist/resources/longLivedTransactions.js.map +1 -0
  250. package/dist/resources/models/backendRegistry.d.ts +26 -0
  251. package/dist/resources/models/backendRegistry.js +60 -2
  252. package/dist/resources/models/backendRegistry.js.map +1 -1
  253. package/dist/resources/models/bootstrap.d.ts +33 -1
  254. package/dist/resources/models/bootstrap.js +416 -31
  255. package/dist/resources/models/bootstrap.js.map +1 -1
  256. package/dist/resources/nodeIdMapping.d.ts +5 -0
  257. package/dist/resources/nodeIdMapping.js +49 -0
  258. package/dist/resources/nodeIdMapping.js.map +1 -1
  259. package/dist/resources/recordLock.d.ts +123 -0
  260. package/dist/resources/recordLock.js +315 -0
  261. package/dist/resources/recordLock.js.map +1 -0
  262. package/dist/resources/recordLockCoordinator.d.ts +557 -0
  263. package/dist/resources/recordLockCoordinator.js +2565 -0
  264. package/dist/resources/recordLockCoordinator.js.map +1 -0
  265. package/dist/resources/replayLogs.d.ts +14 -1
  266. package/dist/resources/replayLogs.js +157 -24
  267. package/dist/resources/replayLogs.js.map +1 -1
  268. package/dist/resources/replayLogsGuards.d.ts +94 -7
  269. package/dist/resources/replayLogsGuards.js +111 -7
  270. package/dist/resources/replayLogsGuards.js.map +1 -1
  271. package/dist/resources/replicatedApplyFailure.d.ts +16 -0
  272. package/dist/resources/replicatedApplyFailure.js +63 -0
  273. package/dist/resources/replicatedApplyFailure.js.map +1 -0
  274. package/dist/resources/scheduler/scheduler.js +3 -3
  275. package/dist/resources/scheduler/scheduler.js.map +1 -1
  276. package/dist/resources/search.d.ts +10 -4
  277. package/dist/resources/search.js +283 -37
  278. package/dist/resources/search.js.map +1 -1
  279. package/dist/resources/tracked.d.ts +5 -1
  280. package/dist/resources/tracked.js +74 -23
  281. package/dist/resources/tracked.js.map +1 -1
  282. package/dist/resources/transactionBroadcast.d.ts +1 -1
  283. package/dist/resources/transactionBroadcast.js +2 -2
  284. package/dist/resources/transactionBroadcast.js.map +1 -1
  285. package/dist/security/auth.js +61 -30
  286. package/dist/security/auth.js.map +1 -1
  287. package/dist/security/authn/oidc/claims.d.ts +22 -0
  288. package/dist/security/authn/oidc/claims.js +71 -0
  289. package/dist/security/authn/oidc/claims.js.map +1 -0
  290. package/dist/security/authn/oidc/identityToken.d.ts +27 -0
  291. package/dist/security/authn/oidc/identityToken.js +111 -0
  292. package/dist/security/authn/oidc/identityToken.js.map +1 -0
  293. package/dist/security/authn/oidc/jwks.d.ts +25 -0
  294. package/dist/security/authn/oidc/jwks.js +261 -0
  295. package/dist/security/authn/oidc/jwks.js.map +1 -0
  296. package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
  297. package/dist/security/authn/oidc/providers/generic.js +34 -0
  298. package/dist/security/authn/oidc/providers/generic.js.map +1 -0
  299. package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
  300. package/dist/security/authn/oidc/providers/githubActions.js +129 -0
  301. package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
  302. package/dist/security/authn/oidc/providers/index.d.ts +37 -0
  303. package/dist/security/authn/oidc/providers/index.js +24 -0
  304. package/dist/security/authn/oidc/providers/index.js.map +1 -0
  305. package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
  306. package/dist/security/authn/oidc/tokenExchange.js +306 -0
  307. package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
  308. package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
  309. package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
  310. package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
  311. package/dist/security/authn/oidc/types.d.ts +38 -0
  312. package/dist/security/authn/oidc/types.js +6 -0
  313. package/dist/security/authn/oidc/types.js.map +1 -0
  314. package/dist/security/certificateVerification/index.js +40 -11
  315. package/dist/security/certificateVerification/index.js.map +1 -1
  316. package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
  317. package/dist/security/certificateVerification/trustedIssuers.js +79 -0
  318. package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
  319. package/dist/security/certificateVerification/types.d.ts +1 -0
  320. package/dist/security/credentialProvenance.d.ts +35 -0
  321. package/dist/security/credentialProvenance.js +51 -0
  322. package/dist/security/credentialProvenance.js.map +1 -0
  323. package/dist/security/credentialRejection.d.ts +4 -0
  324. package/dist/security/credentialRejection.js +24 -0
  325. package/dist/security/credentialRejection.js.map +1 -0
  326. package/dist/security/deferredAuthentication.d.ts +36 -0
  327. package/dist/security/deferredAuthentication.js +70 -0
  328. package/dist/security/deferredAuthentication.js.map +1 -0
  329. package/dist/security/impersonation.d.ts +21 -0
  330. package/dist/security/impersonation.js +108 -9
  331. package/dist/security/impersonation.js.map +1 -1
  332. package/dist/security/jsLoader.d.ts +6 -0
  333. package/dist/security/jsLoader.js +77 -15
  334. package/dist/security/jsLoader.js.map +1 -1
  335. package/dist/security/keys.js +301 -71
  336. package/dist/security/keys.js.map +1 -1
  337. package/dist/security/operationScope.d.ts +21 -0
  338. package/dist/security/operationScope.js +36 -0
  339. package/dist/security/operationScope.js.map +1 -0
  340. package/dist/security/permissionsTranslator.js +21 -0
  341. package/dist/security/permissionsTranslator.js.map +1 -1
  342. package/dist/security/tokenAuthentication.d.ts +19 -1
  343. package/dist/security/tokenAuthentication.js +191 -10
  344. package/dist/security/tokenAuthentication.js.map +1 -1
  345. package/dist/security/user.js +4 -3
  346. package/dist/security/user.js.map +1 -1
  347. package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
  348. package/dist/server/DurableSubscriptionsSession.js +67 -10
  349. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  350. package/dist/server/REST.js +106 -2
  351. package/dist/server/REST.js.map +1 -1
  352. package/dist/server/graphqlQuerying.js +4 -0
  353. package/dist/server/graphqlQuerying.js.map +1 -1
  354. package/dist/server/http.d.ts +16 -1
  355. package/dist/server/http.js +122 -17
  356. package/dist/server/http.js.map +1 -1
  357. package/dist/server/itc/serverHandlers.js +8 -1
  358. package/dist/server/itc/serverHandlers.js.map +1 -1
  359. package/dist/server/jobs/jobProcess.js +6 -2
  360. package/dist/server/jobs/jobProcess.js.map +1 -1
  361. package/dist/server/jobs/jobs.js +4 -1
  362. package/dist/server/jobs/jobs.js.map +1 -1
  363. package/dist/server/liveSubscriptionAuth.d.ts +26 -4
  364. package/dist/server/liveSubscriptionAuth.js +105 -39
  365. package/dist/server/liveSubscriptionAuth.js.map +1 -1
  366. package/dist/server/loadRootComponents.js +49 -10
  367. package/dist/server/loadRootComponents.js.map +1 -1
  368. package/dist/server/mqtt.d.ts +2 -0
  369. package/dist/server/mqtt.js +165 -30
  370. package/dist/server/mqtt.js.map +1 -1
  371. package/dist/server/nodeName.d.ts +2 -0
  372. package/dist/server/nodeName.js +107 -23
  373. package/dist/server/nodeName.js.map +1 -1
  374. package/dist/server/serverHelpers/Headers.d.ts +27 -0
  375. package/dist/server/serverHelpers/Headers.js +145 -1
  376. package/dist/server/serverHelpers/Headers.js.map +1 -1
  377. package/dist/server/serverHelpers/NodeAdapterResponse.d.ts +48 -0
  378. package/dist/server/serverHelpers/NodeAdapterResponse.js +220 -0
  379. package/dist/server/serverHelpers/NodeAdapterResponse.js.map +1 -0
  380. package/dist/server/serverHelpers/Request.d.ts +5 -10
  381. package/dist/server/serverHelpers/Request.js +38 -136
  382. package/dist/server/serverHelpers/Request.js.map +1 -1
  383. package/dist/server/serverHelpers/contentTypes.d.ts +11 -0
  384. package/dist/server/serverHelpers/contentTypes.js +221 -40
  385. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  386. package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
  387. package/dist/server/serverHelpers/deployValidationState.js +9 -19
  388. package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
  389. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
  390. package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
  391. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
  392. package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
  393. package/dist/server/serverHelpers/registeredOperations.js +74 -21
  394. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  395. package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
  396. package/dist/server/serverHelpers/requestSanitization.js +20 -0
  397. package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
  398. package/dist/server/serverHelpers/serverHandlers.js +6 -3
  399. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  400. package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
  401. package/dist/server/serverHelpers/serverUtilities.js +178 -29
  402. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  403. package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
  404. package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
  405. package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
  406. package/dist/server/serverHelpers/uwsServer.js +19 -1
  407. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  408. package/dist/server/static.js +24 -28
  409. package/dist/server/static.js.map +1 -1
  410. package/dist/server/storageReclamation.d.ts +5 -0
  411. package/dist/server/storageReclamation.js +17 -1
  412. package/dist/server/storageReclamation.js.map +1 -1
  413. package/dist/server/threads/isolatedApplications.d.ts +47 -0
  414. package/dist/server/threads/isolatedApplications.js +171 -0
  415. package/dist/server/threads/isolatedApplications.js.map +1 -0
  416. package/dist/server/threads/itc.d.ts +7 -2
  417. package/dist/server/threads/itc.js +5 -1
  418. package/dist/server/threads/itc.js.map +1 -1
  419. package/dist/server/threads/logRotationTransport.d.ts +1 -0
  420. package/dist/server/threads/logRotationTransport.js +33 -0
  421. package/dist/server/threads/logRotationTransport.js.map +1 -0
  422. package/dist/server/threads/manageThreads.d.ts +83 -3
  423. package/dist/server/threads/manageThreads.js +769 -75
  424. package/dist/server/threads/manageThreads.js.map +1 -1
  425. package/dist/server/threads/socketRouter.d.ts +1 -0
  426. package/dist/server/threads/socketRouter.js +277 -31
  427. package/dist/server/threads/socketRouter.js.map +1 -1
  428. package/dist/server/threads/threadHeapMemory.d.ts +2 -0
  429. package/dist/server/threads/threadHeapMemory.js +31 -0
  430. package/dist/server/threads/threadHeapMemory.js.map +1 -0
  431. package/dist/server/threads/threadServer.js +76 -22
  432. package/dist/server/threads/threadServer.js.map +1 -1
  433. package/dist/sqlEngine/config.d.ts +1 -3
  434. package/dist/sqlEngine/config.js +19 -16
  435. package/dist/sqlEngine/config.js.map +1 -1
  436. package/dist/sqlTranslator/index.d.ts +1 -1
  437. package/dist/sqlTranslator/index.js +30 -7
  438. package/dist/sqlTranslator/index.js.map +1 -1
  439. package/dist/upgrade/directives/5-3-0.d.ts +7 -0
  440. package/dist/upgrade/directives/5-3-0.js +148 -0
  441. package/dist/upgrade/directives/5-3-0.js.map +1 -0
  442. package/dist/upgrade/directives/directivesController.js +2 -1
  443. package/dist/upgrade/directives/directivesController.js.map +1 -1
  444. package/dist/utility/OperationFunctionCaller.js +2 -1
  445. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  446. package/dist/utility/common_utils.d.ts +16 -0
  447. package/dist/utility/common_utils.js +32 -6
  448. package/dist/utility/common_utils.js.map +1 -1
  449. package/dist/utility/componentNames.d.ts +8 -0
  450. package/dist/utility/componentNames.js +12 -1
  451. package/dist/utility/componentNames.js.map +1 -1
  452. package/dist/utility/environment/environmentManager.js +3 -6
  453. package/dist/utility/environment/environmentManager.js.map +1 -1
  454. package/dist/utility/environment/systemInformation.d.ts +1 -0
  455. package/dist/utility/environment/systemInformation.js +1 -0
  456. package/dist/utility/environment/systemInformation.js.map +1 -1
  457. package/dist/utility/errors/commonErrors.d.ts +2 -0
  458. package/dist/utility/errors/commonErrors.js +2 -0
  459. package/dist/utility/errors/commonErrors.js.map +1 -1
  460. package/dist/utility/errors/hdbError.d.ts +33 -0
  461. package/dist/utility/errors/hdbError.js +58 -1
  462. package/dist/utility/errors/hdbError.js.map +1 -1
  463. package/dist/utility/globalSchema.d.ts +18 -0
  464. package/dist/utility/hdbTerms.d.ts +18 -0
  465. package/dist/utility/hdbTerms.js +20 -2
  466. package/dist/utility/hdbTerms.js.map +1 -1
  467. package/dist/utility/logging/harper_logger.d.ts +2 -0
  468. package/dist/utility/logging/harper_logger.js +286 -30
  469. package/dist/utility/logging/harper_logger.js.map +1 -1
  470. package/dist/utility/logging/logGenerationCoordinator.d.ts +35 -0
  471. package/dist/utility/logging/logGenerationCoordinator.js +184 -0
  472. package/dist/utility/logging/logGenerationCoordinator.js.map +1 -0
  473. package/dist/utility/logging/logRotation.d.ts +46 -0
  474. package/dist/utility/logging/logRotation.js +365 -0
  475. package/dist/utility/logging/logRotation.js.map +1 -0
  476. package/dist/utility/logging/logRotator.d.ts +1 -1
  477. package/dist/utility/logging/logRotator.js +192 -85
  478. package/dist/utility/logging/logRotator.js.map +1 -1
  479. package/dist/utility/nodeIdentity.d.ts +9 -0
  480. package/dist/utility/nodeIdentity.js +58 -0
  481. package/dist/utility/nodeIdentity.js.map +1 -0
  482. package/dist/utility/npmUtilities.js +11 -7
  483. package/dist/utility/npmUtilities.js.map +1 -1
  484. package/dist/utility/operationPermissions.d.ts +3 -1
  485. package/dist/utility/operationPermissions.js +16 -1
  486. package/dist/utility/operationPermissions.js.map +1 -1
  487. package/dist/utility/operation_authorization.d.ts +10 -7
  488. package/dist/utility/operation_authorization.js +212 -41
  489. package/dist/utility/operation_authorization.js.map +1 -1
  490. package/dist/utility/watchPath.d.ts +29 -0
  491. package/dist/utility/watchPath.js +68 -0
  492. package/dist/utility/watchPath.js.map +1 -0
  493. package/dist/utility/watcherFallback.d.ts +41 -0
  494. package/dist/utility/watcherFallback.js +153 -0
  495. package/dist/utility/watcherFallback.js.map +1 -1
  496. package/dist/validation/configValidator.d.ts +12 -0
  497. package/dist/validation/configValidator.js +205 -75
  498. package/dist/validation/configValidator.js.map +1 -1
  499. package/dist/validation/installValidator.js +12 -0
  500. package/dist/validation/installValidator.js.map +1 -1
  501. package/dist/validation/validationWrapper.d.ts +11 -0
  502. package/dist/validation/validationWrapper.js +16 -3
  503. package/dist/validation/validationWrapper.js.map +1 -1
  504. package/index.ts +8 -0
  505. package/json/systemSchema.json +55 -0
  506. package/npm-shrinkwrap.json +286 -194
  507. package/package.json +15 -7
  508. package/resources/DESIGN.md +219 -52
  509. package/resources/DatabaseTransaction.ts +657 -52
  510. package/resources/LMDBTransaction.ts +46 -6
  511. package/resources/PrimaryRocksDatabase.ts +46 -7
  512. package/resources/RecordEncoder.ts +124 -9
  513. package/resources/RequestTarget.ts +2 -0
  514. package/resources/Resource.ts +114 -22
  515. package/resources/ResourceInterface.ts +31 -0
  516. package/resources/RocksIndexStore.ts +30 -9
  517. package/resources/RocksTransactionLogStore.ts +188 -51
  518. package/resources/Table.ts +1960 -301
  519. package/resources/analytics/write.ts +10 -3
  520. package/resources/auditStore.ts +647 -32
  521. package/resources/blob.ts +1029 -110
  522. package/resources/branchDatabase.ts +941 -0
  523. package/resources/crdt.ts +76 -12
  524. package/resources/dataLoader.ts +3 -4
  525. package/resources/databases.ts +1584 -320
  526. package/resources/defineTable.ts +18 -2
  527. package/resources/derivedIndexRegistry.ts +56 -0
  528. package/resources/derivedIndexRuntime.ts +2292 -0
  529. package/resources/graphql.ts +72 -17
  530. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +911 -48
  531. package/resources/indexes/hnswDerivedIndex.ts +531 -0
  532. package/resources/indexes/hnswPlaneBinding.ts +174 -0
  533. package/resources/longLivedTransactions.ts +360 -0
  534. package/resources/models/backendRegistry.ts +84 -2
  535. package/resources/models/bootstrap.ts +473 -28
  536. package/resources/nodeIdMapping.ts +50 -0
  537. package/resources/recordLock.ts +419 -0
  538. package/resources/recordLockCoordinator.ts +3043 -0
  539. package/resources/replayLogs.ts +152 -26
  540. package/resources/replayLogsGuards.ts +171 -8
  541. package/resources/replicatedApplyFailure.ts +77 -0
  542. package/resources/scheduler/scheduler.ts +4 -4
  543. package/resources/search.ts +288 -46
  544. package/resources/tracked.ts +73 -22
  545. package/resources/transactionBroadcast.ts +3 -3
  546. package/security/auth.ts +68 -29
  547. package/security/authn/oidc/claims.ts +72 -0
  548. package/security/authn/oidc/identityToken.ts +129 -0
  549. package/security/authn/oidc/jwks.ts +260 -0
  550. package/security/authn/oidc/providers/generic.ts +40 -0
  551. package/security/authn/oidc/providers/githubActions.ts +137 -0
  552. package/security/authn/oidc/providers/index.ts +52 -0
  553. package/security/authn/oidc/tokenExchange.ts +300 -0
  554. package/security/authn/oidc/trustPolicyOperations.ts +343 -0
  555. package/security/authn/oidc/types.ts +41 -0
  556. package/security/certificateVerification/index.ts +54 -13
  557. package/security/certificateVerification/trustedIssuers.ts +76 -0
  558. package/security/certificateVerification/types.ts +1 -0
  559. package/security/credentialProvenance.ts +47 -0
  560. package/security/credentialRejection.ts +22 -0
  561. package/security/deferredAuthentication.ts +71 -0
  562. package/security/impersonation.ts +117 -12
  563. package/security/jsLoader.ts +83 -18
  564. package/security/keys.ts +298 -72
  565. package/security/operationScope.ts +33 -0
  566. package/security/permissionsTranslator.js +23 -0
  567. package/security/tokenAuthentication.ts +233 -12
  568. package/security/user.ts +4 -3
  569. package/server/DESIGN.md +194 -16
  570. package/server/DurableSubscriptionsSession.ts +71 -11
  571. package/server/REST.ts +115 -4
  572. package/server/graphqlQuerying.ts +4 -0
  573. package/server/http.ts +133 -20
  574. package/server/itc/serverHandlers.js +8 -1
  575. package/server/jobs/jobProcess.ts +8 -2
  576. package/server/jobs/jobs.ts +4 -1
  577. package/server/liveSubscriptionAuth.ts +129 -46
  578. package/server/loadRootComponents.js +50 -8
  579. package/server/mqtt.ts +179 -38
  580. package/server/nodeName.ts +103 -21
  581. package/server/serverHelpers/Headers.ts +135 -0
  582. package/server/serverHelpers/NodeAdapterResponse.ts +221 -0
  583. package/server/serverHelpers/Request.ts +33 -131
  584. package/server/serverHelpers/contentTypes.ts +217 -36
  585. package/server/serverHelpers/deployValidationState.ts +24 -13
  586. package/server/serverHelpers/operationAuthorizationState.ts +34 -3
  587. package/server/serverHelpers/registeredOperations.ts +79 -22
  588. package/server/serverHelpers/requestSanitization.ts +15 -0
  589. package/server/serverHelpers/serverHandlers.js +6 -3
  590. package/server/serverHelpers/serverUtilities.ts +232 -40
  591. package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
  592. package/server/serverHelpers/uwsServer.ts +17 -2
  593. package/server/static.ts +23 -29
  594. package/server/storageReclamation.ts +15 -2
  595. package/server/threads/isolatedApplications.ts +157 -0
  596. package/server/threads/itc.js +11 -1
  597. package/server/threads/logRotationTransport.ts +40 -0
  598. package/server/threads/manageThreads.js +771 -66
  599. package/server/threads/socketRouter.ts +291 -30
  600. package/server/threads/threadHeapMemory.ts +26 -0
  601. package/server/threads/threadServer.js +73 -22
  602. package/sqlTranslator/index.ts +31 -8
  603. package/studio/web/assets/{Chat-4RrB5134.js → Chat-D3j-1yY1.js} +1 -1
  604. package/studio/web/assets/{FloatingChat-omlNMDcJ.js → FloatingChat-BxJGYcfB.js} +3 -3
  605. package/studio/web/assets/{apiToken-Bke3wvfZ.js → apiToken-CT55oWOe.js} +1 -1
  606. package/studio/web/assets/{applications-DvFDYJgK.js → applications-D9Ct9_vm.js} +1 -1
  607. package/studio/web/assets/{cssMode-C1vRa7zh.js → cssMode-DV8H7VwA.js} +1 -1
  608. package/studio/web/assets/{editor-3XRWEDWX.js → editor-uatc0unt.js} +1 -1
  609. package/studio/web/assets/{html-CTY5tdMr.js → html-Bm6D6paN.js} +1 -1
  610. package/studio/web/assets/{htmlMode-CG1vSD9t.js → htmlMode-CEn7tpLG.js} +1 -1
  611. package/studio/web/assets/{index-Dfpeofdu.js → index-BIXW6Pu4.js} +5 -5
  612. package/studio/web/assets/{index.lazy-B1VOIv-t.js → index.lazy-UI7L-Vrk.js} +1 -1
  613. package/studio/web/assets/{javascript-CJeJzGnI.js → javascript-CJ0G3AFZ.js} +1 -1
  614. package/studio/web/assets/{jsonMode-CYPBwM82.js → jsonMode-DQADAYEa.js} +1 -1
  615. package/studio/web/assets/{languageServices-IKH4GUHl.js → languageServices-CAQJXWcI.js} +1 -1
  616. package/studio/web/assets/{lspLanguageFeatures-BC8_gxKG.js → lspLanguageFeatures-CCQ8P5sY.js} +1 -1
  617. package/studio/web/assets/{notifications-BfKBpYcq.js → notifications-BbxTU6Aw.js} +1 -1
  618. package/studio/web/assets/{notifications-DFbArTfC.js → notifications-Cvb3P1lB.js} +1 -1
  619. package/studio/web/assets/{profile-Q4-T6c-S.js → profile-Yyb7gsvL.js} +1 -1
  620. package/studio/web/assets/{regions-CtkV0xje.js → regions-OgjGHlU5.js} +1 -1
  621. package/studio/web/assets/{register-1ZZuMsiA.js → register-6qwNEOY3.js} +2 -2
  622. package/studio/web/assets/{setComponentFile-ZWLcWv5X.js → setComponentFile-BilDMtgB.js} +1 -1
  623. package/studio/web/assets/{setup-DWprJyJy.js → setup-J6qJ7OIU.js} +2 -2
  624. package/studio/web/assets/{status--aNm8isn.js → status-0RWGcfyD.js} +1 -1
  625. package/studio/web/assets/{toggleHighContrast-Cq_lt3XD.js → toggleHighContrast-BIn-vErT.js} +1 -1
  626. package/studio/web/assets/{tsMode-pjgytARx.js → tsMode-DgUXku4d.js} +1 -1
  627. package/studio/web/assets/{typescript-Cdg0mqUh.js → typescript-C9orXcsM.js} +1 -1
  628. package/studio/web/assets/{useEntityRestURL-RZhaY8Rn.js → useEntityRestURL-BEoXXbUB.js} +1 -1
  629. package/studio/web/assets/{workers-BgoXIqQe.js → workers-JVzSDmgx.js} +1 -1
  630. package/studio/web/assets/{xml-BwSeDMiP.js → xml-Cq-S8S4X.js} +1 -1
  631. package/studio/web/assets/{yaml-DotCUG5l.js → yaml-sfoRdh1M.js} +1 -1
  632. package/studio/web/index.html +1 -1
  633. package/upgrade/directives/5-3-0.ts +132 -0
  634. package/upgrade/directives/directivesController.ts +2 -1
  635. package/utility/OperationFunctionCaller.ts +2 -1
  636. package/utility/common_utils.ts +30 -5
  637. package/utility/componentNames.ts +12 -0
  638. package/utility/environment/environmentManager.ts +3 -7
  639. package/utility/environment/systemInformation.ts +7 -0
  640. package/utility/errors/commonErrors.ts +4 -0
  641. package/utility/errors/hdbError.ts +57 -0
  642. package/utility/hdbTerms.ts +19 -0
  643. package/utility/logging/harper_logger.ts +278 -26
  644. package/utility/logging/logGenerationCoordinator.ts +196 -0
  645. package/utility/logging/logRotation.ts +367 -0
  646. package/utility/logging/logRotator.ts +213 -81
  647. package/utility/nodeIdentity.ts +45 -0
  648. package/utility/npmUtilities.ts +12 -8
  649. package/utility/operationPermissions.ts +18 -1
  650. package/utility/operation_authorization.ts +231 -42
  651. package/utility/watchPath.ts +63 -0
  652. package/utility/watcherFallback.ts +148 -0
  653. package/validation/configValidator.ts +215 -75
  654. package/validation/installValidator.ts +15 -0
  655. package/validation/validationWrapper.ts +18 -4
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readConfigFileSync = readConfigFileSync;
4
+ const node_fs_1 = require("node:fs");
5
+ // Why root config reads must not be async, and why this budget is shared rather than per call:
6
+ // see "Root config watchers must read synchronously" in DESIGN.md (harper#2191).
7
+ const READ_RETRY_BUDGET_MS = 500;
8
+ const READ_RETRY_INITIAL_DELAY_MS = 10;
9
+ const READ_RETRY_MAX_DELAY_MS = 100;
10
+ const readRetrySleepBuffer = new Int32Array(new SharedArrayBuffer(4));
11
+ const retryDeadlines = new Map();
12
+ // A caller that already owns a retry ladder passes `waitForLock` false, so one lock costs one
13
+ // blocking window in total rather than one per rung.
14
+ function readConfigFileSync(filePath, waitForLock = true) {
15
+ let delayMs = READ_RETRY_INITIAL_DELAY_MS;
16
+ while (true) {
17
+ try {
18
+ const contents = (0, node_fs_1.readFileSync)(filePath, 'utf-8');
19
+ retryDeadlines.delete(filePath);
20
+ return contents;
21
+ }
22
+ catch (error) {
23
+ const remainingBudgetMs = waitForLock && isSharingViolation(error) ? remainingRetryBudgetMs(filePath) : 0;
24
+ if (remainingBudgetMs <= 0)
25
+ throw error;
26
+ Atomics.wait(readRetrySleepBuffer, 0, 0, Math.min(delayMs, remainingBudgetMs));
27
+ delayMs = Math.min(delayMs * 2, READ_RETRY_MAX_DELAY_MS);
28
+ }
29
+ }
30
+ }
31
+ function isSharingViolation(error) {
32
+ if (process.platform !== 'win32')
33
+ return false;
34
+ const code = error?.code;
35
+ return code === 'EPERM' || code === 'EACCES' || code === 'EBUSY';
36
+ }
37
+ function remainingRetryBudgetMs(filePath) {
38
+ const now = performance.now();
39
+ let deadline = retryDeadlines.get(filePath);
40
+ // A deadline more than one budget past its expiry belongs to an earlier burst, not this one.
41
+ if (deadline === undefined || now - deadline > READ_RETRY_BUDGET_MS) {
42
+ deadline = now + READ_RETRY_BUDGET_MS;
43
+ retryDeadlines.set(filePath, deadline);
44
+ }
45
+ return deadline - now;
46
+ }
47
+ //# sourceMappingURL=readConfigFileSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readConfigFileSync.js","sourceRoot":"","sources":["../../config/readConfigFileSync.ts"],"names":[],"mappings":";;AAYA,gDAcC;AA1BD,qCAAuC;AAEvC,+FAA+F;AAC/F,iFAAiF;AACjF,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjD,8FAA8F;AAC9F,qDAAqD;AACrD,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,cAAuB,IAAI;IAC/E,IAAI,OAAO,GAAG,2BAA2B,CAAC;IAC1C,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,QAAQ,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,iBAAiB,GAAG,WAAW,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1G,IAAI,iBAAiB,IAAI,CAAC;gBAAE,MAAM,KAAK,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC/E,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,IAAI,GAAI,KAAkC,EAAE,IAAI,CAAC;IACvD,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,CAAC;AAClE,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC/C,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC9B,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,6FAA6F;IAC7F,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,GAAG,QAAQ,GAAG,oBAAoB,EAAE,CAAC;QACrE,QAAQ,GAAG,GAAG,GAAG,oBAAoB,CAAC;QACtC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,GAAG,GAAG,CAAC;AACvB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare function armGraceMs(platform?: string): number;
2
+ /**
3
+ * The gate a config watcher opens when its chokidar watcher is really watching: the initial scan
4
+ * has finished *and* the platform's kernel-side warm-up has had its grace. Shared by
5
+ * `RootConfigWatcher` and `OptionsWatcher` because both read the config synchronously, which is
6
+ * what exposes the unarmed window in the first place.
7
+ */
8
+ export declare class ArmGate {
9
+ #private;
10
+ constructor(graceMs?: number);
11
+ get armed(): boolean;
12
+ arm(onArmed: () => void): void;
13
+ cancel(): void;
14
+ reset(): void;
15
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArmGate = void 0;
4
+ exports.armGraceMs = armGraceMs;
5
+ // See DESIGN.md, "`ready` means the watcher is armed". Platform is a parameter so a test on any
6
+ // host can pin the darwin value, rather than only observing its own.
7
+ function armGraceMs(platform = process.platform) {
8
+ return platform === 'darwin' ? 20 : 0;
9
+ }
10
+ const ARM_GRACE_MS = armGraceMs();
11
+ /**
12
+ * The gate a config watcher opens when its chokidar watcher is really watching: the initial scan
13
+ * has finished *and* the platform's kernel-side warm-up has had its grace. Shared by
14
+ * `RootConfigWatcher` and `OptionsWatcher` because both read the config synchronously, which is
15
+ * what exposes the unarmed window in the first place.
16
+ */
17
+ class ArmGate {
18
+ #armed = false;
19
+ #timer;
20
+ #graceMs;
21
+ // Taken as an argument, not read from the module constant, so the timer branch below is
22
+ // reachable from a host whose own platform has no grace — unit tests are ubuntu-only.
23
+ constructor(graceMs = ARM_GRACE_MS) {
24
+ this.#graceMs = graceMs;
25
+ }
26
+ get armed() {
27
+ return this.#armed;
28
+ }
29
+ // Synchronous where the platform needs no grace, so a watcher with no warm-up to wait out
30
+ // keeps reading inside chokidar's own dispatch.
31
+ arm(onArmed) {
32
+ if (this.#armed || this.#timer)
33
+ return;
34
+ if (!this.#graceMs) {
35
+ this.#armed = true;
36
+ onArmed();
37
+ return;
38
+ }
39
+ this.#timer = setTimeout(() => {
40
+ this.#timer = undefined;
41
+ this.#armed = true;
42
+ onArmed();
43
+ }, this.#graceMs);
44
+ }
45
+ // Drops a grace still counting down, for a watcher that is closing.
46
+ cancel() {
47
+ clearTimeout(this.#timer);
48
+ this.#timer = undefined;
49
+ }
50
+ // A replacement watcher has its own scan and its own unarmed window, so the gate arms again
51
+ // with it: for a file that is *absent* when the replacement scans, chokidar reports `ready` and
52
+ // nothing else, and the arming re-read is the only thing that would notice.
53
+ reset() {
54
+ this.cancel();
55
+ this.#armed = false;
56
+ }
57
+ }
58
+ exports.ArmGate = ArmGate;
59
+ //# sourceMappingURL=watcherArming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcherArming.js","sourceRoot":"","sources":["../../config/watcherArming.ts"],"names":[],"mappings":";;;AAEA,gCAEC;AAJD,gGAAgG;AAChG,qEAAqE;AACrE,SAAgB,UAAU,CAAC,WAAmB,OAAO,CAAC,QAAQ;IAC7D,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;AAElC;;;;;GAKG;AACH,MAAa,OAAO;IACnB,MAAM,GAAY,KAAK,CAAC;IACxB,MAAM,CAA6B;IACnC,QAAQ,CAAS;IAEjB,wFAAwF;IACxF,sFAAsF;IACtF,YAAY,UAAkB,YAAY;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,0FAA0F;IAC1F,gDAAgD;IAChD,GAAG,CAAC,OAAmB;QACtB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,EAAE,CAAC;YACV,OAAO;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,EAAE,CAAC;QACX,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IAED,oEAAoE;IACpE,MAAM;QACL,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,4FAA4F;IAC5F,gGAAgG;IAChG,4EAA4E;IAC5E,KAAK;QACJ,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;CACD;AA5CD,0BA4CC"}
@@ -13,39 +13,68 @@
13
13
  * possible (cheap, no extra space on the same filesystem) and copied otherwise (never symlinked, so
14
14
  * a snapshot is a standalone set of files that survives independent of the live blob).
15
15
  *
16
- * Consistency is best-effort and point-in-time-ish, matching how the engine treats the transaction
17
- * log: the walk captures whatever files exist at snapshot time. A blob deleted mid-walk is skipped;
18
- * a blob being written mid-walk is captured as-is (a hard link shares the inode, so it reflects the
19
- * writer's final bytes; a cross-filesystem copy captures the bytes present at copy time). Harper
20
- * does not freeze blob writes for the duration of a backup.
16
+ * Harper does not freeze blob writes for a backup, and a blob is written in place at its final path,
17
+ * so the walk can meet one that is still growing. Hard-linking that inode would put bytes in the
18
+ * snapshot that keep changing after it was taken. Every entry returned by the walk is therefore
19
+ * classified (`captureBlobFile`): a complete blob is linked, and one that becomes unavailable or is
20
+ * not yet complete is replaced by a marker rather than dropped. This closes the classify-to-capture
21
+ * race and keeps that file id reserved; a file reclaimed before its parent directory is read remains
22
+ * outside the snapshot.
21
23
  *
22
- * Hard-linking is safe against later mutation because Harper blobs are content-addressed and
23
- * write-once: each write allocates a fresh monotonic file id (a new path), and an update or delete
24
- * unlinks the old path rather than rewriting it in place — so a snapshot's hard link keeps the exact
25
- * bytes alive even after the live blob is deleted, and no in-place overwrite can retroactively alter
26
- * a snapshot.
24
+ * Past that gate, hard-linking is safe against later mutation: each write takes a fresh monotonic
25
+ * file id, and an update, delete, or in-place repair replaces or unlinks the path rather than
26
+ * rewriting the inode.
27
27
  */
28
28
  /** Directory holding all blob snapshots for a backup repository. */
29
29
  export declare function blobsRootDir(backupDir: string): string;
30
30
  /** Directory holding a single backup id's blob snapshot. */
31
31
  export declare function blobSnapshotDir(backupDir: string, backupId: number): string;
32
+ /** What a substituted marker says happened, so a branch clone doesn't report itself as a backup. */
33
+ export interface CaptureMarkerReasons {
34
+ gone: string;
35
+ pending: string;
36
+ }
32
37
  /**
33
- * Snapshot a database's blob roots into a backup's blob directory. Writes to a temporary sibling
34
- * and atomically renames into place so a create_backup that fails mid-copy never leaves a partial
35
- * `blobs/<backupId>/` that a later restore would trust. Overwrites any pre-existing snapshot for the
36
- * same id (create_backup always produces a fresh id, so this only matters on a retried offline run).
38
+ * Recursively copy every file under `srcRoot` into `destRoot` (hard-link-else-copy), preserving the
39
+ * relative directory structure. Missing `srcRoot` is a no-op (a database with no blobs yet).
40
+ *
41
+ * `classify` substitutes a marker for a file that is mid-write or already gone, so the destination
42
+ * fails loudly on that blob rather than carrying a truncated one. It belongs to the capture direction
43
+ * only; restore must replace exactly what the snapshot holds.
44
+ *
45
+ * Also used by branch materialization (harper#644), which clones a base's blob roots into the
46
+ * branch's own so the OS inode refcount does the reference counting. Its walk runs inside a window
47
+ * other threads wait on, which is what `onProgress` is for.
48
+ */
49
+ export declare function copyTree(srcRoot: string, destRoot: string, classify?: boolean, reasons?: CaptureMarkerReasons, onProgress?: () => void): Promise<{
50
+ substituted: number;
51
+ captured: number;
52
+ copied: number;
53
+ }>;
54
+ /**
55
+ * Copy every blob root into `destDir` as `<rootIndex>/<relpath>`, hard-linking where possible.
56
+ * Writes to a temporary sibling and atomically renames into place so a run that fails mid-copy never
57
+ * leaves a partial directory a later restore would trust, and replaces any pre-existing `destDir`.
58
+ * Shared by managed-backup snapshots and `copy-db`'s standalone blob copy (harper#2048).
59
+ */
60
+ export declare function copyBlobRootsByIndex(destDir: string, blobRoots: string[]): Promise<void>;
61
+ /**
62
+ * Snapshot a database's blob roots into a backup's blob directory. Overwrites any pre-existing
63
+ * snapshot for the same id (create_backup always produces a fresh id, so this only matters on a
64
+ * retried offline run).
37
65
  */
38
66
  export declare function snapshotBlobs(backupDir: string, backupId: number, blobRoots: string[]): Promise<void>;
39
67
  /**
40
68
  * Build the `blobs/README.md` documenting the blob snapshot layout, so an operator inspecting or
41
- * hand-recovering a backup can decode the numeric directories. Two variants:
42
- * - managed (default): a create_backup repository, where snapshots are keyed by backup id
69
+ * hand-recovering a backup can decode the numeric directories. Three variants:
70
+ * - `managed` (default): a create_backup repository, where snapshots are keyed by backup id
43
71
  * (`<backupId>/<rootIndex>/…`) and restore is automatic via `restore_backup`.
44
- * - archive (`archive: true`): a downloaded `get_backup` tar, which holds a single snapshot with no
45
- * backup-id level (`<rootIndex>/…`) and is restored by extracting the files back into the roots.
72
+ * - `archive`: a downloaded `get_backup` tar, which holds a single snapshot with no backup-id level
73
+ * (`<rootIndex>/…`) and is restored by extracting the files back into the roots.
74
+ * - `copy`: the companion directory `copy-db` writes beside a database copy, restored by hand.
46
75
  */
47
- export declare function blobsReadmeContent(blobRoots: string[], { archive }?: {
48
- archive?: boolean;
76
+ export declare function blobsReadmeContent(blobRoots: string[], { variant }?: {
77
+ variant?: 'managed' | 'archive' | 'copy';
49
78
  }): string;
50
79
  /**
51
80
  * Write the `blobs/README.md` into a managed backup's `blobs/` directory. Best-effort: a failure to
@@ -5,6 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.blobsRootDir = blobsRootDir;
7
7
  exports.blobSnapshotDir = blobSnapshotDir;
8
+ exports.copyTree = copyTree;
9
+ exports.copyBlobRootsByIndex = copyBlobRootsByIndex;
8
10
  exports.snapshotBlobs = snapshotBlobs;
9
11
  exports.blobsReadmeContent = blobsReadmeContent;
10
12
  exports.writeBlobsReadme = writeBlobsReadme;
@@ -17,6 +19,7 @@ const promises_1 = require("node:fs/promises");
17
19
  const node_path_1 = require("node:path");
18
20
  const hdbError_ts_1 = require("../utility/errors/hdbError.js");
19
21
  const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_logger.js"));
22
+ const blob_ts_1 = require("../resources/blob.js");
20
23
  /**
21
24
  * Managed-backup snapshotting of a database's file-backed blobs.
22
25
  *
@@ -32,17 +35,17 @@ const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_lo
32
35
  * possible (cheap, no extra space on the same filesystem) and copied otherwise (never symlinked, so
33
36
  * a snapshot is a standalone set of files that survives independent of the live blob).
34
37
  *
35
- * Consistency is best-effort and point-in-time-ish, matching how the engine treats the transaction
36
- * log: the walk captures whatever files exist at snapshot time. A blob deleted mid-walk is skipped;
37
- * a blob being written mid-walk is captured as-is (a hard link shares the inode, so it reflects the
38
- * writer's final bytes; a cross-filesystem copy captures the bytes present at copy time). Harper
39
- * does not freeze blob writes for the duration of a backup.
38
+ * Harper does not freeze blob writes for a backup, and a blob is written in place at its final path,
39
+ * so the walk can meet one that is still growing. Hard-linking that inode would put bytes in the
40
+ * snapshot that keep changing after it was taken. Every entry returned by the walk is therefore
41
+ * classified (`captureBlobFile`): a complete blob is linked, and one that becomes unavailable or is
42
+ * not yet complete is replaced by a marker rather than dropped. This closes the classify-to-capture
43
+ * race and keeps that file id reserved; a file reclaimed before its parent directory is read remains
44
+ * outside the snapshot.
40
45
  *
41
- * Hard-linking is safe against later mutation because Harper blobs are content-addressed and
42
- * write-once: each write allocates a fresh monotonic file id (a new path), and an update or delete
43
- * unlinks the old path rather than rewriting it in place — so a snapshot's hard link keeps the exact
44
- * bytes alive even after the live blob is deleted, and no in-place overwrite can retroactively alter
45
- * a snapshot.
46
+ * Past that gate, hard-linking is safe against later mutation: each write takes a fresh monotonic
47
+ * file id, and an update, delete, or in-place repair replaces or unlinks the path rather than
48
+ * rewriting the inode.
46
49
  */
47
50
  /** Directory holding all blob snapshots for a backup repository. */
48
51
  function blobsRootDir(backupDir) {
@@ -54,19 +57,19 @@ function blobSnapshotDir(backupDir, backupId) {
54
57
  }
55
58
  /**
56
59
  * Hard-link `src` to `dest`, falling back to a copy when the two are on different filesystems (or
57
- * the filesystem does not support additional hard links). Never creates a symlink. A source that
58
- * vanished mid-walk (a concurrent blob delete) is skipped rather than failing the whole snapshot.
60
+ * the filesystem does not support additional hard links). Never creates a symlink. Returns false
61
+ * when the source vanishes so the caller can substitute a marker for it. `counts.copied` is what a
62
+ * caller on a latency budget needs: the fallback turns a constant-time clone into an O(bytes) one.
59
63
  */
60
- async function linkOrCopy(src, dest) {
64
+ async function linkOrCopy(src, dest, counts) {
61
65
  await (0, promises_1.mkdir)((0, node_path_1.dirname)(dest), { recursive: true });
62
66
  try {
63
67
  await (0, promises_1.link)(src, dest);
64
68
  }
65
69
  catch (error) {
66
70
  if (error.code === 'ENOENT') {
67
- // src disappeared (concurrent delete) — nothing to snapshot
68
71
  if (!(0, node_fs_1.existsSync)(src))
69
- return;
72
+ return false; // vanished since it was classified
70
73
  throw error;
71
74
  }
72
75
  if (error.code === 'EXDEV' || // cross-device link
@@ -74,24 +77,74 @@ async function linkOrCopy(src, dest) {
74
77
  error.code === 'EPERM' || // filesystem forbids hard links
75
78
  error.code === 'ENOTSUP' ||
76
79
  error.code === 'EOPNOTSUPP') {
77
- await (0, promises_1.copyFile)(src, dest);
78
- return;
80
+ try {
81
+ await (0, promises_1.copyFile)(src, dest);
82
+ }
83
+ catch (copyError) {
84
+ if (copyError.code === 'ENOENT')
85
+ return false;
86
+ throw copyError;
87
+ }
88
+ if (counts)
89
+ counts.copied++;
90
+ return true;
79
91
  }
80
92
  if (error.code === 'EEXIST') {
81
93
  await (0, promises_1.unlink)(dest);
82
- await linkOrCopy(src, dest);
83
- return;
94
+ return linkOrCopy(src, dest, counts);
84
95
  }
85
96
  throw error;
86
97
  }
98
+ return true;
99
+ }
100
+ const BACKUP_MARKER_REASONS = {
101
+ gone: 'blob was deleted while this backup was being taken',
102
+ pending: 'blob was not yet complete when this backup was taken',
103
+ };
104
+ /** Put one blob file into the destination, returning how the entry was captured. */
105
+ async function captureBlobFile(srcPath, destPath, reasons = BACKUP_MARKER_REASONS, counts) {
106
+ let disposition;
107
+ try {
108
+ disposition = await (0, blob_ts_1.classifyBlobFileForCapture)(srcPath);
109
+ }
110
+ catch (error) {
111
+ // This rethrow is unverified: only the membership of SYSTEMIC_IO_ERRORS is tested, because
112
+ // reaching it needs a real host-level fault no test here can produce.
113
+ if ((0, blob_ts_1.isSystemicIoError)(error))
114
+ throw error;
115
+ // Fall back to what this walk did before it classified anything. `link()` needs no read permission
116
+ // on the source, so a blob this failed to *read* may still be perfectly capturable; substituting
117
+ // here would turn an unreadable-but-valid root into a backup of nothing but stubs.
118
+ harper_logger_ts_1.default.warn(`Could not verify blob ${srcPath} for snapshot; capturing it unverified`, error);
119
+ disposition = 'capture';
120
+ }
121
+ if (disposition === 'skip')
122
+ return disposition;
123
+ if (disposition === 'capture') {
124
+ if (await linkOrCopy(srcPath, destPath, counts))
125
+ return disposition;
126
+ disposition = 'gone';
127
+ }
128
+ await (0, promises_1.mkdir)((0, node_path_1.dirname)(destPath), { recursive: true });
129
+ await (0, promises_1.writeFile)(destPath, (0, blob_ts_1.createCaptureMarker)(disposition, disposition === 'gone' ? reasons.gone : reasons.pending));
130
+ return disposition;
87
131
  }
88
132
  /**
89
133
  * Recursively copy every file under `srcRoot` into `destRoot` (hard-link-else-copy), preserving the
90
134
  * relative directory structure. Missing `srcRoot` is a no-op (a database with no blobs yet).
135
+ *
136
+ * `classify` substitutes a marker for a file that is mid-write or already gone, so the destination
137
+ * fails loudly on that blob rather than carrying a truncated one. It belongs to the capture direction
138
+ * only; restore must replace exactly what the snapshot holds.
139
+ *
140
+ * Also used by branch materialization (harper#644), which clones a base's blob roots into the
141
+ * branch's own so the OS inode refcount does the reference counting. Its walk runs inside a window
142
+ * other threads wait on, which is what `onProgress` is for.
91
143
  */
92
- async function copyTree(srcRoot, destRoot) {
144
+ async function copyTree(srcRoot, destRoot, classify = false, reasons, onProgress) {
145
+ const counts = { substituted: 0, captured: 0, copied: 0 };
93
146
  if (!(0, node_fs_1.existsSync)(srcRoot))
94
- return;
147
+ return counts;
95
148
  const stack = [srcRoot];
96
149
  while (stack.length > 0) {
97
150
  const dir = stack.pop();
@@ -110,61 +163,95 @@ async function copyTree(srcRoot, destRoot) {
110
163
  stack.push(srcPath);
111
164
  }
112
165
  else if (entry.isFile()) {
113
- await linkOrCopy(srcPath, (0, node_path_1.join)(destRoot, (0, node_path_1.relative)(srcRoot, srcPath)));
166
+ const destPath = (0, node_path_1.join)(destRoot, (0, node_path_1.relative)(srcRoot, srcPath));
167
+ if (classify) {
168
+ const disposition = await captureBlobFile(srcPath, destPath, reasons, counts);
169
+ if (disposition === 'pending' || disposition === 'gone')
170
+ counts.substituted++;
171
+ else if (disposition === 'capture')
172
+ counts.captured++;
173
+ }
174
+ else {
175
+ await linkOrCopy(srcPath, destPath, counts);
176
+ }
177
+ onProgress?.();
114
178
  }
115
179
  // symlinks/other node types in a blob root are not expected and are intentionally skipped
116
180
  }
117
181
  }
182
+ return counts;
118
183
  }
119
184
  /**
120
- * Snapshot a database's blob roots into a backup's blob directory. Writes to a temporary sibling
121
- * and atomically renames into place so a create_backup that fails mid-copy never leaves a partial
122
- * `blobs/<backupId>/` that a later restore would trust. Overwrites any pre-existing snapshot for the
123
- * same id (create_backup always produces a fresh id, so this only matters on a retried offline run).
185
+ * Copy every blob root into `destDir` as `<rootIndex>/<relpath>`, hard-linking where possible.
186
+ * Writes to a temporary sibling and atomically renames into place so a run that fails mid-copy never
187
+ * leaves a partial directory a later restore would trust, and replaces any pre-existing `destDir`.
188
+ * Shared by managed-backup snapshots and `copy-db`'s standalone blob copy (harper#2048).
124
189
  */
125
- async function snapshotBlobs(backupDir, backupId, blobRoots) {
126
- const finalDir = blobSnapshotDir(backupDir, backupId);
127
- const tempDir = (0, node_path_1.join)(blobsRootDir(backupDir), `.tmp-${backupId}`);
190
+ async function copyBlobRootsByIndex(destDir, blobRoots) {
191
+ const tempDir = destDir + '.tmp';
128
192
  await (0, promises_1.rm)(tempDir, { recursive: true, force: true });
129
193
  await (0, promises_1.mkdir)(tempDir, { recursive: true });
130
194
  try {
195
+ let substituted = 0;
196
+ let captured = 0;
131
197
  for (let index = 0; index < blobRoots.length; index++) {
132
- await copyTree(blobRoots[index], (0, node_path_1.join)(tempDir, String(index)));
198
+ const counts = await copyTree(blobRoots[index], (0, node_path_1.join)(tempDir, String(index)), true);
199
+ substituted += counts.substituted;
200
+ captured += counts.captured;
201
+ }
202
+ if (substituted > 0) {
203
+ harper_logger_ts_1.default.warn(`Blob copy into ${destDir} substituted ${substituted} of ${substituted + captured} blob ` +
204
+ `file(s) with PENDING or ERROR markers because they were not capturable whole.`);
133
205
  }
134
- await (0, promises_1.rm)(finalDir, { recursive: true, force: true });
135
- await (0, promises_1.rename)(tempDir, finalDir);
206
+ await (0, promises_1.rm)(destDir, { recursive: true, force: true });
207
+ await (0, promises_1.rename)(tempDir, destDir);
136
208
  }
137
209
  catch (error) {
138
210
  await (0, promises_1.rm)(tempDir, { recursive: true, force: true }).catch(() => { });
139
211
  throw error;
140
212
  }
213
+ }
214
+ /**
215
+ * Snapshot a database's blob roots into a backup's blob directory. Overwrites any pre-existing
216
+ * snapshot for the same id (create_backup always produces a fresh id, so this only matters on a
217
+ * retried offline run).
218
+ */
219
+ async function snapshotBlobs(backupDir, backupId, blobRoots) {
220
+ await copyBlobRootsByIndex(blobSnapshotDir(backupDir, backupId), blobRoots);
141
221
  await writeBlobsReadme(backupDir, blobRoots);
142
222
  }
143
223
  /**
144
224
  * Build the `blobs/README.md` documenting the blob snapshot layout, so an operator inspecting or
145
- * hand-recovering a backup can decode the numeric directories. Two variants:
146
- * - managed (default): a create_backup repository, where snapshots are keyed by backup id
225
+ * hand-recovering a backup can decode the numeric directories. Three variants:
226
+ * - `managed` (default): a create_backup repository, where snapshots are keyed by backup id
147
227
  * (`<backupId>/<rootIndex>/…`) and restore is automatic via `restore_backup`.
148
- * - archive (`archive: true`): a downloaded `get_backup` tar, which holds a single snapshot with no
149
- * backup-id level (`<rootIndex>/…`) and is restored by extracting the files back into the roots.
228
+ * - `archive`: a downloaded `get_backup` tar, which holds a single snapshot with no backup-id level
229
+ * (`<rootIndex>/…`) and is restored by extracting the files back into the roots.
230
+ * - `copy`: the companion directory `copy-db` writes beside a database copy, restored by hand.
150
231
  */
151
- function blobsReadmeContent(blobRoots, { archive = false } = {}) {
232
+ function blobsReadmeContent(blobRoots, { variant = 'managed' } = {}) {
152
233
  const rootMapping = blobRoots.length > 0 ? blobRoots.map((root, index) => ` ${index} -> ${root}`).join('\n') : ' (none)';
153
- const layout = archive
154
- ? '<rootIndex>/<shard1>/<shard2>/<fileId>'
155
- : '<backupId>/<rootIndex>/<shard1>/<shard2>/<fileId>';
156
- const intro = archive
157
- ? `This directory holds this database's file-backed blobs within a downloaded \`get_backup\` archive.
234
+ const layout = variant === 'managed'
235
+ ? '<backupId>/<rootIndex>/<shard1>/<shard2>/<fileId>'
236
+ : '<rootIndex>/<shard1>/<shard2>/<fileId>';
237
+ const intro = variant === 'copy'
238
+ ? `This directory holds the file-backed blobs of a \`copy-db\` database copy; the database file itself
239
+ is the sibling \`.mdb\` this directory is named after. Blobs are addressed by database NAME and the
240
+ configured blob roots — never by the database file's path — so a copy is only restorable with these
241
+ files: put each \`<rootIndex>/\` tree into the matching blob root of whatever database name you
242
+ restore the copy as (mapping below).`
243
+ : variant === 'archive'
244
+ ? `This directory holds this database's file-backed blobs within a downloaded \`get_backup\` archive.
158
245
  To restore them, extract each \`<rootIndex>/\` tree back into the matching blob root (see the mapping
159
246
  below and ../README.md).`
160
- : `This directory holds point-in-time snapshots of this database's file-backed blobs, captured
247
+ : `This directory holds point-in-time snapshots of this database's file-backed blobs, captured
161
248
  alongside each RocksDB managed backup. You do not restore these by hand — \`restore_backup\` puts
162
249
  them back automatically (see ../README.md); this file just documents the layout.`;
163
- const backupIdBullet = archive
164
- ? ''
165
- : `- **<backupId>** matches the RocksDB backup id (\`harper list_backups\`). Each id is a full,
250
+ const backupIdBullet = variant === 'managed'
251
+ ? `- **<backupId>** matches the RocksDB backup id (\`harper list_backups\`). Each id is a full,
166
252
  independent snapshot (not incremental).
167
- `;
253
+ `
254
+ : '';
168
255
  return `# Harper blob snapshots
169
256
 
170
257
  ${intro}
@@ -175,7 +262,7 @@ ${intro}
175
262
 
176
263
  ${backupIdBullet}- **<rootIndex>** is which of the database's blob roots the file came from — the index into
177
264
  \`storage.blobPaths[n]\`. When \`storage.blobPaths\` is not configured there is a single default root
178
- (\`<rootPath>/blobs/<db>\`) at index 0. Current mapping for this backup:
265
+ (\`<rootPath>/blobs/<db>\`) at index 0. Current mapping:
179
266
 
180
267
  ${rootMapping}
181
268
 
@@ -184,8 +271,10 @@ ${rootMapping}
184
271
  4096 entries per directory). E.g. a blob with id \`0x12345678\` lives at \`12/345/678\`; a short id
185
272
  like \`0xc1a\` lives at \`0/0/c1a\`.
186
273
 
187
- Files are hard links to the live blobs when the backup is on the same filesystem, and copies
188
- otherwise.
274
+ Complete blobs are hard links to the live blobs when the destination is on the same filesystem, and
275
+ copies otherwise. A blob that was not capturable whole is stored as a marker instead: header type
276
+ \`0xfe\` is retryable (PENDING), while \`0xff\` is terminal (ERROR). The marker preserves the file id
277
+ but does not contain the original blob bytes.
189
278
  `;
190
279
  }
191
280
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"blobBackup.js","sourceRoot":"","sources":["../../dataLayer/blobBackup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blobBackup.js","sourceRoot":"","sources":["../../dataLayer/blobBackup.ts"],"names":[],"mappings":"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"}
@@ -108,7 +108,7 @@ async function deleteAuditLogsBefore(deleteObj) {
108
108
  await pGlobalSchema(deleteObj.schema, deleteObj.table);
109
109
  harper_logger_ts_1.default.info(`Finished deleting audit logs before ${deleteObj.timestamp}`);
110
110
  // `deleteTransactionLogsBefore` returns `entries_deleted`; the legacy result exposes it as `transactions_deleted`.
111
- return new DeleteAuditLogsBeforeResults_js_1.default(results.start_timestamp, results.end_timestamp, results.entries_deleted);
111
+ return new DeleteAuditLogsBeforeResults_js_1.default(results.start_timestamp, results.end_timestamp, results.entries_deleted, results.log_files_deleted);
112
112
  }
113
113
  /**
114
114
  * Calls the harper bridge to delete records.
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../dataLayer/delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../dataLayer/delete.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,20 @@ export declare class ResourceBridge extends BridgeMethods {
42
42
  new_attributes: any;
43
43
  skipped_hashes: any[];
44
44
  }>;
45
- upsertRecords(upsertObj: any): Promise<{
45
+ /**
46
+ * Create-or-replace: the stored record becomes exactly the submitted one, so an attribute the
47
+ * request omits is REMOVED rather than kept. `update`/`upsert` merge (`Table.patch`), which is the
48
+ * v4-compatible behaviour every existing client depends on and is why this is a separate operation
49
+ * rather than a flag on those. Equivalent to REST `PUT /Table/id` — same `Table.put`, so the same
50
+ * audit type, replication shape, and retained `__createdtime__`.
51
+ */
52
+ putRecords(putObj: any): Promise<{
53
+ txn_time: any;
54
+ written_hashes: any[];
55
+ new_attributes: any;
56
+ skipped_hashes: any[];
57
+ }>;
58
+ upsertRecords(upsertObj: any, fullRecord?: boolean): Promise<{
46
59
  txn_time: any;
47
60
  written_hashes: any[];
48
61
  new_attributes: any;