@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,371 @@
1
+ 'use strict';
2
+
3
+ const searchUtility = require('../../../../utility/lmdb/searchUtility.js');
4
+ const environmentUtility = require('../../../../utility/lmdb/environmentUtility.js');
5
+ const commonUtils = require('../../../../utility/common_utils.js');
6
+ const lmdbTerms = require('../../../../utility/lmdb/terms.js');
7
+ const hdbTerms = require('../../../../utility/hdbTerms.ts');
8
+ const systemSchema = require('../../../../json/systemSchema.json');
9
+ const LMDB_ERRORS = require('../../../../utility/errors/commonErrors.js').LMDB_ERRORS_ENUM;
10
+ const { getSchemaPath } = require('./initializePaths.js');
11
+
12
+ const WILDCARDS = hdbTerms.SEARCH_WILDCARDS;
13
+
14
+ /**
15
+ * gets the searchType & based on the size of the dbi being searched will either perform an in process search or launch a new process to perform a search
16
+ * @param {SearchObject} searchObject
17
+ * @param {hdbTerms.VALUE_SEARCH_COMPARATORS} comparator
18
+ * @param {Boolean} returnMap
19
+ * @returns {{}|[{}]}
20
+ */
21
+ async function prepSearch(searchObject, comparator, returnMap) {
22
+ let tableInfo;
23
+ if (searchObject.schema === hdbTerms.SYSTEM_SCHEMA_NAME) {
24
+ tableInfo = systemSchema[searchObject.table];
25
+ } else {
26
+ tableInfo = global.hdb_schema[searchObject.schema][searchObject.table];
27
+ }
28
+
29
+ let searchType = createSearchTypeFromSearchObject(searchObject, tableInfo.hash_attribute, returnMap, comparator);
30
+
31
+ return executeSearch(searchObject, searchType, tableInfo.hash_attribute, returnMap);
32
+ }
33
+
34
+ /**
35
+ * executes a specific search based on the evaluation of the searchObject & optional comparator & returns the results
36
+ * @param {SearchObject} searchObject
37
+ * @param {lmdbTerms.SEARCH_TYPES} searchType
38
+ * @param {String} hash_attribute
39
+ * @param {Boolean} returnMap
40
+ */
41
+ async function executeSearch(searchObject, searchType, hash_attribute, returnMap) {
42
+ let schemaPath = getSchemaPath(searchObject.schema, searchObject.table);
43
+ let env = await environmentUtility.openEnvironment(schemaPath, searchObject.table);
44
+ let searchResults = searchByType(env, searchObject, searchType, hash_attribute);
45
+ let transaction = searchResults.transaction || env;
46
+
47
+ //if we execute a search all / search by hash type call there is no need to perform further evaluation as the records have been fetched
48
+ if (
49
+ [
50
+ lmdbTerms.SEARCH_TYPES.BATCH_SEARCH_BY_HASH,
51
+ lmdbTerms.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP,
52
+ lmdbTerms.SEARCH_TYPES.SEARCH_ALL,
53
+ lmdbTerms.SEARCH_TYPES.SEARCH_ALL_TO_MAP,
54
+ ].indexOf(searchType) >= 0
55
+ ) {
56
+ return searchResults;
57
+ }
58
+
59
+ let fetchMore = checkToFetchMore(searchObject, hash_attribute);
60
+
61
+ if (fetchMore === false) {
62
+ let attribute = searchObject.attribute;
63
+ if (attribute === hash_attribute) {
64
+ if (returnMap) return createMapFromIterable(searchResults, () => true);
65
+ return searchResults.map((entry) => ({ [hash_attribute]: entry.key }));
66
+ }
67
+ let toObject = (entry) => ({
68
+ [hash_attribute]: entry.value,
69
+ [attribute]: entry.key,
70
+ });
71
+ if (returnMap) return createMapFromIterable(searchResults, toObject);
72
+ return searchResults.map(toObject);
73
+ }
74
+
75
+ let ids =
76
+ searchObject.attribute === hash_attribute
77
+ ? searchResults.map((entry) => entry.key)
78
+ : searchResults.map((entry) => entry.value);
79
+ if (returnMap === true) {
80
+ return searchUtility.batchSearchByHashToMap(transaction, hash_attribute, searchObject.get_attributes, ids);
81
+ }
82
+
83
+ return searchUtility.batchSearchByHash(transaction, hash_attribute, searchObject.get_attributes, ids);
84
+ }
85
+
86
+ /**
87
+ *
88
+ * @param {lmdb.Transaction} transactionOrEnv
89
+ * @param {SearchObject} searchObject
90
+ * @param {lmdbTerms.SEARCH_TYPES} searchType
91
+ * @param {String} hash_attribute
92
+ * @returns {null|Array<Object>|Number|Object|*[]|{}}
93
+ */
94
+ function searchByType(transactionOrEnv, searchObject, searchType, hash_attribute) {
95
+ let searchResults;
96
+
97
+ //this is to conditionally not create the hash_attribute as part of the returned objects if it is not selected
98
+ let hashAttributeName = hash_attribute;
99
+ if (searchObject.get_attributes.indexOf(hash_attribute) < 0) {
100
+ hashAttributeName = undefined;
101
+ }
102
+
103
+ let { reverse, limit, offset } = searchObject;
104
+ reverse = typeof reverse === 'boolean' ? reverse : false;
105
+ limit = Number.isInteger(limit) ? limit : undefined;
106
+ offset = Number.isInteger(offset) ? offset : undefined;
107
+
108
+ switch (searchType) {
109
+ case lmdbTerms.SEARCH_TYPES.EQUALS:
110
+ searchResults = searchUtility.equals(
111
+ transactionOrEnv,
112
+ hashAttributeName,
113
+ searchObject.attribute,
114
+ searchObject.value,
115
+ reverse,
116
+ limit,
117
+ offset
118
+ );
119
+ break;
120
+ case lmdbTerms.SEARCH_TYPES.CONTAINS:
121
+ searchResults = searchUtility.contains(
122
+ transactionOrEnv,
123
+ hashAttributeName,
124
+ searchObject.attribute,
125
+ searchObject.value,
126
+ reverse,
127
+ limit,
128
+ offset
129
+ );
130
+ break;
131
+ case lmdbTerms.SEARCH_TYPES.ENDS_WITH:
132
+ case lmdbTerms.SEARCH_TYPES._ENDS_WITH:
133
+ searchResults = searchUtility.endsWith(
134
+ transactionOrEnv,
135
+ hashAttributeName,
136
+ searchObject.attribute,
137
+ searchObject.value,
138
+ reverse,
139
+ limit,
140
+ offset
141
+ );
142
+ break;
143
+ case lmdbTerms.SEARCH_TYPES.STARTS_WITH:
144
+ case lmdbTerms.SEARCH_TYPES._STARTS_WITH:
145
+ searchResults = searchUtility.startsWith(
146
+ transactionOrEnv,
147
+ hashAttributeName,
148
+ searchObject.attribute,
149
+ searchObject.value,
150
+ reverse,
151
+ limit,
152
+ offset
153
+ );
154
+ break;
155
+ case lmdbTerms.SEARCH_TYPES.BATCH_SEARCH_BY_HASH:
156
+ return searchUtility.batchSearchByHash(transactionOrEnv, searchObject.attribute, searchObject.get_attributes, [
157
+ searchObject.value,
158
+ ]);
159
+ case lmdbTerms.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP:
160
+ return searchUtility.batchSearchByHashToMap(
161
+ transactionOrEnv,
162
+ searchObject.attribute,
163
+ searchObject.get_attributes,
164
+ [searchObject.value]
165
+ );
166
+ case lmdbTerms.SEARCH_TYPES.SEARCH_ALL:
167
+ return searchUtility.searchAll(
168
+ transactionOrEnv,
169
+ hash_attribute,
170
+ searchObject.get_attributes,
171
+ reverse,
172
+ limit,
173
+ offset
174
+ );
175
+ case lmdbTerms.SEARCH_TYPES.SEARCH_ALL_TO_MAP:
176
+ return searchUtility.searchAllToMap(
177
+ transactionOrEnv,
178
+ hash_attribute,
179
+ searchObject.get_attributes,
180
+ reverse,
181
+ limit,
182
+ offset
183
+ );
184
+ case lmdbTerms.SEARCH_TYPES.BETWEEN:
185
+ searchResults = searchUtility.between(
186
+ transactionOrEnv,
187
+ hashAttributeName,
188
+ searchObject.attribute,
189
+ searchObject.value,
190
+ searchObject.end_value,
191
+ reverse,
192
+ limit,
193
+ offset
194
+ );
195
+ break;
196
+ case lmdbTerms.SEARCH_TYPES.GREATER_THAN:
197
+ case lmdbTerms.SEARCH_TYPES._GREATER_THAN:
198
+ searchResults = searchUtility.greaterThan(
199
+ transactionOrEnv,
200
+ hashAttributeName,
201
+ searchObject.attribute,
202
+ searchObject.value,
203
+ reverse,
204
+ limit,
205
+ offset
206
+ );
207
+ break;
208
+ case lmdbTerms.SEARCH_TYPES.GREATER_THAN_EQUAL:
209
+ case lmdbTerms.SEARCH_TYPES._GREATER_THAN_EQUAL:
210
+ searchResults = searchUtility.greaterThanEqual(
211
+ transactionOrEnv,
212
+ hashAttributeName,
213
+ searchObject.attribute,
214
+ searchObject.value,
215
+ reverse,
216
+ limit,
217
+ offset
218
+ );
219
+ break;
220
+ case lmdbTerms.SEARCH_TYPES.LESS_THAN:
221
+ case lmdbTerms.SEARCH_TYPES._LESS_THAN:
222
+ searchResults = searchUtility.lessThan(
223
+ transactionOrEnv,
224
+ hashAttributeName,
225
+ searchObject.attribute,
226
+ searchObject.value,
227
+ reverse,
228
+ limit,
229
+ offset
230
+ );
231
+ break;
232
+ case lmdbTerms.SEARCH_TYPES.LESS_THAN_EQUAL:
233
+ case lmdbTerms.SEARCH_TYPES._LESS_THAN_EQUAL:
234
+ searchResults = searchUtility.lessThanEqual(
235
+ transactionOrEnv,
236
+ hashAttributeName,
237
+ searchObject.attribute,
238
+ searchObject.value,
239
+ reverse,
240
+ limit,
241
+ offset
242
+ );
243
+ break;
244
+ default:
245
+ return Object.create(null);
246
+ }
247
+
248
+ return searchResults;
249
+ }
250
+
251
+ /**
252
+ *
253
+ * @param {Iterable}
254
+ */
255
+ function createMapFromIterable(iterable, toValue) {
256
+ let results = new Map();
257
+ for (let entry of iterable) {
258
+ results.set(entry.value, toValue(entry));
259
+ }
260
+ return results;
261
+ }
262
+
263
+ /**
264
+ *
265
+ * @param {SearchObject} searchObject
266
+ * @param {String} hash_attribute
267
+ */
268
+ function checkToFetchMore(searchObject, hash_attribute) {
269
+ if (searchObject.get_attributes.length === 1 && searchObject.get_attributes[0] === '*') {
270
+ return true;
271
+ }
272
+ let alreadyFetchedAttributes = [searchObject.attribute];
273
+ if (searchObject.get_attributes.indexOf(hash_attribute) >= 0) {
274
+ alreadyFetchedAttributes.push(hash_attribute);
275
+ }
276
+
277
+ let fetchMore = false;
278
+ for (let x = 0; x < searchObject.get_attributes.length; x++) {
279
+ if (alreadyFetchedAttributes.indexOf(searchObject.get_attributes[x]) < 0) {
280
+ fetchMore = true;
281
+ break;
282
+ }
283
+ }
284
+
285
+ return fetchMore;
286
+ }
287
+
288
+ /**
289
+ * evaluates the searchObject to determine what the searchType needs to be for later execution of queries
290
+ * @param {SearchObject} searchObject
291
+ * @param {String} hash_attribute
292
+ * @param {hdbTerms.VALUE_SEARCH_COMPARATORS} comparator
293
+ * @param {Boolean} returnMap
294
+ * @returns {lmdbTerms.SEARCH_TYPES}
295
+ */
296
+ function createSearchTypeFromSearchObject(searchObject, hash_attribute, returnMap, comparator) {
297
+ if (commonUtils.isEmpty(comparator)) {
298
+ let searchValue = searchObject.value;
299
+ if (typeof searchValue === 'object') {
300
+ searchValue = JSON.stringify(searchValue);
301
+ } else {
302
+ searchValue = searchValue.toString();
303
+ }
304
+
305
+ let firstSearchCharacter = searchValue.charAt(0);
306
+ let lastSearchCharacter = searchValue.charAt(searchValue.length - 1);
307
+ let hashSearch = false;
308
+ if (searchObject.attribute === hash_attribute) {
309
+ hashSearch = true;
310
+ }
311
+
312
+ if (WILDCARDS.indexOf(searchValue) > -1) {
313
+ return returnMap === true ? lmdbTerms.SEARCH_TYPES.SEARCH_ALL_TO_MAP : lmdbTerms.SEARCH_TYPES.SEARCH_ALL;
314
+ }
315
+
316
+ if (searchValue.indexOf(WILDCARDS[0]) < 0 && searchValue.indexOf(WILDCARDS[1]) < 0) {
317
+ if (hashSearch === true) {
318
+ return returnMap === true
319
+ ? lmdbTerms.SEARCH_TYPES.BATCH_SEARCH_BY_HASH_TO_MAP
320
+ : lmdbTerms.SEARCH_TYPES.BATCH_SEARCH_BY_HASH;
321
+ }
322
+
323
+ return lmdbTerms.SEARCH_TYPES.EQUALS;
324
+ }
325
+
326
+ if (WILDCARDS.indexOf(firstSearchCharacter) >= 0 && WILDCARDS.indexOf(lastSearchCharacter) >= 0) {
327
+ //this removes the first & last character from the search value
328
+ searchObject.value = searchObject.value.slice(1, -1);
329
+ return lmdbTerms.SEARCH_TYPES.CONTAINS;
330
+ }
331
+
332
+ if (WILDCARDS.indexOf(firstSearchCharacter) >= 0) {
333
+ searchObject.value = searchObject.value.substr(1);
334
+ return lmdbTerms.SEARCH_TYPES.ENDS_WITH;
335
+ }
336
+
337
+ if (WILDCARDS.indexOf(lastSearchCharacter) >= 0) {
338
+ searchObject.value = searchObject.value.slice(0, -1);
339
+ return lmdbTerms.SEARCH_TYPES.STARTS_WITH;
340
+ }
341
+
342
+ if (searchValue.includes(WILDCARDS[0]) || searchValue.includes(WILDCARDS[1])) {
343
+ return lmdbTerms.SEARCH_TYPES.EQUALS;
344
+ }
345
+
346
+ throw new Error(LMDB_ERRORS.UNKNOWN_SEARCH_TYPE);
347
+ } else {
348
+ switch (comparator) {
349
+ case hdbTerms.VALUE_SEARCH_COMPARATORS.BETWEEN:
350
+ return lmdbTerms.SEARCH_TYPES.BETWEEN;
351
+ case hdbTerms.VALUE_SEARCH_COMPARATORS.GREATER:
352
+ return lmdbTerms.SEARCH_TYPES.GREATER_THAN;
353
+ case hdbTerms.VALUE_SEARCH_COMPARATORS.GREATER_OR_EQ:
354
+ return lmdbTerms.SEARCH_TYPES.GREATER_THAN_EQUAL;
355
+ case hdbTerms.VALUE_SEARCH_COMPARATORS.LESS:
356
+ return lmdbTerms.SEARCH_TYPES.LESS_THAN;
357
+ case hdbTerms.VALUE_SEARCH_COMPARATORS.LESS_OR_EQ:
358
+ return lmdbTerms.SEARCH_TYPES.LESS_THAN_EQUAL;
359
+ default:
360
+ throw new Error(LMDB_ERRORS.UNKNOWN_SEARCH_TYPE);
361
+ }
362
+ }
363
+ }
364
+
365
+ module.exports = {
366
+ executeSearch,
367
+ createSearchTypeFromSearchObject,
368
+ prepSearch,
369
+ searchByType,
370
+ // filterByType,
371
+ };
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ const environmentUtil = require('../../../../utility/lmdb/environmentUtility.js');
4
+ const LMDBInsertTransactionObject = require('./LMDBInsertTransactionObject.js');
5
+ const LMDBUpdateTransactionObject = require('./LMDBUpdateTransactionObject.js');
6
+ const LMDBUpsertTransactionObject = require('./LMDBUpsertTransactionObject.js');
7
+ const LMDBDeleteTransactionObject = require('./LMDBDeleteTransactionObject.js');
8
+
9
+ const lmdbTerms = require('../../../../utility/lmdb/terms.js');
10
+ const hdbUtil = require('../../../../utility/common_utils.js');
11
+ const { CONFIG_PARAMS } = require('../../../../utility/hdbTerms.ts');
12
+ const envMngr = require('../../../../utility/environment/environmentManager.js');
13
+ envMngr.initSync();
14
+
15
+ const OPERATIONS_ENUM = require('../../../../utility/hdbTerms.ts').OPERATIONS_ENUM;
16
+ const { getTransactionAuditStorePath } = require('./initializePaths.js');
17
+
18
+ module.exports = writeTransaction;
19
+
20
+ /**
21
+ *
22
+ * @param {InsertObject|UpdateObject|DeleteObject|UpsertObject} hdbOperation
23
+ * @param {InsertRecordsResponseObject | UpdateRecordsResponseObject | UpdateRecordsResponseObject | DeleteRecordsResponseObject} lmdbResponse
24
+ * @returns {Promise<void>}
25
+ */
26
+ async function writeTransaction(hdbOperation, lmdbResponse) {
27
+ if (envMngr.get(CONFIG_PARAMS.LOGGING_AUDITLOG) === false) {
28
+ return;
29
+ }
30
+
31
+ let txnEnvBasePath = getTransactionAuditStorePath(hdbOperation.schema, hdbOperation.table);
32
+ let txnEnv = await environmentUtil.openEnvironment(txnEnvBasePath, hdbOperation.table, true);
33
+
34
+ let txnObject = createTransactionObject(hdbOperation, lmdbResponse);
35
+
36
+ if (txnObject === undefined || txnObject.hash_values.length === 0) {
37
+ return;
38
+ }
39
+
40
+ if (txnEnv !== undefined) {
41
+ environmentUtil.initializeDBIs(
42
+ txnEnv,
43
+ lmdbTerms.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP,
44
+ lmdbTerms.TRANSACTIONS_DBIS
45
+ );
46
+
47
+ let txnTimestamp = txnObject.timestamp;
48
+ return await txnEnv.dbis[lmdbTerms.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].ifNoExists(txnTimestamp, () => {
49
+ txnEnv.dbis[lmdbTerms.TRANSACTIONS_DBI_NAMES_ENUM.TIMESTAMP].put(txnTimestamp, txnObject);
50
+ if (!hdbUtil.isEmpty(txnObject.user_name)) {
51
+ txnEnv.dbis[lmdbTerms.TRANSACTIONS_DBI_NAMES_ENUM.USER_NAME].put(txnObject.user_name, txnTimestamp);
52
+ }
53
+ for (let x = 0; x < txnObject.hash_values.length; x++) {
54
+ txnEnv.dbis[lmdbTerms.TRANSACTIONS_DBI_NAMES_ENUM.HASH_VALUE].put(txnObject.hash_values[x], txnTimestamp);
55
+ }
56
+ });
57
+ }
58
+ }
59
+
60
+ /**
61
+ *
62
+ * @param {InsertObject | UpdateObject | DeleteObject} hdbOperation
63
+ * @param {InsertRecordsResponseObject | UpdateRecordsResponseObject | DeleteRecordsResponseObject} lmdbResponse
64
+ * @returns {LMDBInsertTransactionObject|LMDBUpdateTransactionObject|LMDBDeleteTransactionObject}
65
+ */
66
+ function createTransactionObject(hdbOperation, lmdbResponse) {
67
+ let username = !hdbUtil.isEmpty(hdbOperation.hdb_user) ? hdbOperation.hdb_user?.username : undefined;
68
+ if (hdbOperation.operation === OPERATIONS_ENUM.INSERT) {
69
+ return new LMDBInsertTransactionObject(
70
+ hdbOperation.records,
71
+ username,
72
+ lmdbResponse.txn_time,
73
+ lmdbResponse.written_hashes,
74
+ hdbOperation.__origin
75
+ );
76
+ }
77
+
78
+ if (hdbOperation.operation === OPERATIONS_ENUM.UPDATE) {
79
+ return new LMDBUpdateTransactionObject(
80
+ hdbOperation.records,
81
+ lmdbResponse.original_records,
82
+ username,
83
+ lmdbResponse.txn_time,
84
+ lmdbResponse.written_hashes,
85
+ hdbOperation.__origin
86
+ );
87
+ }
88
+
89
+ if (hdbOperation.operation === OPERATIONS_ENUM.UPSERT) {
90
+ return new LMDBUpsertTransactionObject(
91
+ hdbOperation.records,
92
+ lmdbResponse.original_records,
93
+ username,
94
+ lmdbResponse.txn_time,
95
+ lmdbResponse.written_hashes,
96
+ hdbOperation.__origin
97
+ );
98
+ }
99
+
100
+ if (hdbOperation.operation === OPERATIONS_ENUM.DELETE) {
101
+ return new LMDBDeleteTransactionObject(
102
+ lmdbResponse.deleted,
103
+ lmdbResponse.original_records,
104
+ username,
105
+ lmdbResponse.txn_time,
106
+ hdbOperation.__origin
107
+ );
108
+ }
109
+ }