@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,304 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * The jobs class is used to enable operations on the jobs system table. The jobHandler function is the only
5
+ * exposed method to simplify the interaction.
6
+ */
7
+
8
+ const uuidV4 = require('uuid').v4;
9
+ const insert = require('../../dataLayer/insert.js');
10
+ const search = require('../../dataLayer/search.js');
11
+ const Search_Object = require('../../dataLayer/SearchObject.js');
12
+ const searchByHashObj = require('../../dataLayer/SearchByHashObject.js');
13
+ const SQL_Search_Object = require('../../dataLayer/SqlSearchObject.js');
14
+ const hdbTerms = require('../../utility/hdbTerms.ts');
15
+ const JobObject = require('./JobObject.js');
16
+ const UpdateObject = require('../../dataLayer/UpdateObject.js');
17
+ const log = require('../../utility/logging/harper_logger.js');
18
+ const Insert_Object = require('../../dataLayer/InsertObject.js');
19
+ const hdbUtil = require('../../utility/common_utils.js');
20
+ const { promisify } = require('util');
21
+ const moment = require('moment');
22
+ const fileLoadValidator = require('../../validation/fileLoadValidator.js');
23
+ const bulkDeleteValidator = require('../../validation/bulkDeleteValidator.js');
24
+ const { deleteTransactionLogsBeforeValidator } = require('../../validation/transactionLogValidator.js');
25
+ const { handleHDBError, hdbErrors, ClientError } = require('../../utility/errors/hdbError.js');
26
+ const { HTTP_STATUS_CODES } = hdbErrors;
27
+
28
+ //Promisified functions
29
+ const pSearchByValue = search.searchByValue;
30
+ const pSearchSearchByHash = search.searchByHash;
31
+ const pInsert = insert.insert;
32
+ const pInsertUpdate = insert.update;
33
+ let pSqlEvaluate;
34
+
35
+ module.exports = {
36
+ addJob,
37
+ updateJob,
38
+ handleGetJob,
39
+ handleGetJobsByStartDate,
40
+ getJobById,
41
+ };
42
+
43
+ async function handleGetJob(jsonBody) {
44
+ if (jsonBody.id === undefined) throw new ClientError("'id' is required");
45
+ let result = await getJobById(jsonBody.id);
46
+ if (!hdbUtil.isEmptyOrZeroLength(result)) {
47
+ result[0] = { ...result[0] };
48
+ if (result[0].request !== undefined) delete result[0].request;
49
+ delete result[0]['__createdtime__'];
50
+ delete result[0]['__updatedtime__'];
51
+ }
52
+
53
+ return result;
54
+ }
55
+
56
+ async function handleGetJobsByStartDate(jsonBody) {
57
+ try {
58
+ let result = await getJobsInDateRange(jsonBody);
59
+ log.trace(`Searching for jobs from ${jsonBody.from_date} to ${jsonBody.to_date}`);
60
+ if (result && result.length > 0) {
61
+ for (let currRes of result) {
62
+ if (currRes.start_datetime) {
63
+ currRes.start_datetime_converted = moment(currRes.start_datetime);
64
+ }
65
+ if (currRes.end_datetime) {
66
+ currRes.end_datetime_converted = moment(currRes.end_datetime);
67
+ }
68
+
69
+ if (currRes.request !== undefined) delete currRes.request;
70
+ delete currRes['__createdtime__'];
71
+ delete currRes['__updatedtime__'];
72
+ }
73
+ }
74
+ return result;
75
+ } catch (err) {
76
+ let message = `There was an error searching jobs by date: ${err}`;
77
+ log.error(message);
78
+ throw new Error(message);
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Add a job to the job schema.
84
+ * @param jsonBody - job descriptor defined in the endpoint.
85
+ * @returns {Promise<*>}
86
+ */
87
+ async function addJob(jsonBody) {
88
+ let result = { message: '', error: '', success: false, createdJob: undefined };
89
+ if (!jsonBody || Object.keys(jsonBody).length === 0 || hdbUtil.isEmptyOrZeroLength(jsonBody.operation)) {
90
+ let errMsg = `job parameter is invalid`;
91
+ log.info(errMsg);
92
+ result.error = errMsg;
93
+ return result;
94
+ }
95
+
96
+ // Check for valid job type.
97
+ if (!hdbTerms.JOB_TYPE_ENUM[jsonBody.operation]) {
98
+ log.info(`invalid job type specified: ${jsonBody.operation}.`);
99
+ return result;
100
+ }
101
+
102
+ // Validate csv operation to ensure that action is valid, schema and table exist, and if file load - check file.
103
+ let operation = jsonBody.operation;
104
+ let validationMsg;
105
+ switch (operation) {
106
+ case hdbTerms.OPERATIONS_ENUM.CSV_FILE_LOAD:
107
+ validationMsg = fileLoadValidator.fileObject(jsonBody);
108
+ break;
109
+ case hdbTerms.OPERATIONS_ENUM.CSV_URL_LOAD:
110
+ validationMsg = fileLoadValidator.urlObject(jsonBody);
111
+ break;
112
+ case hdbTerms.OPERATIONS_ENUM.CSV_DATA_LOAD:
113
+ validationMsg = fileLoadValidator.dataObject(jsonBody);
114
+ break;
115
+ case hdbTerms.OPERATIONS_ENUM.IMPORT_FROM_S3:
116
+ validationMsg = fileLoadValidator.s3FileObject(jsonBody);
117
+ break;
118
+ case hdbTerms.OPERATIONS_ENUM.DELETE_FILES_BEFORE:
119
+ case hdbTerms.OPERATIONS_ENUM.DELETE_RECORDS_BEFORE:
120
+ validationMsg = bulkDeleteValidator(jsonBody, 'date');
121
+ break;
122
+ case hdbTerms.OPERATIONS_ENUM.DELETE_AUDIT_LOGS_BEFORE:
123
+ validationMsg = bulkDeleteValidator(jsonBody, 'timestamp');
124
+ break;
125
+ case hdbTerms.OPERATIONS_ENUM.DELETE_TRANSACTION_LOGS_BEFORE:
126
+ validationMsg = deleteTransactionLogsBeforeValidator(jsonBody);
127
+ break;
128
+ case hdbTerms.OPERATIONS_ENUM.RESTART_SERVICE:
129
+ if (hdbTerms.HDB_PROCESS_SERVICES[jsonBody.service] === undefined) {
130
+ throw handleHDBError(new Error(), 'Invalid service', HTTP_STATUS_CODES.BAD_REQUEST, undefined, undefined, true);
131
+ }
132
+ break;
133
+ default:
134
+ break;
135
+ }
136
+ if (validationMsg) {
137
+ throw handleHDBError(
138
+ validationMsg,
139
+ validationMsg.message,
140
+ HTTP_STATUS_CODES.BAD_REQUEST,
141
+ undefined,
142
+ undefined,
143
+ true
144
+ );
145
+ }
146
+
147
+ let newJob = new JobObject();
148
+ newJob.type =
149
+ jsonBody.operation === hdbTerms.OPERATIONS_ENUM.DELETE_RECORDS_BEFORE
150
+ ? hdbTerms.OPERATIONS_ENUM.DELETE_FILES_BEFORE
151
+ : jsonBody.operation;
152
+ newJob.type = jsonBody.operation;
153
+ newJob.user = jsonBody.hdb_user?.username;
154
+ let searchObj = new Search_Object(
155
+ hdbTerms.SYSTEM_SCHEMA_NAME,
156
+ hdbTerms.SYSTEM_TABLE_NAMES.JOB_TABLE_NAME,
157
+ 'id',
158
+ newJob.id,
159
+ 'id',
160
+ ['id']
161
+ );
162
+
163
+ let foundJob;
164
+ try {
165
+ foundJob = Array.from(await pSearchByValue(searchObj));
166
+ } catch (e) {
167
+ let message = `There was an error inserting a new job: ${e}`;
168
+ log.error(message);
169
+ return result;
170
+ }
171
+ //TODO: Once https://harperdb.atlassian.net/browse/HDB-501 is resolved, this check is no longer needed.
172
+ let foundValues = Array.isArray(foundJob) ? foundJob : Object.keys(foundJob);
173
+
174
+ // It is highly unlikely that we will ever get into this, as a UUID duplicate is very rare. Just in case we
175
+ // do have a collision, we regenerate an ID and search again. The odds of 2 collisions are so astronomically high
176
+ // that we will just throw an error assuming there is bad input causing the issue.
177
+ if (foundValues && foundValues.length > 0) {
178
+ newJob.id = uuidV4();
179
+ try {
180
+ foundJob = await pSearchByValue(searchObj);
181
+ } catch (e) {
182
+ let message = `There was an error inserting a new job: ${e}`;
183
+ log.error(message);
184
+ return result;
185
+ }
186
+ //TODO: Once https://harperdb.atlassian.net/browse/HDB-501 is resolved, this check is no longer needed.
187
+ foundValues = Array.isArray(foundJob) ? foundJob : Object.keys(foundJob);
188
+ if (foundValues && foundValues.length > 0) {
189
+ log.error('Error creating a job, could not find a unique job id.');
190
+ return result;
191
+ }
192
+ }
193
+
194
+ // We save the request so that the job process can get it and run the operation.
195
+ // Sending the request via IPC to the job process was causing some messages to be lost under load.
196
+ newJob.request = jsonBody;
197
+
198
+ let insertObject = new Insert_Object(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.JOB_TABLE_NAME, 'id', [
199
+ newJob,
200
+ ]);
201
+ let insertResult;
202
+ try {
203
+ insertResult = await pInsert(insertObject);
204
+ } catch (e) {
205
+ log.error(`There was an error inserting a job for job type: ${jsonBody.operation} -- ${e}`);
206
+ result.success = false;
207
+ return result;
208
+ }
209
+
210
+ if (insertResult.inserted_hashes.length === 0) {
211
+ result.message = `Had a problem creating a job with type ${newJob.operation} and id ${newJob.id}`;
212
+ } else {
213
+ let resultMsg = `Created a job with type ${newJob.type} and id ${newJob.id}`;
214
+ result.message = resultMsg;
215
+ result.createdJob = newJob;
216
+ result.success = true;
217
+ log.trace(resultMsg);
218
+ }
219
+ return result;
220
+ }
221
+
222
+ /**
223
+ * Get jobs in a range of dates by comparing start date of the job.
224
+ * @param jsonBody - The inbound message
225
+ * @returns {Promise<*>}
226
+ */
227
+ async function getJobsInDateRange(jsonBody) {
228
+ let parsedFromDate = moment(jsonBody.from_date, moment.ISO_8601);
229
+ let parsedToDate = moment(jsonBody.to_date, moment.ISO_8601);
230
+
231
+ if (!parsedFromDate.isValid()) {
232
+ throw new Error(`Invalid 'from' date, must be in ISO-8601 format (YYYY-MM-DD).`);
233
+ }
234
+ if (!parsedToDate.isValid()) {
235
+ throw new Error(`Invalid 'to' date, must be in ISO-8601 format (YYYY-MM-DD)`);
236
+ }
237
+
238
+ let jobSearchSql = `select * from system.hdb_job where start_datetime > '${parsedFromDate.valueOf()}' and start_datetime < '${parsedToDate.valueOf()}'`;
239
+ let sqlSearchObj = new SQL_Search_Object(jobSearchSql, jsonBody.hdb_user);
240
+
241
+ try {
242
+ if (!pSqlEvaluate) {
243
+ const hdbSql = require('../../sqlTranslator');
244
+ pSqlEvaluate = promisify(hdbSql.evaluateSQL);
245
+ }
246
+ return await pSqlEvaluate(sqlSearchObj);
247
+ } catch (e) {
248
+ log.error(
249
+ `there was a problem searching for jobs from date ${jsonBody.from_date} to date ${jsonBody.to_date} ${e}`
250
+ );
251
+ throw new Error(`there was an error searching for jobs. Please check the log for details.`);
252
+ }
253
+ }
254
+
255
+ /**
256
+ * Get a job by a specific id
257
+ * @param jsonBody - The inbound message
258
+ * @returns {Promise<*>}
259
+ */
260
+ async function getJobById(job_id) {
261
+ if (hdbUtil.isEmptyOrZeroLength(job_id)) {
262
+ return hdbUtil.errorizeMessage('Invalid job ID specified.');
263
+ }
264
+
265
+ const searchObj = new searchByHashObj(
266
+ hdbTerms.SYSTEM_SCHEMA_NAME,
267
+ hdbTerms.SYSTEM_TABLE_NAMES.JOB_TABLE_NAME,
268
+ [job_id],
269
+ ['*']
270
+ );
271
+
272
+ try {
273
+ return await pSearchSearchByHash(searchObj);
274
+ } catch (e) {
275
+ let message = `There was an error searching for a job by id: ${job_id} ${e}`;
276
+ log.error(message);
277
+ return hdbUtil.errorizeMessage(`there was an error searching for jobs. Please check the log for details.`);
278
+ }
279
+ }
280
+
281
+ /**
282
+ * Update the job record specified in the parameter. If the status is COMPLETE or ERROR, the endDatetime field will be set to now().
283
+ * @param jobObject - The object representing the desired record.
284
+ * @returns {Promise<*>}
285
+ */
286
+ async function updateJob(jobObject) {
287
+ if (Object.keys(jobObject).length === 0) {
288
+ throw new Error('invalid job object passed to updateJob');
289
+ }
290
+ if (hdbUtil.isEmptyOrZeroLength(jobObject.id)) {
291
+ throw new Error('invalid ID passed to updateJob');
292
+ }
293
+
294
+ if (jobObject.status === hdbTerms.JOB_STATUS_ENUM.COMPLETE || jobObject.status === hdbTerms.JOB_STATUS_ENUM.ERROR) {
295
+ jobObject.end_datetime = moment().valueOf();
296
+ }
297
+
298
+ let updateObject = new UpdateObject(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.JOB_TABLE_NAME, [
299
+ jobObject,
300
+ ]);
301
+ let updateResult = undefined;
302
+ updateResult = await pInsertUpdate(updateObject);
303
+ return updateResult;
304
+ }
@@ -0,0 +1,44 @@
1
+ const { isMainThread } = require('worker_threads');
2
+ const { getTables } = require('../resources/databases.ts');
3
+ const { loadComponentDirectories, loadComponent } = require('../components/componentLoader.ts');
4
+ const { resetResources } = require('../resources/Resources.ts');
5
+ const configUtils = require('../config/configUtils.js');
6
+ const { dirname } = require('path');
7
+ const { loadCertificates } = require('../security/keys.js');
8
+ const { installApplications } = require('../components/Application.ts');
9
+
10
+ let loadedComponents = new Map();
11
+ /**
12
+ * This is main entry point for loading the main set of global server modules that power Harper.
13
+ * @returns {Promise<void>}
14
+ */
15
+ async function loadRootComponents(isWorkerThread = false) {
16
+ try {
17
+ if (isMainThread && !process.env.HARPER_SAFE_MODE) await installApplications();
18
+ } catch (error) {
19
+ console.error(error);
20
+ }
21
+
22
+ let resources = resetResources();
23
+ getTables();
24
+ resources.isWorker = isWorkerThread;
25
+
26
+ await loadCertificates();
27
+ // the Harper root component
28
+ await loadComponent(dirname(configUtils.getConfigFilePath()), resources, 'hdb', {
29
+ isRoot: true,
30
+ providedLoadedComponents: loadedComponents,
31
+ autoReload: false,
32
+ });
33
+ if (!process.env.HARPER_SAFE_MODE) {
34
+ // once the global plugins are loaded, we now load all the CF and run applications (and their components)
35
+ await loadComponentDirectories(loadedComponents, resources);
36
+ }
37
+ let allReady = [];
38
+ for (let [serverModule] of loadedComponents) {
39
+ if (serverModule.ready) allReady.push(serverModule.ready());
40
+ }
41
+ if (allReady.length > 0) await Promise.all(allReady);
42
+ }
43
+
44
+ module.exports.loadRootComponents = loadRootComponents;