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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) 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/components/Logger.js +3 -0
  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 +16 -9
  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/RocksIndexStore.d.ts +3 -3
  145. package/dist/resources/RocksTransactionLogStore.d.ts +6 -3
  146. package/dist/resources/Table.d.ts +15 -6
  147. package/dist/resources/Table.js +4 -1
  148. package/dist/resources/Table.js.map +1 -1
  149. package/dist/resources/analytics/read.js +32 -22
  150. package/dist/resources/analytics/read.js.map +1 -1
  151. package/dist/resources/analytics/write.js +3 -6
  152. package/dist/resources/analytics/write.js.map +1 -1
  153. package/dist/resources/auditStore.d.ts +3 -3
  154. package/dist/resources/blob.d.ts +25 -2
  155. package/dist/resources/databases.d.ts +12 -2
  156. package/dist/resources/databases.js +22 -19
  157. package/dist/resources/databases.js.map +1 -1
  158. package/dist/resources/search.js +11 -5
  159. package/dist/resources/search.js.map +1 -1
  160. package/dist/resources/transaction.d.ts +2 -1
  161. package/dist/security/auth.js +1 -1
  162. package/dist/security/auth.js.map +1 -1
  163. package/dist/security/cryptoHash.d.ts +2 -2
  164. package/dist/security/jsLoader.js +243 -66
  165. package/dist/security/jsLoader.js.map +1 -1
  166. package/dist/security/keys.js +4 -5
  167. package/dist/security/keys.js.map +1 -1
  168. package/dist/security/user.js +3 -3
  169. package/dist/security/user.js.map +1 -1
  170. package/dist/server/REST.js +16 -2
  171. package/dist/server/REST.js.map +1 -1
  172. package/dist/server/Server.d.ts +2 -1
  173. package/dist/server/Server.js.map +1 -1
  174. package/dist/server/fastifyRoutes/plugins/hdbCore.d.ts +6 -1
  175. package/dist/server/fastifyRoutes.js +2 -0
  176. package/dist/server/fastifyRoutes.js.map +1 -1
  177. package/dist/server/http.js +12 -6
  178. package/dist/server/http.js.map +1 -1
  179. package/dist/server/jobs/JobObject.d.ts +3 -3
  180. package/dist/server/loadRootComponents.js +1 -0
  181. package/dist/server/loadRootComponents.js.map +1 -1
  182. package/dist/server/operationsServer.js +3 -1
  183. package/dist/server/operationsServer.js.map +1 -1
  184. package/dist/server/serverHelpers/JSONStream.d.ts +3 -3
  185. package/dist/server/serverHelpers/Request.d.ts +5 -5
  186. package/dist/server/serverHelpers/requestTimePlugin.d.ts +1 -1
  187. package/dist/server/threads/manageThreads.d.ts +2 -2
  188. package/dist/server/threads/manageThreads.js +50 -35
  189. package/dist/server/threads/manageThreads.js.map +1 -1
  190. package/dist/server/threads/socketRouter.d.ts +1 -1
  191. package/dist/sqlTranslator/deleteTranslator.d.ts +1 -1
  192. package/dist/utility/AWS/AWSConnector.d.ts +3 -2
  193. package/dist/utility/common_utils.d.ts +3 -3
  194. package/dist/utility/environment/systemInformation.d.ts +1 -0
  195. package/dist/utility/functions/date/dateFunctions.d.ts +11 -11
  196. package/dist/utility/globalSchema.d.ts +1 -1
  197. package/dist/utility/hdbTerms.d.ts +3 -0
  198. package/dist/utility/hdbTerms.js +3 -0
  199. package/dist/utility/hdbTerms.js.map +1 -1
  200. package/dist/utility/installation.d.ts +2 -4
  201. package/dist/utility/installation.js.map +1 -1
  202. package/dist/utility/lmdb/commonUtility.d.ts +1 -0
  203. package/dist/utility/lmdb/deleteUtility.d.ts +1 -0
  204. package/dist/utility/lmdb/environmentUtility.d.ts +1 -0
  205. package/dist/utility/lmdb/searchUtility.d.ts +2 -1
  206. package/dist/utility/lmdb/writeUtility.d.ts +1 -0
  207. package/dist/utility/logging/harper_logger.d.ts +6 -6
  208. package/dist/utility/processManagement/processManagement.d.ts +1 -1
  209. package/dist/utility/processManagement/servicesConfig.d.ts +12 -6
  210. package/dist/validation/common_validators.d.ts +4 -3
  211. package/dist/validation/configValidator.d.ts +3 -2
  212. package/index.d.ts +56 -0
  213. package/index.js +41 -0
  214. package/json/systemSchema.json +373 -0
  215. package/launchServiceScripts/launchHarperDB.js +3 -0
  216. package/launchServiceScripts/utility/checkNodeVersion.js +15 -0
  217. package/package.json +21 -3
  218. package/resources/DatabaseTransaction.ts +378 -0
  219. package/resources/ErrorResource.ts +57 -0
  220. package/resources/IterableEventQueue.ts +94 -0
  221. package/resources/LMDBTransaction.ts +349 -0
  222. package/resources/RecordEncoder.ts +702 -0
  223. package/resources/RequestTarget.ts +134 -0
  224. package/resources/Resource.ts +789 -0
  225. package/resources/ResourceInterface.ts +221 -0
  226. package/resources/ResourceInterfaceV2.ts +53 -0
  227. package/resources/ResourceV2.ts +67 -0
  228. package/resources/Resources.ts +162 -0
  229. package/resources/RocksIndexStore.ts +70 -0
  230. package/resources/RocksTransactionLogStore.ts +352 -0
  231. package/resources/Table.ts +4527 -0
  232. package/resources/analytics/hostnames.ts +72 -0
  233. package/resources/analytics/metadata.ts +10 -0
  234. package/resources/analytics/read.ts +252 -0
  235. package/resources/analytics/write.ts +803 -0
  236. package/resources/auditStore.ts +556 -0
  237. package/resources/blob.ts +1268 -0
  238. package/resources/crdt.ts +125 -0
  239. package/resources/dataLoader.ts +527 -0
  240. package/resources/databases.ts +1290 -0
  241. package/resources/graphql.ts +221 -0
  242. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +638 -0
  243. package/resources/indexes/customIndexes.ts +7 -0
  244. package/resources/indexes/vector.ts +38 -0
  245. package/resources/jsResource.ts +86 -0
  246. package/resources/loadEnv.ts +22 -0
  247. package/resources/login.ts +18 -0
  248. package/resources/openApi.ts +409 -0
  249. package/resources/registrationDeprecated.ts +8 -0
  250. package/resources/replayLogs.ts +136 -0
  251. package/resources/roles.ts +98 -0
  252. package/resources/search.ts +1301 -0
  253. package/resources/tracked.ts +584 -0
  254. package/resources/transaction.ts +89 -0
  255. package/resources/transactionBroadcast.ts +258 -0
  256. package/security/auth.ts +376 -0
  257. package/security/certificateVerification/certificateVerificationSource.ts +84 -0
  258. package/security/certificateVerification/configValidation.ts +107 -0
  259. package/security/certificateVerification/crlVerification.ts +623 -0
  260. package/security/certificateVerification/index.ts +121 -0
  261. package/security/certificateVerification/ocspVerification.ts +148 -0
  262. package/security/certificateVerification/pkijs-ed25519-patch.ts +188 -0
  263. package/security/certificateVerification/types.ts +128 -0
  264. package/security/certificateVerification/verificationConfig.ts +138 -0
  265. package/security/certificateVerification/verificationUtils.ts +447 -0
  266. package/security/cryptoHash.js +42 -0
  267. package/security/data_objects/PermissionAttributeResponseObject.js +15 -0
  268. package/security/data_objects/PermissionResponseObject.js +115 -0
  269. package/security/data_objects/PermissionTableResponseObject.js +20 -0
  270. package/security/fastifyAuth.js +169 -0
  271. package/security/impersonation.ts +160 -0
  272. package/security/jsLoader.ts +716 -0
  273. package/security/keys.js +948 -0
  274. package/security/permissionsTranslator.js +300 -0
  275. package/security/role.js +218 -0
  276. package/security/tokenAuthentication.ts +228 -0
  277. package/security/user.ts +449 -0
  278. package/server/DurableSubscriptionsSession.ts +503 -0
  279. package/server/REST.ts +407 -0
  280. package/server/Server.ts +89 -0
  281. package/server/fastifyRoutes/helpers/getCORSOptions.js +36 -0
  282. package/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +15 -0
  283. package/server/fastifyRoutes/helpers/getServerOptions.js +33 -0
  284. package/server/fastifyRoutes/plugins/hdbCore.js +39 -0
  285. package/server/fastifyRoutes.ts +205 -0
  286. package/server/graphqlQuerying.ts +700 -0
  287. package/server/http.ts +640 -0
  288. package/server/itc/serverHandlers.js +161 -0
  289. package/server/itc/utility/ITCEventObject.js +10 -0
  290. package/server/jobs/JobObject.js +24 -0
  291. package/server/jobs/jobProcess.js +69 -0
  292. package/server/jobs/jobRunner.js +162 -0
  293. package/server/jobs/jobs.js +304 -0
  294. package/server/loadRootComponents.js +44 -0
  295. package/server/mqtt.ts +485 -0
  296. package/server/nodeName.ts +75 -0
  297. package/server/operationsServer.ts +313 -0
  298. package/server/serverHelpers/Headers.ts +108 -0
  299. package/server/serverHelpers/JSONStream.ts +269 -0
  300. package/server/serverHelpers/OperationFunctionObject.ts +13 -0
  301. package/server/serverHelpers/Request.ts +158 -0
  302. package/server/serverHelpers/contentTypes.ts +637 -0
  303. package/server/serverHelpers/requestTimePlugin.js +57 -0
  304. package/server/serverHelpers/serverHandlers.js +148 -0
  305. package/server/serverHelpers/serverUtilities.ts +473 -0
  306. package/server/serverRegistry.ts +8 -0
  307. package/server/static.ts +187 -0
  308. package/server/status/definitions.ts +37 -0
  309. package/server/status/index.ts +125 -0
  310. package/server/storageReclamation.ts +93 -0
  311. package/server/threads/itc.js +89 -0
  312. package/server/threads/manageThreads.js +594 -0
  313. package/server/threads/socketRouter.ts +360 -0
  314. package/server/threads/threadServer.js +279 -0
  315. package/server/throttle.ts +73 -0
  316. package/sqlTranslator/SelectValidator.js +330 -0
  317. package/sqlTranslator/alasqlFunctionImporter.js +62 -0
  318. package/sqlTranslator/deleteTranslator.js +67 -0
  319. package/sqlTranslator/index.js +242 -0
  320. package/sqlTranslator/sql_statement_bucket.js +472 -0
  321. package/static/defaultConfig.yaml +3 -0
  322. package/studio/web/HDBDogOnly.svg +78 -0
  323. package/studio/web/assets/PPRadioGrotesk-Bold-DDaUYG8E.woff +0 -0
  324. package/studio/web/assets/fa-brands-400-CEJbCg16.woff +0 -0
  325. package/studio/web/assets/fa-brands-400-CSYNqBb_.ttf +0 -0
  326. package/studio/web/assets/fa-brands-400-DnkPfk3o.eot +0 -0
  327. package/studio/web/assets/fa-brands-400-UxlILjvJ.woff2 +0 -0
  328. package/studio/web/assets/fa-brands-400-cH1MgKbP.svg +3717 -0
  329. package/studio/web/assets/fa-regular-400-BhTwtT8w.eot +0 -0
  330. package/studio/web/assets/fa-regular-400-D1vz6WBx.ttf +0 -0
  331. package/studio/web/assets/fa-regular-400-DFnMcJPd.woff +0 -0
  332. package/studio/web/assets/fa-regular-400-DGzu1beS.woff2 +0 -0
  333. package/studio/web/assets/fa-regular-400-gwj8Pxq-.svg +801 -0
  334. package/studio/web/assets/fa-solid-900-B4ZZ7kfP.svg +5034 -0
  335. package/studio/web/assets/fa-solid-900-B6Axprfb.eot +0 -0
  336. package/studio/web/assets/fa-solid-900-BUswJgRo.woff2 +0 -0
  337. package/studio/web/assets/fa-solid-900-DOXgCApm.woff +0 -0
  338. package/studio/web/assets/fa-solid-900-mxuxnBEa.ttf +0 -0
  339. package/studio/web/assets/index-BTgXJX9d.js +235 -0
  340. package/studio/web/assets/index-BTgXJX9d.js.map +1 -0
  341. package/studio/web/assets/index-C-GXfcup.js +37 -0
  342. package/studio/web/assets/index-C-GXfcup.js.map +1 -0
  343. package/studio/web/assets/index-PFlNdimM.js +2 -0
  344. package/studio/web/assets/index-PFlNdimM.js.map +1 -0
  345. package/studio/web/assets/index-Y2g_iFpU.css +1 -0
  346. package/studio/web/assets/index-jiPwkrsB.css +1 -0
  347. package/studio/web/assets/index.lazy-C3TJZJ4o.js +266 -0
  348. package/studio/web/assets/index.lazy-C3TJZJ4o.js.map +1 -0
  349. package/studio/web/assets/profiler-DotzgiCJ.js +2 -0
  350. package/studio/web/assets/profiler-DotzgiCJ.js.map +1 -0
  351. package/studio/web/assets/react-redux-VxUEx_mU.js +6 -0
  352. package/studio/web/assets/react-redux-VxUEx_mU.js.map +1 -0
  353. package/studio/web/assets/startRecording-B_9J9Csd.js +3 -0
  354. package/studio/web/assets/startRecording-B_9J9Csd.js.map +1 -0
  355. package/studio/web/fabric-signup-background.webp +0 -0
  356. package/studio/web/fabric-signup-text.png +0 -0
  357. package/studio/web/favicon_purple.png +0 -0
  358. package/studio/web/github-icon.svg +15 -0
  359. package/studio/web/harper-fabric_black.png +0 -0
  360. package/studio/web/harper-fabric_white.png +0 -0
  361. package/studio/web/harper-studio_white.png +0 -0
  362. package/studio/web/index.html +16 -0
  363. package/studio/web/running.css +148 -0
  364. package/studio/web/running.html +147 -0
  365. package/studio/web/running.js +111 -0
  366. package/upgrade/UpgradeObjects.js +13 -0
  367. package/upgrade/directives/directivesController.js +90 -0
  368. package/upgrade/directivesManager.js +139 -0
  369. package/upgrade/upgradePrompt.js +124 -0
  370. package/upgrade/upgradeUtilities.js +28 -0
  371. package/utility/AWS/AWSConnector.js +29 -0
  372. package/utility/OperationFunctionCaller.js +63 -0
  373. package/utility/assignCmdEnvVariables.js +62 -0
  374. package/utility/common_utils.js +867 -0
  375. package/utility/environment/environmentManager.js +208 -0
  376. package/utility/environment/systemInformation.js +355 -0
  377. package/utility/errors/commonErrors.js +267 -0
  378. package/utility/errors/hdbError.js +146 -0
  379. package/utility/functions/date/dateFunctions.js +65 -0
  380. package/utility/functions/geo.js +355 -0
  381. package/utility/functions/sql/alaSQLExtension.js +104 -0
  382. package/utility/globalSchema.js +35 -0
  383. package/utility/hdbTerms.ts +819 -0
  384. package/utility/install/checkJWTTokensExist.js +62 -0
  385. package/utility/install/harperdb.conf +15 -0
  386. package/utility/install/harperdb.service +14 -0
  387. package/utility/install/installer.js +635 -0
  388. package/utility/installation.ts +30 -0
  389. package/utility/lmdb/DBIDefinition.js +20 -0
  390. package/utility/lmdb/DeleteRecordsResponseObject.js +25 -0
  391. package/utility/lmdb/InsertRecordsResponseObject.js +22 -0
  392. package/utility/lmdb/OpenDBIObject.js +31 -0
  393. package/utility/lmdb/OpenEnvironmentObject.js +41 -0
  394. package/utility/lmdb/UpdateRecordsResponseObject.js +25 -0
  395. package/utility/lmdb/UpsertRecordsResponseObject.js +22 -0
  396. package/utility/lmdb/cleanLMDBMap.js +65 -0
  397. package/utility/lmdb/commonUtility.js +119 -0
  398. package/utility/lmdb/deleteUtility.js +128 -0
  399. package/utility/lmdb/environmentUtility.js +477 -0
  400. package/utility/lmdb/searchCursorFunctions.js +187 -0
  401. package/utility/lmdb/searchUtility.js +918 -0
  402. package/utility/lmdb/terms.js +57 -0
  403. package/utility/lmdb/writeUtility.js +407 -0
  404. package/utility/logging/harper_logger.js +876 -0
  405. package/utility/logging/logRotator.js +157 -0
  406. package/utility/logging/logger.ts +24 -0
  407. package/utility/logging/readLog.js +355 -0
  408. package/utility/logging/transactionLog.js +57 -0
  409. package/utility/mount_hdb.js +59 -0
  410. package/utility/npmUtilities.js +102 -0
  411. package/utility/operationPermissions.ts +112 -0
  412. package/utility/operation_authorization.js +836 -0
  413. package/utility/packageUtils.js +55 -0
  414. package/utility/password.ts +99 -0
  415. package/utility/processManagement/processManagement.js +187 -0
  416. package/utility/processManagement/servicesConfig.js +56 -0
  417. package/utility/scripts/restartHdb.js +24 -0
  418. package/utility/scripts/user_data.sh +13 -0
  419. package/utility/signalling.js +36 -0
  420. package/utility/terms/certificates.js +81 -0
  421. package/utility/when.ts +20 -0
  422. package/v1.d.ts +39 -0
  423. package/v1.js +41 -0
  424. package/v2.d.ts +39 -0
  425. package/v2.js +41 -0
  426. package/validation/bulkDeleteValidator.js +24 -0
  427. package/validation/check_permissions.js +19 -0
  428. package/validation/common_validators.js +95 -0
  429. package/validation/configValidator.js +331 -0
  430. package/validation/deleteValidator.js +15 -0
  431. package/validation/fileLoadValidator.js +153 -0
  432. package/validation/insertValidator.js +40 -0
  433. package/validation/installValidator.js +37 -0
  434. package/validation/readLogValidator.js +64 -0
  435. package/validation/role_validation.js +320 -0
  436. package/validation/schemaMetadataValidator.js +42 -0
  437. package/validation/searchValidator.js +166 -0
  438. package/validation/statusValidator.ts +66 -0
  439. package/validation/transactionLogValidator.js +33 -0
  440. package/validation/user_validation.js +55 -0
  441. package/validation/validationWrapper.js +105 -0
  442. package/dist/resources/analytics/profile.d.ts +0 -2
  443. package/dist/resources/analytics/profile.js +0 -144
  444. package/dist/resources/analytics/profile.js.map +0 -1
@@ -0,0 +1,148 @@
1
+ 'use strict';
2
+
3
+ const terms = require('../../utility/hdbTerms.ts');
4
+ const hdbUtil = require('../../utility/common_utils.js');
5
+ const harperLogger = require('../../utility/logging/harper_logger.js');
6
+ const { handleHDBError, hdbErrors } = require('../../utility/errors/hdbError.js');
7
+ const { isMainThread } = require('worker_threads');
8
+ const { Readable } = require('stream');
9
+
10
+ const os = require('os');
11
+ const util = require('util');
12
+
13
+ const auth = require('../../security/fastifyAuth.js');
14
+ const pAuthorize = util.promisify(auth.authorize);
15
+ const serverUtilities = require('./serverUtilities.ts');
16
+ const { applyImpersonation } = require('../../security/impersonation.ts');
17
+ const { createGzip, constants } = require('zlib');
18
+
19
+ const NO_AUTH_OPERATIONS = [
20
+ terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS,
21
+ terms.OPERATIONS_ENUM.LOGIN,
22
+ terms.OPERATIONS_ENUM.LOGOUT,
23
+ ];
24
+
25
+ function handleServerUncaughtException(err) {
26
+ let message = `Found an uncaught exception with message: ${err.message}. ${os.EOL}Stack: ${err.stack} ${
27
+ os.EOL
28
+ }Terminating ${isMainThread ? 'HDB' : 'thread'}.`;
29
+ console.error(message);
30
+ harperLogger.fatal(message);
31
+ process.exit(1);
32
+ }
33
+
34
+ function serverErrorHandler(error, req, resp) {
35
+ harperLogger[error.logLevel || 'info'](error);
36
+ if (error.statusCode) {
37
+ if (typeof error.http_resp_msg !== 'object') {
38
+ return resp.code(error.statusCode).send({ error: error.http_resp_msg || error.message });
39
+ }
40
+ return resp.code(error.statusCode).send(error.http_resp_msg);
41
+ }
42
+ const statusCode = error.statusCode ? error.statusCode : hdbErrors.HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR;
43
+ if (typeof error === 'string') {
44
+ return resp.code(statusCode).send({ error: error });
45
+ }
46
+ return resp.code(statusCode).send(error.message ? { error: error.message } : error);
47
+ }
48
+
49
+ function reqBodyValidationHandler(req, resp, done) {
50
+ if (!req.body || Object.keys(req.body).length === 0 || typeof req.body !== 'object') {
51
+ const validationErr = handleHDBError(new Error(), 'Invalid JSON.', hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST);
52
+ done(validationErr, null);
53
+ }
54
+ if (hdbUtil.isEmpty(req.body.operation)) {
55
+ const validationErr = handleHDBError(
56
+ new Error(),
57
+ "Request body must include an 'operation' property.",
58
+ hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST
59
+ );
60
+ done(validationErr, null);
61
+ }
62
+ done();
63
+ }
64
+
65
+ function authHandler(req, resp, done) {
66
+ let user;
67
+
68
+ const isAuthOperation = !NO_AUTH_OPERATIONS.includes(req.body.operation);
69
+ if (
70
+ isAuthOperation ||
71
+ // If create token is called without username/password in the body it needs to be authorized
72
+ (req.body.operation === terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS &&
73
+ !req.body.username &&
74
+ !req.body.password)
75
+ ) {
76
+ pAuthorize(req, resp)
77
+ .then(async (userData) => {
78
+ user = userData;
79
+ req.body.hdb_user = user;
80
+ if (req.body.impersonate) {
81
+ req.body.hdb_user = await applyImpersonation(user, req.body.impersonate);
82
+ delete req.body.impersonate;
83
+ }
84
+ done();
85
+ })
86
+ .catch((err) => {
87
+ err.statusCode = 401;
88
+ harperLogger.debug('Login failed', err);
89
+ done(err, null);
90
+ });
91
+ } else {
92
+ req.body.hdb_user = null;
93
+ req.body.baseRequest = req.raw?.baseRequest;
94
+ req.body.baseResponse = resp.raw?.baseResponse;
95
+ req.body.fastifyResponse = resp;
96
+ done();
97
+ }
98
+ }
99
+
100
+ function authAndEnsureUserOnRequest(req, resp, done) {
101
+ pAuthorize(req, resp)
102
+ .then((userData) => {
103
+ req.hdb_user = userData;
104
+ done();
105
+ })
106
+ .catch((err) => {
107
+ harperLogger.warn(err);
108
+ harperLogger.warn(`{"ip":"${req.socket?.remoteAddress}", "error":"${err.stack}"`);
109
+ let errMsg = typeof err === 'string' ? { error: err } : { error: err.message };
110
+ done(handleHDBError(err, errMsg, hdbErrors.HTTP_STATUS_CODES.UNAUTHORIZED), null);
111
+ });
112
+ }
113
+
114
+ async function handlePostRequest(req, res, _bypassAuth = false) {
115
+ let operation_function;
116
+
117
+ try {
118
+ // Just in case someone tries to bypass auth
119
+ if (req.body.bypass_auth) delete req.body.bypass_auth;
120
+
121
+ operation_function = serverUtilities.chooseOperation(req.body);
122
+ let result = await serverUtilities.processLocalTransaction(req, operation_function);
123
+ if (result instanceof Readable && result.headers) {
124
+ for (let [name, value] of result.headers) {
125
+ res.header(name, value);
126
+ }
127
+ // fastify-compress has one job. I don't know why it can't do it. So we compress here to
128
+ // handle the case of returning a stream
129
+ if (req.headers['accept-encoding']?.includes('gzip')) {
130
+ res.header('content-encoding', 'gzip');
131
+ result = result.pipe(createGzip({ level: constants.Z_BEST_SPEED })); // go fast
132
+ }
133
+ }
134
+ return result;
135
+ } catch (error) {
136
+ harperLogger.error(error);
137
+ throw error;
138
+ }
139
+ }
140
+
141
+ module.exports = {
142
+ authHandler,
143
+ authAndEnsureUserOnRequest,
144
+ handlePostRequest,
145
+ handleServerUncaughtException,
146
+ serverErrorHandler,
147
+ reqBodyValidationHandler,
148
+ };
@@ -0,0 +1,473 @@
1
+ import search from '../../dataLayer/search.js';
2
+ import bulkLoad from '../../dataLayer/bulkLoad.js';
3
+ import schema from '../../dataLayer/schema.js';
4
+ import schemaDescribe from '../../dataLayer/schemaDescribe.js';
5
+ import delete_ from '../../dataLayer/delete.js';
6
+ import readAuditLog from '../../dataLayer/readAuditLog.js';
7
+ import * as user from '../../security/user.ts';
8
+ import role from '../../security/role.js';
9
+ import customFunctionOperations from '../../components/operations.js';
10
+ import harperLogger from '../../utility/logging/harper_logger.js';
11
+ import readLog from '../../utility/logging/readLog.js';
12
+ import export_ from '../../dataLayer/export.js';
13
+ import opAuth from '../../utility/operation_authorization.js';
14
+ import jobs from '../jobs/jobs.js';
15
+ import * as terms from '../../utility/hdbTerms.ts';
16
+ import { hdbErrors, handleHDBError } from '../../utility/errors/hdbError.js';
17
+ const { HTTP_STATUS_CODES } = hdbErrors;
18
+ import restart from '../../bin/restart.js';
19
+ import * as util from 'util';
20
+ import insert from '../../dataLayer/insert.js';
21
+ import globalSchema from '../../utility/globalSchema.js';
22
+ import systemInformation from '../../utility/environment/systemInformation.js';
23
+ import jobRunner from '../jobs/jobRunner.js';
24
+ import * as tokenAuthentication from '../../security/tokenAuthentication.ts';
25
+ import * as auth from '../../security/auth.ts';
26
+ import configUtils from '../../config/configUtils.js';
27
+ import transactionLog from '../../utility/logging/transactionLog.js';
28
+ import npmUtilities from '../../utility/npmUtilities.js';
29
+ import { _assignPackageExport } from '../../globals.js';
30
+ import { transformReq } from '../../utility/common_utils.js';
31
+ import { server } from '../Server.ts';
32
+ const operationLog = harperLogger.loggerWithTag('operation');
33
+ import * as analytics from '../../resources/analytics/read.ts';
34
+ import operationFunctionCaller from '../../utility/OperationFunctionCaller.js';
35
+ import type { OperationRequest, OperationRequestBody } from '../operationsServer.ts';
36
+ import type { Context } from '../../resources/ResourceInterface.ts';
37
+ import * as status from '../status/index.ts';
38
+ import * as regDeprecated from '../../resources/registrationDeprecated.ts';
39
+
40
+ const pSearchSearch = util.promisify(search.search);
41
+ let pEvaluateSql: (sql: string) => Promise<any>;
42
+ function evaluateSQL(command) {
43
+ if (!pEvaluateSql) {
44
+ const sql = require('../../sqlTranslator/index.js');
45
+ pEvaluateSql = util.promisify(sql.evaluateSQL);
46
+ }
47
+ return pEvaluateSql(command);
48
+ }
49
+
50
+ const GLOBAL_SCHEMA_UPDATE_OPERATIONS_ENUM = {
51
+ [terms.OPERATIONS_ENUM.CREATE_ATTRIBUTE]: true,
52
+ [terms.OPERATIONS_ENUM.CREATE_TABLE]: true,
53
+ [terms.OPERATIONS_ENUM.CREATE_SCHEMA]: true,
54
+ [terms.OPERATIONS_ENUM.DROP_ATTRIBUTE]: true,
55
+ [terms.OPERATIONS_ENUM.DROP_TABLE]: true,
56
+ [terms.OPERATIONS_ENUM.DROP_SCHEMA]: true,
57
+ };
58
+
59
+ import { OperationFunctionObject } from './OperationFunctionObject.ts';
60
+
61
+ type ValueOf<T> = T[keyof T];
62
+ export type OperationFunctionName = ValueOf<typeof terms.OPERATIONS_ENUM>;
63
+
64
+ /**
65
+ * This will process a command message on this receiving node rather than sending it to a remote node. NOTE: this function
66
+ * handles the response to the sender.
67
+ */
68
+ // TODO: Replace Function type with an actual function type (e.g. (): Thingy)
69
+ export async function processLocalTransaction(req: OperationRequest, operationFunction: Function) {
70
+ try {
71
+ if (
72
+ req.body.operation !== 'read_log' &&
73
+ (harperLogger.log_level === terms.LOG_LEVELS.INFO ||
74
+ harperLogger.log_level === terms.LOG_LEVELS.DEBUG ||
75
+ harperLogger.log_level === terms.LOG_LEVELS.TRACE)
76
+ ) {
77
+ // Need to remove auth variables, but we don't want to create an object unless
78
+ // the logging is actually going to happen.
79
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
80
+ const { hdb_user, hdbAuthHeader, password, payload, ...cleanBody } = req.body;
81
+ operationLog.info(cleanBody);
82
+ }
83
+ } catch (e) {
84
+ operationLog.error(e);
85
+ }
86
+
87
+ let data = await operationFunctionCaller.callOperationFunctionAsAwait(operationFunction, req.body, null);
88
+
89
+ if (typeof data !== 'object') {
90
+ data = { message: data };
91
+ }
92
+ if (data instanceof Error) {
93
+ throw data;
94
+ }
95
+ if (GLOBAL_SCHEMA_UPDATE_OPERATIONS_ENUM[req.body.operation]) {
96
+ globalSchema.setSchemaDataToGlobal((err: Error) => {
97
+ if (err) {
98
+ operationLog.error(err);
99
+ }
100
+ });
101
+ }
102
+
103
+ return data;
104
+ }
105
+
106
+ const OPERATION_FUNCTION_MAP = initializeOperationFunctionMap();
107
+
108
+ server.operation = operation;
109
+ export type OperationDefinition = {
110
+ name: string;
111
+ execute: (operation: any) => any | Promise<any>;
112
+ httpMethod?: 'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'PATCH' | 'POST' | 'PUT' | 'TRACE'; // method to use for REST
113
+ isJob?: boolean;
114
+ };
115
+
116
+ /**
117
+ * Register an operation function with the server.
118
+ * @param operationDefinition
119
+ */
120
+ server.registerOperation = (operationDefinition: OperationDefinition) => {
121
+ OPERATION_FUNCTION_MAP.set(operationDefinition.name, new OperationFunctionObject(operationDefinition.execute));
122
+ };
123
+
124
+ export function chooseOperation(json: OperationRequestBody) {
125
+ let getOpResult: OperationFunctionObject;
126
+ try {
127
+ getOpResult = getOperationFunction(json);
128
+ } catch (err) {
129
+ operationLog.error(`Error when selecting operation function - ${err}`);
130
+ throw err;
131
+ }
132
+
133
+ const { operation_function, job_operation_function } = getOpResult;
134
+
135
+ // Here there is a SQL statement in either the operation or the searchOperation (from jobs like export_local). Need to check the perms
136
+ // on all affected tables/attributes.
137
+ try {
138
+ if (json.operation === 'sql' || (json.search_operation && json.search_operation.operation === 'sql')) {
139
+ const sql = require('../../sqlTranslator/index.js');
140
+ const sqlStatement = json.operation === 'sql' ? json.sql : json.search_operation.sql;
141
+ const parsedSqlObject = sql.convertSQLToAST(sqlStatement);
142
+ json.parsed_sql_object = parsedSqlObject;
143
+ if (!json.bypass_auth) {
144
+ const astPermCheck = sql.checkASTPermissions(json, parsedSqlObject);
145
+ if (astPermCheck) {
146
+ operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
147
+ operationLog.warn(`User '${json.hdb_user?.username}' is not permitted to ${json.operation}`);
148
+ throw handleHDBError(
149
+ new Error(),
150
+ astPermCheck,
151
+ hdbErrors.HTTP_STATUS_CODES.FORBIDDEN,
152
+ undefined,
153
+ undefined,
154
+ true
155
+ );
156
+ }
157
+ }
158
+ //we need to bypass permission checks to allow the createAuthorizationTokens
159
+ } else if (
160
+ !json.bypass_auth &&
161
+ json.operation !== terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS &&
162
+ json.operation !== terms.OPERATIONS_ENUM.LOGIN &&
163
+ json.operation !== terms.OPERATIONS_ENUM.LOGOUT
164
+ ) {
165
+ const functionToCheck = job_operation_function === undefined ? operation_function : job_operation_function;
166
+ const operation_json = json.search_operation ? json.search_operation : json;
167
+ if (!operation_json.hdb_user) {
168
+ operation_json.hdb_user = json.hdb_user;
169
+ }
170
+
171
+ const verifyPermsResult = opAuth.verifyPerms(operation_json, functionToCheck);
172
+
173
+ if (verifyPermsResult) {
174
+ operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
175
+ operationLog.warn(
176
+ `User '${operation_json.hdb_user?.username}' is not permitted to ${operation_json.operation}`
177
+ );
178
+ throw handleHDBError(
179
+ new Error(),
180
+ verifyPermsResult,
181
+ hdbErrors.HTTP_STATUS_CODES.FORBIDDEN,
182
+ undefined,
183
+ false,
184
+ true
185
+ );
186
+ }
187
+ }
188
+ } catch (err) {
189
+ throw handleHDBError(err, `There was an error when trying to choose an operation path`);
190
+ }
191
+ return operation_function;
192
+ }
193
+
194
+ export function getOperationFunction(json: OperationRequestBody): OperationFunctionObject {
195
+ operationLog.trace(`getOperationFunction with operation: ${json.operation}`);
196
+
197
+ if (OPERATION_FUNCTION_MAP.has(json.operation)) {
198
+ return OPERATION_FUNCTION_MAP.get(json.operation);
199
+ }
200
+
201
+ throw handleHDBError(
202
+ new Error(),
203
+ hdbErrors.HDB_ERROR_MSGS.OP_NOT_FOUND(json.operation),
204
+ hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST,
205
+ undefined,
206
+ undefined,
207
+ true
208
+ );
209
+ }
210
+
211
+ _assignPackageExport('operation', operation);
212
+ /**
213
+ * Standalone function to execute an operation
214
+ */
215
+ export function operation(operation: OperationRequestBody, context: Context, authorize: boolean) {
216
+ operation.hdb_user = context?.user;
217
+ operation.bypass_auth = !authorize;
218
+ const operation_function = chooseOperation(operation);
219
+ return processLocalTransaction({ body: operation }, operation_function);
220
+ }
221
+
222
+ interface Transaction {
223
+ schema: string;
224
+ table: string;
225
+ operation: OperationFunctionName;
226
+ }
227
+
228
+ interface TransactionWrapper {
229
+ channel: string;
230
+ transactions: Transaction[];
231
+ }
232
+
233
+ interface CatchupOperationRequest extends OperationRequestBody {
234
+ transaction: TransactionWrapper;
235
+ }
236
+
237
+ async function catchup(req: CatchupOperationRequest) {
238
+ operationLog.trace('In serverUtils.catchup');
239
+ const catchupObject = req.transaction;
240
+ const splitChannel = catchupObject.channel.split(':');
241
+
242
+ const _schema = splitChannel[0];
243
+ const table = splitChannel[1];
244
+ for (const transaction of catchupObject.transactions) {
245
+ try {
246
+ transaction.schema = _schema;
247
+ transaction.table = table;
248
+ switch (transaction.operation) {
249
+ case terms.OPERATIONS_ENUM.INSERT:
250
+ await insert.insert(transaction);
251
+ break;
252
+ case terms.OPERATIONS_ENUM.UPDATE:
253
+ await insert.update(transaction);
254
+ break;
255
+ case terms.OPERATIONS_ENUM.UPSERT:
256
+ await insert.upsert(transaction);
257
+ break;
258
+ case terms.OPERATIONS_ENUM.DELETE:
259
+ await delete_.deleteRecord(transaction);
260
+ break;
261
+ default:
262
+ operationLog.warn('invalid operation in catchup');
263
+ break;
264
+ }
265
+ } catch (e) {
266
+ operationLog.info('Invalid operation in transaction');
267
+ operationLog.error(e);
268
+ }
269
+ }
270
+ }
271
+
272
+ interface JobResult {
273
+ message: string;
274
+ job_id: string;
275
+ }
276
+
277
+ export async function executeJob(json: OperationRequestBody): Promise<JobResult> {
278
+ transformReq(json);
279
+
280
+ let newJobObject;
281
+ let result;
282
+ try {
283
+ result = await jobs.addJob(json);
284
+ if (result) {
285
+ newJobObject = result.createdJob;
286
+ operationLog.info('addJob result', result);
287
+ const jobRunnerMessage = new jobRunner.RunnerMessage(newJobObject, json);
288
+ const returnMessage = await jobRunner.parseMessage(jobRunnerMessage);
289
+
290
+ return {
291
+ message: returnMessage ?? `Starting job with id ${newJobObject.id}`,
292
+ job_id: newJobObject.id,
293
+ };
294
+ }
295
+ } catch (err) {
296
+ const error = err instanceof Error ? err : null;
297
+ const message = `There was an error executing job: ${error && 'http_resp_msg' in error ? error.http_resp_msg : err}`;
298
+ operationLog.error(message);
299
+ throw handleHDBError(err, message);
300
+ }
301
+ }
302
+
303
+ function initializeOperationFunctionMap(): Map<OperationFunctionName, OperationFunctionObject> {
304
+ const opFuncMap = new Map<OperationFunctionName, OperationFunctionObject>();
305
+
306
+ opFuncMap.set(terms.OPERATIONS_ENUM.INSERT, new OperationFunctionObject(insert.insert));
307
+ opFuncMap.set(terms.OPERATIONS_ENUM.UPDATE, new OperationFunctionObject(insert.update));
308
+ opFuncMap.set(terms.OPERATIONS_ENUM.UPSERT, new OperationFunctionObject(insert.upsert));
309
+ opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH_BY_CONDITIONS, new OperationFunctionObject(search.searchByConditions));
310
+ opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH_BY_HASH, new OperationFunctionObject(search.searchByHash));
311
+ opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH_BY_ID, new OperationFunctionObject(search.searchByHash));
312
+ opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH_BY_VALUE, new OperationFunctionObject(search.searchByValue));
313
+ opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH, new OperationFunctionObject(pSearchSearch));
314
+ opFuncMap.set(terms.OPERATIONS_ENUM.SQL, new OperationFunctionObject(evaluateSQL));
315
+ opFuncMap.set(terms.OPERATIONS_ENUM.CSV_DATA_LOAD, new OperationFunctionObject(executeJob, bulkLoad.csvDataLoad));
316
+ opFuncMap.set(terms.OPERATIONS_ENUM.CSV_FILE_LOAD, new OperationFunctionObject(executeJob, bulkLoad.csvFileLoad));
317
+ opFuncMap.set(terms.OPERATIONS_ENUM.CSV_URL_LOAD, new OperationFunctionObject(executeJob, bulkLoad.csvURLLoad));
318
+ opFuncMap.set(terms.OPERATIONS_ENUM.IMPORT_FROM_S3, new OperationFunctionObject(executeJob, bulkLoad.importFromS3));
319
+ opFuncMap.set(terms.OPERATIONS_ENUM.CREATE_SCHEMA, new OperationFunctionObject(schema.createSchema));
320
+ opFuncMap.set(terms.OPERATIONS_ENUM.CREATE_DATABASE, new OperationFunctionObject(schema.createSchema));
321
+ opFuncMap.set(terms.OPERATIONS_ENUM.CREATE_TABLE, new OperationFunctionObject(schema.createTable));
322
+ opFuncMap.set(terms.OPERATIONS_ENUM.CREATE_ATTRIBUTE, new OperationFunctionObject(schema.createAttribute));
323
+ opFuncMap.set(terms.OPERATIONS_ENUM.DROP_SCHEMA, new OperationFunctionObject(schema.dropSchema));
324
+ opFuncMap.set(terms.OPERATIONS_ENUM.DROP_DATABASE, new OperationFunctionObject(schema.dropSchema));
325
+ opFuncMap.set(terms.OPERATIONS_ENUM.DROP_TABLE, new OperationFunctionObject(schema.dropTable));
326
+ opFuncMap.set(terms.OPERATIONS_ENUM.DROP_ATTRIBUTE, new OperationFunctionObject(schema.dropAttribute));
327
+ opFuncMap.set(terms.OPERATIONS_ENUM.DESCRIBE_SCHEMA, new OperationFunctionObject(schemaDescribe.describeSchema));
328
+ opFuncMap.set(terms.OPERATIONS_ENUM.DESCRIBE_DATABASE, new OperationFunctionObject(schemaDescribe.describeSchema));
329
+ opFuncMap.set(terms.OPERATIONS_ENUM.DESCRIBE_TABLE, new OperationFunctionObject(schemaDescribe.describeTable));
330
+ opFuncMap.set(terms.OPERATIONS_ENUM.DESCRIBE_ALL, new OperationFunctionObject(schemaDescribe.describeAll));
331
+ opFuncMap.set(terms.OPERATIONS_ENUM.DELETE, new OperationFunctionObject(delete_.deleteRecord));
332
+ opFuncMap.set(terms.OPERATIONS_ENUM.ADD_USER, new OperationFunctionObject(user.addUser));
333
+ opFuncMap.set(terms.OPERATIONS_ENUM.ALTER_USER, new OperationFunctionObject(user.alterUser));
334
+ opFuncMap.set(terms.OPERATIONS_ENUM.DROP_USER, new OperationFunctionObject(user.dropUser));
335
+ opFuncMap.set(terms.OPERATIONS_ENUM.LIST_USERS, new OperationFunctionObject(user.listUsersExternal));
336
+ opFuncMap.set(terms.OPERATIONS_ENUM.LIST_ROLES, new OperationFunctionObject(role.listRoles));
337
+ opFuncMap.set(terms.OPERATIONS_ENUM.ADD_ROLE, new OperationFunctionObject(role.addRole));
338
+ opFuncMap.set(terms.OPERATIONS_ENUM.ALTER_ROLE, new OperationFunctionObject(role.alterRole));
339
+ opFuncMap.set(terms.OPERATIONS_ENUM.DROP_ROLE, new OperationFunctionObject(role.dropRole));
340
+ opFuncMap.set(terms.OPERATIONS_ENUM.USER_INFO, new OperationFunctionObject(user.userInfo));
341
+ opFuncMap.set(terms.OPERATIONS_ENUM.READ_LOG, new OperationFunctionObject(readLog));
342
+ opFuncMap.set(terms.OPERATIONS_ENUM.SET_CONFIGURATION, new OperationFunctionObject(configUtils.setConfiguration));
343
+ opFuncMap.set(terms.OPERATIONS_ENUM.EXPORT_TO_S3, new OperationFunctionObject(executeJob, export_.export_to_s3));
344
+
345
+ opFuncMap.set(
346
+ terms.OPERATIONS_ENUM.DELETE_FILES_BEFORE,
347
+ new OperationFunctionObject(executeJob, delete_.deleteFilesBefore)
348
+ );
349
+ opFuncMap.set(
350
+ terms.OPERATIONS_ENUM.DELETE_RECORDS_BEFORE,
351
+ new OperationFunctionObject(executeJob, delete_.deleteFilesBefore)
352
+ );
353
+ opFuncMap.set(terms.OPERATIONS_ENUM.EXPORT_LOCAL, new OperationFunctionObject(executeJob, export_.export_local));
354
+ opFuncMap.set(
355
+ terms.OPERATIONS_ENUM.SEARCH_JOBS_BY_START_DATE,
356
+ new OperationFunctionObject(jobs.handleGetJobsByStartDate)
357
+ );
358
+ opFuncMap.set(terms.OPERATIONS_ENUM.GET_JOB, new OperationFunctionObject(jobs.handleGetJob));
359
+ opFuncMap.set(
360
+ terms.OPERATIONS_ENUM.REGISTRATION_INFO,
361
+ new OperationFunctionObject(regDeprecated.getRegistrationInfo)
362
+ );
363
+ opFuncMap.set(terms.OPERATIONS_ENUM.RESTART, new OperationFunctionObject(restart.restart));
364
+ opFuncMap.set(terms.OPERATIONS_ENUM.RESTART_SERVICE, new OperationFunctionObject(executeJob, restart.restartService));
365
+ opFuncMap.set(terms.OPERATIONS_ENUM.CATCHUP, new OperationFunctionObject(catchup));
366
+ opFuncMap.set(
367
+ terms.OPERATIONS_ENUM.SYSTEM_INFORMATION,
368
+ new OperationFunctionObject(systemInformation.systemInformation)
369
+ );
370
+ opFuncMap.set(
371
+ terms.OPERATIONS_ENUM.DELETE_AUDIT_LOGS_BEFORE,
372
+ new OperationFunctionObject(executeJob, delete_.deleteAuditLogsBefore)
373
+ );
374
+ opFuncMap.set(terms.OPERATIONS_ENUM.READ_AUDIT_LOG, new OperationFunctionObject(readAuditLog));
375
+ opFuncMap.set(
376
+ terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS,
377
+ new OperationFunctionObject(tokenAuthentication.createTokens)
378
+ );
379
+ opFuncMap.set(
380
+ terms.OPERATIONS_ENUM.REFRESH_OPERATION_TOKEN,
381
+ new OperationFunctionObject(tokenAuthentication.refreshOperationToken)
382
+ );
383
+ opFuncMap.set(terms.OPERATIONS_ENUM.LOGIN, new OperationFunctionObject(auth.login));
384
+ opFuncMap.set(terms.OPERATIONS_ENUM.LOGOUT, new OperationFunctionObject(auth.logout));
385
+
386
+ opFuncMap.set(terms.OPERATIONS_ENUM.GET_CONFIGURATION, new OperationFunctionObject(configUtils.getConfiguration));
387
+ opFuncMap.set(
388
+ terms.OPERATIONS_ENUM.CUSTOM_FUNCTIONS_STATUS,
389
+ new OperationFunctionObject(customFunctionOperations.customFunctionsStatus)
390
+ );
391
+ opFuncMap.set(
392
+ terms.OPERATIONS_ENUM.GET_CUSTOM_FUNCTIONS,
393
+ new OperationFunctionObject(customFunctionOperations.getCustomFunctions)
394
+ );
395
+ opFuncMap.set(
396
+ terms.OPERATIONS_ENUM.GET_COMPONENT_FILE,
397
+ new OperationFunctionObject(customFunctionOperations.getComponentFile)
398
+ );
399
+ opFuncMap.set(
400
+ terms.OPERATIONS_ENUM.GET_COMPONENTS,
401
+ new OperationFunctionObject(customFunctionOperations.getComponents)
402
+ );
403
+ opFuncMap.set(
404
+ terms.OPERATIONS_ENUM.SET_COMPONENT_FILE,
405
+ new OperationFunctionObject(customFunctionOperations.setComponentFile)
406
+ );
407
+ opFuncMap.set(
408
+ terms.OPERATIONS_ENUM.DROP_COMPONENT,
409
+ new OperationFunctionObject(customFunctionOperations.dropComponent)
410
+ );
411
+ opFuncMap.set(
412
+ terms.OPERATIONS_ENUM.GET_CUSTOM_FUNCTION,
413
+ new OperationFunctionObject(customFunctionOperations.getCustomFunction)
414
+ );
415
+ opFuncMap.set(
416
+ terms.OPERATIONS_ENUM.SET_CUSTOM_FUNCTION,
417
+ new OperationFunctionObject(customFunctionOperations.setCustomFunction)
418
+ );
419
+ opFuncMap.set(
420
+ terms.OPERATIONS_ENUM.DROP_CUSTOM_FUNCTION,
421
+ new OperationFunctionObject(customFunctionOperations.dropCustomFunction)
422
+ );
423
+ opFuncMap.set(
424
+ terms.OPERATIONS_ENUM.ADD_CUSTOM_FUNCTION_PROJECT,
425
+ new OperationFunctionObject(customFunctionOperations.addComponent)
426
+ );
427
+ opFuncMap.set(
428
+ terms.OPERATIONS_ENUM.ADD_COMPONENT,
429
+ new OperationFunctionObject(customFunctionOperations.addComponent)
430
+ );
431
+ opFuncMap.set(
432
+ terms.OPERATIONS_ENUM.DROP_CUSTOM_FUNCTION_PROJECT,
433
+ new OperationFunctionObject(customFunctionOperations.dropCustomFunctionProject)
434
+ );
435
+ opFuncMap.set(
436
+ terms.OPERATIONS_ENUM.PACKAGE_CUSTOM_FUNCTION_PROJECT,
437
+ new OperationFunctionObject(customFunctionOperations.packageComponent)
438
+ );
439
+ opFuncMap.set(
440
+ terms.OPERATIONS_ENUM.PACKAGE_COMPONENT,
441
+ new OperationFunctionObject(customFunctionOperations.packageComponent)
442
+ );
443
+ opFuncMap.set(
444
+ terms.OPERATIONS_ENUM.DEPLOY_CUSTOM_FUNCTION_PROJECT,
445
+ new OperationFunctionObject(customFunctionOperations.deployComponent)
446
+ );
447
+ opFuncMap.set(
448
+ terms.OPERATIONS_ENUM.DEPLOY_COMPONENT,
449
+ new OperationFunctionObject(customFunctionOperations.deployComponent)
450
+ );
451
+ opFuncMap.set(
452
+ terms.OPERATIONS_ENUM.READ_TRANSACTION_LOG,
453
+ new OperationFunctionObject(transactionLog.readTransactionLog)
454
+ );
455
+ opFuncMap.set(
456
+ terms.OPERATIONS_ENUM.DELETE_TRANSACTION_LOGS_BEFORE,
457
+ new OperationFunctionObject(executeJob, transactionLog.deleteTransactionLogsBefore)
458
+ );
459
+ opFuncMap.set(terms.OPERATIONS_ENUM.INSTALL_NODE_MODULES, new OperationFunctionObject(npmUtilities.installModules));
460
+ opFuncMap.set(terms.OPERATIONS_ENUM.GET_BACKUP, new OperationFunctionObject(schema.getBackup));
461
+ opFuncMap.set(terms.OPERATIONS_ENUM.CLEANUP_ORPHAN_BLOBS, new OperationFunctionObject(schema.cleanupOrphanBlobs));
462
+
463
+ opFuncMap.set(terms.OPERATIONS_ENUM.GET_ANALYTICS, new OperationFunctionObject(analytics.getOp));
464
+ opFuncMap.set(terms.OPERATIONS_ENUM.LIST_METRICS, new OperationFunctionObject(analytics.listMetricsOp));
465
+ opFuncMap.set(terms.OPERATIONS_ENUM.DESCRIBE_METRIC, new OperationFunctionObject(analytics.describeMetricOp));
466
+
467
+ // set status operations
468
+ opFuncMap.set(terms.OPERATIONS_ENUM.GET_STATUS, new OperationFunctionObject(status.get));
469
+ opFuncMap.set(terms.OPERATIONS_ENUM.SET_STATUS, new OperationFunctionObject(status.set));
470
+ opFuncMap.set(terms.OPERATIONS_ENUM.CLEAR_STATUS, new OperationFunctionObject(status.clear));
471
+
472
+ return opFuncMap;
473
+ }
@@ -0,0 +1,8 @@
1
+ export const SERVERS = {};
2
+
3
+ export const portServer = new Map();
4
+
5
+ export function setPortServerMap(port, server) {
6
+ const portEntry = portServer.get(port) ?? [];
7
+ portServer.set(port, [...portEntry, server]);
8
+ }