@harperfast/harper 5.2.10 → 5.3.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/agent/mcpTools.ts +1 -1
  2. package/agent/session.ts +25 -14
  3. package/bin/cliOperations.ts +46 -9
  4. package/bin/copyDb.ts +282 -59
  5. package/bin/deploySetup.ts +16 -5
  6. package/bin/harper.ts +1 -1
  7. package/bin/help.ts +4 -1
  8. package/bin/lite.ts +4 -1
  9. package/bin/restart.ts +59 -3
  10. package/bin/run.ts +6 -11
  11. package/bin/upgrade.js +7 -3
  12. package/bin/workloadIdentity.ts +119 -0
  13. package/components/Application.ts +2414 -242
  14. package/components/ApplicationScope.ts +8 -0
  15. package/components/EntryHandler.ts +59 -39
  16. package/components/OptionsWatcher.ts +150 -74
  17. package/components/RuntimeModuleTracker.ts +38 -7
  18. package/components/Scope.ts +37 -15
  19. package/components/awaitRestart.ts +84 -0
  20. package/components/componentLoader.ts +340 -30
  21. package/components/componentPreparationLock.ts +16 -5
  22. package/components/mcp/adapters/harperHttp.ts +4 -0
  23. package/components/mcp/listChanged.ts +4 -0
  24. package/components/mcp/toolRegistry.ts +2 -0
  25. package/components/mcp/tools/operations.ts +9 -0
  26. package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
  27. package/components/operations.js +270 -78
  28. package/components/operationsValidation.js +49 -1
  29. package/components/status/ComponentStatusRegistry.ts +59 -0
  30. package/config/RootConfigWatcher.ts +80 -34
  31. package/config/configUtils.ts +291 -34
  32. package/config/harperConfigEnvVars.ts +170 -27
  33. package/config-root.schema.json +29 -0
  34. package/dataLayer/blobBackup.ts +160 -50
  35. package/dataLayer/delete.ts +6 -1
  36. package/dataLayer/harperBridge/ResourceBridge.ts +52 -8
  37. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  38. package/dataLayer/hdbInfoController.ts +34 -1
  39. package/dataLayer/insert.ts +44 -1
  40. package/dataLayer/rocksdbBackup.ts +53 -10
  41. package/dataLayer/schema.ts +11 -1
  42. package/dataLayer/schemaDescribe.ts +8 -1
  43. package/dist/agent/mcpTools.js +1 -1
  44. package/dist/agent/mcpTools.js.map +1 -1
  45. package/dist/agent/session.d.ts +22 -0
  46. package/dist/agent/session.js +26 -15
  47. package/dist/agent/session.js.map +1 -1
  48. package/dist/bin/cliOperations.js +48 -9
  49. package/dist/bin/cliOperations.js.map +1 -1
  50. package/dist/bin/copyDb.d.ts +12 -1
  51. package/dist/bin/copyDb.js +248 -60
  52. package/dist/bin/copyDb.js.map +1 -1
  53. package/dist/bin/deploySetup.d.ts +2 -0
  54. package/dist/bin/deploySetup.js +11 -3
  55. package/dist/bin/deploySetup.js.map +1 -1
  56. package/dist/bin/harper.js +1 -1
  57. package/dist/bin/harper.js.map +1 -1
  58. package/dist/bin/help.js +4 -1
  59. package/dist/bin/help.js.map +1 -1
  60. package/dist/bin/lite.js +4 -1
  61. package/dist/bin/lite.js.map +1 -1
  62. package/dist/bin/restart.js +54 -5
  63. package/dist/bin/restart.js.map +1 -1
  64. package/dist/bin/run.js +4 -10
  65. package/dist/bin/run.js.map +1 -1
  66. package/dist/bin/upgrade.js +4 -3
  67. package/dist/bin/upgrade.js.map +1 -1
  68. package/dist/bin/workloadIdentity.d.ts +18 -0
  69. package/dist/bin/workloadIdentity.js +100 -0
  70. package/dist/bin/workloadIdentity.js.map +1 -0
  71. package/dist/components/Application.d.ts +139 -16
  72. package/dist/components/Application.js +2215 -267
  73. package/dist/components/Application.js.map +1 -1
  74. package/dist/components/ApplicationScope.d.ts +8 -0
  75. package/dist/components/ApplicationScope.js +7 -0
  76. package/dist/components/ApplicationScope.js.map +1 -1
  77. package/dist/components/EntryHandler.js +26 -10
  78. package/dist/components/EntryHandler.js.map +1 -1
  79. package/dist/components/OptionsWatcher.d.ts +1 -0
  80. package/dist/components/OptionsWatcher.js +141 -74
  81. package/dist/components/OptionsWatcher.js.map +1 -1
  82. package/dist/components/RuntimeModuleTracker.js +40 -6
  83. package/dist/components/RuntimeModuleTracker.js.map +1 -1
  84. package/dist/components/Scope.js +38 -13
  85. package/dist/components/Scope.js.map +1 -1
  86. package/dist/components/awaitRestart.d.ts +33 -0
  87. package/dist/components/awaitRestart.js +61 -0
  88. package/dist/components/awaitRestart.js.map +1 -0
  89. package/dist/components/componentLoader.d.ts +38 -1
  90. package/dist/components/componentLoader.js +279 -22
  91. package/dist/components/componentLoader.js.map +1 -1
  92. package/dist/components/componentPreparationLock.d.ts +5 -0
  93. package/dist/components/componentPreparationLock.js +14 -6
  94. package/dist/components/componentPreparationLock.js.map +1 -1
  95. package/dist/components/mcp/adapters/harperHttp.js +4 -0
  96. package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
  97. package/dist/components/mcp/listChanged.js +5 -0
  98. package/dist/components/mcp/listChanged.js.map +1 -1
  99. package/dist/components/mcp/toolRegistry.d.ts +1 -0
  100. package/dist/components/mcp/toolRegistry.js.map +1 -1
  101. package/dist/components/mcp/tools/operations.d.ts +5 -0
  102. package/dist/components/mcp/tools/operations.js +9 -0
  103. package/dist/components/mcp/tools/operations.js.map +1 -1
  104. package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
  105. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  106. package/dist/components/operations.js +231 -77
  107. package/dist/components/operations.js.map +1 -1
  108. package/dist/components/operationsValidation.js +49 -1
  109. package/dist/components/operationsValidation.js.map +1 -1
  110. package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
  111. package/dist/components/status/ComponentStatusRegistry.js +63 -0
  112. package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
  113. package/dist/config/RootConfigWatcher.d.ts +7 -1
  114. package/dist/config/RootConfigWatcher.js +64 -27
  115. package/dist/config/RootConfigWatcher.js.map +1 -1
  116. package/dist/config/configUtils.d.ts +9 -1
  117. package/dist/config/configUtils.js +254 -33
  118. package/dist/config/configUtils.js.map +1 -1
  119. package/dist/config/harperConfigEnvVars.d.ts +16 -0
  120. package/dist/config/harperConfigEnvVars.js +162 -25
  121. package/dist/config/harperConfigEnvVars.js.map +1 -1
  122. package/dist/dataLayer/blobBackup.d.ts +49 -20
  123. package/dist/dataLayer/blobBackup.js +139 -50
  124. package/dist/dataLayer/blobBackup.js.map +1 -1
  125. package/dist/dataLayer/delete.js +1 -1
  126. package/dist/dataLayer/delete.js.map +1 -1
  127. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
  128. package/dist/dataLayer/harperBridge/ResourceBridge.js +51 -10
  129. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  130. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
  131. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
  132. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
  133. package/dist/dataLayer/hdbInfoController.d.ts +10 -0
  134. package/dist/dataLayer/hdbInfoController.js +30 -1
  135. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  136. package/dist/dataLayer/insert.d.ts +9 -1
  137. package/dist/dataLayer/insert.js +30 -0
  138. package/dist/dataLayer/insert.js.map +1 -1
  139. package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
  140. package/dist/dataLayer/rocksdbBackup.js +45 -8
  141. package/dist/dataLayer/rocksdbBackup.js.map +1 -1
  142. package/dist/dataLayer/schema.js +8 -0
  143. package/dist/dataLayer/schema.js.map +1 -1
  144. package/dist/dataLayer/schemaDescribe.js +8 -1
  145. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  146. package/dist/index.d.ts +1 -1
  147. package/dist/index.js.map +1 -1
  148. package/dist/json/systemSchema.json +52 -0
  149. package/dist/resources/DatabaseTransaction.d.ts +55 -3
  150. package/dist/resources/DatabaseTransaction.js +460 -134
  151. package/dist/resources/DatabaseTransaction.js.map +1 -1
  152. package/dist/resources/LMDBTransaction.js +22 -4
  153. package/dist/resources/LMDBTransaction.js.map +1 -1
  154. package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
  155. package/dist/resources/PrimaryRocksDatabase.js +30 -2
  156. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  157. package/dist/resources/RecordEncoder.d.ts +20 -0
  158. package/dist/resources/RecordEncoder.js +94 -9
  159. package/dist/resources/RecordEncoder.js.map +1 -1
  160. package/dist/resources/RequestTarget.d.ts +2 -0
  161. package/dist/resources/RequestTarget.js.map +1 -1
  162. package/dist/resources/Resource.js +20 -11
  163. package/dist/resources/Resource.js.map +1 -1
  164. package/dist/resources/ResourceInterface.d.ts +20 -1
  165. package/dist/resources/ResourceInterface.js.map +1 -1
  166. package/dist/resources/RocksIndexStore.d.ts +6 -1
  167. package/dist/resources/RocksIndexStore.js +24 -10
  168. package/dist/resources/RocksIndexStore.js.map +1 -1
  169. package/dist/resources/RocksTransactionLogStore.d.ts +14 -1
  170. package/dist/resources/RocksTransactionLogStore.js +57 -17
  171. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  172. package/dist/resources/Table.d.ts +112 -8
  173. package/dist/resources/Table.js +1071 -197
  174. package/dist/resources/Table.js.map +1 -1
  175. package/dist/resources/auditStore.d.ts +11 -2
  176. package/dist/resources/auditStore.js +183 -18
  177. package/dist/resources/auditStore.js.map +1 -1
  178. package/dist/resources/blob.d.ts +129 -9
  179. package/dist/resources/blob.js +992 -114
  180. package/dist/resources/blob.js.map +1 -1
  181. package/dist/resources/branchDatabase.d.ts +48 -0
  182. package/dist/resources/branchDatabase.js +892 -0
  183. package/dist/resources/branchDatabase.js.map +1 -0
  184. package/dist/resources/crdt.js +50 -12
  185. package/dist/resources/crdt.js.map +1 -1
  186. package/dist/resources/databases.d.ts +150 -9
  187. package/dist/resources/databases.js +1247 -525
  188. package/dist/resources/databases.js.map +1 -1
  189. package/dist/resources/defineTable.d.ts +10 -2
  190. package/dist/resources/defineTable.js +9 -1
  191. package/dist/resources/defineTable.js.map +1 -1
  192. package/dist/resources/graphql.d.ts +1 -1
  193. package/dist/resources/graphql.js +50 -15
  194. package/dist/resources/graphql.js.map +1 -1
  195. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +1 -0
  196. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +6 -2
  197. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  198. package/dist/resources/longLivedTransactions.d.ts +71 -0
  199. package/dist/resources/longLivedTransactions.js +358 -0
  200. package/dist/resources/longLivedTransactions.js.map +1 -0
  201. package/dist/resources/models/backendRegistry.d.ts +26 -0
  202. package/dist/resources/models/backendRegistry.js +60 -2
  203. package/dist/resources/models/backendRegistry.js.map +1 -1
  204. package/dist/resources/models/bootstrap.d.ts +33 -1
  205. package/dist/resources/models/bootstrap.js +416 -31
  206. package/dist/resources/models/bootstrap.js.map +1 -1
  207. package/dist/resources/recordLock.d.ts +80 -0
  208. package/dist/resources/recordLock.js +184 -0
  209. package/dist/resources/recordLock.js.map +1 -0
  210. package/dist/resources/replayLogs.d.ts +14 -1
  211. package/dist/resources/replayLogs.js +152 -24
  212. package/dist/resources/replayLogs.js.map +1 -1
  213. package/dist/resources/replayLogsGuards.d.ts +94 -7
  214. package/dist/resources/replayLogsGuards.js +111 -7
  215. package/dist/resources/replayLogsGuards.js.map +1 -1
  216. package/dist/resources/search.js +158 -32
  217. package/dist/resources/search.js.map +1 -1
  218. package/dist/resources/transactionBroadcast.d.ts +1 -1
  219. package/dist/resources/transactionBroadcast.js +2 -2
  220. package/dist/resources/transactionBroadcast.js.map +1 -1
  221. package/dist/security/auth.js +61 -30
  222. package/dist/security/auth.js.map +1 -1
  223. package/dist/security/authn/oidc/claims.d.ts +22 -0
  224. package/dist/security/authn/oidc/claims.js +71 -0
  225. package/dist/security/authn/oidc/claims.js.map +1 -0
  226. package/dist/security/authn/oidc/identityToken.d.ts +27 -0
  227. package/dist/security/authn/oidc/identityToken.js +111 -0
  228. package/dist/security/authn/oidc/identityToken.js.map +1 -0
  229. package/dist/security/authn/oidc/jwks.d.ts +25 -0
  230. package/dist/security/authn/oidc/jwks.js +261 -0
  231. package/dist/security/authn/oidc/jwks.js.map +1 -0
  232. package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
  233. package/dist/security/authn/oidc/providers/generic.js +34 -0
  234. package/dist/security/authn/oidc/providers/generic.js.map +1 -0
  235. package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
  236. package/dist/security/authn/oidc/providers/githubActions.js +129 -0
  237. package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
  238. package/dist/security/authn/oidc/providers/index.d.ts +37 -0
  239. package/dist/security/authn/oidc/providers/index.js +24 -0
  240. package/dist/security/authn/oidc/providers/index.js.map +1 -0
  241. package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
  242. package/dist/security/authn/oidc/tokenExchange.js +306 -0
  243. package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
  244. package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
  245. package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
  246. package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
  247. package/dist/security/authn/oidc/types.d.ts +38 -0
  248. package/dist/security/authn/oidc/types.js +6 -0
  249. package/dist/security/authn/oidc/types.js.map +1 -0
  250. package/dist/security/certificateVerification/index.js +40 -11
  251. package/dist/security/certificateVerification/index.js.map +1 -1
  252. package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
  253. package/dist/security/certificateVerification/trustedIssuers.js +79 -0
  254. package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
  255. package/dist/security/certificateVerification/types.d.ts +1 -0
  256. package/dist/security/credentialProvenance.d.ts +35 -0
  257. package/dist/security/credentialProvenance.js +51 -0
  258. package/dist/security/credentialProvenance.js.map +1 -0
  259. package/dist/security/credentialRejection.d.ts +4 -0
  260. package/dist/security/credentialRejection.js +24 -0
  261. package/dist/security/credentialRejection.js.map +1 -0
  262. package/dist/security/deferredAuthentication.d.ts +36 -0
  263. package/dist/security/deferredAuthentication.js +70 -0
  264. package/dist/security/deferredAuthentication.js.map +1 -0
  265. package/dist/security/impersonation.d.ts +21 -0
  266. package/dist/security/impersonation.js +108 -9
  267. package/dist/security/impersonation.js.map +1 -1
  268. package/dist/security/jsLoader.d.ts +6 -0
  269. package/dist/security/jsLoader.js +75 -15
  270. package/dist/security/jsLoader.js.map +1 -1
  271. package/dist/security/keys.js +301 -71
  272. package/dist/security/keys.js.map +1 -1
  273. package/dist/security/operationScope.d.ts +21 -0
  274. package/dist/security/operationScope.js +36 -0
  275. package/dist/security/operationScope.js.map +1 -0
  276. package/dist/security/permissionsTranslator.js +21 -0
  277. package/dist/security/permissionsTranslator.js.map +1 -1
  278. package/dist/security/tokenAuthentication.d.ts +19 -1
  279. package/dist/security/tokenAuthentication.js +191 -10
  280. package/dist/security/tokenAuthentication.js.map +1 -1
  281. package/dist/security/user.js +4 -3
  282. package/dist/security/user.js.map +1 -1
  283. package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
  284. package/dist/server/DurableSubscriptionsSession.js +67 -10
  285. package/dist/server/DurableSubscriptionsSession.js.map +1 -1
  286. package/dist/server/REST.js +73 -0
  287. package/dist/server/REST.js.map +1 -1
  288. package/dist/server/graphqlQuerying.js +4 -0
  289. package/dist/server/graphqlQuerying.js.map +1 -1
  290. package/dist/server/http.d.ts +11 -0
  291. package/dist/server/http.js +88 -15
  292. package/dist/server/http.js.map +1 -1
  293. package/dist/server/itc/serverHandlers.js +8 -1
  294. package/dist/server/itc/serverHandlers.js.map +1 -1
  295. package/dist/server/jobs/jobProcess.js +6 -2
  296. package/dist/server/jobs/jobProcess.js.map +1 -1
  297. package/dist/server/jobs/jobs.js +4 -1
  298. package/dist/server/jobs/jobs.js.map +1 -1
  299. package/dist/server/liveSubscriptionAuth.d.ts +26 -4
  300. package/dist/server/liveSubscriptionAuth.js +105 -39
  301. package/dist/server/liveSubscriptionAuth.js.map +1 -1
  302. package/dist/server/loadRootComponents.js +49 -10
  303. package/dist/server/loadRootComponents.js.map +1 -1
  304. package/dist/server/mqtt.d.ts +2 -0
  305. package/dist/server/mqtt.js +165 -30
  306. package/dist/server/mqtt.js.map +1 -1
  307. package/dist/server/nodeName.d.ts +2 -0
  308. package/dist/server/nodeName.js +107 -23
  309. package/dist/server/nodeName.js.map +1 -1
  310. package/dist/server/serverHelpers/Headers.d.ts +25 -0
  311. package/dist/server/serverHelpers/Headers.js +139 -1
  312. package/dist/server/serverHelpers/Headers.js.map +1 -1
  313. package/dist/server/serverHelpers/contentTypes.d.ts +9 -0
  314. package/dist/server/serverHelpers/contentTypes.js +32 -25
  315. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  316. package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
  317. package/dist/server/serverHelpers/deployValidationState.js +9 -19
  318. package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
  319. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
  320. package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
  321. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
  322. package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
  323. package/dist/server/serverHelpers/registeredOperations.js +74 -21
  324. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  325. package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
  326. package/dist/server/serverHelpers/requestSanitization.js +20 -0
  327. package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
  328. package/dist/server/serverHelpers/serverHandlers.js +6 -3
  329. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  330. package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
  331. package/dist/server/serverHelpers/serverUtilities.js +90 -20
  332. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  333. package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
  334. package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
  335. package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
  336. package/dist/server/serverHelpers/uwsServer.js +19 -1
  337. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  338. package/dist/server/static.js +24 -28
  339. package/dist/server/static.js.map +1 -1
  340. package/dist/server/storageReclamation.d.ts +5 -0
  341. package/dist/server/storageReclamation.js +16 -0
  342. package/dist/server/storageReclamation.js.map +1 -1
  343. package/dist/server/threads/itc.d.ts +7 -2
  344. package/dist/server/threads/itc.js +5 -1
  345. package/dist/server/threads/itc.js.map +1 -1
  346. package/dist/server/threads/manageThreads.d.ts +26 -4
  347. package/dist/server/threads/manageThreads.js +517 -72
  348. package/dist/server/threads/manageThreads.js.map +1 -1
  349. package/dist/server/threads/socketRouter.js +89 -26
  350. package/dist/server/threads/socketRouter.js.map +1 -1
  351. package/dist/server/threads/threadHeapMemory.d.ts +2 -0
  352. package/dist/server/threads/threadHeapMemory.js +31 -0
  353. package/dist/server/threads/threadHeapMemory.js.map +1 -0
  354. package/dist/server/threads/threadServer.js +46 -15
  355. package/dist/server/threads/threadServer.js.map +1 -1
  356. package/dist/sqlEngine/config.d.ts +1 -3
  357. package/dist/sqlEngine/config.js +19 -16
  358. package/dist/sqlEngine/config.js.map +1 -1
  359. package/dist/sqlTranslator/index.d.ts +1 -1
  360. package/dist/sqlTranslator/index.js +30 -7
  361. package/dist/sqlTranslator/index.js.map +1 -1
  362. package/dist/upgrade/directives/5-3-0.d.ts +7 -0
  363. package/dist/upgrade/directives/5-3-0.js +148 -0
  364. package/dist/upgrade/directives/5-3-0.js.map +1 -0
  365. package/dist/upgrade/directives/directivesController.js +2 -1
  366. package/dist/upgrade/directives/directivesController.js.map +1 -1
  367. package/dist/utility/OperationFunctionCaller.js +2 -1
  368. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  369. package/dist/utility/common_utils.d.ts +16 -0
  370. package/dist/utility/common_utils.js +32 -6
  371. package/dist/utility/common_utils.js.map +1 -1
  372. package/dist/utility/componentNames.d.ts +8 -0
  373. package/dist/utility/componentNames.js +12 -1
  374. package/dist/utility/componentNames.js.map +1 -1
  375. package/dist/utility/environment/environmentManager.js +3 -6
  376. package/dist/utility/environment/environmentManager.js.map +1 -1
  377. package/dist/utility/environment/systemInformation.d.ts +1 -0
  378. package/dist/utility/environment/systemInformation.js +1 -0
  379. package/dist/utility/environment/systemInformation.js.map +1 -1
  380. package/dist/utility/errors/commonErrors.d.ts +2 -0
  381. package/dist/utility/errors/commonErrors.js +2 -0
  382. package/dist/utility/errors/commonErrors.js.map +1 -1
  383. package/dist/utility/errors/hdbError.d.ts +17 -0
  384. package/dist/utility/errors/hdbError.js +30 -1
  385. package/dist/utility/errors/hdbError.js.map +1 -1
  386. package/dist/utility/globalSchema.d.ts +18 -0
  387. package/dist/utility/hdbTerms.d.ts +16 -0
  388. package/dist/utility/hdbTerms.js +18 -2
  389. package/dist/utility/hdbTerms.js.map +1 -1
  390. package/dist/utility/logging/harper_logger.d.ts +2 -0
  391. package/dist/utility/logging/harper_logger.js +91 -14
  392. package/dist/utility/logging/harper_logger.js.map +1 -1
  393. package/dist/utility/logging/logRotator.js +76 -49
  394. package/dist/utility/logging/logRotator.js.map +1 -1
  395. package/dist/utility/nodeIdentity.d.ts +9 -0
  396. package/dist/utility/nodeIdentity.js +58 -0
  397. package/dist/utility/nodeIdentity.js.map +1 -0
  398. package/dist/utility/npmUtilities.js +9 -7
  399. package/dist/utility/npmUtilities.js.map +1 -1
  400. package/dist/utility/operationPermissions.d.ts +3 -1
  401. package/dist/utility/operationPermissions.js +16 -1
  402. package/dist/utility/operationPermissions.js.map +1 -1
  403. package/dist/utility/operation_authorization.d.ts +10 -7
  404. package/dist/utility/operation_authorization.js +212 -41
  405. package/dist/utility/operation_authorization.js.map +1 -1
  406. package/dist/utility/watchPath.d.ts +29 -0
  407. package/dist/utility/watchPath.js +68 -0
  408. package/dist/utility/watchPath.js.map +1 -0
  409. package/dist/utility/watcherFallback.d.ts +86 -0
  410. package/dist/utility/watcherFallback.js +278 -1
  411. package/dist/utility/watcherFallback.js.map +1 -1
  412. package/dist/validation/configValidator.d.ts +12 -0
  413. package/dist/validation/configValidator.js +199 -72
  414. package/dist/validation/configValidator.js.map +1 -1
  415. package/dist/validation/installValidator.js +12 -0
  416. package/dist/validation/installValidator.js.map +1 -1
  417. package/dist/validation/validationWrapper.d.ts +11 -0
  418. package/dist/validation/validationWrapper.js +16 -3
  419. package/dist/validation/validationWrapper.js.map +1 -1
  420. package/index.ts +2 -0
  421. package/json/systemSchema.json +52 -0
  422. package/npm-shrinkwrap.json +235 -233
  423. package/package.json +8 -7
  424. package/resources/DESIGN.md +114 -52
  425. package/resources/DatabaseTransaction.ts +522 -130
  426. package/resources/LMDBTransaction.ts +26 -4
  427. package/resources/PrimaryRocksDatabase.ts +29 -3
  428. package/resources/RecordEncoder.ts +103 -8
  429. package/resources/RequestTarget.ts +2 -0
  430. package/resources/Resource.ts +17 -9
  431. package/resources/ResourceInterface.ts +23 -0
  432. package/resources/RocksIndexStore.ts +30 -10
  433. package/resources/RocksTransactionLogStore.ts +78 -21
  434. package/resources/Table.ts +1107 -164
  435. package/resources/auditStore.ts +187 -21
  436. package/resources/blob.ts +1029 -110
  437. package/resources/branchDatabase.ts +941 -0
  438. package/resources/crdt.ts +76 -12
  439. package/resources/databases.ts +1354 -522
  440. package/resources/defineTable.ts +18 -2
  441. package/resources/graphql.ts +70 -16
  442. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +6 -2
  443. package/resources/longLivedTransactions.ts +360 -0
  444. package/resources/models/backendRegistry.ts +84 -2
  445. package/resources/models/bootstrap.ts +473 -28
  446. package/resources/recordLock.ts +253 -0
  447. package/resources/replayLogs.ts +147 -26
  448. package/resources/replayLogsGuards.ts +171 -8
  449. package/resources/search.ts +154 -32
  450. package/resources/transactionBroadcast.ts +3 -3
  451. package/security/auth.ts +68 -29
  452. package/security/authn/oidc/claims.ts +72 -0
  453. package/security/authn/oidc/identityToken.ts +129 -0
  454. package/security/authn/oidc/jwks.ts +260 -0
  455. package/security/authn/oidc/providers/generic.ts +40 -0
  456. package/security/authn/oidc/providers/githubActions.ts +137 -0
  457. package/security/authn/oidc/providers/index.ts +52 -0
  458. package/security/authn/oidc/tokenExchange.ts +300 -0
  459. package/security/authn/oidc/trustPolicyOperations.ts +343 -0
  460. package/security/authn/oidc/types.ts +41 -0
  461. package/security/certificateVerification/index.ts +54 -13
  462. package/security/certificateVerification/trustedIssuers.ts +76 -0
  463. package/security/certificateVerification/types.ts +1 -0
  464. package/security/credentialProvenance.ts +47 -0
  465. package/security/credentialRejection.ts +22 -0
  466. package/security/deferredAuthentication.ts +71 -0
  467. package/security/impersonation.ts +117 -12
  468. package/security/jsLoader.ts +81 -18
  469. package/security/keys.ts +298 -72
  470. package/security/operationScope.ts +33 -0
  471. package/security/permissionsTranslator.js +23 -0
  472. package/security/tokenAuthentication.ts +233 -12
  473. package/security/user.ts +4 -3
  474. package/server/DESIGN.md +183 -16
  475. package/server/DurableSubscriptionsSession.ts +71 -11
  476. package/server/REST.ts +79 -1
  477. package/server/graphqlQuerying.ts +4 -0
  478. package/server/http.ts +99 -18
  479. package/server/itc/serverHandlers.js +8 -1
  480. package/server/jobs/jobProcess.ts +8 -2
  481. package/server/jobs/jobs.ts +4 -1
  482. package/server/liveSubscriptionAuth.ts +129 -46
  483. package/server/loadRootComponents.js +50 -8
  484. package/server/mqtt.ts +179 -38
  485. package/server/nodeName.ts +103 -21
  486. package/server/serverHelpers/Headers.ts +131 -0
  487. package/server/serverHelpers/contentTypes.ts +29 -21
  488. package/server/serverHelpers/deployValidationState.ts +24 -13
  489. package/server/serverHelpers/operationAuthorizationState.ts +34 -3
  490. package/server/serverHelpers/registeredOperations.ts +79 -22
  491. package/server/serverHelpers/requestSanitization.ts +15 -0
  492. package/server/serverHelpers/serverHandlers.js +6 -3
  493. package/server/serverHelpers/serverUtilities.ts +104 -31
  494. package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
  495. package/server/serverHelpers/uwsServer.ts +17 -2
  496. package/server/static.ts +23 -29
  497. package/server/storageReclamation.ts +13 -0
  498. package/server/threads/itc.js +11 -1
  499. package/server/threads/manageThreads.js +526 -63
  500. package/server/threads/socketRouter.ts +81 -26
  501. package/server/threads/threadHeapMemory.ts +26 -0
  502. package/server/threads/threadServer.js +43 -15
  503. package/sqlTranslator/index.ts +31 -8
  504. package/studio/web/assets/{Chat-Br06zdMA.js → Chat-BnCBegQz.js} +1 -1
  505. package/studio/web/assets/{FloatingChat-BWImX5fA.js → FloatingChat-CoDW1ySS.js} +3 -3
  506. package/studio/web/assets/{apiToken-DN0nmDsq.js → apiToken-Bwk5BLXW.js} +1 -1
  507. package/studio/web/assets/{applications-kSxVoyeU.js → applications-DHxGi7JH.js} +1 -1
  508. package/studio/web/assets/{cssMode-C1JeufH5.js → cssMode-s0cWI-_M.js} +1 -1
  509. package/studio/web/assets/{editor-qoo9CrGO.js → editor-DNcRHK54.js} +1 -1
  510. package/studio/web/assets/{html-Dt4IIy04.js → html-Bdssedlg.js} +1 -1
  511. package/studio/web/assets/{htmlMode-DXgKKr4C.js → htmlMode-CoDlJ3fw.js} +1 -1
  512. package/studio/web/assets/{index-6onkYFOG.js → index-D6sxmFLR.js} +5 -5
  513. package/studio/web/assets/{index.lazy-BrCFnpNJ.js → index.lazy-tmU5BS8s.js} +1 -1
  514. package/studio/web/assets/{javascript-DNCQGUBc.js → javascript-B8meVSTH.js} +1 -1
  515. package/studio/web/assets/{jsonMode-CR6HWruP.js → jsonMode-DpIPd35T.js} +1 -1
  516. package/studio/web/assets/{languageServices-BM4fI4rS.js → languageServices-C_5FMJzQ.js} +1 -1
  517. package/studio/web/assets/{lspLanguageFeatures-DSa1ttcD.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
  518. package/studio/web/assets/{notifications-BHXLnh6x.js → notifications-CQf18QKb.js} +1 -1
  519. package/studio/web/assets/{notifications-CUmtIA6z.js → notifications-CvZivSbh.js} +1 -1
  520. package/studio/web/assets/{profile-8BeFSF3j.js → profile-DdOwtntb.js} +1 -1
  521. package/studio/web/assets/{regions-C8qR0HhD.js → regions-n69fwagr.js} +1 -1
  522. package/studio/web/assets/{register-B4n5i0SD.js → register-PfWTCXWB.js} +2 -2
  523. package/studio/web/assets/{setComponentFile-g0_B0lgX.js → setComponentFile-Bg6O7X0S.js} +1 -1
  524. package/studio/web/assets/{setup-B0CTj_Q5.js → setup-CUx_aUDl.js} +2 -2
  525. package/studio/web/assets/{status-C6Yib7-K.js → status-D7BVKqX9.js} +1 -1
  526. package/studio/web/assets/{toggleHighContrast-Dgta7bVi.js → toggleHighContrast-DBSyXzMr.js} +1 -1
  527. package/studio/web/assets/{tsMode-CH_jHvU-.js → tsMode-BByKCjBS.js} +1 -1
  528. package/studio/web/assets/{typescript-Co9LCXd5.js → typescript-DDLnLpw9.js} +1 -1
  529. package/studio/web/assets/{useEntityRestURL-wKC8NsC_.js → useEntityRestURL-31CHGaHk.js} +1 -1
  530. package/studio/web/assets/{workers-CWeLxCXA.js → workers-pR3jRY9D.js} +1 -1
  531. package/studio/web/assets/{xml-BadC-0Rk.js → xml-2iRnMhQO.js} +1 -1
  532. package/studio/web/assets/{yaml-BiUfxPbC.js → yaml-Bf92gJpd.js} +1 -1
  533. package/studio/web/index.html +1 -1
  534. package/upgrade/directives/5-3-0.ts +132 -0
  535. package/upgrade/directives/directivesController.ts +2 -1
  536. package/utility/OperationFunctionCaller.ts +2 -1
  537. package/utility/common_utils.ts +30 -5
  538. package/utility/componentNames.ts +12 -0
  539. package/utility/environment/environmentManager.ts +3 -7
  540. package/utility/environment/systemInformation.ts +7 -0
  541. package/utility/errors/commonErrors.ts +4 -0
  542. package/utility/errors/hdbError.ts +29 -0
  543. package/utility/hdbTerms.ts +17 -0
  544. package/utility/logging/harper_logger.ts +87 -14
  545. package/utility/logging/logRotator.ts +72 -45
  546. package/utility/nodeIdentity.ts +45 -0
  547. package/utility/npmUtilities.ts +10 -8
  548. package/utility/operationPermissions.ts +18 -1
  549. package/utility/operation_authorization.ts +231 -42
  550. package/utility/watchPath.ts +63 -0
  551. package/utility/watcherFallback.ts +270 -0
  552. package/validation/configValidator.ts +209 -72
  553. package/validation/installValidator.ts +15 -0
  554. package/validation/validationWrapper.ts +18 -4
@@ -43,6 +43,7 @@ const util_1 = require("util");
43
43
  const stream_1 = require("stream");
44
44
  const pipe = (0, util_1.promisify)(stream_1.pipeline);
45
45
  const path = __importStar(require("path"));
46
+ const crypto_1 = require("crypto");
46
47
  const envMgr = __importStar(require("../environment/environmentManager.js"));
47
48
  envMgr.initSync();
48
49
  const harper_logger_ts_1 = __importDefault(require("./harper_logger.js"));
@@ -94,70 +95,80 @@ function logRotator({ logger, maxSize, interval, retention, enabled, path: rotat
94
95
  let lastRotationTime = Date.now();
95
96
  harper_logger_ts_1.default.trace('Log rotate enabled, maxSize:', maxSize, 'interval:', interval);
96
97
  const setIntervalId = setInterval(async () => {
97
- // A missing/relocated active log file only invalidates the rotation checks below — retention cleanup
98
- // must still run. So skip the individual check on ENOENT rather than returning from the whole tick.
99
- if (maxBytes) {
100
- let fileStats;
101
- try {
102
- fileStats = await fs_1.promises.stat(logger.path);
103
- }
104
- catch (err) {
105
- // If the log file doesn't exist, skip the size-based rotation check
106
- if (err.code !== 'ENOENT')
107
- throw err;
108
- }
109
- if (fileStats && fileStats.size >= maxBytes) {
98
+ // The tick is async but setInterval doesn't await it, so any error that escapes this callback
99
+ // becomes an unhandled rejection rather than surfacing anywhere useful — and since it isn't
100
+ // caught, it also skips the retention cleanup below. Contain everything here and report via
101
+ // the logger instead, so one bad tick (e.g. an unexpected fs error) never kills rotation for
102
+ // the rest of the process's life.
103
+ 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
+ if (maxBytes) {
107
+ let fileStats;
110
108
  try {
111
- lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger);
109
+ fileStats = await fs_1.promises.stat(logger.path);
112
110
  }
113
111
  catch (err) {
114
- // If the log file doesn't exist, skip rotation
112
+ // If the log file doesn't exist, skip the size-based rotation check
115
113
  if (err.code !== 'ENOENT')
116
114
  throw err;
117
115
  }
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
+ }
118
126
  }
119
- }
120
- if (maxInterval) {
121
- const minSinceLastRotate = Date.now() - lastRotationTime;
122
- if (minSinceLastRotate >= maxInterval) {
127
+ if (maxInterval) {
128
+ const minSinceLastRotate = Date.now() - lastRotationTime;
129
+ if (minSinceLastRotate >= maxInterval) {
130
+ try {
131
+ lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger);
132
+ lastRotationTime = Date.now();
133
+ }
134
+ catch (err) {
135
+ // If the log file doesn't exist, skip rotation
136
+ if (err.code !== 'ENOENT')
137
+ throw err;
138
+ }
139
+ }
140
+ }
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;
123
147
  try {
124
- lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger);
125
- lastRotationTime = Date.now();
148
+ files = await fs_1.promises.readdir(rotatedLogDir);
126
149
  }
127
150
  catch (err) {
128
- // If the log file doesn't exist, skip rotation
151
+ // The rotated log dir may not exist yet (nothing rotated so far); nothing to clean up
129
152
  if (err.code !== 'ENOENT')
130
- throw err;
153
+ harper_logger_ts_1.default.error('Error reading rotated log directory', rotatedLogDir, err);
154
+ files = [];
131
155
  }
132
- }
133
- }
134
- if (retention || reclamationPriority) {
135
- // remove old logs after retention time
136
- // adjust retention time if there is a reclamation priority in place
137
- const retentionMs = (0, common_utils_ts_1.convertToMS)(retention ?? '1M') / (1 + reclamationPriority);
138
- reclamationPriority = 0; // reset it after use
139
- let files;
140
- try {
141
- files = await fs_1.promises.readdir(rotatedLogDir);
142
- }
143
- catch (err) {
144
- // The rotated log dir may not exist yet (nothing rotated so far); nothing to clean up
145
- if (err.code !== 'ENOENT')
146
- harper_logger_ts_1.default.error('Error reading rotated log directory', rotatedLogDir, err);
147
- files = [];
148
- }
149
- for (const file of files) {
150
- try {
151
- const fileStats = await fs_1.promises.stat(path.join(rotatedLogDir, file));
152
- if (Date.now() - fileStats.mtimeMs > retentionMs) {
153
- await fs_1.promises.unlink(path.join(rotatedLogDir, file));
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));
161
+ }
162
+ }
163
+ catch (err) {
164
+ harper_logger_ts_1.default.error('Error trying to remove log', file, err);
154
165
  }
155
- }
156
- catch (err) {
157
- harper_logger_ts_1.default.error('Error trying to remove log', file, err);
158
166
  }
159
167
  }
160
168
  }
169
+ catch (err) {
170
+ harper_logger_ts_1.default.error('Error during log rotation audit tick for', logger.path, err);
171
+ }
161
172
  }, auditInterval ?? LOG_AUDIT_INTERVAL).unref();
162
173
  return {
163
174
  end() {
@@ -168,9 +179,25 @@ function logRotator({ logger, maxSize, interval, retention, enabled, path: rotat
168
179
  },
169
180
  };
170
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;
171
186
  async function moveLogFile(logPath, rotatedLogPath, logger) {
172
187
  const compress = envMgr.get(hdbTerms_ts_1.CONFIG_PARAMS.LOGGING_ROTATION_COMPRESS);
173
- let fullRotateLogPath = path.join(rotatedLogPath, `HDB-${new Date(Date.now()).toISOString().replaceAll(':', '-')}.log`);
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`);
174
201
  // Move log file to rotated log path first (if we crash
175
202
  // during compression, we don't want to restart the compression with a new file)
176
203
  await fs_1.promises.rename(logPath, fullRotateLogPath);
@@ -1 +1 @@
1
- {"version":3,"file":"logRotator.js","sourceRoot":"","sources":["../../../utility/logging/logRotator.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBJ,gCAAU;AAlBnB,2BAAwF;AACxF,+BAAkC;AAClC,+BAAiC;AACjC,mCAAkC;AAClC,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,iBAAQ,CAAC,CAAC;AACjC,2CAA6B;AAC7B,6EAA+D;AAC/D,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClB,0EAA2C;AAC3C,gDAA+C;AAC/C,wDAAiD;AACjD,8EAA0E;AAE1E,uEAAuE;AACvE,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,sBAAsB,GAC3B,8IAA8I,CAAC;AAIhJ;;;;;GAKG;AACH,SAAS,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAO;IAC7G,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO;IAC9B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAA,4CAAoB,EACnB,MAAM,CAAC,IAAI,EACX,CAAC,QAAQ,EAAE,EAAE;QACZ,mBAAmB,GAAG,QAAQ,CAAC;IAChC,CAAC,EACD,IAAI,CACJ,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IACD,IAAA,cAAS,EAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,kCAAkC;IAClC,IAAI,QAAQ,CAAC;IACb,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,GAAG;YAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC;aAC1C,IAAI,IAAI,KAAK,GAAG;YAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;;YAC5C,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,gCAAgC;IAChC,IAAI,WAAW,CAAC;IAChB,IAAI,QAAQ,EAAE,CAAC;QACd,WAAW,GAAG,IAAA,6BAAW,EAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,kBAAkB,CAAC;IACvB,8BAA8B;IAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,0BAAS,CAAC,KAAK,CAAC,8BAA8B,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC5C,qGAAqG;QACrG,oGAAoG;QACpG,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,SAAS,CAAC;YACd,IAAI,CAAC;gBACJ,SAAS,GAAG,MAAM,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,oEAAoE;gBACpE,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAC;YACtC,CAAC;YAED,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACJ,kBAAkB,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;gBAC5E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,+CAA+C;oBAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;wBAAE,MAAM,GAAG,CAAC;gBACtC,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YACzD,IAAI,kBAAkB,IAAI,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACJ,kBAAkB,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;oBAC3E,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC/B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,+CAA+C;oBAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;wBAAE,MAAM,GAAG,CAAC;gBACtC,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,SAAS,IAAI,mBAAmB,EAAE,CAAC;YACtC,uCAAuC;YACvC,oEAAoE;YACpE,MAAM,WAAW,GAAG,IAAA,6BAAW,EAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC;YAC/E,mBAAmB,GAAG,CAAC,CAAC,CAAC,qBAAqB;YAC9C,IAAI,KAAK,CAAC;YACV,IAAI,CAAC;gBACJ,KAAK,GAAG,MAAM,aAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,sFAAsF;gBACtF,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,0BAAS,CAAC,KAAK,CAAC,qCAAqC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBACtG,KAAK,GAAG,EAAE,CAAC;YACZ,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACJ,MAAM,SAAS,GAAG,MAAM,aAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;oBACpE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;wBAClD,MAAM,aAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;oBACrD,CAAC;gBACF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,0BAAS,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1D,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,EAAE,aAAa,IAAI,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,OAAO;QACN,GAAG;YACF,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;QACD,qBAAqB;YACpB,OAAO,kBAAkB,CAAC;QAC3B,CAAC;KACD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,cAAsB,EAAE,MAAY;IAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,2BAAa,CAAC,yBAAyB,CAAC,CAAC;IACrE,IAAI,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAChC,cAAc,EACd,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CACpE,CAAC;IACF,uDAAuD;IACvD,gFAAgF;IAChF,MAAM,aAAM,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAChD,gGAAgG;IAChG,qGAAqG;IACrG,wGAAwG;IACxG,mGAAmG;IACnG,kGAAkG;IAClG,CAAC,MAAM,EAAE,YAAY,IAAI,0BAAS,CAAC,YAAY,CAAC,EAAE,CAAC;IACnD,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,GAAG,iBAAiB,CAAC;QAC5B,iBAAiB,IAAI,KAAK,CAAC;QAC3B,MAAM,IAAI,CAAC,IAAA,qBAAgB,EAAC,OAAO,CAAC,EAAE,IAAA,iBAAU,GAAE,EAAE,IAAA,sBAAiB,EAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1F,MAAM,aAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,gIAAgI;IAChI,0BAAS,CAAC,MAAM,CAAC,qCAAqC,iBAAiB,EAAE,CAAC,CAAC;IAC3E,OAAO,iBAAiB,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"logRotator.js","sourceRoot":"","sources":["../../../utility/logging/logRotator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A node's identity — node.hostname, and the replication.hostname / certificate it falls back to —
3
+ * must be a bare hostname or IP literal, not a URL: it becomes the certificate common name and the
4
+ * host replication advertises and dials, so a scheme/port/path/non-string corrupts both (harper#2218,
5
+ * where "ws://http://host:9926:9925" resolves to host "http"). Returns a reason clause when `value`
6
+ * is not a bare host, else undefined. An empty string is "unset" (a caller's cue to fall back), not a
7
+ * violation.
8
+ */
9
+ export declare function bareHostViolation(value: unknown): string | undefined;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bareHostViolation = bareHostViolation;
4
+ const node_net_1 = require("node:net");
5
+ /**
6
+ * A node's identity — node.hostname, and the replication.hostname / certificate it falls back to —
7
+ * must be a bare hostname or IP literal, not a URL: it becomes the certificate common name and the
8
+ * host replication advertises and dials, so a scheme/port/path/non-string corrupts both (harper#2218,
9
+ * where "ws://http://host:9926:9925" resolves to host "http"). Returns a reason clause when `value`
10
+ * is not a bare host, else undefined. An empty string is "unset" (a caller's cue to fall back), not a
11
+ * violation.
12
+ */
13
+ function bareHostViolation(value) {
14
+ if (typeof value !== 'string')
15
+ return `must be a string, but is a ${value === null ? 'null' : typeof value}`;
16
+ if (value === '')
17
+ return undefined;
18
+ // The identity is stored unbracketed (bracketing belongs to URL construction). Reject a bracketed
19
+ // form so it is never cached — otherwise net.isIP fails on it and the certificate SAN is mistyped
20
+ // as DNS rather than IP, and the same node's identity string would differ by source.
21
+ if (value.includes('[') || value.includes(']'))
22
+ return 'must be an unbracketed IPv6 literal (e.g. "::1", not "[::1]")';
23
+ // A zone id ("fe80::1%eth0") passes net.isIP but has no valid URL authority, so exclude it here.
24
+ if ((0, node_net_1.isIP)(value) && !value.includes('%'))
25
+ return undefined; // a bare IPv4/IPv6 literal is a valid identity
26
+ if (value.includes('://'))
27
+ return 'must not include a URL scheme';
28
+ let url;
29
+ try {
30
+ // Parse under a special scheme so the host grammar matches the ws:// replication URLs that
31
+ // consume this value — a host this accepts is one the consumer accepts (a non-special scheme is
32
+ // more lenient and would pass e.g. "node%20" or "0x7f.1"). A port or path makes url.hostname
33
+ // differ from the input and is caught by the round-trip check below.
34
+ url = new URL(`https://${value}`);
35
+ }
36
+ catch {
37
+ return 'is not a valid hostname';
38
+ }
39
+ // Report the port before the round-trip check: the parser strips a default port for the scheme it
40
+ // was given (":443" under https), which would otherwise surface as a vaguer "is not a bare hostname".
41
+ if (url.port || (url.hostname && value.slice(url.hostname.length).startsWith(':'))) {
42
+ return 'must not include a port';
43
+ }
44
+ if (url.username || url.password)
45
+ return 'must not include credentials';
46
+ if (url.search)
47
+ return 'must not include a query string';
48
+ if (url.hash)
49
+ return 'must not include a fragment';
50
+ if (url.pathname && url.pathname !== '/')
51
+ return 'must not include a path';
52
+ // The host must survive parsing unchanged (compared case-insensitively, since URL lowercases it);
53
+ // anything that does not round-trip carried extra syntax and is not a bare host.
54
+ if (url.hostname.toLowerCase() !== value.toLowerCase())
55
+ return 'is not a bare hostname';
56
+ return undefined;
57
+ }
58
+ //# sourceMappingURL=nodeIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeIdentity.js","sourceRoot":"","sources":["../../utility/nodeIdentity.ts"],"names":[],"mappings":";;AAUA,8CAkCC;AA5CD,uCAAgC;AAEhC;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,8BAA8B,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC;IAC7G,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACnC,kGAAkG;IAClG,kGAAkG;IAClG,qFAAqF;IACrF,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC7C,OAAO,+DAA+D,CAAC;IACxE,iGAAiG;IACjG,IAAI,IAAA,eAAI,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,+CAA+C;IAC1G,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,+BAA+B,CAAC;IAClE,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACJ,2FAA2F;QAC3F,gGAAgG;QAChG,6FAA6F;QAC7F,qEAAqE;QACrE,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,yBAAyB,CAAC;IAClC,CAAC;IACD,kGAAkG;IAClG,sGAAsG;IACtG,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,yBAAyB,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,8BAA8B,CAAC;IACxE,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,iCAAiC,CAAC;IACzD,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,6BAA6B,CAAC;IACnD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG;QAAE,OAAO,yBAAyB,CAAC;IAC3E,kGAAkG;IAClG,iFAAiF;IACjF,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;QAAE,OAAO,wBAAwB,CAAC;IACxF,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -57,14 +57,15 @@ async function installModules(req) {
57
57
  const deprecationWarning = 'install_node_modules is deprecated. Dependencies are automatically installed on' +
58
58
  ' deploy, and install_node_modules can lead to inconsistent behavior';
59
59
  harper_logger_ts_1.default.warn(deprecationWarning, req.projects);
60
- const validation = modulesValidator(req);
60
+ const { error: validation, value: validatedRequest } = modulesValidator(req);
61
61
  if (validation) {
62
62
  throw (0, hdbError_ts_1.handleHDBError)(validation, validation.message, HTTP_STATUS_CODES.BAD_REQUEST);
63
63
  }
64
- let { projects, dryRun } = req;
64
+ const { projects, dry_run: dryRun } = validatedRequest;
65
65
  const componentsRootDirPath = (0, configUtils_ts_1.getConfigPath)(hdbTerms_ts_1.CONFIG_PARAMS.COMPONENTSROOT);
66
66
  const responseObject = {};
67
- const args = ['install', '--force', '--omit=dev', '--json'];
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'];
68
69
  if (dryRun)
69
70
  args.push('--dry-run');
70
71
  for (const project of projects) {
@@ -114,15 +115,16 @@ function parseNPMStdErr(stderr) {
114
115
  }
115
116
  }
116
117
  /**
117
- * Validator for both installModules & auditModules
118
+ * Validator for installModules
118
119
  * @param {Object} req
119
- * @returns {*}
120
120
  */
121
121
  function modulesValidator(req) {
122
+ // `dryRun` was the only spelling that worked before dry_run was honored; keep it accepted, but
123
+ // reject a request that carries both rather than picking a winner
122
124
  const funcSchema = joi_1.default.object({
123
125
  projects: joi_1.default.array().min(1).items(joi_1.default.string()).required(),
124
126
  dry_run: joi_1.default.boolean().default(false),
125
- });
126
- return validator.validateBySchema(req, funcSchema);
127
+ }).rename('dryRun', 'dry_run', { ignoreUndefined: true });
128
+ return validator.validateAndConvertBySchema(req, funcSchema);
127
129
  }
128
130
  //# 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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"}
@@ -22,7 +22,7 @@ export declare const OPERATION_PERMISSION_GROUPS: {
22
22
  * and bulk load. Does NOT include schema DDL (create_attribute), user/role management,
23
23
  * or admin reads (get_configuration, logs). Add those explicitly when needed.
24
24
  */
25
- readonly standard_user: readonly ["search", "search_by_conditions", "search_by_hash", "search_by_id", "search_by_value", "sql", "describe_all", "describe_schema", "describe_database", "describe_table", "user_info", "get_job", "get_analytics", "list_metrics", "describe_metric", "insert", "update", "upsert", "delete", "csv_data_load", "csv_file_load", "csv_url_load", "import_from_s3"];
25
+ readonly standard_user: readonly ["search", "search_by_conditions", "search_by_hash", "search_by_id", "search_by_value", "sql", "describe_all", "describe_schema", "describe_database", "describe_table", "user_info", "get_job", "get_analytics", "list_metrics", "describe_metric", "insert", "update", "upsert", "put", "delete", "csv_data_load", "csv_file_load", "csv_url_load", "import_from_s3"];
26
26
  /**
27
27
  * Drive the built-in agent (#626): send prompts, read/list sessions, and approve/cancel
28
28
  * runs. Grants a scoped, non-super_user "delegation" role access to the agent without full
@@ -42,6 +42,8 @@ export declare function registerGrantableOperation(name: string): void;
42
42
  * primarily for tests that register throwaway ops and must not leak them into the global set.
43
43
  */
44
44
  export declare function unregisterGrantableOperation(name: string): void;
45
+ export declare function registerWorkerGrantableOperation(name: string): void;
46
+ export declare function unregisterWorkerGrantableOperation(name: string): void;
45
47
  /**
46
48
  * Validates that every entry in an operations array is a known operation name or group name.
47
49
  * Returns the first invalid entry, or null if all entries are valid.
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OPERATION_PERMISSION_GROUPS = void 0;
4
4
  exports.registerGrantableOperation = registerGrantableOperation;
5
5
  exports.unregisterGrantableOperation = unregisterGrantableOperation;
6
+ exports.registerWorkerGrantableOperation = registerWorkerGrantableOperation;
7
+ exports.unregisterWorkerGrantableOperation = unregisterWorkerGrantableOperation;
6
8
  exports.validateOperations = validateOperations;
7
9
  exports.expandOperationsPerms = expandOperationsPerms;
8
10
  const hdbTerms_ts_1 = require("./hdbTerms.js");
@@ -75,6 +77,7 @@ exports.OPERATION_PERMISSION_GROUPS = {
75
77
  hdbTerms_ts_1.OPERATIONS_ENUM.INSERT,
76
78
  hdbTerms_ts_1.OPERATIONS_ENUM.UPDATE,
77
79
  hdbTerms_ts_1.OPERATIONS_ENUM.UPSERT,
80
+ hdbTerms_ts_1.OPERATIONS_ENUM.PUT,
78
81
  hdbTerms_ts_1.OPERATIONS_ENUM.DELETE,
79
82
  // Bulk load
80
83
  hdbTerms_ts_1.OPERATIONS_ENUM.CSV_DATA_LOAD,
@@ -102,6 +105,11 @@ const validGroups = new Set(Object.keys(exports.OPERATION_PERMISSION_GROUPS));
102
105
  // permission) whose names may fall outside OPERATIONS_ENUM. Tracked so they're grantable in a
103
106
  // role's `operations` allowlist (add_role/alter_role/impersonation validate against this set too).
104
107
  const dynamicallyRegisteredOps = new Set();
108
+ // The same, for ops registered on a WORKER and mirrored here by the OPERATION_REGISTERED bridge.
109
+ // Deliberately a separate set: the two threads can register the same name independently (a hot
110
+ // deploy can add a `startOnMainThread` component while the worker offering that name is retiring),
111
+ // so worker-lifecycle cleanup must not be able to revoke a mark this thread made itself.
112
+ const workerRegisteredOps = new Set();
105
113
  /**
106
114
  * Mark a dynamically-registered operation name as a valid target for role `operations` grants.
107
115
  * Called by registerOperationPermission so a component op declaring a permission can actually be
@@ -117,13 +125,20 @@ function registerGrantableOperation(name) {
117
125
  function unregisterGrantableOperation(name) {
118
126
  dynamicallyRegisteredOps.delete(name);
119
127
  }
128
+ function registerWorkerGrantableOperation(name) {
129
+ workerRegisteredOps.add(name);
130
+ }
131
+ function unregisterWorkerGrantableOperation(name) {
132
+ workerRegisteredOps.delete(name);
133
+ }
120
134
  /**
121
135
  * Validates that every entry in an operations array is a known operation name or group name.
122
136
  * Returns the first invalid entry, or null if all entries are valid.
123
137
  */
124
138
  function validateOperations(operations) {
125
139
  for (const op of operations) {
126
- if (typeof op !== 'string' || (!validOps.has(op) && !validGroups.has(op) && !dynamicallyRegisteredOps.has(op))) {
140
+ if (typeof op !== 'string' ||
141
+ (!validOps.has(op) && !validGroups.has(op) && !dynamicallyRegisteredOps.has(op) && !workerRegisteredOps.has(op))) {
127
142
  return String(op);
128
143
  }
129
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"operationPermissions.js","sourceRoot":"","sources":["../../utility/operationPermissions.ts"],"names":[],"mappings":";;;AAyGA,gEAEC;AAMD,oEAEC;AAMD,gDAOC;AAMD,sDAWC;AAjJD,+CAAgD;AAEhD;;;GAGG;AACU,QAAA,2BAA2B,GAAG;IAC1C;;;;;OAKG;IACH,SAAS,EAAE;QACV,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;KAC/B;IACD;;;;;OAKG;IACH,UAAU,EAAE;QACX,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,QAAQ;QACxB,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,mBAAmB;QACnC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,kBAAkB;KAClC;IACD;;;;OAIG;IACH,aAAa,EAAE;QACd,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,YAAY;QACZ,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,cAAc;KAC9B;IACD;;;;;OAKG;IACH,KAAK,EAAE;QACN,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,mBAAmB;QACnC,6BAAe,CAAC,gBAAgB;QAChC,6BAAe,CAAC,oBAAoB;KACpC;CACQ,CAAC;AAEX,MAAM,QAAQ,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,6BAAe,CAAC,CAAC,CAAC;AACtE,MAAM,WAAW,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAA2B,CAAC,CAAC,CAAC;AACnF,yFAAyF;AACzF,8FAA8F;AAC9F,mGAAmG;AACnG,MAAM,wBAAwB,GAAgB,IAAI,GAAG,EAAE,CAAC;AAExD;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,IAAY;IACtD,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAgB,4BAA4B,CAAC,IAAY;IACxD,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,UAA8B;IAChE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChH,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,UAA6B;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,mCAA2B,CAAC,IAAgD,CAAC,CAAC;QAC5F,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"operationPermissions.js","sourceRoot":"","sources":["../../utility/operationPermissions.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import PermissionResponseObject from '../security/data_objects/PermissionResponseObject.ts';
1
2
  /**
2
3
  * Register an authorization entry for a dynamically-registered operation (via
3
4
  * server.registerOperation), so it flows through verifyPerms and the role `operations`
@@ -15,14 +16,14 @@ export declare function registerOperationPermission(apiName: string, { requiresS
15
16
  * register throwaway ops and must not leak them into the process-global registries.
16
17
  */
17
18
  export declare function unregisterOperationPermission(apiName: string): void;
19
+ export declare function verifyPermsAST(ast: any, userObject: any, operation: any, apiOperation?: "sql"): any;
18
20
  /**
19
- * Verifies permissions and restrictions for a SQL operation based on the user's assigned role.
20
- * @param ast - The SQL statement in Syntax Tree form.
21
- * @param userObject - The user and role specification
22
- * @param operation - The operation specified in the call.
23
- * @returns {null | PermissionResponseObject} - null if permissions match, errors returned in the PermissionResponseObject
21
+ * Gate 1 of the role `operations` allowlist, callable from every authorization path. The SQL path
22
+ * (chooseOperation → checkASTPermissions) never reaches verifyPerms, so it must call this
23
+ * directly — otherwise an allowlisted role could reach unlisted operations through `sql`.
24
+ * Returns null when allowed (or no allowlist present), a PermissionResponseObject denial otherwise.
24
25
  */
25
- export declare function verifyPermsAST(ast: any, userObject: any, operation: any): any;
26
+ export declare function verifyOperationsAllowlist(requestJson: any, operationFunctionName: string): PermissionResponseObject;
26
27
  /**
27
28
  * Verifies permissions and restrictions for the NoSQL operation based on the user's assigned role.
28
29
  *
@@ -30,7 +31,9 @@ export declare function verifyPermsAST(ast: any, userObject: any, operation: any
30
31
  * @param operation - The name of the operation specified in the request.
31
32
  * @returns { null | PermissionResponseObject } - null if permissions match, errors are consolidated into PermissionResponseObj.
32
33
  */
33
- export declare function verifyPerms(requestJson: any, operation: any, _options?: any): any;
34
+ export declare function verifyPerms(requestJson: any, operation: any, options?: {
35
+ apiOperation?: string;
36
+ }): any;
34
37
  /**
35
38
  * Checks if the user's role has the required permissions for the operation specified.
36
39
  * @param userObject - the hdb_user specified in the request body