@harperfast/harper 5.0.0-alpha.10 → 5.0.0-beta.3

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 (446) hide show
  1. package/bin/BinObjects.js +17 -0
  2. package/bin/cliOperations.js +157 -0
  3. package/bin/copyDb.ts +280 -0
  4. package/bin/harper.js +156 -0
  5. package/bin/install.js +15 -0
  6. package/bin/lite.js +5 -0
  7. package/bin/restart.js +201 -0
  8. package/bin/run.js +409 -0
  9. package/bin/status.js +65 -0
  10. package/bin/stop.js +22 -0
  11. package/bin/upgrade.js +134 -0
  12. package/components/Application.ts +646 -0
  13. package/components/ApplicationScope.ts +49 -0
  14. package/components/Component.ts +53 -0
  15. package/components/ComponentV1.ts +342 -0
  16. package/components/DEFAULT_CONFIG.ts +18 -0
  17. package/components/EntryHandler.ts +227 -0
  18. package/components/Logger.ts +14 -0
  19. package/components/OptionsWatcher.ts +354 -0
  20. package/components/PluginModule.ts +6 -0
  21. package/components/Scope.ts +329 -0
  22. package/components/componentLoader.ts +529 -0
  23. package/components/deriveCommonPatternBase.ts +31 -0
  24. package/components/deriveGlobOptions.ts +44 -0
  25. package/components/deriveURLPath.ts +57 -0
  26. package/components/operations.js +658 -0
  27. package/components/operationsValidation.js +246 -0
  28. package/components/packageComponent.ts +39 -0
  29. package/components/requestRestart.ts +26 -0
  30. package/components/resolveBaseURLPath.ts +38 -0
  31. package/components/status/ComponentStatus.ts +110 -0
  32. package/components/status/ComponentStatusRegistry.ts +251 -0
  33. package/components/status/api.ts +153 -0
  34. package/components/status/crossThread.ts +405 -0
  35. package/components/status/errors.ts +152 -0
  36. package/components/status/index.ts +44 -0
  37. package/components/status/internal.ts +65 -0
  38. package/components/status/registry.ts +12 -0
  39. package/components/status/types.ts +96 -0
  40. package/config/RootConfigWatcher.ts +59 -0
  41. package/config/configHelpers.ts +11 -0
  42. package/config/configUtils.js +967 -0
  43. package/config/harperConfigEnvVars.ts +641 -0
  44. package/dataLayer/CreateAttributeObject.js +25 -0
  45. package/dataLayer/CreateTableObject.js +11 -0
  46. package/dataLayer/DataLayerObjects.js +43 -0
  47. package/dataLayer/DeleteBeforeObject.js +22 -0
  48. package/dataLayer/DeleteObject.js +25 -0
  49. package/dataLayer/DropAttributeObject.js +11 -0
  50. package/dataLayer/GetBackupObject.js +22 -0
  51. package/dataLayer/InsertObject.js +24 -0
  52. package/dataLayer/ReadAuditLogObject.js +24 -0
  53. package/dataLayer/SQLSearch.js +1335 -0
  54. package/dataLayer/SearchByConditionsObject.js +61 -0
  55. package/dataLayer/SearchByHashObject.js +21 -0
  56. package/dataLayer/SearchObject.js +45 -0
  57. package/dataLayer/SqlSearchObject.js +14 -0
  58. package/dataLayer/UpdateObject.js +23 -0
  59. package/dataLayer/UpsertObject.js +23 -0
  60. package/dataLayer/bulkLoad.js +813 -0
  61. package/dataLayer/dataObjects/BulkLoadObjects.js +27 -0
  62. package/dataLayer/dataObjects/UpsertObject.js +23 -0
  63. package/dataLayer/delete.js +164 -0
  64. package/dataLayer/export.js +381 -0
  65. package/dataLayer/getBackup.js +40 -0
  66. package/dataLayer/harperBridge/BridgeMethods.js +81 -0
  67. package/dataLayer/harperBridge/ResourceBridge.ts +633 -0
  68. package/dataLayer/harperBridge/bridgeUtility/insertUpdateReturnObj.js +28 -0
  69. package/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +88 -0
  70. package/dataLayer/harperBridge/harperBridge.js +21 -0
  71. package/dataLayer/harperBridge/lmdbBridge/LMDBBridge.js +119 -0
  72. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +19 -0
  73. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +112 -0
  74. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +67 -0
  75. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +31 -0
  76. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +94 -0
  77. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +98 -0
  78. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +89 -0
  79. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +109 -0
  80. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +107 -0
  81. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +137 -0
  82. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +35 -0
  83. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +111 -0
  84. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +28 -0
  85. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +29 -0
  86. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +207 -0
  87. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +156 -0
  88. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +21 -0
  89. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +30 -0
  90. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbTransaction.js +19 -0
  91. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +64 -0
  92. package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +70 -0
  93. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +22 -0
  94. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBDeleteTransactionObject.js +23 -0
  95. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBInsertTransactionObject.js +22 -0
  96. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBTransactionObject.js +23 -0
  97. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpdateTransactionObject.js +24 -0
  98. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpsertTransactionObject.js +24 -0
  99. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/TableSizeObject.js +25 -0
  100. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +21 -0
  101. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +157 -0
  102. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +94 -0
  103. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +39 -0
  104. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +34 -0
  105. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +100 -0
  106. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +371 -0
  107. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +109 -0
  108. package/dataLayer/hdbInfoController.js +254 -0
  109. package/dataLayer/insert.js +266 -0
  110. package/dataLayer/readAuditLog.js +59 -0
  111. package/dataLayer/schema.js +366 -0
  112. package/dataLayer/schemaDescribe.js +289 -0
  113. package/dataLayer/search.js +60 -0
  114. package/dataLayer/transaction.js +17 -0
  115. package/dataLayer/update.js +124 -0
  116. package/dist/components/Logger.d.ts +12 -0
  117. package/dist/{resources/ResourceInterfaceV2.js → components/Logger.js} +1 -1
  118. package/dist/components/Logger.js.map +1 -0
  119. package/dist/components/Scope.d.ts +14 -4
  120. package/dist/components/Scope.js +18 -10
  121. package/dist/components/Scope.js.map +1 -1
  122. package/dist/components/componentLoader.js +17 -10
  123. package/dist/components/componentLoader.js.map +1 -1
  124. package/dist/components/operations.js +2 -2
  125. package/dist/components/operations.js.map +1 -1
  126. package/dist/config/configUtils.d.ts +1 -1
  127. package/dist/config/configUtils.js +1 -1
  128. package/dist/config/configUtils.js.map +1 -1
  129. package/dist/dataLayer/CreateTableObject.d.ts +2 -2
  130. package/dist/dataLayer/CreateTableObject.js +2 -2
  131. package/dist/dataLayer/CreateTableObject.js.map +1 -1
  132. package/dist/dataLayer/delete.d.ts +1 -1
  133. package/dist/dataLayer/schema.js +6 -5
  134. package/dist/dataLayer/schema.js.map +1 -1
  135. package/dist/dataLayer/schemaDescribe.js +1 -1
  136. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  137. package/dist/index.d.ts +1 -1
  138. package/dist/index.js +2 -0
  139. package/dist/index.js.map +1 -1
  140. package/dist/resources/DatabaseTransaction.d.ts +1 -1
  141. package/dist/resources/IterableEventQueue.d.ts +1 -1
  142. package/dist/resources/LMDBTransaction.d.ts +5 -1
  143. package/dist/resources/Resource.d.ts +1 -1
  144. package/dist/resources/ResourceInterface.d.ts +1 -1
  145. package/dist/resources/RocksIndexStore.d.ts +3 -3
  146. package/dist/resources/RocksTransactionLogStore.d.ts +6 -3
  147. package/dist/resources/Table.d.ts +15 -6
  148. package/dist/resources/Table.js +12 -4
  149. package/dist/resources/Table.js.map +1 -1
  150. package/dist/resources/analytics/read.js +32 -22
  151. package/dist/resources/analytics/read.js.map +1 -1
  152. package/dist/resources/analytics/write.js +3 -6
  153. package/dist/resources/analytics/write.js.map +1 -1
  154. package/dist/resources/auditStore.d.ts +3 -3
  155. package/dist/resources/blob.d.ts +25 -2
  156. package/dist/resources/databases.d.ts +12 -2
  157. package/dist/resources/databases.js +22 -19
  158. package/dist/resources/databases.js.map +1 -1
  159. package/dist/resources/search.js +11 -5
  160. package/dist/resources/search.js.map +1 -1
  161. package/dist/resources/transaction.d.ts +2 -1
  162. package/dist/security/auth.js +1 -1
  163. package/dist/security/auth.js.map +1 -1
  164. package/dist/security/cryptoHash.d.ts +2 -2
  165. package/dist/security/jsLoader.js +265 -73
  166. package/dist/security/jsLoader.js.map +1 -1
  167. package/dist/security/keys.js +11 -12
  168. package/dist/security/keys.js.map +1 -1
  169. package/dist/security/user.js +3 -3
  170. package/dist/security/user.js.map +1 -1
  171. package/dist/server/REST.js +16 -2
  172. package/dist/server/REST.js.map +1 -1
  173. package/dist/server/Server.d.ts +2 -1
  174. package/dist/server/Server.js.map +1 -1
  175. package/dist/server/fastifyRoutes/plugins/hdbCore.d.ts +6 -1
  176. package/dist/server/fastifyRoutes.js +2 -0
  177. package/dist/server/fastifyRoutes.js.map +1 -1
  178. package/dist/server/http.js +12 -6
  179. package/dist/server/http.js.map +1 -1
  180. package/dist/server/jobs/JobObject.d.ts +3 -3
  181. package/dist/server/loadRootComponents.js +1 -0
  182. package/dist/server/loadRootComponents.js.map +1 -1
  183. package/dist/server/operationsServer.js +3 -1
  184. package/dist/server/operationsServer.js.map +1 -1
  185. package/dist/server/serverHelpers/JSONStream.d.ts +3 -3
  186. package/dist/server/serverHelpers/Request.d.ts +5 -5
  187. package/dist/server/serverHelpers/requestTimePlugin.d.ts +1 -1
  188. package/dist/server/threads/manageThreads.d.ts +2 -2
  189. package/dist/server/threads/manageThreads.js +52 -35
  190. package/dist/server/threads/manageThreads.js.map +1 -1
  191. package/dist/server/threads/socketRouter.d.ts +1 -1
  192. package/dist/sqlTranslator/deleteTranslator.d.ts +1 -1
  193. package/dist/utility/AWS/AWSConnector.d.ts +3 -2
  194. package/dist/utility/common_utils.d.ts +3 -3
  195. package/dist/utility/environment/systemInformation.d.ts +1 -0
  196. package/dist/utility/functions/date/dateFunctions.d.ts +11 -11
  197. package/dist/utility/globalSchema.d.ts +1 -1
  198. package/dist/utility/hdbTerms.d.ts +3 -0
  199. package/dist/utility/hdbTerms.js +3 -0
  200. package/dist/utility/hdbTerms.js.map +1 -1
  201. package/dist/utility/installation.d.ts +2 -4
  202. package/dist/utility/installation.js.map +1 -1
  203. package/dist/utility/lmdb/commonUtility.d.ts +2 -1
  204. package/dist/utility/lmdb/commonUtility.js +20 -13
  205. package/dist/utility/lmdb/commonUtility.js.map +1 -1
  206. package/dist/utility/lmdb/deleteUtility.d.ts +1 -0
  207. package/dist/utility/lmdb/environmentUtility.d.ts +1 -0
  208. package/dist/utility/lmdb/searchUtility.d.ts +2 -1
  209. package/dist/utility/lmdb/writeUtility.d.ts +1 -0
  210. package/dist/utility/logging/harper_logger.d.ts +6 -6
  211. package/dist/utility/processManagement/processManagement.d.ts +1 -1
  212. package/dist/utility/processManagement/servicesConfig.d.ts +12 -6
  213. package/dist/validation/common_validators.d.ts +4 -3
  214. package/dist/validation/configValidator.d.ts +3 -2
  215. package/index.d.ts +56 -0
  216. package/index.js +41 -0
  217. package/json/systemSchema.json +373 -0
  218. package/launchServiceScripts/launchHarperDB.js +3 -0
  219. package/launchServiceScripts/utility/checkNodeVersion.js +15 -0
  220. package/package.json +35 -16
  221. package/resources/DatabaseTransaction.ts +378 -0
  222. package/resources/ErrorResource.ts +57 -0
  223. package/resources/IterableEventQueue.ts +94 -0
  224. package/resources/LMDBTransaction.ts +349 -0
  225. package/resources/RecordEncoder.ts +702 -0
  226. package/resources/RequestTarget.ts +134 -0
  227. package/resources/Resource.ts +789 -0
  228. package/resources/ResourceInterface.ts +221 -0
  229. package/resources/Resources.ts +162 -0
  230. package/resources/RocksIndexStore.ts +70 -0
  231. package/resources/RocksTransactionLogStore.ts +352 -0
  232. package/resources/Table.ts +4531 -0
  233. package/resources/analytics/hostnames.ts +72 -0
  234. package/resources/analytics/metadata.ts +10 -0
  235. package/resources/analytics/read.ts +252 -0
  236. package/resources/analytics/write.ts +803 -0
  237. package/resources/auditStore.ts +556 -0
  238. package/resources/blob.ts +1268 -0
  239. package/resources/crdt.ts +125 -0
  240. package/resources/dataLoader.ts +527 -0
  241. package/resources/databases.ts +1290 -0
  242. package/resources/graphql.ts +221 -0
  243. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +638 -0
  244. package/resources/indexes/customIndexes.ts +7 -0
  245. package/resources/indexes/vector.ts +38 -0
  246. package/resources/jsResource.ts +86 -0
  247. package/resources/loadEnv.ts +22 -0
  248. package/resources/login.ts +18 -0
  249. package/resources/openApi.ts +409 -0
  250. package/resources/registrationDeprecated.ts +8 -0
  251. package/resources/replayLogs.ts +136 -0
  252. package/resources/roles.ts +98 -0
  253. package/resources/search.ts +1301 -0
  254. package/resources/tracked.ts +584 -0
  255. package/resources/transaction.ts +89 -0
  256. package/resources/transactionBroadcast.ts +258 -0
  257. package/security/auth.ts +376 -0
  258. package/security/certificateVerification/certificateVerificationSource.ts +84 -0
  259. package/security/certificateVerification/configValidation.ts +107 -0
  260. package/security/certificateVerification/crlVerification.ts +623 -0
  261. package/security/certificateVerification/index.ts +121 -0
  262. package/security/certificateVerification/ocspVerification.ts +148 -0
  263. package/security/certificateVerification/pkijs-ed25519-patch.ts +188 -0
  264. package/security/certificateVerification/types.ts +128 -0
  265. package/security/certificateVerification/verificationConfig.ts +138 -0
  266. package/security/certificateVerification/verificationUtils.ts +447 -0
  267. package/security/cryptoHash.js +42 -0
  268. package/security/data_objects/PermissionAttributeResponseObject.js +15 -0
  269. package/security/data_objects/PermissionResponseObject.js +115 -0
  270. package/security/data_objects/PermissionTableResponseObject.js +20 -0
  271. package/security/fastifyAuth.js +169 -0
  272. package/security/impersonation.ts +160 -0
  273. package/security/jsLoader.ts +733 -0
  274. package/security/keys.js +948 -0
  275. package/security/permissionsTranslator.js +300 -0
  276. package/security/role.js +218 -0
  277. package/security/tokenAuthentication.ts +228 -0
  278. package/security/user.ts +449 -0
  279. package/server/DurableSubscriptionsSession.ts +503 -0
  280. package/server/REST.ts +407 -0
  281. package/server/Server.ts +89 -0
  282. package/server/fastifyRoutes/helpers/getCORSOptions.js +36 -0
  283. package/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +15 -0
  284. package/server/fastifyRoutes/helpers/getServerOptions.js +33 -0
  285. package/server/fastifyRoutes/plugins/hdbCore.js +39 -0
  286. package/server/fastifyRoutes.ts +205 -0
  287. package/server/graphqlQuerying.ts +700 -0
  288. package/server/http.ts +640 -0
  289. package/server/itc/serverHandlers.js +161 -0
  290. package/server/itc/utility/ITCEventObject.js +10 -0
  291. package/server/jobs/JobObject.js +24 -0
  292. package/server/jobs/jobProcess.js +69 -0
  293. package/server/jobs/jobRunner.js +162 -0
  294. package/server/jobs/jobs.js +304 -0
  295. package/server/loadRootComponents.js +44 -0
  296. package/server/mqtt.ts +485 -0
  297. package/server/nodeName.ts +75 -0
  298. package/server/operationsServer.ts +313 -0
  299. package/server/serverHelpers/Headers.ts +108 -0
  300. package/server/serverHelpers/JSONStream.ts +269 -0
  301. package/server/serverHelpers/OperationFunctionObject.ts +13 -0
  302. package/server/serverHelpers/Request.ts +158 -0
  303. package/server/serverHelpers/contentTypes.ts +637 -0
  304. package/server/serverHelpers/requestTimePlugin.js +57 -0
  305. package/server/serverHelpers/serverHandlers.js +148 -0
  306. package/server/serverHelpers/serverUtilities.ts +473 -0
  307. package/server/serverRegistry.ts +8 -0
  308. package/server/static.ts +187 -0
  309. package/server/status/definitions.ts +37 -0
  310. package/server/status/index.ts +125 -0
  311. package/server/storageReclamation.ts +93 -0
  312. package/server/threads/itc.js +89 -0
  313. package/server/threads/manageThreads.js +596 -0
  314. package/server/threads/socketRouter.ts +360 -0
  315. package/server/threads/threadServer.js +279 -0
  316. package/server/throttle.ts +73 -0
  317. package/sqlTranslator/SelectValidator.js +330 -0
  318. package/sqlTranslator/alasqlFunctionImporter.js +62 -0
  319. package/sqlTranslator/deleteTranslator.js +67 -0
  320. package/sqlTranslator/index.js +242 -0
  321. package/sqlTranslator/sql_statement_bucket.js +472 -0
  322. package/static/defaultConfig.yaml +3 -0
  323. package/studio/web/HDBDogOnly.svg +78 -0
  324. package/studio/web/assets/PPRadioGrotesk-Bold-DDaUYG8E.woff +0 -0
  325. package/studio/web/assets/fa-brands-400-CEJbCg16.woff +0 -0
  326. package/studio/web/assets/fa-brands-400-CSYNqBb_.ttf +0 -0
  327. package/studio/web/assets/fa-brands-400-DnkPfk3o.eot +0 -0
  328. package/studio/web/assets/fa-brands-400-UxlILjvJ.woff2 +0 -0
  329. package/studio/web/assets/fa-brands-400-cH1MgKbP.svg +3717 -0
  330. package/studio/web/assets/fa-regular-400-BhTwtT8w.eot +0 -0
  331. package/studio/web/assets/fa-regular-400-D1vz6WBx.ttf +0 -0
  332. package/studio/web/assets/fa-regular-400-DFnMcJPd.woff +0 -0
  333. package/studio/web/assets/fa-regular-400-DGzu1beS.woff2 +0 -0
  334. package/studio/web/assets/fa-regular-400-gwj8Pxq-.svg +801 -0
  335. package/studio/web/assets/fa-solid-900-B4ZZ7kfP.svg +5034 -0
  336. package/studio/web/assets/fa-solid-900-B6Axprfb.eot +0 -0
  337. package/studio/web/assets/fa-solid-900-BUswJgRo.woff2 +0 -0
  338. package/studio/web/assets/fa-solid-900-DOXgCApm.woff +0 -0
  339. package/studio/web/assets/fa-solid-900-mxuxnBEa.ttf +0 -0
  340. package/studio/web/assets/index-C1G-Jo6n.js +37 -0
  341. package/studio/web/assets/index-C1G-Jo6n.js.map +1 -0
  342. package/studio/web/assets/index-D-CahN0-.js +2 -0
  343. package/studio/web/assets/index-D-CahN0-.js.map +1 -0
  344. package/studio/web/assets/index-DxlZI0PX.js +235 -0
  345. package/studio/web/assets/index-DxlZI0PX.js.map +1 -0
  346. package/studio/web/assets/index-Y2g_iFpU.css +1 -0
  347. package/studio/web/assets/index-jiPwkrsB.css +1 -0
  348. package/studio/web/assets/index.lazy-BUXDDqq9.js +266 -0
  349. package/studio/web/assets/index.lazy-BUXDDqq9.js.map +1 -0
  350. package/studio/web/assets/profiler-CU93QiSW.js +2 -0
  351. package/studio/web/assets/profiler-CU93QiSW.js.map +1 -0
  352. package/studio/web/assets/react-redux-B8k9Ep7e.js +6 -0
  353. package/studio/web/assets/react-redux-B8k9Ep7e.js.map +1 -0
  354. package/studio/web/assets/startRecording-DFeBXGk6.js +3 -0
  355. package/studio/web/assets/startRecording-DFeBXGk6.js.map +1 -0
  356. package/studio/web/fabric-signup-background.webp +0 -0
  357. package/studio/web/fabric-signup-text.png +0 -0
  358. package/studio/web/favicon_purple.png +0 -0
  359. package/studio/web/github-icon.svg +15 -0
  360. package/studio/web/harper-fabric_black.png +0 -0
  361. package/studio/web/harper-fabric_white.png +0 -0
  362. package/studio/web/harper-studio_white.png +0 -0
  363. package/studio/web/index.html +16 -0
  364. package/studio/web/running.css +148 -0
  365. package/studio/web/running.html +147 -0
  366. package/studio/web/running.js +111 -0
  367. package/upgrade/UpgradeObjects.js +13 -0
  368. package/upgrade/directives/directivesController.js +90 -0
  369. package/upgrade/directivesManager.js +139 -0
  370. package/upgrade/upgradePrompt.js +124 -0
  371. package/upgrade/upgradeUtilities.js +28 -0
  372. package/utility/AWS/AWSConnector.js +29 -0
  373. package/utility/OperationFunctionCaller.js +63 -0
  374. package/utility/assignCmdEnvVariables.js +62 -0
  375. package/utility/common_utils.js +867 -0
  376. package/utility/environment/environmentManager.js +208 -0
  377. package/utility/environment/systemInformation.js +355 -0
  378. package/utility/errors/commonErrors.js +267 -0
  379. package/utility/errors/hdbError.js +146 -0
  380. package/utility/functions/date/dateFunctions.js +65 -0
  381. package/utility/functions/geo.js +355 -0
  382. package/utility/functions/sql/alaSQLExtension.js +104 -0
  383. package/utility/globalSchema.js +35 -0
  384. package/utility/hdbTerms.ts +819 -0
  385. package/utility/install/checkJWTTokensExist.js +62 -0
  386. package/utility/install/harperdb.conf +15 -0
  387. package/utility/install/harperdb.service +14 -0
  388. package/utility/install/installer.js +635 -0
  389. package/utility/installation.ts +30 -0
  390. package/utility/lmdb/DBIDefinition.js +20 -0
  391. package/utility/lmdb/DeleteRecordsResponseObject.js +25 -0
  392. package/utility/lmdb/InsertRecordsResponseObject.js +22 -0
  393. package/utility/lmdb/OpenDBIObject.js +31 -0
  394. package/utility/lmdb/OpenEnvironmentObject.js +41 -0
  395. package/utility/lmdb/UpdateRecordsResponseObject.js +25 -0
  396. package/utility/lmdb/UpsertRecordsResponseObject.js +22 -0
  397. package/utility/lmdb/cleanLMDBMap.js +65 -0
  398. package/utility/lmdb/commonUtility.js +130 -0
  399. package/utility/lmdb/deleteUtility.js +128 -0
  400. package/utility/lmdb/environmentUtility.js +477 -0
  401. package/utility/lmdb/searchCursorFunctions.js +187 -0
  402. package/utility/lmdb/searchUtility.js +918 -0
  403. package/utility/lmdb/terms.js +57 -0
  404. package/utility/lmdb/writeUtility.js +407 -0
  405. package/utility/logging/harper_logger.js +876 -0
  406. package/utility/logging/logRotator.js +157 -0
  407. package/utility/logging/logger.ts +24 -0
  408. package/utility/logging/readLog.js +355 -0
  409. package/utility/logging/transactionLog.js +57 -0
  410. package/utility/mount_hdb.js +59 -0
  411. package/utility/npmUtilities.js +102 -0
  412. package/utility/operationPermissions.ts +112 -0
  413. package/utility/operation_authorization.js +836 -0
  414. package/utility/packageUtils.js +55 -0
  415. package/utility/password.ts +99 -0
  416. package/utility/processManagement/processManagement.js +187 -0
  417. package/utility/processManagement/servicesConfig.js +56 -0
  418. package/utility/scripts/restartHdb.js +24 -0
  419. package/utility/scripts/user_data.sh +13 -0
  420. package/utility/signalling.js +36 -0
  421. package/utility/terms/certificates.js +81 -0
  422. package/utility/when.ts +20 -0
  423. package/validation/bulkDeleteValidator.js +24 -0
  424. package/validation/check_permissions.js +19 -0
  425. package/validation/common_validators.js +95 -0
  426. package/validation/configValidator.js +331 -0
  427. package/validation/deleteValidator.js +15 -0
  428. package/validation/fileLoadValidator.js +153 -0
  429. package/validation/insertValidator.js +40 -0
  430. package/validation/installValidator.js +37 -0
  431. package/validation/readLogValidator.js +64 -0
  432. package/validation/role_validation.js +320 -0
  433. package/validation/schemaMetadataValidator.js +42 -0
  434. package/validation/searchValidator.js +166 -0
  435. package/validation/statusValidator.ts +66 -0
  436. package/validation/transactionLogValidator.js +33 -0
  437. package/validation/user_validation.js +55 -0
  438. package/validation/validationWrapper.js +105 -0
  439. package/dist/resources/ResourceInterfaceV2.d.ts +0 -21
  440. package/dist/resources/ResourceInterfaceV2.js.map +0 -1
  441. package/dist/resources/ResourceV2.d.ts +0 -30
  442. package/dist/resources/ResourceV2.js +0 -27
  443. package/dist/resources/ResourceV2.js.map +0 -1
  444. package/dist/resources/analytics/profile.d.ts +0 -2
  445. package/dist/resources/analytics/profile.js +0 -144
  446. package/dist/resources/analytics/profile.js.map +0 -1
@@ -0,0 +1,161 @@
1
+ 'use strict';
2
+
3
+ /* global threads */
4
+ const hdbLogger = require('../../utility/logging/harper_logger.js');
5
+ const hdbTerms = require('../../utility/hdbTerms.ts');
6
+ const cleanLmdbMap = require('../../utility/lmdb/cleanLMDBMap.js');
7
+ const userSchema = require('../../security/user.ts');
8
+ const { validateEvent } = require('../threads/itc.js');
9
+ const harperBridge = require('../../dataLayer/harperBridge/harperBridge.js');
10
+ const process = require('process');
11
+ const { resetDatabases } = require('../../resources/databases.ts');
12
+
13
+ /**
14
+ * This object/functions are passed to the ITC client instance and dynamically added as event handlers.
15
+ * @type {{schema: ((function(*): Promise<void>)|*), job: ((function(*): Promise<void>)|*), user: ((function(): Promise<void>)|*)}}
16
+ */
17
+ const serverItcHandlers = {
18
+ [hdbTerms.ITC_EVENT_TYPES.SCHEMA]: schemaHandler,
19
+ [hdbTerms.ITC_EVENT_TYPES.USER]: userHandler,
20
+ [hdbTerms.ITC_EVENT_TYPES.COMPONENT_STATUS_REQUEST]: componentStatusRequestHandler,
21
+ };
22
+
23
+ /**
24
+ * Updates the global hdbSchema object.
25
+ * @param event
26
+ * @returns {Promise<void>}
27
+ */
28
+ async function schemaHandler(event) {
29
+ const validate = validateEvent(event);
30
+ if (validate) {
31
+ hdbLogger.error(validate);
32
+ return;
33
+ }
34
+
35
+ hdbLogger.trace(`ITC schemaHandler received schema event:`, event);
36
+ await cleanLmdbMap(event.message);
37
+ await syncSchemaMetadata(event.message);
38
+ }
39
+
40
+ /**
41
+ * Switch statement to handle schema-related messages from other forked processes - i.e. if another process completes an
42
+ * operation that updates schema and, therefore, requires that we update the global schema value for the process
43
+ *
44
+ * @param msg
45
+ * @returns {Promise<void>}
46
+ */
47
+ async function syncSchemaMetadata(msg) {
48
+ try {
49
+ // reset current read transactions to ensure that we are getting the very latest data
50
+ harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);
51
+ harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME);
52
+ harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);
53
+ // TODO: Eventually should indicate which database/table changed so we don't have to scan everything
54
+ let databases = resetDatabases();
55
+ if (msg.table && msg.database)
56
+ // wait for a write to finish to ensure all writes have been written
57
+ await databases[msg.database][msg.table].put(Symbol.for('write-verify'), null);
58
+ } catch (e) {
59
+ hdbLogger.error(e);
60
+ }
61
+ }
62
+
63
+ const userListeners = [];
64
+ /**
65
+ * Updates the global hdbUsers object by querying the hdbRole table.
66
+ * @param event
67
+ * @returns {Promise<void>}
68
+ */
69
+ async function userHandler(event) {
70
+ try {
71
+ try {
72
+ harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.USER_TABLE_NAME);
73
+ harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME);
74
+ } catch (error) {
75
+ // this can happen during tests, best to ignore
76
+ hdbLogger.warn(error);
77
+ }
78
+ const validate = validateEvent(event);
79
+ if (validate) {
80
+ hdbLogger.error(validate);
81
+ return;
82
+ }
83
+
84
+ hdbLogger.trace(`ITC userHandler ${hdbTerms.HDB_ITC_CLIENT_PREFIX}${process.pid} received user event:`, event);
85
+ await userSchema.setUsersWithRolesCache();
86
+ for (let listener of userListeners) listener();
87
+ } catch (err) {
88
+ hdbLogger.error(err);
89
+ }
90
+ }
91
+
92
+ userHandler.addListener = function (listener) {
93
+ userListeners.push(listener);
94
+ };
95
+
96
+ /**
97
+ * Handles incoming requests for component status from inter-thread communication (ITC).
98
+ * Validates the event, retrieves the current thread's component statuses, and sends a response
99
+ * back to the originator thread with the requested information.
100
+ *
101
+ * @async
102
+ * @function componentStatusRequestHandler
103
+ * @param {Object} event - The event object containing the request details.
104
+ * @param {Object} event.message - The message object within the event.
105
+ * @param {string} event.message.originator - The identifier of the thread that originated the request.
106
+ * @param {string} event.message.requestId - The unique identifier for the request.
107
+ * @returns {Promise<void>} Sends a response back to the originator thread or logs an error if validation fails.
108
+ */
109
+ async function componentStatusRequestHandler(event) {
110
+ try {
111
+ const validate = validateEvent(event);
112
+ if (validate) {
113
+ hdbLogger.error(validate);
114
+ return;
115
+ }
116
+
117
+ hdbLogger.trace(`ITC componentStatusRequestHandler received request:`, event);
118
+
119
+ // Get current thread's component status
120
+ const { internal } = require('../../components/status/index.ts');
121
+ const { getWorkerIndex } = require('../threads/manageThreads.js');
122
+ const { sendItcEvent } = require('../threads/itc.js');
123
+ const componentStatuses = internal.componentStatusRegistry.getAllStatuses();
124
+
125
+ // Convert Map to array for serialization
126
+ const statusArray = Array.from(componentStatuses.entries());
127
+
128
+ // Get worker index and determine if this is the main thread
129
+ const workerIndex = getWorkerIndex();
130
+ const isMainThread = workerIndex === undefined;
131
+
132
+ // Send response directly back to the originating thread
133
+ const originatorThreadId = event.message.originator;
134
+ const responseMessage = {
135
+ type: hdbTerms.ITC_EVENT_TYPES.COMPONENT_STATUS_RESPONSE,
136
+ message: {
137
+ requestId: event.message.requestId,
138
+ statuses: statusArray,
139
+ workerIndex: workerIndex,
140
+ isMainThread: isMainThread,
141
+ },
142
+ };
143
+
144
+ // Use global threads (connectedPorts) to send directly to originator
145
+ if (originatorThreadId !== undefined && threads.sendToThread(originatorThreadId, responseMessage)) {
146
+ hdbLogger.trace(`Sent component status response directly to thread ${originatorThreadId}`);
147
+ } else {
148
+ // Fallback to broadcast if direct send fails or originator is missing
149
+ if (originatorThreadId === undefined) {
150
+ hdbLogger.debug('No originator threadId, falling back to broadcast');
151
+ } else {
152
+ hdbLogger.warn(`Failed to send direct response to thread ${originatorThreadId}, falling back to broadcast`);
153
+ }
154
+ await sendItcEvent(responseMessage);
155
+ }
156
+ } catch (error) {
157
+ hdbLogger.error('Error handling component status request:', error);
158
+ }
159
+ }
160
+
161
+ module.exports = serverItcHandlers;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ class ITCEventObject {
4
+ constructor(type, message) {
5
+ this.type = type;
6
+ this.message = message;
7
+ }
8
+ }
9
+
10
+ module.exports = ITCEventObject;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ const hdbTerm = require('../../utility/hdbTerms.ts');
4
+ const moment = require('moment');
5
+ const uuidV4 = require('uuid').v4;
6
+
7
+ /**
8
+ * This class represents a Job as it resides in the jobs table.
9
+ */
10
+ class JobObject {
11
+ constructor() {
12
+ this.id = uuidV4();
13
+ this.type = undefined;
14
+ this.start_datetime = moment().valueOf();
15
+ this.created_datetime = moment().valueOf();
16
+ this.end_datetime = undefined;
17
+ this.status = hdbTerm.JOB_STATUS_ENUM.CREATED;
18
+ this.message = undefined;
19
+ this.user = undefined;
20
+ this.request = undefined;
21
+ }
22
+ }
23
+
24
+ module.exports = JobObject;
@@ -0,0 +1,69 @@
1
+ 'use strict';
2
+
3
+ const hdbTerms = require('../../utility/hdbTerms.ts');
4
+ const hdbUtils = require('../../utility/common_utils.js');
5
+ const harperLogger = require('../../utility/logging/harper_logger.js');
6
+ const globalSchema = require('../../utility/globalSchema.js');
7
+ const user = require('../../security/user.ts');
8
+ const serverUtils = require('../serverHelpers/serverUtilities.ts');
9
+ const moment = require('moment');
10
+ const jobs = require('./jobs.js');
11
+ const { cloneDeep } = require('lodash');
12
+ const JOB_NAME = process.env[hdbTerms.PROCESS_NAME_ENV_PROP];
13
+ const JOB_ID = JOB_NAME.substring(4);
14
+
15
+ /**
16
+ * Finds the appropriate function for the request and runs it.
17
+ * Then updates the job table accordingly.
18
+ * @returns {Promise<void>}
19
+ */
20
+ (async function job() {
21
+ // The request value could potentially be quite large so it's set to undefined to clear it out after being processed.
22
+ let jobObj = { id: JOB_ID, request: undefined };
23
+ let exitCode = 0;
24
+ try {
25
+ harperLogger.notify('Starting job:', JOB_ID);
26
+ globalSchema.setSchemaDataToGlobal();
27
+ await user.setUsersWithRolesCache();
28
+
29
+ // When the job record is first inserted in hdbJob table by HDB, the incoming API request is included, this is
30
+ // how we pass the request to the job process. IPC was initially used but messages were getting lost under heavy load.
31
+ const jobRecord = await jobs.getJobById(JOB_ID);
32
+ if (hdbUtils.isEmptyOrZeroLength(jobRecord)) {
33
+ throw new Error(`Unable to find a record in hdbJob for job: ${JOB_ID}`);
34
+ }
35
+
36
+ let { request } = jobRecord[0];
37
+ if (hdbUtils.isEmptyOrZeroLength(request)) {
38
+ throw new Error('Did not find job request in hdb_job table, unable to proceed');
39
+ }
40
+ request = cloneDeep(request);
41
+
42
+ const operation = serverUtils.getOperationFunction(request);
43
+ harperLogger.trace('Running operation:', request.operation, 'for job', JOB_ID);
44
+
45
+ // Run the job operation.
46
+ const results = await operation.job_operation_function(request);
47
+ harperLogger.trace('Result from job:', JOB_ID, results);
48
+
49
+ jobObj.status = hdbTerms.JOB_STATUS_ENUM.COMPLETE;
50
+ if (typeof results === 'string') jobObj.message = results;
51
+ else {
52
+ jobObj.result = results;
53
+ jobObj.message = 'Successfully completed job: ' + JOB_ID;
54
+ }
55
+ jobObj.end_datetime = moment().valueOf();
56
+ harperLogger.notify('Successfully completed job:', JOB_ID);
57
+ } catch (err) {
58
+ exitCode = 1;
59
+ harperLogger.error(err);
60
+ jobObj.status = hdbTerms.JOB_STATUS_ENUM.ERROR;
61
+ jobObj.message = err.message ? err.message : err;
62
+ jobObj.end_datetime = moment().valueOf();
63
+ } finally {
64
+ await jobs.updateJob(jobObj);
65
+ setTimeout(() => {
66
+ process.exit(exitCode);
67
+ }, 3000).unref();
68
+ }
69
+ })();
@@ -0,0 +1,162 @@
1
+ 'use strict';
2
+
3
+ const { join } = require('node:path');
4
+
5
+ const hdbUtil = require('../../utility/common_utils.js');
6
+ const hdbTerms = require('../../utility/hdbTerms.ts');
7
+ const moment = require('moment');
8
+ const bulkLoad = require('../../dataLayer/bulkLoad.js');
9
+ const log = require('../../utility/logging/harper_logger.js');
10
+ const jobs = require('./jobs.js');
11
+ const hdbExport = require('../../dataLayer/export.js');
12
+ const hdbDelete = require('../../dataLayer/delete.js');
13
+ const threadsStart = require('../threads/manageThreads.js');
14
+ const transactionLog = require('../../utility/logging/transactionLog.js');
15
+ const restart = require('../../bin/restart.js');
16
+ const { parentPort, isMainThread } = require('worker_threads');
17
+ const { onMessageByType } = require('../threads/manageThreads.js');
18
+
19
+ class RunnerMessage {
20
+ constructor(jobObject, messageJson) {
21
+ this.job = jobObject;
22
+ this.json = messageJson;
23
+ }
24
+ }
25
+
26
+ /**
27
+ * Parses a RunnerMessage and runs the specified job.
28
+ * @param runnerMessage
29
+ * @throws Error
30
+ */
31
+ async function parseMessage(runnerMessage) {
32
+ if (!runnerMessage || Object.keys(runnerMessage).length === 0) {
33
+ throw new Error('Empty runner passed to parseMessage');
34
+ }
35
+ if (!runnerMessage.json || Object.keys(runnerMessage.json).length === 0) {
36
+ throw new Error('Empty JSON passed to parseMessage');
37
+ }
38
+ if (!runnerMessage.job || Object.keys(runnerMessage.job).length === 0) {
39
+ throw new Error('Empty job passed to parseMessage');
40
+ }
41
+ if (hdbUtil.isEmptyOrZeroLength(runnerMessage.json.operation)) {
42
+ throw new Error('Invalid operation');
43
+ }
44
+ if (hdbUtil.isEmptyOrZeroLength(runnerMessage.job.id)) {
45
+ throw new Error('Empty job id specified');
46
+ }
47
+
48
+ switch (runnerMessage.json.operation) {
49
+ case hdbTerms.JOB_TYPE_ENUM.csv_file_load:
50
+ await runJob(runnerMessage, bulkLoad.csvFileLoad);
51
+ break;
52
+ case hdbTerms.JOB_TYPE_ENUM.csv_url_load:
53
+ await runJob(runnerMessage, bulkLoad.csvURLLoad);
54
+ break;
55
+ case hdbTerms.JOB_TYPE_ENUM.csv_data_load:
56
+ await runJob(runnerMessage, bulkLoad.csvDataLoad);
57
+ break;
58
+ case hdbTerms.JOB_TYPE_ENUM.import_from_s3:
59
+ await runJob(runnerMessage, bulkLoad.importFromS3);
60
+ break;
61
+ case hdbTerms.JOB_TYPE_ENUM.empty_trash:
62
+ break;
63
+ case hdbTerms.JOB_TYPE_ENUM.export_local:
64
+ await runJob(runnerMessage, hdbExport.export_local);
65
+ break;
66
+ case hdbTerms.JOB_TYPE_ENUM.export_to_s3:
67
+ await runJob(runnerMessage, hdbExport.export_to_s3);
68
+ break;
69
+ case hdbTerms.JOB_TYPE_ENUM.delete_files_before:
70
+ case hdbTerms.JOB_TYPE_ENUM.delete_records_before:
71
+ await runJob(runnerMessage, hdbDelete.deleteFilesBefore);
72
+ break;
73
+ case hdbTerms.JOB_TYPE_ENUM.delete_audit_logs_before:
74
+ await runJob(runnerMessage, hdbDelete.deleteAuditLogsBefore);
75
+ break;
76
+ case hdbTerms.JOB_TYPE_ENUM.delete_transaction_logs_before:
77
+ await runJob(runnerMessage, transactionLog.deleteTransactionLogsBefore);
78
+ break;
79
+ case hdbTerms.JOB_TYPE_ENUM.restart_service:
80
+ await runJob(runnerMessage, restart.restartService);
81
+ return `Restarting ${runnerMessage.json.service}`;
82
+ break;
83
+ default:
84
+ return `Invalid operation ${runnerMessage.json.operation} specified`;
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Helper function to run the specified operation using the job update 'workflow'.
90
+ * @param runnerMessage - The RunnerMessage created by the signal flow
91
+ * @param operation - The operation to run.
92
+ */
93
+ async function runJob(runnerMessage, operation) {
94
+ try {
95
+ runnerMessage.job.status = hdbTerms.JOB_STATUS_ENUM.IN_PROGRESS;
96
+ runnerMessage.job.start_datetime = moment().valueOf();
97
+ // Update with "IN PROGRESS"
98
+ await jobs.updateJob(runnerMessage.job);
99
+ // Run the operation.
100
+ await launchJobThread(runnerMessage.job.id);
101
+ } catch (e) {
102
+ let errMessage = e.message !== undefined ? e.message : e;
103
+ if (typeof errMessage === 'string') {
104
+ errMessage = `There was an error running ${operation.name} job with id ${runnerMessage.job.id} - ${errMessage}`;
105
+ e.message = errMessage;
106
+ } else {
107
+ //This ensures that the op/job id error is logged if the error message is passed as a non-string which will
108
+ // be logged right after this below. If the message is a string, everything will be logged below as the errMessage
109
+ log.error(`There was an error running ${operation.name} job with id ${runnerMessage.job.id}`);
110
+ }
111
+ log.error(errMessage);
112
+ runnerMessage.job.message = errMessage;
113
+ runnerMessage.job.status = hdbTerms.JOB_STATUS_ENUM.ERROR;
114
+ try {
115
+ // Update with "Error"
116
+ await jobs.updateJob(runnerMessage.job);
117
+ } catch (ex) {
118
+ log.error(`Unable to update job with id ${runnerMessage.job.id}`);
119
+ throw ex;
120
+ }
121
+ throw e;
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Launches job in a separate process using processManagement
127
+ * @param job_id
128
+ * @returns {Promise<void>}
129
+ */
130
+ async function launchJobThread(job_id) {
131
+ log.trace('launching job thread:', job_id);
132
+ if (isMainThread) {
133
+ threadsStart.startWorker(join(__dirname, './jobProcess.js'), {
134
+ autoRestart: false,
135
+ name: 'job',
136
+ env: { ...process.env, [hdbTerms.PROCESS_NAME_ENV_PROP]: `JOB-${job_id}` },
137
+ });
138
+ } else {
139
+ parentPort.postMessage({
140
+ type: hdbTerms.ITC_EVENT_TYPES.START_JOB,
141
+ jobId: job_id,
142
+ });
143
+ }
144
+ }
145
+ if (isMainThread) {
146
+ onMessageByType(hdbTerms.ITC_EVENT_TYPES.START_JOB, async (message) => {
147
+ try {
148
+ threadsStart.startWorker(join(__dirname, './jobProcess.js'), {
149
+ autoRestart: false,
150
+ name: 'job',
151
+ env: { ...process.env, [hdbTerms.PROCESS_NAME_ENV_PROP]: `JOB-${message.jobId}` },
152
+ });
153
+ } catch (e) {
154
+ log.error(e);
155
+ }
156
+ });
157
+ }
158
+
159
+ module.exports = {
160
+ parseMessage,
161
+ RunnerMessage,
162
+ };