@harperfast/harper 5.3.0-alpha.1 → 5.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/bin/cliOperations.ts +12 -0
  2. package/bin/restart.ts +66 -6
  3. package/components/Application.ts +1134 -112
  4. package/components/DESIGN.md +421 -0
  5. package/components/OptionsWatcher.ts +368 -102
  6. package/components/Scope.ts +20 -1
  7. package/components/componentLoader.ts +43 -4
  8. package/components/deploymentOperations.ts +4 -1
  9. package/components/deploymentRecorder.ts +9 -2
  10. package/components/mcp/DESIGN.md +109 -0
  11. package/components/mcp/audit.ts +21 -17
  12. package/components/operations.js +284 -52
  13. package/components/operationsValidation.js +49 -2
  14. package/components/packageComponent.ts +25 -1
  15. package/components/requestRestart.ts +11 -0
  16. package/config/DESIGN.md +306 -0
  17. package/config/RootConfigWatcher.ts +191 -37
  18. package/config/configReadRetry.ts +62 -0
  19. package/config/configUtils.ts +78 -26
  20. package/config/parseConfigFile.ts +34 -0
  21. package/config/readConfigFileSync.ts +44 -0
  22. package/config/watcherArming.ts +59 -0
  23. package/config-root.schema.json +4 -0
  24. package/dataLayer/DESIGN.md +179 -0
  25. package/dataLayer/harperBridge/ResourceBridge.ts +28 -2
  26. package/dataLayer/restoreMarker.ts +92 -25
  27. package/dist/bin/cliOperations.js +13 -0
  28. package/dist/bin/cliOperations.js.map +1 -1
  29. package/dist/bin/restart.js +42 -6
  30. package/dist/bin/restart.js.map +1 -1
  31. package/dist/components/Application.d.ts +104 -9
  32. package/dist/components/Application.js +954 -102
  33. package/dist/components/Application.js.map +1 -1
  34. package/dist/components/OptionsWatcher.d.ts +4 -1
  35. package/dist/components/OptionsWatcher.js +378 -104
  36. package/dist/components/OptionsWatcher.js.map +1 -1
  37. package/dist/components/Scope.js +15 -1
  38. package/dist/components/Scope.js.map +1 -1
  39. package/dist/components/componentLoader.js +35 -3
  40. package/dist/components/componentLoader.js.map +1 -1
  41. package/dist/components/deploymentOperations.js +4 -1
  42. package/dist/components/deploymentOperations.js.map +1 -1
  43. package/dist/components/deploymentRecorder.d.ts +4 -2
  44. package/dist/components/deploymentRecorder.js +1 -0
  45. package/dist/components/deploymentRecorder.js.map +1 -1
  46. package/dist/components/mcp/audit.d.ts +2 -1
  47. package/dist/components/mcp/audit.js +21 -17
  48. package/dist/components/mcp/audit.js.map +1 -1
  49. package/dist/components/operations.d.ts +28 -0
  50. package/dist/components/operations.js +263 -54
  51. package/dist/components/operations.js.map +1 -1
  52. package/dist/components/operationsValidation.js +48 -2
  53. package/dist/components/operationsValidation.js.map +1 -1
  54. package/dist/components/packageComponent.js +24 -0
  55. package/dist/components/packageComponent.js.map +1 -1
  56. package/dist/components/requestRestart.d.ts +1 -0
  57. package/dist/components/requestRestart.js +7 -0
  58. package/dist/components/requestRestart.js.map +1 -1
  59. package/dist/config/RootConfigWatcher.d.ts +2 -0
  60. package/dist/config/RootConfigWatcher.js +189 -35
  61. package/dist/config/RootConfigWatcher.js.map +1 -1
  62. package/dist/config/configReadRetry.d.ts +8 -0
  63. package/dist/config/configReadRetry.js +62 -0
  64. package/dist/config/configReadRetry.js.map +1 -0
  65. package/dist/config/configUtils.d.ts +10 -9
  66. package/dist/config/configUtils.js +63 -27
  67. package/dist/config/configUtils.js.map +1 -1
  68. package/dist/config/parseConfigFile.d.ts +4 -0
  69. package/dist/config/parseConfigFile.js +35 -0
  70. package/dist/config/parseConfigFile.js.map +1 -0
  71. package/dist/config/readConfigFileSync.d.ts +1 -0
  72. package/dist/config/readConfigFileSync.js +47 -0
  73. package/dist/config/readConfigFileSync.js.map +1 -0
  74. package/dist/config/watcherArming.d.ts +15 -0
  75. package/dist/config/watcherArming.js +59 -0
  76. package/dist/config/watcherArming.js.map +1 -0
  77. package/dist/dataLayer/harperBridge/ResourceBridge.js +21 -2
  78. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  79. package/dist/dataLayer/restoreMarker.d.ts +21 -8
  80. package/dist/dataLayer/restoreMarker.js +94 -27
  81. package/dist/dataLayer/restoreMarker.js.map +1 -1
  82. package/dist/index.d.ts +2 -0
  83. package/dist/index.js +9 -1
  84. package/dist/index.js.map +1 -1
  85. package/dist/json/systemSchema.json +3 -0
  86. package/dist/resources/DatabaseTransaction.d.ts +25 -0
  87. package/dist/resources/DatabaseTransaction.js +224 -18
  88. package/dist/resources/DatabaseTransaction.js.map +1 -1
  89. package/dist/resources/LMDBTransaction.d.ts +2 -1
  90. package/dist/resources/LMDBTransaction.js +22 -3
  91. package/dist/resources/LMDBTransaction.js.map +1 -1
  92. package/dist/resources/PrimaryRocksDatabase.js +22 -6
  93. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  94. package/dist/resources/RecordEncoder.d.ts +1 -1
  95. package/dist/resources/RecordEncoder.js +46 -10
  96. package/dist/resources/RecordEncoder.js.map +1 -1
  97. package/dist/resources/Resource.js +97 -13
  98. package/dist/resources/Resource.js.map +1 -1
  99. package/dist/resources/ResourceInterface.d.ts +8 -0
  100. package/dist/resources/RocksIndexStore.js +2 -1
  101. package/dist/resources/RocksIndexStore.js.map +1 -1
  102. package/dist/resources/RocksTransactionLogStore.d.ts +10 -0
  103. package/dist/resources/RocksTransactionLogStore.js +104 -33
  104. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  105. package/dist/resources/Table.d.ts +58 -7
  106. package/dist/resources/Table.js +1143 -348
  107. package/dist/resources/Table.js.map +1 -1
  108. package/dist/resources/analytics/write.d.ts +3 -0
  109. package/dist/resources/analytics/write.js +49 -16
  110. package/dist/resources/analytics/write.js.map +1 -1
  111. package/dist/resources/auditStore.d.ts +170 -0
  112. package/dist/resources/auditStore.js +457 -11
  113. package/dist/resources/auditStore.js.map +1 -1
  114. package/dist/resources/crdt.d.ts +10 -0
  115. package/dist/resources/crdt.js +22 -0
  116. package/dist/resources/crdt.js.map +1 -1
  117. package/dist/resources/dataLoader.js +3 -4
  118. package/dist/resources/dataLoader.js.map +1 -1
  119. package/dist/resources/databases.d.ts +16 -13
  120. package/dist/resources/databases.js +625 -177
  121. package/dist/resources/databases.js.map +1 -1
  122. package/dist/resources/derivedIndexRegistry.d.ts +5 -0
  123. package/dist/resources/derivedIndexRegistry.js +68 -0
  124. package/dist/resources/derivedIndexRegistry.js.map +1 -0
  125. package/dist/resources/derivedIndexRuntime.d.ts +215 -0
  126. package/dist/resources/derivedIndexRuntime.js +2027 -0
  127. package/dist/resources/derivedIndexRuntime.js.map +1 -0
  128. package/dist/resources/graphql.js +3 -2
  129. package/dist/resources/graphql.js.map +1 -1
  130. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +102 -9
  131. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +867 -39
  132. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  133. package/dist/resources/indexes/fullTextDerivedIndex.d.ts +81 -0
  134. package/dist/resources/indexes/fullTextDerivedIndex.js +1004 -0
  135. package/dist/resources/indexes/fullTextDerivedIndex.js.map +1 -0
  136. package/dist/resources/indexes/fullTextNativeBinding.d.ts +78 -0
  137. package/dist/resources/indexes/fullTextNativeBinding.js +85 -0
  138. package/dist/resources/indexes/fullTextNativeBinding.js.map +1 -0
  139. package/dist/resources/indexes/hnswDerivedIndex.d.ts +67 -0
  140. package/dist/resources/indexes/hnswDerivedIndex.js +464 -0
  141. package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -0
  142. package/dist/resources/indexes/hnswPlaneBinding.d.ts +65 -0
  143. package/dist/resources/indexes/hnswPlaneBinding.js +91 -0
  144. package/dist/resources/indexes/hnswPlaneBinding.js.map +1 -0
  145. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.d.ts +24 -0
  146. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js +149 -0
  147. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js.map +1 -0
  148. package/dist/resources/nodeIdMapping.d.ts +5 -0
  149. package/dist/resources/nodeIdMapping.js +49 -0
  150. package/dist/resources/nodeIdMapping.js.map +1 -1
  151. package/dist/resources/recordLock.d.ts +47 -4
  152. package/dist/resources/recordLock.js +138 -7
  153. package/dist/resources/recordLock.js.map +1 -1
  154. package/dist/resources/recordLockCoordinator.d.ts +557 -0
  155. package/dist/resources/recordLockCoordinator.js +2597 -0
  156. package/dist/resources/recordLockCoordinator.js.map +1 -0
  157. package/dist/resources/replayLogs.js +5 -0
  158. package/dist/resources/replayLogs.js.map +1 -1
  159. package/dist/resources/replicatedApplyFailure.d.ts +16 -0
  160. package/dist/resources/replicatedApplyFailure.js +63 -0
  161. package/dist/resources/replicatedApplyFailure.js.map +1 -0
  162. package/dist/resources/scheduler/scheduler.js +3 -3
  163. package/dist/resources/scheduler/scheduler.js.map +1 -1
  164. package/dist/resources/search.d.ts +10 -4
  165. package/dist/resources/search.js +160 -40
  166. package/dist/resources/search.js.map +1 -1
  167. package/dist/resources/tracked.d.ts +5 -1
  168. package/dist/resources/tracked.js +74 -23
  169. package/dist/resources/tracked.js.map +1 -1
  170. package/dist/resources/transactionBroadcast.js +4 -6
  171. package/dist/resources/transactionBroadcast.js.map +1 -1
  172. package/dist/security/auth.js +59 -23
  173. package/dist/security/auth.js.map +1 -1
  174. package/dist/security/deferredAuthentication.d.ts +11 -0
  175. package/dist/security/deferredAuthentication.js +25 -3
  176. package/dist/security/deferredAuthentication.js.map +1 -1
  177. package/dist/security/jsLoader.js +9 -4
  178. package/dist/security/jsLoader.js.map +1 -1
  179. package/dist/server/REST.js +39 -5
  180. package/dist/server/REST.js.map +1 -1
  181. package/dist/server/http.d.ts +5 -1
  182. package/dist/server/http.js +34 -2
  183. package/dist/server/http.js.map +1 -1
  184. package/dist/server/mqtt.js +5 -1
  185. package/dist/server/mqtt.js.map +1 -1
  186. package/dist/server/serverHelpers/Headers.d.ts +2 -0
  187. package/dist/server/serverHelpers/Headers.js +6 -0
  188. package/dist/server/serverHelpers/Headers.js.map +1 -1
  189. package/dist/server/serverHelpers/NodeAdapterResponse.d.ts +48 -0
  190. package/dist/server/serverHelpers/NodeAdapterResponse.js +220 -0
  191. package/dist/server/serverHelpers/NodeAdapterResponse.js.map +1 -0
  192. package/dist/server/serverHelpers/Request.d.ts +5 -10
  193. package/dist/server/serverHelpers/Request.js +38 -136
  194. package/dist/server/serverHelpers/Request.js.map +1 -1
  195. package/dist/server/serverHelpers/contentTypes.d.ts +2 -0
  196. package/dist/server/serverHelpers/contentTypes.js +189 -15
  197. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  198. package/dist/server/serverHelpers/serverUtilities.d.ts +3 -3
  199. package/dist/server/serverHelpers/serverUtilities.js +110 -20
  200. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  201. package/dist/server/serverHelpers/uwsServer.js +4 -1
  202. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  203. package/dist/server/serverHelpers/webSocketCloseReason.d.ts +2 -0
  204. package/dist/server/serverHelpers/webSocketCloseReason.js +29 -0
  205. package/dist/server/serverHelpers/webSocketCloseReason.js.map +1 -0
  206. package/dist/server/storageReclamation.js +1 -1
  207. package/dist/server/storageReclamation.js.map +1 -1
  208. package/dist/server/threads/isolatedApplications.d.ts +47 -0
  209. package/dist/server/threads/isolatedApplications.js +171 -0
  210. package/dist/server/threads/isolatedApplications.js.map +1 -0
  211. package/dist/server/threads/logRotationTransport.d.ts +1 -0
  212. package/dist/server/threads/logRotationTransport.js +33 -0
  213. package/dist/server/threads/logRotationTransport.js.map +1 -0
  214. package/dist/server/threads/manageThreads.d.ts +64 -6
  215. package/dist/server/threads/manageThreads.js +261 -12
  216. package/dist/server/threads/manageThreads.js.map +1 -1
  217. package/dist/server/threads/socketRouter.d.ts +1 -0
  218. package/dist/server/threads/socketRouter.js +196 -13
  219. package/dist/server/threads/socketRouter.js.map +1 -1
  220. package/dist/server/threads/threadServer.js +30 -7
  221. package/dist/server/threads/threadServer.js.map +1 -1
  222. package/dist/utility/errors/hdbError.d.ts +24 -0
  223. package/dist/utility/errors/hdbError.js +58 -1
  224. package/dist/utility/errors/hdbError.js.map +1 -1
  225. package/dist/utility/hdbTerms.d.ts +2 -0
  226. package/dist/utility/hdbTerms.js +2 -0
  227. package/dist/utility/hdbTerms.js.map +1 -1
  228. package/dist/utility/logging/harper_logger.js +218 -38
  229. package/dist/utility/logging/harper_logger.js.map +1 -1
  230. package/dist/utility/logging/logGenerationCoordinator.d.ts +35 -0
  231. package/dist/utility/logging/logGenerationCoordinator.js +184 -0
  232. package/dist/utility/logging/logGenerationCoordinator.js.map +1 -0
  233. package/dist/utility/logging/logRotation.d.ts +46 -0
  234. package/dist/utility/logging/logRotation.js +365 -0
  235. package/dist/utility/logging/logRotation.js.map +1 -0
  236. package/dist/utility/logging/logRotator.d.ts +1 -1
  237. package/dist/utility/logging/logRotator.js +172 -92
  238. package/dist/utility/logging/logRotator.js.map +1 -1
  239. package/dist/utility/npmUtilities.js +6 -4
  240. package/dist/utility/npmUtilities.js.map +1 -1
  241. package/dist/utility/watcherFallback.d.ts +0 -45
  242. package/dist/utility/watcherFallback.js +1 -125
  243. package/dist/utility/watcherFallback.js.map +1 -1
  244. package/dist/validation/configValidator.js +6 -3
  245. package/dist/validation/configValidator.js.map +1 -1
  246. package/index.ts +9 -0
  247. package/json/systemSchema.json +3 -0
  248. package/npm-shrinkwrap.json +177 -87
  249. package/package.json +13 -5
  250. package/resources/DESIGN.md +689 -19
  251. package/resources/DatabaseTransaction.ts +230 -17
  252. package/resources/LMDBTransaction.ts +21 -3
  253. package/resources/PrimaryRocksDatabase.ts +20 -7
  254. package/resources/RecordEncoder.ts +52 -10
  255. package/resources/Resource.ts +97 -13
  256. package/resources/ResourceInterface.ts +8 -0
  257. package/resources/RocksIndexStore.ts +2 -1
  258. package/resources/RocksTransactionLogStore.ts +111 -31
  259. package/resources/Table.ts +1273 -396
  260. package/resources/analytics/DESIGN.md +38 -0
  261. package/resources/analytics/write.ts +50 -17
  262. package/resources/auditStore.ts +460 -11
  263. package/resources/crdt.ts +22 -0
  264. package/resources/dataLoader.ts +3 -4
  265. package/resources/databases.ts +611 -147
  266. package/resources/derivedIndexRegistry.ts +56 -0
  267. package/resources/derivedIndexRuntime.ts +2292 -0
  268. package/resources/graphql.ts +3 -2
  269. package/resources/indexes/DESIGN.md +833 -0
  270. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +924 -46
  271. package/resources/indexes/fullTextDerivedIndex.ts +1165 -0
  272. package/resources/indexes/fullTextNativeBinding.ts +146 -0
  273. package/resources/indexes/hnswDerivedIndex.ts +531 -0
  274. package/resources/indexes/hnswPlaneBinding.ts +174 -0
  275. package/resources/indexes/nativeFullTextDerivedIndexLifecycle.ts +181 -0
  276. package/resources/nodeIdMapping.ts +50 -0
  277. package/resources/record-locks.md +1407 -0
  278. package/resources/recordLock.ts +173 -7
  279. package/resources/recordLockCoordinator.ts +3082 -0
  280. package/resources/replayLogs.ts +5 -0
  281. package/resources/replicatedApplyFailure.ts +77 -0
  282. package/resources/scheduler/DESIGN.md +40 -0
  283. package/resources/scheduler/scheduler.ts +4 -4
  284. package/resources/search.ts +169 -49
  285. package/resources/tracked.ts +73 -22
  286. package/resources/transactionBroadcast.ts +4 -4
  287. package/security/DESIGN.md +175 -0
  288. package/security/auth.ts +53 -24
  289. package/security/deferredAuthentication.ts +24 -2
  290. package/security/jsLoader.ts +9 -4
  291. package/server/DESIGN.md +275 -0
  292. package/server/REST.ts +42 -6
  293. package/server/http.ts +34 -2
  294. package/server/mqtt.ts +6 -4
  295. package/server/serverHelpers/Headers.ts +5 -1
  296. package/server/serverHelpers/NodeAdapterResponse.ts +221 -0
  297. package/server/serverHelpers/Request.ts +33 -131
  298. package/server/serverHelpers/contentTypes.ts +188 -15
  299. package/server/serverHelpers/serverUtilities.ts +157 -27
  300. package/server/serverHelpers/uwsServer.ts +4 -1
  301. package/server/serverHelpers/webSocketCloseReason.ts +25 -0
  302. package/server/storageReclamation.ts +2 -2
  303. package/server/threads/isolatedApplications.ts +157 -0
  304. package/server/threads/logRotationTransport.ts +40 -0
  305. package/server/threads/manageThreads.js +254 -12
  306. package/server/threads/socketRouter.ts +217 -11
  307. package/server/threads/threadServer.js +30 -7
  308. package/studio/web/assets/{Chat-BnCBegQz.js → Chat-DADFFGe_.js} +1 -1
  309. package/studio/web/assets/{FloatingChat-CoDW1ySS.js → FloatingChat-D_mI-rZ7.js} +3 -3
  310. package/studio/web/assets/{apiToken-Bwk5BLXW.js → apiToken-c2NiSDHa.js} +1 -1
  311. package/studio/web/assets/{applications-DHxGi7JH.js → applications-DktUqh7G.js} +1 -1
  312. package/studio/web/assets/{cssMode-s0cWI-_M.js → cssMode-Cs_75Xhw.js} +1 -1
  313. package/studio/web/assets/{editor-DNcRHK54.js → editor-19b-Y1IN.js} +1 -1
  314. package/studio/web/assets/{html-Bdssedlg.js → html-DiYEQMpB.js} +1 -1
  315. package/studio/web/assets/{htmlMode-CoDlJ3fw.js → htmlMode-CmR0y7P_.js} +1 -1
  316. package/studio/web/assets/{index-D6sxmFLR.js → index-Dm0rfkJ7.js} +5 -5
  317. package/studio/web/assets/{index.lazy-tmU5BS8s.js → index.lazy-7vqt2CC3.js} +1 -1
  318. package/studio/web/assets/{javascript-B8meVSTH.js → javascript-BWtCFuOt.js} +1 -1
  319. package/studio/web/assets/{jsonMode-DpIPd35T.js → jsonMode-Buzzbv9y.js} +1 -1
  320. package/studio/web/assets/{languageServices-C_5FMJzQ.js → languageServices-SqsFWfTM.js} +1 -1
  321. package/studio/web/assets/{lspLanguageFeatures-BIzNBzPK.js → lspLanguageFeatures-EMV5cmjo.js} +1 -1
  322. package/studio/web/assets/{notifications-CvZivSbh.js → notifications-CAB-LZWT.js} +1 -1
  323. package/studio/web/assets/{notifications-CQf18QKb.js → notifications-DRzmSRxM.js} +1 -1
  324. package/studio/web/assets/{profile-DdOwtntb.js → profile-BNKAl79n.js} +1 -1
  325. package/studio/web/assets/{regions-n69fwagr.js → regions-CUow_Zw2.js} +1 -1
  326. package/studio/web/assets/{register-PfWTCXWB.js → register-Dkt3WUMp.js} +2 -2
  327. package/studio/web/assets/{setComponentFile-Bg6O7X0S.js → setComponentFile-BZRfMD0N.js} +1 -1
  328. package/studio/web/assets/{setup-CUx_aUDl.js → setup-D_yiEPO2.js} +2 -2
  329. package/studio/web/assets/{status-D7BVKqX9.js → status-DhHh1Ge-.js} +1 -1
  330. package/studio/web/assets/{toggleHighContrast-DBSyXzMr.js → toggleHighContrast-D7L1PDtV.js} +1 -1
  331. package/studio/web/assets/{tsMode-BByKCjBS.js → tsMode-CCwLk1YS.js} +1 -1
  332. package/studio/web/assets/{typescript-DDLnLpw9.js → typescript-BP1j1mjn.js} +1 -1
  333. package/studio/web/assets/{useEntityRestURL-31CHGaHk.js → useEntityRestURL-D7bnYxLw.js} +1 -1
  334. package/studio/web/assets/{workers-pR3jRY9D.js → workers-tOuCNT17.js} +1 -1
  335. package/studio/web/assets/{xml-2iRnMhQO.js → xml-BSG_3mQT.js} +1 -1
  336. package/studio/web/assets/{yaml-Bf92gJpd.js → yaml-DxiLprBB.js} +1 -1
  337. package/studio/web/index.html +1 -1
  338. package/utility/DESIGN.md +55 -0
  339. package/utility/errors/hdbError.ts +54 -0
  340. package/utility/hdbTerms.ts +2 -0
  341. package/utility/logging/harper_logger.ts +210 -30
  342. package/utility/logging/logGenerationCoordinator.ts +196 -0
  343. package/utility/logging/logRotation.ts +367 -0
  344. package/utility/logging/logRotator.ts +196 -91
  345. package/utility/npmUtilities.ts +6 -4
  346. package/utility/watcherFallback.ts +0 -122
  347. package/validation/configValidator.ts +6 -3
@@ -38,20 +38,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.logRotator = logRotator;
40
40
  const fs_1 = require("fs");
41
- const zlib_1 = require("zlib");
42
- const util_1 = require("util");
43
- const stream_1 = require("stream");
44
- const pipe = (0, util_1.promisify)(stream_1.pipeline);
45
41
  const path = __importStar(require("path"));
46
- const crypto_1 = require("crypto");
47
42
  const envMgr = __importStar(require("../environment/environmentManager.js"));
48
43
  envMgr.initSync();
49
44
  const harper_logger_ts_1 = __importDefault(require("./harper_logger.js"));
50
45
  const hdbTerms_ts_1 = require("../hdbTerms.js");
51
46
  const common_utils_ts_1 = require("../common_utils.js");
52
47
  const storageReclamation_ts_1 = require("../../server/storageReclamation.js");
48
+ const logGenerationCoordinator_ts_1 = require("./logGenerationCoordinator.js");
49
+ const logRotation_ts_1 = require("./logRotation.js");
53
50
  // Interval in ms to check log file and decide if it should be rotated.
54
51
  const LOG_AUDIT_INTERVAL = 60000;
52
+ const RELEASE_PROOF_REPORT_INTERVAL = 5 * 60 * 1000;
55
53
  const INT_SIZE_UNDEFINED_MSG = "'interval' and 'maxSize' are both undefined, to enable logging rotation at least one of these values must be defined in harperdb-config.yaml";
56
54
  /**
57
55
  * Rotates hdb.log using an interval and/or maxSize param to determine if log should be rotated.
@@ -59,7 +57,7 @@ const INT_SIZE_UNDEFINED_MSG = "'interval' and 'maxSize' are both undefined, to
59
57
  * If log file is within the values set in config, log file will be renamed/moved and a new empty hdb.log created.
60
58
  * @returns LogRotator
61
59
  */
62
- function logRotator({ logger, maxSize, interval, retention, enabled, path: rotatedLogDir, auditInterval }) {
60
+ function logRotator({ logger, maxSize, interval, retention, enabled, compress, path: rotatedLogDir, auditInterval, }) {
63
61
  if (enabled === false)
64
62
  return;
65
63
  let reclamationPriority = 0;
@@ -69,152 +67,234 @@ function logRotator({ logger, maxSize, interval, retention, enabled, path: rotat
69
67
  if (!maxSize && !interval) {
70
68
  throw new Error(INT_SIZE_UNDEFINED_MSG);
71
69
  }
72
- if (!rotatedLogDir) {
73
- rotatedLogDir = path.join(path.dirname(logger.path), 'rotated');
74
- }
70
+ rotatedLogDir = (0, logRotation_ts_1.resolveRotatedLogDir)(logger.path, rotatedLogDir);
75
71
  (0, fs_1.mkdirSync)(rotatedLogDir, { recursive: true });
76
- // Convert maxSize param to bytes.
77
- let maxBytes;
78
- if (maxSize) {
79
- const unit = maxSize.slice(-1);
80
- const size = maxSize.slice(0, -1);
81
- if (unit === 'G')
82
- maxBytes = size * 1000000000;
83
- else if (unit === 'M')
84
- maxBytes = size * 1000000;
85
- else
86
- maxBytes = size * 1000;
72
+ const maxBytes = (0, logRotation_ts_1.parseMaxSize)(maxSize);
73
+ if (maxSize && !maxBytes) {
74
+ harper_logger_ts_1.default.error(`Ignoring logging.rotation.maxSize '${maxSize}': ${logRotation_ts_1.INVALID_MAX_SIZE_MSG}`);
87
75
  }
76
+ // The rotation block first, because that is all the write-path guard can read — environmentManager
77
+ // imports harper_logger — and two sources would mean two destruction policies for one log.
78
+ const compressArchives = compress ?? envMgr.get(hdbTerms_ts_1.CONFIG_PARAMS.LOGGING_ROTATION_COMPRESS);
88
79
  // Convert interval param to ms.
89
80
  let maxInterval;
90
81
  if (interval) {
91
82
  maxInterval = (0, common_utils_ts_1.convertToMS)(interval);
92
83
  }
93
84
  let lastRotatedLogPath;
94
- // convert date.now to minutes
95
85
  let lastRotationTime = Date.now();
86
+ let observedGeneration;
87
+ try {
88
+ const active = (0, fs_1.statSync)(logger.path);
89
+ observedGeneration = generationIdentity(active);
90
+ if (active.birthtimeMs > 0)
91
+ lastRotationTime = Math.min(lastRotationTime, active.birthtimeMs);
92
+ }
93
+ catch { }
96
94
  harper_logger_ts_1.default.trace('Log rotate enabled, maxSize:', maxSize, 'interval:', interval);
95
+ let tickInFlight = false;
96
+ let ended = false;
97
+ let releaseProofStalled = false;
98
+ let nextReleaseProofReport = 0;
99
+ let retentionCursor = 0;
100
+ const auditIntervalMs = auditInterval ?? LOG_AUDIT_INTERVAL;
101
+ const compressionBudgetMs = Math.max(1, Math.floor(auditIntervalMs / 4));
102
+ /**
103
+ * rename() reports ENOENT for a missing destination directory as well as a missing source, and
104
+ * only the second is the benign lost race. The directory is created once at rotator start, so a
105
+ * rotation target removed under a running instance otherwise stops rotation permanently and
106
+ * silently — and with `interval` and no `maxSize` there is no write-path guard to recreate it.
107
+ */
108
+ function recoverRotationTarget(err) {
109
+ if (err.code !== 'ENOENT' || (0, fs_1.existsSync)(rotatedLogDir))
110
+ return;
111
+ try {
112
+ (0, fs_1.mkdirSync)(rotatedLogDir, { recursive: true });
113
+ harper_logger_ts_1.default.warn(`The log rotation directory ${rotatedLogDir} was missing and has been recreated`);
114
+ }
115
+ catch (mkdirErr) {
116
+ harper_logger_ts_1.default.error('Could not recreate the log rotation directory', rotatedLogDir, mkdirErr);
117
+ }
118
+ }
97
119
  const setIntervalId = setInterval(async () => {
120
+ // setInterval does not await the callback, and one pass can now wait on peers; overlapping
121
+ // passes would work the same archive twice and double-compress it.
122
+ if (tickInFlight || ended)
123
+ return;
124
+ tickInFlight = true;
125
+ const tickDeadline = Date.now() + auditIntervalMs;
98
126
  // The tick is async but setInterval doesn't await it, so any error that escapes this callback
99
127
  // becomes an unhandled rejection rather than surfacing anywhere useful — and since it isn't
100
128
  // caught, it also skips the retention cleanup below. Contain everything here and report via
101
129
  // the logger instead, so one bad tick (e.g. an unexpected fs error) never kills rotation for
102
130
  // the rest of the process's life.
103
131
  try {
104
- // A missing/relocated active log file only invalidates the rotation checks below — retention cleanup
105
- // must still run. So skip the individual check on ENOENT rather than returning from the whole tick.
106
132
  if (maxBytes) {
107
- let fileStats;
108
133
  try {
109
- fileStats = await fs_1.promises.stat(logger.path);
134
+ // statSync, and the rename in the same turn: an await here lets a writing thread rotate
135
+ // the generation this tick measured and start a fresh one, which the tick would then
136
+ // archive near-empty.
137
+ const active = (0, fs_1.statSync)(logger.path);
138
+ if (active.size >= maxBytes) {
139
+ lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger, compressArchives, active);
140
+ // The interval clock counts from the last rotation of any kind. Without this an
141
+ // instance whose uptime has passed `interval` archives a freshly-created log every
142
+ // interval on top of the size rotations already doing the work.
143
+ lastRotationTime = Date.now();
144
+ }
110
145
  }
111
146
  catch (err) {
112
- // If the log file doesn't exist, skip the size-based rotation check
147
+ // A missing or already-rotated active log only invalidates this check; retention below
148
+ // must still run, so skip the check rather than leaving the whole tick.
149
+ recoverRotationTarget(err);
113
150
  if (err.code !== 'ENOENT')
114
151
  throw err;
115
152
  }
116
- if (fileStats && fileStats.size >= maxBytes) {
117
- try {
118
- lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger);
119
- }
120
- catch (err) {
121
- // If the log file doesn't exist, skip rotation
122
- if (err.code !== 'ENOENT')
123
- throw err;
124
- }
125
- }
126
153
  }
127
154
  if (maxInterval) {
128
- const minSinceLastRotate = Date.now() - lastRotationTime;
129
- if (minSinceLastRotate >= maxInterval) {
155
+ try {
156
+ const activeGeneration = generationIdentity((0, fs_1.statSync)(logger.path));
157
+ if (activeGeneration && activeGeneration !== observedGeneration) {
158
+ observedGeneration = activeGeneration;
159
+ lastRotationTime = Date.now();
160
+ }
161
+ }
162
+ catch (err) {
163
+ if (err.code !== 'ENOENT')
164
+ throw err;
165
+ }
166
+ if (Date.now() - lastRotationTime >= maxInterval) {
130
167
  try {
131
- lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger);
168
+ lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger, compressArchives);
132
169
  lastRotationTime = Date.now();
133
170
  }
134
171
  catch (err) {
135
172
  // If the log file doesn't exist, skip rotation
173
+ recoverRotationTarget(err);
136
174
  if (err.code !== 'ENOENT')
137
175
  throw err;
138
176
  }
139
177
  }
140
178
  }
141
- if (retention || reclamationPriority) {
142
- // remove old logs after retention time
143
- // adjust retention time if there is a reclamation priority in place
144
- const retentionMs = (0, common_utils_ts_1.convertToMS)(retention ?? '1M') / (1 + reclamationPriority);
145
- reclamationPriority = 0; // reset it after use
146
- let files;
179
+ // The compression sweep and retention both destroy archives this thread did not rotate, so
180
+ // both need the same proof: every peer releases any descriptor that is not on the live
181
+ // generation, and reports the log paths it is writing. One round trip per tick serves both,
182
+ // and it is not gated on retention being configured — retention is unset by default, and a
183
+ // worker's uncompressed archive still needs finishing.
184
+ if (compressArchives || retention || reclamationPriority) {
185
+ // Enumerated BEFORE the proof, and only these are destroyed: an archive created after the
186
+ // proof was never covered by it, and a peer blocked mid-rotation may still be writing to it.
187
+ let candidates;
147
188
  try {
148
- files = await fs_1.promises.readdir(rotatedLogDir);
189
+ candidates = await fs_1.promises.readdir(rotatedLogDir);
149
190
  }
150
191
  catch (err) {
151
- // The rotated log dir may not exist yet (nothing rotated so far); nothing to clean up
152
192
  if (err.code !== 'ENOENT')
153
193
  harper_logger_ts_1.default.error('Error reading rotated log directory', rotatedLogDir, err);
154
- files = [];
194
+ candidates = [];
155
195
  }
156
- for (const file of files) {
157
- try {
158
- const fileStats = await fs_1.promises.stat(path.join(rotatedLogDir, file));
159
- if (Date.now() - fileStats.mtimeMs > retentionMs) {
160
- await fs_1.promises.unlink(path.join(rotatedLogDir, file));
196
+ const { released, liveLogPaths } = await (0, logGenerationCoordinator_ts_1.requestStaleDescriptorRelease)(tickDeadline);
197
+ // A peer whose event loop is blocked never answers, and the whole pass then destroys
198
+ // nothing — correct, but it is also the only thing bounding the rotated directory, so an
199
+ // operator who configured retention has to be able to see that it has stopped. Repeat at
200
+ // a low rate so a permanent stall does not disappear after one warning.
201
+ if (!released && Date.now() >= nextReleaseProofReport) {
202
+ nextReleaseProofReport = Date.now() + RELEASE_PROOF_REPORT_INTERVAL;
203
+ releaseProofStalled = true;
204
+ harper_logger_ts_1.default.warn(`Log rotation could not prove every thread released its archived log descriptors; compression and retention are paused for ${rotatedLogDir}`);
205
+ }
206
+ else if (released && releaseProofStalled) {
207
+ releaseProofStalled = false;
208
+ nextReleaseProofReport = 0;
209
+ harper_logger_ts_1.default.notify(`Log rotation descriptor release recovered; retention resumed for ${rotatedLogDir}`);
210
+ }
211
+ const liveLogs = new Set([...liveLogPaths, logger.path].map((p) => path.resolve(p)));
212
+ if (released && (retention || reclamationPriority)) {
213
+ // remove old logs after retention time
214
+ // adjust retention time if there is a reclamation priority in place
215
+ const retentionMs = (0, common_utils_ts_1.convertToMS)(retention ?? '1M') / (1 + reclamationPriority);
216
+ let retentionCompleted = true;
217
+ let examined = 0;
218
+ for (; examined < candidates.length; examined++) {
219
+ if (ended || Date.now() >= tickDeadline) {
220
+ retentionCompleted = false;
221
+ break;
222
+ }
223
+ const file = candidates[(retentionCursor + examined) % candidates.length];
224
+ try {
225
+ const archivePath = path.join(rotatedLogDir, file);
226
+ // An explicitly configured rotation path may contain live component logs too.
227
+ if (liveLogs.has(path.resolve(archivePath)))
228
+ continue;
229
+ // Unlinking an inode a stalled writer still holds loses whatever it writes next
230
+ // just as surely as compressing over it would.
231
+ if ((0, logRotation_ts_1.isArchivePendingQuiescence)(archivePath))
232
+ continue;
233
+ const fileStats = await fs_1.promises.stat(archivePath);
234
+ if (Date.now() - fileStats.mtimeMs > retentionMs) {
235
+ await fs_1.promises.unlink(archivePath);
236
+ }
237
+ }
238
+ catch (err) {
239
+ if (err.code !== 'ENOENT')
240
+ harper_logger_ts_1.default.error('Error trying to remove log', file, err);
161
241
  }
162
242
  }
163
- catch (err) {
164
- harper_logger_ts_1.default.error('Error trying to remove log', file, err);
243
+ if (retentionCompleted) {
244
+ retentionCursor = 0;
245
+ reclamationPriority = 0;
246
+ }
247
+ else if (candidates.length) {
248
+ retentionCursor = (retentionCursor + examined) % candidates.length;
165
249
  }
166
250
  }
251
+ if (released && compressArchives && !ended) {
252
+ const compressionFailure = await (0, logRotation_ts_1.compressPendingArchives)(rotatedLogDir, candidates, liveLogs, {
253
+ deadline: Math.min(tickDeadline, Date.now() + compressionBudgetMs),
254
+ shouldStop: () => ended,
255
+ });
256
+ if (compressionFailure)
257
+ harper_logger_ts_1.default.error('Error compressing rotated log', compressionFailure.file, compressionFailure.error);
258
+ }
167
259
  }
168
260
  }
169
261
  catch (err) {
170
262
  harper_logger_ts_1.default.error('Error during log rotation audit tick for', logger.path, err);
171
263
  }
172
- }, auditInterval ?? LOG_AUDIT_INTERVAL).unref();
264
+ finally {
265
+ try {
266
+ await (0, logRotation_ts_1.retryPendingGenerations)({ deadline: tickDeadline, shouldStop: () => ended });
267
+ }
268
+ catch (err) {
269
+ harper_logger_ts_1.default.error('Error retrying pending log generations for', logger.path, err);
270
+ }
271
+ tickInFlight = false;
272
+ }
273
+ }, auditIntervalMs).unref();
173
274
  return {
174
275
  end() {
276
+ ended = true;
175
277
  clearInterval(setIntervalId);
176
278
  },
177
279
  getLastRotatedLogPath() {
178
280
  return lastRotatedLogPath;
179
281
  },
180
282
  };
181
- }
182
- // Monotonically increasing across every rotation in this process, regardless of which logger/source
183
- // triggered it — combined with the pid, this guarantees two archive names can never collide even if
184
- // two rotations for two different sources race concurrently within the same audit-interval tick.
185
- let rotationSequence = 0;
186
- async function moveLogFile(logPath, rotatedLogPath, logger) {
187
- const compress = envMgr.get(hdbTerms_ts_1.CONFIG_PARAMS.LOGGING_ROTATION_COMPRESS);
188
- // Name the archive after its source log (hdb, external, a component name, ...), not a fixed
189
- // "HDB" literal — external/component loggers can now inherit rotation from the main logger
190
- // (#1877) and default to the same rotated directory as it, so distinct sources rotating in
191
- // the same audit tick must not collide on the same timestamp-only filename. A basename alone
192
- // is not enough either: two distinct source paths can share a basename (e.g. `/logs/a/hdb.log`
193
- // and `/logs/b/hdb.log`), so a hash of the full resolved source path plus a pid+sequence suffix
194
- // give every archive a name POSIX rename() can never clobber, even under a same-millisecond race.
195
- const sourceName = path.basename(logPath, path.extname(logPath)) || 'HDB';
196
- // sha256, not sha1: this only needs a stable identifier, not cryptographic strength, but a FIPS-mode
197
- // OpenSSL provider disables sha1 and throws synchronously, which would crash every rotation tick.
198
- const sourceId = (0, crypto_1.createHash)('sha256').update(path.resolve(logPath)).digest('hex').slice(0, 8);
199
- const uniqueSuffix = `${process.pid}-${rotationSequence++}`;
200
- let fullRotateLogPath = path.join(rotatedLogPath, `${sourceName}-${sourceId}-${new Date(Date.now()).toISOString().replaceAll(':', '-')}-${uniqueSuffix}.log`);
201
- // Move log file to rotated log path first (if we crash
202
- // during compression, we don't want to restart the compression with a new file)
203
- await fs_1.promises.rename(logPath, fullRotateLogPath);
204
- // Close the rotating logger's own file descriptor now that the file has moved. This must be the
205
- // logger's own closeLogFile (which resets its internal logFD), not the module-global one — otherwise
206
- // the descriptor stays open on the moved (and, when compressing, subsequently unlinked) inode until the
207
- // logger's safety timeout fires, pinning disk space and sending any writes in that window into the
208
- // rotated/deleted file. Closing it here makes the next write reopen a fresh log file immediately.
209
- (logger?.closeLogFile ?? harper_logger_ts_1.default.closeLogFile)();
210
- if (compress) {
211
- logPath = fullRotateLogPath;
212
- fullRotateLogPath += '.gz';
213
- await pipe((0, fs_1.createReadStream)(logPath), (0, zlib_1.createGzip)(), (0, fs_1.createWriteStream)(fullRotateLogPath));
214
- await fs_1.promises.unlink(logPath);
283
+ function generationIdentity(stats) {
284
+ return stats.ino ? `${stats.dev}:${stats.ino}` : undefined;
215
285
  }
286
+ }
287
+ async function moveLogFile(logPath, rotatedLogPath, logger, compress, activeStats) {
288
+ // The rename and the descriptor close must not be separated by an await: the descriptor would
289
+ // otherwise keep feeding the archived inode while the event loop runs. Closing the rotating
290
+ // logger's own descriptor (not the module-global one) is what makes the next write reopen a
291
+ // fresh log file rather than append to the moved — and, when compressing, unlinked — inode.
292
+ // `activeStats` is the caller's own stat of the live generation, when it has one: the size check
293
+ // must rename the generation it measured, and a second stat here could pick up a newer one.
294
+ const generation = (0, logRotation_ts_1.rotateLogFileSync)(logPath, rotatedLogPath, logger?.closeLogFile ?? harper_logger_ts_1.default.closeLogFile, activeStats);
295
+ const publishedPath = await (0, logRotation_ts_1.publishArchivedGeneration)(generation, compress ?? envMgr.get(hdbTerms_ts_1.CONFIG_PARAMS.LOGGING_ROTATION_COMPRESS), (error) => harper_logger_ts_1.default.error('Error compressing rotated log', generation.archivePath, error));
216
296
  // This notify log will create a new log file after the previous one has been rotated. It's important to keep this log as notify
217
- harper_logger_ts_1.default.notify(`hdb.log rotated, old log moved to ${fullRotateLogPath}`);
218
- return fullRotateLogPath;
297
+ harper_logger_ts_1.default.notify(`hdb.log rotated, old log moved to ${publishedPath}`);
298
+ return publishedPath;
219
299
  }
220
300
  //# sourceMappingURL=logRotator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logRotator.js","sourceRoot":"","sources":["../../../utility/logging/logRotator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logRotator.js","sourceRoot":"","sources":["../../../utility/logging/logRotator.ts"],"names":[],"mappings":"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"}
@@ -61,11 +61,10 @@ async function installModules(req) {
61
61
  if (validation) {
62
62
  throw (0, hdbError_ts_1.handleHDBError)(validation, validation.message, HTTP_STATUS_CODES.BAD_REQUEST);
63
63
  }
64
- const { projects, dry_run: dryRun } = validatedRequest;
64
+ const { projects, dry_run: dryRun, allowInstallScripts } = validatedRequest;
65
65
  const componentsRootDirPath = (0, configUtils_ts_1.getConfigPath)(hdbTerms_ts_1.CONFIG_PARAMS.COMPONENTSROOT);
66
66
  const responseObject = {};
67
- // `allowInstallScripts` is true because this operation has always run a project's install lifecycle
68
- const args = [...(0, Application_ts_1.packageManagerInstallArguments)('npm', true, true), '--json'];
67
+ const args = [...(0, Application_ts_1.packageManagerInstallArguments)('npm', allowInstallScripts, true), '--json'];
69
68
  if (dryRun)
70
69
  args.push('--dry-run');
71
70
  for (const project of projects) {
@@ -124,7 +123,10 @@ function modulesValidator(req) {
124
123
  const funcSchema = joi_1.default.object({
125
124
  projects: joi_1.default.array().min(1).items(joi_1.default.string()).required(),
126
125
  dry_run: joi_1.default.boolean().default(false),
127
- }).rename('dryRun', 'dry_run', { ignoreUndefined: true });
126
+ allowInstallScripts: joi_1.default.boolean().default(true),
127
+ })
128
+ .rename('dryRun', 'dry_run', { ignoreUndefined: true })
129
+ .rename('install_allow_scripts', 'allowInstallScripts', { ignoreUndefined: true });
128
130
  return validator.validateAndConvertBySchema(req, funcSchema);
129
131
  }
130
132
  //# sourceMappingURL=npmUtilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"npmUtilities.js","sourceRoot":"","sources":["../../utility/npmUtilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"npmUtilities.js","sourceRoot":"","sources":["../../utility/npmUtilities.ts"],"names":[],"mappings":"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"}
@@ -75,48 +75,3 @@ export declare function installLostNativeWatchGuard(): void;
75
75
  */
76
76
  export declare function guardedWatch(paths: string | string[], options?: ChokidarOptions): FSWatcher;
77
77
  export declare function _lostNativeWatchCountForTests(): number;
78
- export declare class PartialReadRetry {
79
- #private;
80
- constructor(filePath: string);
81
- /** False once the budget is spent, so the caller can fall back to its own error handling. */
82
- schedule(reread: () => void): boolean;
83
- /** A usable read arrived, so any re-read still armed for the previous one would duplicate it. */
84
- settled(): void;
85
- /**
86
- * The budget is spent. Distinct from `settled()` in that the report stands — the file has not
87
- * recovered, and it is shared with every other watcher of it. The budget itself is restored,
88
- * because the next event may be the repair, and that repair can be observed mid-write too.
89
- * Returns whether this give-up was the one reported.
90
- */
91
- gaveUp(error?: unknown): boolean;
92
- /** Terminal: the watcher is closing, so nothing may re-arm the re-read or report on it. */
93
- cancel(): void;
94
- }
95
- /**
96
- * ENOENT is excluded not because it cannot be transient, but because it already has an answer:
97
- * `OptionsWatcher` routes it to `remove` (env-only fallback at boot, then removal), and
98
- * `RootConfigWatcher` keeps its last config rather than tearing down core features on a file
99
- * that may just be mid-replace. Re-reading would only delay a decision already made.
100
- */
101
- export declare function isPartialReadError(error: unknown): boolean;
102
- /**
103
- * A watcher that exhausts its re-read budget serves stale config from then on, so the give-up
104
- * has to be visible — otherwise the only symptom is a config change that silently did nothing.
105
- * Warned once per file: every root-config scope watches the same one and would otherwise report
106
- * a single bad file once each, on every event.
107
- */
108
- export declare function warnPartialReadGaveUp(filePath: string, error?: unknown): boolean;
109
- /**
110
- * The kind and position of a failed config read, never its content: a YAML parse error's message
111
- * quotes the offending source lines, and these files hold credentials.
112
- */
113
- export declare function describeReadFailure(error: unknown): string;
114
- /** Test-only: whether a give-up warning for this file is currently suppressed as a duplicate. */
115
- export declare function isPartialReadWarned(filePath: string): boolean;
116
- /** Test-only: forget that this file was reported, so a suite can start from a known state. */
117
- export declare function clearPartialReadWarning(filePath: string): void;
118
- /**
119
- * A listener that throws while applying new config is a bug in that listener, not evidence the
120
- * file was half-written — the watcher's own state is already updated, so it keeps going.
121
- */
122
- export declare function warnWatcherListenerError(filePath: string, error: unknown): void;