@harperfast/harper 5.0.0-alpha.10

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 (879) hide show
  1. package/CODE_OF_CONDUCT.md +83 -0
  2. package/LICENSE +201 -0
  3. package/README.md +54 -0
  4. package/SECURITY.md +18 -0
  5. package/SUPPORT.md +26 -0
  6. package/dist/bin/BinObjects.d.ts +9 -0
  7. package/dist/bin/BinObjects.js +15 -0
  8. package/dist/bin/BinObjects.js.map +1 -0
  9. package/dist/bin/cliOperations.d.ts +12 -0
  10. package/dist/bin/cliOperations.js +156 -0
  11. package/dist/bin/cliOperations.js.map +1 -0
  12. package/dist/bin/copyDb.d.ts +2 -0
  13. package/dist/bin/copyDb.js +298 -0
  14. package/dist/bin/copyDb.js.map +1 -0
  15. package/dist/bin/harper.d.ts +2 -0
  16. package/dist/bin/harper.js +148 -0
  17. package/dist/bin/harper.js.map +1 -0
  18. package/dist/bin/install.d.ts +2 -0
  19. package/dist/bin/install.js +16 -0
  20. package/dist/bin/install.js.map +1 -0
  21. package/dist/bin/lite.d.ts +1 -0
  22. package/dist/bin/lite.js +6 -0
  23. package/dist/bin/lite.js.map +1 -0
  24. package/dist/bin/restart.d.ts +13 -0
  25. package/dist/bin/restart.js +194 -0
  26. package/dist/bin/restart.js.map +1 -0
  27. package/dist/bin/run.d.ts +21 -0
  28. package/dist/bin/run.js +365 -0
  29. package/dist/bin/run.js.map +1 -0
  30. package/dist/bin/status.d.ts +2 -0
  31. package/dist/bin/status.js +56 -0
  32. package/dist/bin/status.js.map +1 -0
  33. package/dist/bin/stop.d.ts +2 -0
  34. package/dist/bin/stop.js +17 -0
  35. package/dist/bin/stop.js.map +1 -0
  36. package/dist/bin/upgrade.d.ts +7 -0
  37. package/dist/bin/upgrade.js +111 -0
  38. package/dist/bin/upgrade.js.map +1 -0
  39. package/dist/components/Application.d.ts +110 -0
  40. package/dist/components/Application.js +509 -0
  41. package/dist/components/Application.js.map +1 -0
  42. package/dist/components/ApplicationScope.d.ts +28 -0
  43. package/dist/components/ApplicationScope.js +81 -0
  44. package/dist/components/ApplicationScope.js.map +1 -0
  45. package/dist/components/Component.d.ts +21 -0
  46. package/dist/components/Component.js +43 -0
  47. package/dist/components/Component.js.map +1 -0
  48. package/dist/components/ComponentV1.d.ts +69 -0
  49. package/dist/components/ComponentV1.js +263 -0
  50. package/dist/components/ComponentV1.js.map +1 -0
  51. package/dist/components/DEFAULT_CONFIG.d.ts +18 -0
  52. package/dist/components/DEFAULT_CONFIG.js +22 -0
  53. package/dist/components/DEFAULT_CONFIG.js.map +1 -0
  54. package/dist/components/EntryHandler.d.ts +61 -0
  55. package/dist/components/EntryHandler.js +148 -0
  56. package/dist/components/EntryHandler.js.map +1 -0
  57. package/dist/components/OptionsWatcher.d.ts +75 -0
  58. package/dist/components/OptionsWatcher.js +281 -0
  59. package/dist/components/OptionsWatcher.js.map +1 -0
  60. package/dist/components/PluginModule.d.ts +5 -0
  61. package/dist/components/PluginModule.js +3 -0
  62. package/dist/components/PluginModule.js.map +1 -0
  63. package/dist/components/Scope.d.ts +49 -0
  64. package/dist/components/Scope.js +262 -0
  65. package/dist/components/Scope.js.map +1 -0
  66. package/dist/components/componentLoader.js +498 -0
  67. package/dist/components/componentLoader.js.map +1 -0
  68. package/dist/components/deriveCommonPatternBase.d.ts +1 -0
  69. package/dist/components/deriveCommonPatternBase.js +34 -0
  70. package/dist/components/deriveCommonPatternBase.js.map +1 -0
  71. package/dist/components/deriveGlobOptions.d.ts +13 -0
  72. package/dist/components/deriveGlobOptions.js +30 -0
  73. package/dist/components/deriveGlobOptions.js.map +1 -0
  74. package/dist/components/deriveURLPath.d.ts +3 -0
  75. package/dist/components/deriveURLPath.js +55 -0
  76. package/dist/components/deriveURLPath.js.map +1 -0
  77. package/dist/components/operations.d.ts +97 -0
  78. package/dist/components/operations.js +556 -0
  79. package/dist/components/operations.js.map +1 -0
  80. package/dist/components/operationsValidation.d.ts +44 -0
  81. package/dist/components/operationsValidation.js +221 -0
  82. package/dist/components/operationsValidation.js.map +1 -0
  83. package/dist/components/packageComponent.d.ts +8 -0
  84. package/dist/components/packageComponent.js +42 -0
  85. package/dist/components/packageComponent.js.map +1 -0
  86. package/dist/components/requestRestart.d.ts +3 -0
  87. package/dist/components/requestRestart.js +27 -0
  88. package/dist/components/requestRestart.js.map +1 -0
  89. package/dist/components/resolveBaseURLPath.d.ts +15 -0
  90. package/dist/components/resolveBaseURLPath.js +38 -0
  91. package/dist/components/resolveBaseURLPath.js.map +1 -0
  92. package/dist/components/status/ComponentStatus.d.ts +61 -0
  93. package/dist/components/status/ComponentStatus.js +102 -0
  94. package/dist/components/status/ComponentStatus.js.map +1 -0
  95. package/dist/components/status/ComponentStatusRegistry.d.ts +89 -0
  96. package/dist/components/status/ComponentStatusRegistry.js +195 -0
  97. package/dist/components/status/ComponentStatusRegistry.js.map +1 -0
  98. package/dist/components/status/api.d.ts +104 -0
  99. package/dist/components/status/api.js +137 -0
  100. package/dist/components/status/api.js.map +1 -0
  101. package/dist/components/status/crossThread.d.ts +62 -0
  102. package/dist/components/status/crossThread.js +343 -0
  103. package/dist/components/status/crossThread.js.map +1 -0
  104. package/dist/components/status/errors.d.ts +68 -0
  105. package/dist/components/status/errors.js +123 -0
  106. package/dist/components/status/errors.js.map +1 -0
  107. package/dist/components/status/index.d.ts +35 -0
  108. package/dist/components/status/index.js +75 -0
  109. package/dist/components/status/index.js.map +1 -0
  110. package/dist/components/status/internal.d.ts +40 -0
  111. package/dist/components/status/internal.js +76 -0
  112. package/dist/components/status/internal.js.map +1 -0
  113. package/dist/components/status/registry.d.ts +10 -0
  114. package/dist/components/status/registry.js +14 -0
  115. package/dist/components/status/registry.js.map +1 -0
  116. package/dist/components/status/types.d.ts +94 -0
  117. package/dist/components/status/types.js +20 -0
  118. package/dist/components/status/types.js.map +1 -0
  119. package/dist/config/RootConfigWatcher.d.ts +10 -0
  120. package/dist/config/RootConfigWatcher.js +59 -0
  121. package/dist/config/RootConfigWatcher.js.map +1 -0
  122. package/dist/config/configHelpers.d.ts +6 -0
  123. package/dist/config/configHelpers.js +47 -0
  124. package/dist/config/configHelpers.js.map +1 -0
  125. package/dist/config/configUtils.d.ts +85 -0
  126. package/dist/config/configUtils.js +801 -0
  127. package/dist/config/configUtils.js.map +1 -0
  128. package/dist/config/harperConfigEnvVars.d.ts +46 -0
  129. package/dist/config/harperConfigEnvVars.js +527 -0
  130. package/dist/config/harperConfigEnvVars.js.map +1 -0
  131. package/dist/dataLayer/CreateAttributeObject.d.ts +19 -0
  132. package/dist/dataLayer/CreateAttributeObject.js +23 -0
  133. package/dist/dataLayer/CreateAttributeObject.js.map +1 -0
  134. package/dist/dataLayer/CreateTableObject.d.ts +7 -0
  135. package/dist/dataLayer/CreateTableObject.js +10 -0
  136. package/dist/dataLayer/CreateTableObject.js.map +1 -0
  137. package/dist/dataLayer/DataLayerObjects.d.ts +22 -0
  138. package/dist/dataLayer/DataLayerObjects.js +33 -0
  139. package/dist/dataLayer/DataLayerObjects.js.map +1 -0
  140. package/dist/dataLayer/DeleteBeforeObject.d.ts +18 -0
  141. package/dist/dataLayer/DeleteBeforeObject.js +21 -0
  142. package/dist/dataLayer/DeleteBeforeObject.js.map +1 -0
  143. package/dist/dataLayer/DeleteObject.d.ts +19 -0
  144. package/dist/dataLayer/DeleteObject.js +23 -0
  145. package/dist/dataLayer/DeleteObject.js.map +1 -0
  146. package/dist/dataLayer/DropAttributeObject.d.ts +7 -0
  147. package/dist/dataLayer/DropAttributeObject.js +10 -0
  148. package/dist/dataLayer/DropAttributeObject.js.map +1 -0
  149. package/dist/dataLayer/GetBackupObject.d.ts +16 -0
  150. package/dist/dataLayer/GetBackupObject.js +20 -0
  151. package/dist/dataLayer/GetBackupObject.js.map +1 -0
  152. package/dist/dataLayer/InsertObject.d.ts +20 -0
  153. package/dist/dataLayer/InsertObject.js +24 -0
  154. package/dist/dataLayer/InsertObject.js.map +1 -0
  155. package/dist/dataLayer/ReadAuditLogObject.d.ts +18 -0
  156. package/dist/dataLayer/ReadAuditLogObject.js +22 -0
  157. package/dist/dataLayer/ReadAuditLogObject.js.map +1 -0
  158. package/dist/dataLayer/SQLSearch.d.ts +171 -0
  159. package/dist/dataLayer/SQLSearch.js +1168 -0
  160. package/dist/dataLayer/SQLSearch.js.map +1 -0
  161. package/dist/dataLayer/SearchByConditionsObject.d.ts +85 -0
  162. package/dist/dataLayer/SearchByConditionsObject.js +57 -0
  163. package/dist/dataLayer/SearchByConditionsObject.js.map +1 -0
  164. package/dist/dataLayer/SearchByHashObject.d.ts +17 -0
  165. package/dist/dataLayer/SearchByHashObject.js +20 -0
  166. package/dist/dataLayer/SearchByHashObject.js.map +1 -0
  167. package/dist/dataLayer/SearchObject.d.ts +30 -0
  168. package/dist/dataLayer/SearchObject.js +33 -0
  169. package/dist/dataLayer/SearchObject.js.map +1 -0
  170. package/dist/dataLayer/SqlSearchObject.d.ts +10 -0
  171. package/dist/dataLayer/SqlSearchObject.js +13 -0
  172. package/dist/dataLayer/SqlSearchObject.js.map +1 -0
  173. package/dist/dataLayer/UpdateObject.d.ts +18 -0
  174. package/dist/dataLayer/UpdateObject.js +22 -0
  175. package/dist/dataLayer/UpdateObject.js.map +1 -0
  176. package/dist/dataLayer/UpsertObject.d.ts +18 -0
  177. package/dist/dataLayer/UpsertObject.js +22 -0
  178. package/dist/dataLayer/UpsertObject.js.map +1 -0
  179. package/dist/dataLayer/bulkLoad.d.ts +28 -0
  180. package/dist/dataLayer/bulkLoad.js +624 -0
  181. package/dist/dataLayer/bulkLoad.js.map +1 -0
  182. package/dist/dataLayer/dataObjects/BulkLoadObjects.d.ts +17 -0
  183. package/dist/dataLayer/dataObjects/BulkLoadObjects.js +25 -0
  184. package/dist/dataLayer/dataObjects/BulkLoadObjects.js.map +1 -0
  185. package/dist/dataLayer/dataObjects/UpsertObject.d.ts +18 -0
  186. package/dist/dataLayer/dataObjects/UpsertObject.js +22 -0
  187. package/dist/dataLayer/dataObjects/UpsertObject.js.map +1 -0
  188. package/dist/dataLayer/delete.d.ts +22 -0
  189. package/dist/dataLayer/delete.js +111 -0
  190. package/dist/dataLayer/delete.js.map +1 -0
  191. package/dist/dataLayer/export.d.ts +15 -0
  192. package/dist/dataLayer/export.js +302 -0
  193. package/dist/dataLayer/export.js.map +1 -0
  194. package/dist/dataLayer/getBackup.d.ts +8 -0
  195. package/dist/dataLayer/getBackup.js +28 -0
  196. package/dist/dataLayer/getBackup.js.map +1 -0
  197. package/dist/dataLayer/harperBridge/BridgeMethods.d.ts +24 -0
  198. package/dist/dataLayer/harperBridge/BridgeMethods.js +62 -0
  199. package/dist/dataLayer/harperBridge/BridgeMethods.js.map +1 -0
  200. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +104 -0
  201. package/dist/dataLayer/harperBridge/ResourceBridge.js +630 -0
  202. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -0
  203. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateReturnObj.d.ts +14 -0
  204. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateReturnObj.js +24 -0
  205. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateReturnObj.js.map +1 -0
  206. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.d.ts +11 -0
  207. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +68 -0
  208. package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js.map +1 -0
  209. package/dist/dataLayer/harperBridge/harperBridge.d.ts +2 -0
  210. package/dist/dataLayer/harperBridge/harperBridge.js +18 -0
  211. package/dist/dataLayer/harperBridge/harperBridge.js.map +1 -0
  212. package/dist/dataLayer/harperBridge/lmdbBridge/LMDBBridge.d.ts +47 -0
  213. package/dist/dataLayer/harperBridge/lmdbBridge/LMDBBridge.js +99 -0
  214. package/dist/dataLayer/harperBridge/lmdbBridge/LMDBBridge.js.map +1 -0
  215. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +15 -0
  216. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +18 -0
  217. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -0
  218. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.d.ts +12 -0
  219. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +74 -0
  220. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js.map +1 -0
  221. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.d.ts +13 -0
  222. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +54 -0
  223. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js.map +1 -0
  224. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.d.ts +6 -0
  225. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +23 -0
  226. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js.map +1 -0
  227. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.d.ts +8 -0
  228. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +62 -0
  229. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js.map +1 -0
  230. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.d.ts +8 -0
  231. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +82 -0
  232. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js.map +1 -0
  233. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.d.ts +11 -0
  234. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +76 -0
  235. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js.map +1 -0
  236. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.d.ts +9 -0
  237. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +83 -0
  238. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js.map +1 -0
  239. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.d.ts +6 -0
  240. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +73 -0
  241. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js.map +1 -0
  242. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.d.ts +6 -0
  243. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +110 -0
  244. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js.map +1 -0
  245. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.d.ts +14 -0
  246. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +33 -0
  247. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js.map +1 -0
  248. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.d.ts +7 -0
  249. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +110 -0
  250. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js.map +1 -0
  251. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.d.ts +6 -0
  252. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +21 -0
  253. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js.map +1 -0
  254. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.d.ts +14 -0
  255. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +25 -0
  256. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js.map +1 -0
  257. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.d.ts +7 -0
  258. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +180 -0
  259. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js.map +1 -0
  260. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.d.ts +8 -0
  261. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +134 -0
  262. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js.map +1 -0
  263. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.d.ts +6 -0
  264. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +14 -0
  265. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js.map +1 -0
  266. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.d.ts +15 -0
  267. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +26 -0
  268. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js.map +1 -0
  269. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbTransaction.d.ts +8 -0
  270. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbTransaction.js +17 -0
  271. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbTransaction.js.map +1 -0
  272. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.d.ts +12 -0
  273. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +52 -0
  274. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js.map +1 -0
  275. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.d.ts +15 -0
  276. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +56 -0
  277. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js.map +1 -0
  278. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.d.ts +16 -0
  279. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +20 -0
  280. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js.map +1 -0
  281. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBDeleteTransactionObject.d.ts +16 -0
  282. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBDeleteTransactionObject.js +22 -0
  283. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBDeleteTransactionObject.js.map +1 -0
  284. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBInsertTransactionObject.d.ts +16 -0
  285. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBInsertTransactionObject.js +21 -0
  286. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBInsertTransactionObject.js.map +1 -0
  287. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBTransactionObject.d.ts +19 -0
  288. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBTransactionObject.js +22 -0
  289. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBTransactionObject.js.map +1 -0
  290. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpdateTransactionObject.d.ts +18 -0
  291. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpdateTransactionObject.js +23 -0
  292. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpdateTransactionObject.js.map +1 -0
  293. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpsertTransactionObject.d.ts +18 -0
  294. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpsertTransactionObject.js +23 -0
  295. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpsertTransactionObject.js.map +1 -0
  296. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/TableSizeObject.d.ts +21 -0
  297. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/TableSizeObject.js +24 -0
  298. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/TableSizeObject.js.map +1 -0
  299. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.d.ts +7 -0
  300. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +19 -0
  301. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js.map +1 -0
  302. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.d.ts +22 -0
  303. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +137 -0
  304. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -0
  305. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.d.ts +9 -0
  306. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +73 -0
  307. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js.map +1 -0
  308. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.d.ts +8 -0
  309. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +38 -0
  310. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js.map +1 -0
  311. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.d.ts +8 -0
  312. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +29 -0
  313. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js.map +1 -0
  314. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.d.ts +17 -0
  315. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +63 -0
  316. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js.map +1 -0
  317. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.d.ts +106 -0
  318. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +251 -0
  319. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js.map +1 -0
  320. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.d.ts +8 -0
  321. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +66 -0
  322. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js.map +1 -0
  323. package/dist/dataLayer/hdbInfoController.d.ts +28 -0
  324. package/dist/dataLayer/hdbInfoController.js +203 -0
  325. package/dist/dataLayer/hdbInfoController.js.map +1 -0
  326. package/dist/dataLayer/insert.d.ts +44 -0
  327. package/dist/dataLayer/insert.js +192 -0
  328. package/dist/dataLayer/insert.js.map +1 -0
  329. package/dist/dataLayer/readAuditLog.d.ts +8 -0
  330. package/dist/dataLayer/readAuditLog.js +37 -0
  331. package/dist/dataLayer/readAuditLog.js.map +1 -0
  332. package/dist/dataLayer/schema.d.ts +24 -0
  333. package/dist/dataLayer/schema.js +225 -0
  334. package/dist/dataLayer/schema.js.map +1 -0
  335. package/dist/dataLayer/schemaDescribe.d.ts +26 -0
  336. package/dist/dataLayer/schemaDescribe.js +265 -0
  337. package/dist/dataLayer/schemaDescribe.js.map +1 -0
  338. package/dist/dataLayer/search.d.ts +4 -0
  339. package/dist/dataLayer/search.js +56 -0
  340. package/dist/dataLayer/search.js.map +1 -0
  341. package/dist/dataLayer/transaction.d.ts +8 -0
  342. package/dist/dataLayer/transaction.js +16 -0
  343. package/dist/dataLayer/transaction.js.map +1 -0
  344. package/dist/dataLayer/update.d.ts +15 -0
  345. package/dist/dataLayer/update.js +107 -0
  346. package/dist/dataLayer/update.js.map +1 -0
  347. package/dist/globals.d.ts +7 -0
  348. package/dist/globals.js +12 -0
  349. package/dist/globals.js.map +1 -0
  350. package/dist/index.d.ts +7 -0
  351. package/dist/index.js +40 -0
  352. package/dist/index.js.map +1 -0
  353. package/dist/json/systemSchema.json +373 -0
  354. package/dist/launchServiceScripts/utility/checkNodeVersion.d.ts +4 -0
  355. package/dist/launchServiceScripts/utility/checkNodeVersion.js +13 -0
  356. package/dist/launchServiceScripts/utility/checkNodeVersion.js.map +1 -0
  357. package/dist/resources/DatabaseTransaction.d.ts +96 -0
  358. package/dist/resources/DatabaseTransaction.js +354 -0
  359. package/dist/resources/DatabaseTransaction.js.map +1 -0
  360. package/dist/resources/ErrorResource.d.ts +26 -0
  361. package/dist/resources/ErrorResource.js +60 -0
  362. package/dist/resources/ErrorResource.js.map +1 -0
  363. package/dist/resources/IterableEventQueue.d.ts +19 -0
  364. package/dist/resources/IterableEventQueue.js +103 -0
  365. package/dist/resources/IterableEventQueue.js.map +1 -0
  366. package/dist/resources/LMDBTransaction.d.ts +43 -0
  367. package/dist/resources/LMDBTransaction.js +371 -0
  368. package/dist/resources/LMDBTransaction.js.map +1 -0
  369. package/dist/resources/RecordEncoder.d.ts +65 -0
  370. package/dist/resources/RecordEncoder.js +700 -0
  371. package/dist/resources/RecordEncoder.js.map +1 -0
  372. package/dist/resources/RequestTarget.d.ts +57 -0
  373. package/dist/resources/RequestTarget.js +91 -0
  374. package/dist/resources/RequestTarget.js.map +1 -0
  375. package/dist/resources/Resource.d.ts +152 -0
  376. package/dist/resources/Resource.js +727 -0
  377. package/dist/resources/Resource.js.map +1 -0
  378. package/dist/resources/ResourceInterface.d.ts +162 -0
  379. package/dist/resources/ResourceInterface.js +3 -0
  380. package/dist/resources/ResourceInterface.js.map +1 -0
  381. package/dist/resources/ResourceInterfaceV2.d.ts +21 -0
  382. package/dist/resources/ResourceInterfaceV2.js +3 -0
  383. package/dist/resources/ResourceInterfaceV2.js.map +1 -0
  384. package/dist/resources/ResourceV2.d.ts +30 -0
  385. package/dist/resources/ResourceV2.js +27 -0
  386. package/dist/resources/ResourceV2.js.map +1 -0
  387. package/dist/resources/Resources.d.ts +36 -0
  388. package/dist/resources/Resources.js +155 -0
  389. package/dist/resources/Resources.js.map +1 -0
  390. package/dist/resources/RocksIndexStore.d.ts +24 -0
  391. package/dist/resources/RocksIndexStore.js +54 -0
  392. package/dist/resources/RocksIndexStore.js.map +1 -0
  393. package/dist/resources/RocksTransactionLogStore.d.ts +60 -0
  394. package/dist/resources/RocksTransactionLogStore.js +344 -0
  395. package/dist/resources/RocksTransactionLogStore.js.map +1 -0
  396. package/dist/resources/Table.d.ts +854 -0
  397. package/dist/resources/Table.js +4350 -0
  398. package/dist/resources/Table.js.map +1 -0
  399. package/dist/resources/analytics/hostnames.d.ts +16 -0
  400. package/dist/resources/analytics/hostnames.js +72 -0
  401. package/dist/resources/analytics/hostnames.js.map +1 -0
  402. package/dist/resources/analytics/metadata.d.ts +9 -0
  403. package/dist/resources/analytics/metadata.js +12 -0
  404. package/dist/resources/analytics/metadata.js.map +1 -0
  405. package/dist/resources/analytics/profile.d.ts +2 -0
  406. package/dist/resources/analytics/profile.js +144 -0
  407. package/dist/resources/analytics/profile.js.map +1 -0
  408. package/dist/resources/analytics/read.d.ts +41 -0
  409. package/dist/resources/analytics/read.js +189 -0
  410. package/dist/resources/analytics/read.js.map +1 -0
  411. package/dist/resources/analytics/write.d.ts +131 -0
  412. package/dist/resources/analytics/write.js +822 -0
  413. package/dist/resources/analytics/write.js.map +1 -0
  414. package/dist/resources/auditStore.d.ts +81 -0
  415. package/dist/resources/auditStore.js +572 -0
  416. package/dist/resources/auditStore.js.map +1 -0
  417. package/dist/resources/blob.d.ts +137 -0
  418. package/dist/resources/blob.js +1273 -0
  419. package/dist/resources/blob.js.map +1 -0
  420. package/dist/resources/crdt.d.ts +19 -0
  421. package/dist/resources/crdt.js +146 -0
  422. package/dist/resources/crdt.js.map +1 -0
  423. package/dist/resources/dataLoader.d.ts +98 -0
  424. package/dist/resources/dataLoader.js +461 -0
  425. package/dist/resources/dataLoader.js.map +1 -0
  426. package/dist/resources/databases.d.ts +131 -0
  427. package/dist/resources/databases.js +1220 -0
  428. package/dist/resources/databases.js.map +1 -0
  429. package/dist/resources/graphql.d.ts +19 -0
  430. package/dist/resources/graphql.js +223 -0
  431. package/dist/resources/graphql.js.map +1 -0
  432. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +87 -0
  433. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +598 -0
  434. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -0
  435. package/dist/resources/indexes/customIndexes.d.ts +4 -0
  436. package/dist/resources/indexes/customIndexes.js +10 -0
  437. package/dist/resources/indexes/customIndexes.js.map +1 -0
  438. package/dist/resources/indexes/vector.d.ts +2 -0
  439. package/dist/resources/indexes/vector.js +40 -0
  440. package/dist/resources/indexes/vector.js.map +1 -0
  441. package/dist/resources/jsResource.d.ts +24 -0
  442. package/dist/resources/jsResource.js +82 -0
  443. package/dist/resources/jsResource.js.map +1 -0
  444. package/dist/resources/loadEnv.d.ts +5 -0
  445. package/dist/resources/loadEnv.js +28 -0
  446. package/dist/resources/loadEnv.js.map +1 -0
  447. package/dist/resources/login.d.ts +3 -0
  448. package/dist/resources/login.js +22 -0
  449. package/dist/resources/login.js.map +1 -0
  450. package/dist/resources/openApi.d.ts +27 -0
  451. package/dist/resources/openApi.js +327 -0
  452. package/dist/resources/openApi.js.map +1 -0
  453. package/dist/resources/registrationDeprecated.d.ts +4 -0
  454. package/dist/resources/registrationDeprecated.js +11 -0
  455. package/dist/resources/registrationDeprecated.js.map +1 -0
  456. package/dist/resources/replayLogs.d.ts +2 -0
  457. package/dist/resources/replayLogs.js +170 -0
  458. package/dist/resources/replayLogs.js.map +1 -0
  459. package/dist/resources/roles.d.ts +11 -0
  460. package/dist/resources/roles.js +102 -0
  461. package/dist/resources/roles.js.map +1 -0
  462. package/dist/resources/search.d.ts +39 -0
  463. package/dist/resources/search.js +1333 -0
  464. package/dist/resources/search.js.map +1 -0
  465. package/dist/resources/tracked.d.ts +49 -0
  466. package/dist/resources/tracked.js +665 -0
  467. package/dist/resources/tracked.js.map +1 -0
  468. package/dist/resources/transaction.d.ts +9 -0
  469. package/dist/resources/transaction.js +89 -0
  470. package/dist/resources/transaction.js.map +1 -0
  471. package/dist/resources/transactionBroadcast.d.ts +38 -0
  472. package/dist/resources/transactionBroadcast.js +263 -0
  473. package/dist/resources/transactionBroadcast.js.map +1 -0
  474. package/dist/security/auth.d.ts +9 -0
  475. package/dist/security/auth.js +408 -0
  476. package/dist/security/auth.js.map +1 -0
  477. package/dist/security/certificateVerification/certificateVerificationSource.d.ts +18 -0
  478. package/dist/security/certificateVerification/certificateVerificationSource.js +78 -0
  479. package/dist/security/certificateVerification/certificateVerificationSource.js.map +1 -0
  480. package/dist/security/certificateVerification/configValidation.d.ts +14 -0
  481. package/dist/security/certificateVerification/configValidation.js +101 -0
  482. package/dist/security/certificateVerification/configValidation.js.map +1 -0
  483. package/dist/security/certificateVerification/crlVerification.d.ts +29 -0
  484. package/dist/security/certificateVerification/crlVerification.js +564 -0
  485. package/dist/security/certificateVerification/crlVerification.js.map +1 -0
  486. package/dist/security/certificateVerification/index.d.ts +31 -0
  487. package/dist/security/certificateVerification/index.js +111 -0
  488. package/dist/security/certificateVerification/index.js.map +1 -0
  489. package/dist/security/certificateVerification/ocspVerification.d.ts +23 -0
  490. package/dist/security/certificateVerification/ocspVerification.js +117 -0
  491. package/dist/security/certificateVerification/ocspVerification.js.map +1 -0
  492. package/dist/security/certificateVerification/pkijs-ed25519-patch.d.ts +14 -0
  493. package/dist/security/certificateVerification/pkijs-ed25519-patch.js +183 -0
  494. package/dist/security/certificateVerification/pkijs-ed25519-patch.js.map +1 -0
  495. package/dist/security/certificateVerification/types.d.ts +105 -0
  496. package/dist/security/certificateVerification/types.js +6 -0
  497. package/dist/security/certificateVerification/types.js.map +1 -0
  498. package/dist/security/certificateVerification/verificationConfig.d.ts +29 -0
  499. package/dist/security/certificateVerification/verificationConfig.js +121 -0
  500. package/dist/security/certificateVerification/verificationConfig.js.map +1 -0
  501. package/dist/security/certificateVerification/verificationUtils.d.ts +79 -0
  502. package/dist/security/certificateVerification/verificationUtils.js +441 -0
  503. package/dist/security/certificateVerification/verificationUtils.js.map +1 -0
  504. package/dist/security/cryptoHash.d.ts +2 -0
  505. package/dist/security/cryptoHash.js +35 -0
  506. package/dist/security/cryptoHash.js.map +1 -0
  507. package/dist/security/data_objects/PermissionAttributeResponseObject.d.ts +11 -0
  508. package/dist/security/data_objects/PermissionAttributeResponseObject.js +14 -0
  509. package/dist/security/data_objects/PermissionAttributeResponseObject.js.map +1 -0
  510. package/dist/security/data_objects/PermissionResponseObject.d.ts +57 -0
  511. package/dist/security/data_objects/PermissionResponseObject.js +105 -0
  512. package/dist/security/data_objects/PermissionResponseObject.js.map +1 -0
  513. package/dist/security/data_objects/PermissionTableResponseObject.d.ts +16 -0
  514. package/dist/security/data_objects/PermissionTableResponseObject.js +19 -0
  515. package/dist/security/data_objects/PermissionTableResponseObject.js.map +1 -0
  516. package/dist/security/fastifyAuth.d.ts +2 -0
  517. package/dist/security/fastifyAuth.js +135 -0
  518. package/dist/security/fastifyAuth.js.map +1 -0
  519. package/dist/security/impersonation.d.ts +11 -0
  520. package/dist/security/impersonation.js +139 -0
  521. package/dist/security/impersonation.js.map +1 -0
  522. package/dist/security/jsLoader.d.ts +9 -0
  523. package/dist/security/jsLoader.js +522 -0
  524. package/dist/security/jsLoader.js.map +1 -0
  525. package/dist/security/keys.d.ts +119 -0
  526. package/dist/security/keys.js +866 -0
  527. package/dist/security/keys.js.map +1 -0
  528. package/dist/security/permissionsTranslator.d.ts +9 -0
  529. package/dist/security/permissionsTranslator.js +269 -0
  530. package/dist/security/permissionsTranslator.js.map +1 -0
  531. package/dist/security/role.d.ts +5 -0
  532. package/dist/security/role.js +160 -0
  533. package/dist/security/role.js.map +1 -0
  534. package/dist/security/tokenAuthentication.d.ts +38 -0
  535. package/dist/security/tokenAuthentication.js +205 -0
  536. package/dist/security/tokenAuthentication.js.map +1 -0
  537. package/dist/security/user.d.ts +77 -0
  538. package/dist/security/user.js +349 -0
  539. package/dist/security/user.js.map +1 -0
  540. package/dist/server/DurableSubscriptionsSession.d.ts +74 -0
  541. package/dist/server/DurableSubscriptionsSession.js +511 -0
  542. package/dist/server/DurableSubscriptionsSession.js.map +1 -0
  543. package/dist/server/REST.d.ts +16 -0
  544. package/dist/server/REST.js +423 -0
  545. package/dist/server/REST.js.map +1 -0
  546. package/dist/server/Server.d.ts +62 -0
  547. package/dist/server/Server.js +27 -0
  548. package/dist/server/Server.js.map +1 -0
  549. package/dist/server/fastifyRoutes/helpers/getCORSOptions.d.ts +11 -0
  550. package/dist/server/fastifyRoutes/helpers/getCORSOptions.js +32 -0
  551. package/dist/server/fastifyRoutes/helpers/getCORSOptions.js.map +1 -0
  552. package/dist/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.d.ts +6 -0
  553. package/dist/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +13 -0
  554. package/dist/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js.map +1 -0
  555. package/dist/server/fastifyRoutes/helpers/getServerOptions.d.ts +12 -0
  556. package/dist/server/fastifyRoutes/helpers/getServerOptions.js +30 -0
  557. package/dist/server/fastifyRoutes/helpers/getServerOptions.js.map +1 -0
  558. package/dist/server/fastifyRoutes/plugins/hdbCore.d.ts +2 -0
  559. package/dist/server/fastifyRoutes/plugins/hdbCore.js +31 -0
  560. package/dist/server/fastifyRoutes/plugins/hdbCore.js.map +1 -0
  561. package/dist/server/fastifyRoutes.d.ts +25 -0
  562. package/dist/server/fastifyRoutes.js +235 -0
  563. package/dist/server/fastifyRoutes.js.map +1 -0
  564. package/dist/server/graphqlQuerying.d.ts +1 -0
  565. package/dist/server/graphqlQuerying.js +630 -0
  566. package/dist/server/graphqlQuerying.js.map +1 -0
  567. package/dist/server/http.d.ts +15 -0
  568. package/dist/server/http.js +650 -0
  569. package/dist/server/http.js.map +1 -0
  570. package/dist/server/itc/serverHandlers.d.ts +10 -0
  571. package/dist/server/itc/serverHandlers.js +153 -0
  572. package/dist/server/itc/serverHandlers.js.map +1 -0
  573. package/dist/server/itc/utility/ITCEventObject.d.ts +6 -0
  574. package/dist/server/itc/utility/ITCEventObject.js +9 -0
  575. package/dist/server/itc/utility/ITCEventObject.js.map +1 -0
  576. package/dist/server/jobs/JobObject.d.ts +15 -0
  577. package/dist/server/jobs/JobObject.js +22 -0
  578. package/dist/server/jobs/JobObject.js.map +1 -0
  579. package/dist/server/jobs/jobProcess.d.ts +1 -0
  580. package/dist/server/jobs/jobProcess.js +66 -0
  581. package/dist/server/jobs/jobProcess.js.map +1 -0
  582. package/dist/server/jobs/jobRunner.d.ts +11 -0
  583. package/dist/server/jobs/jobRunner.js +160 -0
  584. package/dist/server/jobs/jobRunner.js.map +1 -0
  585. package/dist/server/jobs/jobs.d.ts +20 -0
  586. package/dist/server/jobs/jobs.js +267 -0
  587. package/dist/server/jobs/jobs.js.map +1 -0
  588. package/dist/server/loadRootComponents.d.ts +5 -0
  589. package/dist/server/loadRootComponents.js +45 -0
  590. package/dist/server/loadRootComponents.js.map +1 -0
  591. package/dist/server/mqtt.d.ts +9 -0
  592. package/dist/server/mqtt.js +466 -0
  593. package/dist/server/mqtt.js.map +1 -0
  594. package/dist/server/nodeName.d.ts +5 -0
  595. package/dist/server/nodeName.js +84 -0
  596. package/dist/server/nodeName.js.map +1 -0
  597. package/dist/server/operationsServer.d.ts +48 -0
  598. package/dist/server/operationsServer.js +265 -0
  599. package/dist/server/operationsServer.js.map +1 -0
  600. package/dist/server/serverHelpers/Headers.d.ts +20 -0
  601. package/dist/server/serverHelpers/Headers.js +134 -0
  602. package/dist/server/serverHelpers/Headers.js.map +1 -0
  603. package/dist/server/serverHelpers/JSONStream.d.ts +14 -0
  604. package/dist/server/serverHelpers/JSONStream.js +322 -0
  605. package/dist/server/serverHelpers/JSONStream.js.map +1 -0
  606. package/dist/server/serverHelpers/OperationFunctionObject.d.ts +9 -0
  607. package/dist/server/serverHelpers/OperationFunctionObject.js +17 -0
  608. package/dist/server/serverHelpers/OperationFunctionObject.js.map +1 -0
  609. package/dist/server/serverHelpers/Request.d.ts +69 -0
  610. package/dist/server/serverHelpers/Request.js +141 -0
  611. package/dist/server/serverHelpers/Request.js.map +1 -0
  612. package/dist/server/serverHelpers/contentTypes.d.ts +57 -0
  613. package/dist/server/serverHelpers/contentTypes.js +639 -0
  614. package/dist/server/serverHelpers/contentTypes.js.map +1 -0
  615. package/dist/server/serverHelpers/requestTimePlugin.d.ts +2 -0
  616. package/dist/server/serverHelpers/requestTimePlugin.js +56 -0
  617. package/dist/server/serverHelpers/requestTimePlugin.js.map +1 -0
  618. package/dist/server/serverHelpers/serverHandlers.d.ts +6 -0
  619. package/dist/server/serverHelpers/serverHandlers.js +130 -0
  620. package/dist/server/serverHelpers/serverHandlers.js.map +1 -0
  621. package/dist/server/serverHelpers/serverUtilities.d.ts +29 -0
  622. package/dist/server/serverHelpers/serverUtilities.js +356 -0
  623. package/dist/server/serverHelpers/serverUtilities.js.map +1 -0
  624. package/dist/server/serverRegistry.d.ts +3 -0
  625. package/dist/server/serverRegistry.js +11 -0
  626. package/dist/server/serverRegistry.js.map +1 -0
  627. package/dist/server/static.d.ts +16 -0
  628. package/dist/server/static.js +164 -0
  629. package/dist/server/static.js.map +1 -0
  630. package/dist/server/status/definitions.d.ts +27 -0
  631. package/dist/server/status/definitions.js +22 -0
  632. package/dist/server/status/definitions.js.map +1 -0
  633. package/dist/server/status/index.d.ts +26 -0
  634. package/dist/server/status/index.js +89 -0
  635. package/dist/server/status/index.js.map +1 -0
  636. package/dist/server/storageReclamation.d.ts +18 -0
  637. package/dist/server/storageReclamation.js +96 -0
  638. package/dist/server/storageReclamation.js.map +1 -0
  639. package/dist/server/threads/itc.d.ts +53 -0
  640. package/dist/server/threads/itc.js +81 -0
  641. package/dist/server/threads/itc.js.map +1 -0
  642. package/dist/server/threads/manageThreads.d.ts +30 -0
  643. package/dist/server/threads/manageThreads.js +579 -0
  644. package/dist/server/threads/manageThreads.js.map +1 -0
  645. package/dist/server/threads/socketRouter.d.ts +6 -0
  646. package/dist/server/threads/socketRouter.js +395 -0
  647. package/dist/server/threads/socketRouter.js.map +1 -0
  648. package/dist/server/threads/threadServer.d.ts +5 -0
  649. package/dist/server/threads/threadServer.js +288 -0
  650. package/dist/server/threads/threadServer.js.map +1 -0
  651. package/dist/server/throttle.d.ts +7 -0
  652. package/dist/server/throttle.js +71 -0
  653. package/dist/server/throttle.js.map +1 -0
  654. package/dist/sqlTranslator/SelectValidator.d.ts +79 -0
  655. package/dist/sqlTranslator/SelectValidator.js +274 -0
  656. package/dist/sqlTranslator/SelectValidator.js.map +1 -0
  657. package/dist/sqlTranslator/alasqlFunctionImporter.d.ts +2 -0
  658. package/dist/sqlTranslator/alasqlFunctionImporter.js +55 -0
  659. package/dist/sqlTranslator/alasqlFunctionImporter.js.map +1 -0
  660. package/dist/sqlTranslator/deleteTranslator.d.ts +2 -0
  661. package/dist/sqlTranslator/deleteTranslator.js +56 -0
  662. package/dist/sqlTranslator/deleteTranslator.js.map +1 -0
  663. package/dist/sqlTranslator/index.d.ts +16 -0
  664. package/dist/sqlTranslator/index.js +215 -0
  665. package/dist/sqlTranslator/index.js.map +1 -0
  666. package/dist/sqlTranslator/sql_statement_bucket.d.ts +46 -0
  667. package/dist/sqlTranslator/sql_statement_bucket.js +430 -0
  668. package/dist/sqlTranslator/sql_statement_bucket.js.map +1 -0
  669. package/dist/upgrade/UpgradeObjects.d.ts +5 -0
  670. package/dist/upgrade/UpgradeObjects.js +12 -0
  671. package/dist/upgrade/UpgradeObjects.js.map +1 -0
  672. package/dist/upgrade/directives/directivesController.d.ts +30 -0
  673. package/dist/upgrade/directives/directivesController.js +76 -0
  674. package/dist/upgrade/directives/directivesController.js.map +1 -0
  675. package/dist/upgrade/directivesManager.d.ts +7 -0
  676. package/dist/upgrade/directivesManager.js +125 -0
  677. package/dist/upgrade/directivesManager.js.map +1 -0
  678. package/dist/upgrade/upgradePrompt.d.ts +13 -0
  679. package/dist/upgrade/upgradePrompt.js +102 -0
  680. package/dist/upgrade/upgradePrompt.js.map +1 -0
  681. package/dist/upgrade/upgradeUtilities.d.ts +10 -0
  682. package/dist/upgrade/upgradeUtilities.js +26 -0
  683. package/dist/upgrade/upgradeUtilities.js.map +1 -0
  684. package/dist/utility/AWS/AWSConnector.d.ts +2 -0
  685. package/dist/utility/AWS/AWSConnector.js +26 -0
  686. package/dist/utility/AWS/AWSConnector.js.map +1 -0
  687. package/dist/utility/OperationFunctionCaller.d.ts +9 -0
  688. package/dist/utility/OperationFunctionCaller.js +58 -0
  689. package/dist/utility/OperationFunctionCaller.js.map +1 -0
  690. package/dist/utility/assignCmdEnvVariables.d.ts +10 -0
  691. package/dist/utility/assignCmdEnvVariables.js +55 -0
  692. package/dist/utility/assignCmdEnvVariables.js.map +1 -0
  693. package/dist/utility/common_utils.d.ts +264 -0
  694. package/dist/utility/common_utils.js +806 -0
  695. package/dist/utility/common_utils.js.map +1 -0
  696. package/dist/utility/environment/environmentManager.d.ts +41 -0
  697. package/dist/utility/environment/environmentManager.js +179 -0
  698. package/dist/utility/environment/environmentManager.js.map +1 -0
  699. package/dist/utility/environment/systemInformation.d.ts +67 -0
  700. package/dist/utility/environment/systemInformation.js +326 -0
  701. package/dist/utility/environment/systemInformation.js.map +1 -0
  702. package/dist/utility/errors/commonErrors.d.ts +171 -0
  703. package/dist/utility/errors/commonErrors.js +230 -0
  704. package/dist/utility/errors/commonErrors.js.map +1 -0
  705. package/dist/utility/errors/hdbError.d.ts +76 -0
  706. package/dist/utility/errors/hdbError.js +128 -0
  707. package/dist/utility/errors/hdbError.js.map +1 -0
  708. package/dist/utility/functions/date/dateFunctions.d.ts +11 -0
  709. package/dist/utility/functions/date/dateFunctions.js +64 -0
  710. package/dist/utility/functions/date/dateFunctions.js.map +1 -0
  711. package/dist/utility/functions/geo.d.ts +74 -0
  712. package/dist/utility/functions/geo.js +311 -0
  713. package/dist/utility/functions/geo.js.map +1 -0
  714. package/dist/utility/functions/sql/alaSQLExtension.d.ts +13 -0
  715. package/dist/utility/functions/sql/alaSQLExtension.js +96 -0
  716. package/dist/utility/functions/sql/alaSQLExtension.js.map +1 -0
  717. package/dist/utility/globalSchema.d.ts +151 -0
  718. package/dist/utility/globalSchema.js +34 -0
  719. package/dist/utility/globalSchema.js.map +1 -0
  720. package/dist/utility/hdbTerms.d.ts +737 -0
  721. package/dist/utility/hdbTerms.js +756 -0
  722. package/dist/utility/hdbTerms.js.map +1 -0
  723. package/dist/utility/install/checkJWTTokensExist.d.ts +5 -0
  724. package/dist/utility/install/checkJWTTokensExist.js +53 -0
  725. package/dist/utility/install/checkJWTTokensExist.js.map +1 -0
  726. package/dist/utility/install/installer.d.ts +17 -0
  727. package/dist/utility/install/installer.js +569 -0
  728. package/dist/utility/install/installer.js.map +1 -0
  729. package/dist/utility/installation.d.ts +12 -0
  730. package/dist/utility/installation.js +64 -0
  731. package/dist/utility/installation.js.map +1 -0
  732. package/dist/utility/lmdb/DBIDefinition.d.ts +16 -0
  733. package/dist/utility/lmdb/DBIDefinition.js +19 -0
  734. package/dist/utility/lmdb/DBIDefinition.js.map +1 -0
  735. package/dist/utility/lmdb/DeleteRecordsResponseObject.d.ts +21 -0
  736. package/dist/utility/lmdb/DeleteRecordsResponseObject.js +24 -0
  737. package/dist/utility/lmdb/DeleteRecordsResponseObject.js.map +1 -0
  738. package/dist/utility/lmdb/InsertRecordsResponseObject.d.ts +18 -0
  739. package/dist/utility/lmdb/InsertRecordsResponseObject.js +21 -0
  740. package/dist/utility/lmdb/InsertRecordsResponseObject.js.map +1 -0
  741. package/dist/utility/lmdb/OpenDBIObject.d.ts +23 -0
  742. package/dist/utility/lmdb/OpenDBIObject.js +29 -0
  743. package/dist/utility/lmdb/OpenDBIObject.js.map +1 -0
  744. package/dist/utility/lmdb/OpenEnvironmentObject.d.ts +22 -0
  745. package/dist/utility/lmdb/OpenEnvironmentObject.js +40 -0
  746. package/dist/utility/lmdb/OpenEnvironmentObject.js.map +1 -0
  747. package/dist/utility/lmdb/UpdateRecordsResponseObject.d.ts +21 -0
  748. package/dist/utility/lmdb/UpdateRecordsResponseObject.js +24 -0
  749. package/dist/utility/lmdb/UpdateRecordsResponseObject.js.map +1 -0
  750. package/dist/utility/lmdb/UpsertRecordsResponseObject.d.ts +18 -0
  751. package/dist/utility/lmdb/UpsertRecordsResponseObject.js +21 -0
  752. package/dist/utility/lmdb/UpsertRecordsResponseObject.js.map +1 -0
  753. package/dist/utility/lmdb/cleanLMDBMap.d.ts +6 -0
  754. package/dist/utility/lmdb/cleanLMDBMap.js +63 -0
  755. package/dist/utility/lmdb/cleanLMDBMap.js.map +1 -0
  756. package/dist/utility/lmdb/commonUtility.d.ts +28 -0
  757. package/dist/utility/lmdb/commonUtility.js +120 -0
  758. package/dist/utility/lmdb/commonUtility.js.map +1 -0
  759. package/dist/utility/lmdb/deleteUtility.d.ts +10 -0
  760. package/dist/utility/lmdb/deleteUtility.js +115 -0
  761. package/dist/utility/lmdb/deleteUtility.js.map +1 -0
  762. package/dist/utility/lmdb/environmentUtility.d.ts +81 -0
  763. package/dist/utility/lmdb/environmentUtility.js +432 -0
  764. package/dist/utility/lmdb/environmentUtility.js.map +1 -0
  765. package/dist/utility/lmdb/searchCursorFunctions.d.ts +93 -0
  766. package/dist/utility/lmdb/searchCursorFunctions.js +174 -0
  767. package/dist/utility/lmdb/searchCursorFunctions.js.map +1 -0
  768. package/dist/utility/lmdb/searchUtility.d.ts +204 -0
  769. package/dist/utility/lmdb/searchUtility.js +724 -0
  770. package/dist/utility/lmdb/searchUtility.js.map +1 -0
  771. package/dist/utility/lmdb/terms.d.ts +34 -0
  772. package/dist/utility/lmdb/terms.js +52 -0
  773. package/dist/utility/lmdb/terms.js.map +1 -0
  774. package/dist/utility/lmdb/writeUtility.d.ts +32 -0
  775. package/dist/utility/lmdb/writeUtility.js +360 -0
  776. package/dist/utility/lmdb/writeUtility.js.map +1 -0
  777. package/dist/utility/logging/harper_logger.d.ts +141 -0
  778. package/dist/utility/logging/harper_logger.js +862 -0
  779. package/dist/utility/logging/harper_logger.js.map +1 -0
  780. package/dist/utility/logging/logRotator.d.ts +19 -0
  781. package/dist/utility/logging/logRotator.js +146 -0
  782. package/dist/utility/logging/logRotator.js.map +1 -0
  783. package/dist/utility/logging/logger.d.ts +11 -0
  784. package/dist/utility/logging/logger.js +19 -0
  785. package/dist/utility/logging/logger.js.map +1 -0
  786. package/dist/utility/logging/readLog.d.ts +8 -0
  787. package/dist/utility/logging/readLog.js +339 -0
  788. package/dist/utility/logging/readLog.js.map +1 -0
  789. package/dist/utility/logging/transactionLog.d.ts +8 -0
  790. package/dist/utility/logging/transactionLog.js +46 -0
  791. package/dist/utility/logging/transactionLog.js.map +1 -0
  792. package/dist/utility/mount_hdb.d.ts +2 -0
  793. package/dist/utility/mount_hdb.js +51 -0
  794. package/dist/utility/mount_hdb.js.map +1 -0
  795. package/dist/utility/npmUtilities.d.ts +6 -0
  796. package/dist/utility/npmUtilities.js +91 -0
  797. package/dist/utility/npmUtilities.js.map +1 -0
  798. package/dist/utility/operationPermissions.d.ts +36 -0
  799. package/dist/utility/operationPermissions.js +116 -0
  800. package/dist/utility/operationPermissions.js.map +1 -0
  801. package/dist/utility/operation_authorization.d.ts +18 -0
  802. package/dist/utility/operation_authorization.js +667 -0
  803. package/dist/utility/operation_authorization.js.map +1 -0
  804. package/dist/utility/packageUtils.d.ts +9 -0
  805. package/dist/utility/packageUtils.js +52 -0
  806. package/dist/utility/packageUtils.js.map +1 -0
  807. package/dist/utility/password.d.ts +20 -0
  808. package/dist/utility/password.js +119 -0
  809. package/dist/utility/password.js.map +1 -0
  810. package/dist/utility/processManagement/processManagement.d.ts +35 -0
  811. package/dist/utility/processManagement/processManagement.js +188 -0
  812. package/dist/utility/processManagement/processManagement.js.map +1 -0
  813. package/dist/utility/processManagement/servicesConfig.d.ts +29 -0
  814. package/dist/utility/processManagement/servicesConfig.js +52 -0
  815. package/dist/utility/processManagement/servicesConfig.js.map +1 -0
  816. package/dist/utility/scripts/restartHdb.d.ts +1 -0
  817. package/dist/utility/scripts/restartHdb.js +23 -0
  818. package/dist/utility/scripts/restartHdb.js.map +1 -0
  819. package/dist/utility/signalling.d.ts +2 -0
  820. package/dist/utility/signalling.js +35 -0
  821. package/dist/utility/signalling.js.map +1 -0
  822. package/dist/utility/terms/certificates.d.ts +46 -0
  823. package/dist/utility/terms/certificates.js +65 -0
  824. package/dist/utility/terms/certificates.js.map +1 -0
  825. package/dist/utility/when.d.ts +3 -0
  826. package/dist/utility/when.js +18 -0
  827. package/dist/utility/when.js.map +1 -0
  828. package/dist/validation/bulkDeleteValidator.d.ts +2 -0
  829. package/dist/validation/bulkDeleteValidator.js +21 -0
  830. package/dist/validation/bulkDeleteValidator.js.map +1 -0
  831. package/dist/validation/check_permissions.d.ts +2 -0
  832. package/dist/validation/check_permissions.js +20 -0
  833. package/dist/validation/check_permissions.js.map +1 -0
  834. package/dist/validation/common_validators.d.ts +19 -0
  835. package/dist/validation/common_validators.js +76 -0
  836. package/dist/validation/common_validators.js.map +1 -0
  837. package/dist/validation/configValidator.d.ts +8 -0
  838. package/dist/validation/configValidator.js +292 -0
  839. package/dist/validation/configValidator.js.map +1 -0
  840. package/dist/validation/deleteValidator.d.ts +2 -0
  841. package/dist/validation/deleteValidator.js +15 -0
  842. package/dist/validation/deleteValidator.js.map +1 -0
  843. package/dist/validation/fileLoadValidator.d.ts +4 -0
  844. package/dist/validation/fileLoadValidator.js +138 -0
  845. package/dist/validation/fileLoadValidator.js.map +1 -0
  846. package/dist/validation/insertValidator.d.ts +2 -0
  847. package/dist/validation/insertValidator.js +38 -0
  848. package/dist/validation/insertValidator.js.map +1 -0
  849. package/dist/validation/installValidator.d.ts +7 -0
  850. package/dist/validation/installValidator.js +28 -0
  851. package/dist/validation/installValidator.js.map +1 -0
  852. package/dist/validation/readLogValidator.d.ts +2 -0
  853. package/dist/validation/readLogValidator.js +48 -0
  854. package/dist/validation/readLogValidator.js.map +1 -0
  855. package/dist/validation/role_validation.d.ts +3 -0
  856. package/dist/validation/role_validation.js +284 -0
  857. package/dist/validation/role_validation.js.map +1 -0
  858. package/dist/validation/schemaMetadataValidator.d.ts +16 -0
  859. package/dist/validation/schemaMetadataValidator.js +38 -0
  860. package/dist/validation/schemaMetadataValidator.js.map +1 -0
  861. package/dist/validation/searchValidator.d.ts +2 -0
  862. package/dist/validation/searchValidator.js +141 -0
  863. package/dist/validation/searchValidator.js.map +1 -0
  864. package/dist/validation/statusValidator.d.ts +19 -0
  865. package/dist/validation/statusValidator.js +95 -0
  866. package/dist/validation/statusValidator.js.map +1 -0
  867. package/dist/validation/transactionLogValidator.d.ts +2 -0
  868. package/dist/validation/transactionLogValidator.js +28 -0
  869. package/dist/validation/transactionLogValidator.js.map +1 -0
  870. package/dist/validation/user_validation.d.ts +3 -0
  871. package/dist/validation/user_validation.js +52 -0
  872. package/dist/validation/user_validation.js.map +1 -0
  873. package/dist/validation/validationWrapper.d.ts +15 -0
  874. package/dist/validation/validationWrapper.js +95 -0
  875. package/dist/validation/validationWrapper.js.map +1 -0
  876. package/package.json +225 -0
  877. package/static/README.md +13 -0
  878. package/static/ascii_logo.txt +21 -0
  879. package/static/defaultConfig.yaml +75 -0
@@ -0,0 +1,667 @@
1
+ 'use strict';
2
+ /**
3
+ * This module is used before a SQL or NoSQL operation is performed in order to ensure the user's assigned role
4
+ * has the permissions and lack of restrictions needed to process the operation. Only verifyPerms and verifyPermsAST
5
+ * should be outward facing functions.
6
+ *
7
+ * verifyPerms() should be used to check permissions for NoSQL calls. verifyPermsAST() should be used to check permissions
8
+ * for SQL calls.
9
+ *
10
+ * The requiredPermissions member contains the permissions needed for each operation. Any new operations added to
11
+ * Harper need to have operations specified in here or they will never pass the permissions checks.
12
+ * */
13
+ const write = require('../dataLayer/insert.js');
14
+ const search = require('../dataLayer/search.js');
15
+ const schema = require('../dataLayer/schema.js');
16
+ const schemaDescribe = require('../dataLayer/schemaDescribe.js');
17
+ const delete_ = require('../dataLayer/delete.js');
18
+ const readAuditLog = require('../dataLayer/readAuditLog.js');
19
+ const getBackup = require('../dataLayer/getBackup.js');
20
+ const user = require("../security/user.js");
21
+ const role = require('../security/role.js');
22
+ const harperLogger = require('../utility/logging/harper_logger.js');
23
+ const readLog = require('../utility/logging/readLog.js');
24
+ const commonUtils = require('./common_utils.js');
25
+ const restart = require('../bin/restart.js');
26
+ const terms = require("./hdbTerms.js");
27
+ const { expandOperationsPerms } = require("./operationPermissions.js");
28
+ const permsTranslator = require('../security/permissionsTranslator.js');
29
+ const systemInformation = require('../utility/environment/systemInformation.js');
30
+ const tokenAuthentication = require("../security/tokenAuthentication.js");
31
+ const auth = require("../security/auth.js");
32
+ const configUtils = require('../config/configUtils.js');
33
+ const functionsOperations = require('../components/operations.js');
34
+ const transactionLog = require('../utility/logging/transactionLog.js');
35
+ const npmUtilities = require('./npmUtilities.js');
36
+ const analytics = require("../resources/analytics/read.js");
37
+ const status = require("../server/status/index.js");
38
+ const PermissionResponseObject = require('../security/data_objects/PermissionResponseObject.js');
39
+ const { handleHDBError, hdbErrors } = require('../utility/errors/hdbError.js');
40
+ const { HDB_ERROR_MSGS, HTTP_STATUS_CODES } = hdbErrors;
41
+ const regDeprecated = require("../resources/registrationDeprecated.js");
42
+ const requiredPermissions = new Map();
43
+ const DELETE_PERM = 'delete';
44
+ const INSERT_PERM = 'insert';
45
+ const READ_PERM = 'read';
46
+ const UPDATE_PERM = 'update';
47
+ const DESCRIBE_PERM = 'describe';
48
+ const DESCRIBE_SCHEMA_KEY = schemaDescribe.describeSchema.name;
49
+ const DESCRIBE_TABLE_KEY = schemaDescribe.describeTable.name;
50
+ const FORBIDDEN_SYSTEM_OPS_ENUM = {
51
+ delete: true,
52
+ deleteRecord: true,
53
+ update: true,
54
+ updateData: true,
55
+ dropAttribute: true,
56
+ dropTable: true,
57
+ dropSchema: true,
58
+ upsert: true,
59
+ upsertData: true,
60
+ };
61
+ const ALLOWED_SYS_OPS = {
62
+ insert: true,
63
+ delete: true,
64
+ deleteRecord: true,
65
+ update: true,
66
+ updateData: true,
67
+ upsert: true,
68
+ upsertData: true,
69
+ };
70
+ const CATCHUP = 'catchup';
71
+ const HANDLE_GET_JOB = 'handleGetJob';
72
+ const HANDLE_GET_JOB_BY_START_DATE = 'handleGetJobsByStartDate';
73
+ const BULK_OPS = {
74
+ CSV_DATA_LOAD: 'csvDataLoad',
75
+ CSV_URL_LOAD: 'csvURLLoad',
76
+ CSV_FILE_LOAD: 'csvFileLoad',
77
+ IMPORT_FROM_S3: 'importFromS3',
78
+ };
79
+ const STRUCTURE_USER_OPS = [
80
+ schema.createTable.name,
81
+ schema.createAttribute.name,
82
+ schema.dropTable.name,
83
+ schema.dropAttribute.name,
84
+ ];
85
+ const DATA_EXPORT = {
86
+ EXPORT_TO_S3: 'export_to_s3',
87
+ EXPORT_LOCAL: 'export_local',
88
+ };
89
+ class permission {
90
+ constructor(requiresSu, perms, apiName) {
91
+ this.requires_su = requiresSu;
92
+ this.perms = perms;
93
+ // snake_case API operation name (from OPERATIONS_ENUM) for operations allowlist checks.
94
+ // Undefined for ops that aren't user-addressable (SQL sub-ops, internal-only ops).
95
+ this.api_name = apiName;
96
+ }
97
+ }
98
+ requiredPermissions.set(write.insert.name, new permission(false, [INSERT_PERM], terms.OPERATIONS_ENUM.INSERT));
99
+ requiredPermissions.set(write.update.name, new permission(false, [UPDATE_PERM], terms.OPERATIONS_ENUM.UPDATE));
100
+ requiredPermissions.set(write.upsert.name, new permission(false, [INSERT_PERM, UPDATE_PERM], terms.OPERATIONS_ENUM.UPSERT));
101
+ requiredPermissions.set(search.searchByConditions.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.SEARCH_BY_CONDITIONS));
102
+ requiredPermissions.set(search.searchByHash.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.SEARCH_BY_HASH));
103
+ requiredPermissions.set(search.searchByValue.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.SEARCH_BY_VALUE));
104
+ requiredPermissions.set(search.search.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.SEARCH));
105
+ requiredPermissions.set(schema.createSchema.name, new permission(true, [], terms.OPERATIONS_ENUM.CREATE_DATABASE));
106
+ requiredPermissions.set(schema.createTable.name, new permission(true, [], terms.OPERATIONS_ENUM.CREATE_TABLE));
107
+ requiredPermissions.set(schema.createAttribute.name, new permission(false, [INSERT_PERM], terms.OPERATIONS_ENUM.CREATE_ATTRIBUTE));
108
+ requiredPermissions.set(schema.dropSchema.name, new permission(true, [], terms.OPERATIONS_ENUM.DROP_DATABASE));
109
+ requiredPermissions.set(schema.dropTable.name, new permission(true, [], terms.OPERATIONS_ENUM.DROP_TABLE));
110
+ requiredPermissions.set(schema.dropAttribute.name, new permission(true, [], terms.OPERATIONS_ENUM.DROP_ATTRIBUTE));
111
+ requiredPermissions.set(schemaDescribe.describeSchema.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.DESCRIBE_SCHEMA));
112
+ requiredPermissions.set(schemaDescribe.describeTable.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.DESCRIBE_TABLE));
113
+ requiredPermissions.set(delete_.deleteRecord.name, new permission(false, [DELETE_PERM], terms.OPERATIONS_ENUM.DELETE));
114
+ requiredPermissions.set(user.addUser.name, new permission(true, [], terms.OPERATIONS_ENUM.ADD_USER));
115
+ requiredPermissions.set(user.alterUser.name, new permission(true, [], terms.OPERATIONS_ENUM.ALTER_USER));
116
+ requiredPermissions.set(user.dropUser.name, new permission(true, [], terms.OPERATIONS_ENUM.DROP_USER));
117
+ requiredPermissions.set(user.listUsersExternal.name, new permission(true, [], terms.OPERATIONS_ENUM.LIST_USERS));
118
+ requiredPermissions.set(role.listRoles.name, new permission(true, [], terms.OPERATIONS_ENUM.LIST_ROLES));
119
+ requiredPermissions.set(role.addRole.name, new permission(true, [], terms.OPERATIONS_ENUM.ADD_ROLE));
120
+ requiredPermissions.set(role.alterRole.name, new permission(true, [], terms.OPERATIONS_ENUM.ALTER_ROLE));
121
+ requiredPermissions.set(role.dropRole.name, new permission(true, [], terms.OPERATIONS_ENUM.DROP_ROLE));
122
+ requiredPermissions.set(readLog.name, new permission(true, [], terms.OPERATIONS_ENUM.READ_LOG));
123
+ requiredPermissions.set(configUtils.setConfiguration.name, new permission(true, []));
124
+ requiredPermissions.set(delete_.deleteFilesBefore.name, new permission(true, []));
125
+ requiredPermissions.set(delete_.deleteAuditLogsBefore.name, new permission(true, []));
126
+ requiredPermissions.set(restart.restart.name, new permission(true, [], terms.OPERATIONS_ENUM.RESTART));
127
+ requiredPermissions.set(restart.restartService.name, new permission(true, []));
128
+ requiredPermissions.set(readAuditLog.name, new permission(true, [], terms.OPERATIONS_ENUM.READ_AUDIT_LOG));
129
+ requiredPermissions.set(getBackup.name, new permission(true, [READ_PERM]));
130
+ requiredPermissions.set(schema.cleanupOrphanBlobs.name, new permission(true, []));
131
+ requiredPermissions.set(systemInformation.systemInformation.name, new permission(true, [], terms.OPERATIONS_ENUM.SYSTEM_INFORMATION));
132
+ requiredPermissions.set(configUtils.getConfiguration.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_CONFIGURATION));
133
+ requiredPermissions.set(transactionLog.readTransactionLog.name, new permission(true, []));
134
+ requiredPermissions.set(transactionLog.deleteTransactionLogsBefore.name, new permission(true, []));
135
+ requiredPermissions.set(npmUtilities.installModules.name, new permission(true, []));
136
+ requiredPermissions.set(analytics.getOp.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.GET_ANALYTICS));
137
+ requiredPermissions.set(analytics.listMetricsOp.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.LIST_METRICS));
138
+ requiredPermissions.set(analytics.describeMetricOp.name, new permission(false, [READ_PERM], terms.OPERATIONS_ENUM.DESCRIBE_METRIC));
139
+ requiredPermissions.set(status.clear.name, new permission(true, []));
140
+ requiredPermissions.set(status.get.name, new permission(true, []));
141
+ requiredPermissions.set(status.set.name, new permission(true, []));
142
+ //this operation must be available to all users so they can create authentication tokens and login
143
+ requiredPermissions.set(tokenAuthentication.createTokens.name, new permission(false, [], terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS));
144
+ requiredPermissions.set(tokenAuthentication.refreshOperationToken.name, new permission(false, [], terms.OPERATIONS_ENUM.REFRESH_OPERATION_TOKEN));
145
+ requiredPermissions.set(auth.login.name, new permission(false, []));
146
+ requiredPermissions.set(auth.logout.name, new permission(false, []));
147
+ //Operations specific to HDB Functions
148
+ requiredPermissions.set(functionsOperations.customFunctionsStatus.name, new permission(true, [], terms.OPERATIONS_ENUM.CUSTOM_FUNCTIONS_STATUS));
149
+ requiredPermissions.set(functionsOperations.getCustomFunctions.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_CUSTOM_FUNCTIONS));
150
+ requiredPermissions.set(functionsOperations.getComponents.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_COMPONENTS));
151
+ requiredPermissions.set(functionsOperations.getComponentFile.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_COMPONENT_FILE));
152
+ requiredPermissions.set(functionsOperations.setComponentFile.name, new permission(true, []));
153
+ requiredPermissions.set(functionsOperations.dropComponent.name, new permission(true, []));
154
+ requiredPermissions.set(functionsOperations.getCustomFunction.name, new permission(true, [], terms.OPERATIONS_ENUM.GET_CUSTOM_FUNCTION));
155
+ requiredPermissions.set(functionsOperations.setCustomFunction.name, new permission(true, []));
156
+ requiredPermissions.set(functionsOperations.dropCustomFunction.name, new permission(true, []));
157
+ requiredPermissions.set(functionsOperations.addComponent.name, new permission(true, []));
158
+ requiredPermissions.set(functionsOperations.dropCustomFunctionProject.name, new permission(true, []));
159
+ requiredPermissions.set(functionsOperations.packageComponent.name, new permission(true, []));
160
+ requiredPermissions.set(functionsOperations.deployComponent.name, new permission(true, []));
161
+ //Below are functions that are currently open to all roles
162
+ requiredPermissions.set(regDeprecated.getRegistrationInfo.name, new permission(false, []));
163
+ requiredPermissions.set(user.userInfo.name, new permission(false, [], terms.OPERATIONS_ENUM.USER_INFO));
164
+ //DescribeAll will only return the schema values a user has permissions for
165
+ requiredPermissions.set(schemaDescribe.describeAll.name, new permission(false, [], terms.OPERATIONS_ENUM.DESCRIBE_ALL));
166
+ //Below function names are hardcoded b/c of circular dependency issues
167
+ requiredPermissions.set(HANDLE_GET_JOB, new permission(false, [], terms.OPERATIONS_ENUM.GET_JOB));
168
+ requiredPermissions.set(HANDLE_GET_JOB_BY_START_DATE, new permission(true, []));
169
+ requiredPermissions.set(CATCHUP, new permission(true, []));
170
+ requiredPermissions.set(BULK_OPS.CSV_DATA_LOAD, new permission(false, [INSERT_PERM, UPDATE_PERM], terms.OPERATIONS_ENUM.CSV_DATA_LOAD));
171
+ requiredPermissions.set(BULK_OPS.CSV_URL_LOAD, new permission(false, [INSERT_PERM, UPDATE_PERM], terms.OPERATIONS_ENUM.CSV_URL_LOAD));
172
+ requiredPermissions.set(BULK_OPS.CSV_FILE_LOAD, new permission(false, [INSERT_PERM, UPDATE_PERM], terms.OPERATIONS_ENUM.CSV_FILE_LOAD));
173
+ requiredPermissions.set(BULK_OPS.IMPORT_FROM_S3, new permission(false, [INSERT_PERM, UPDATE_PERM], terms.OPERATIONS_ENUM.IMPORT_FROM_S3));
174
+ requiredPermissions.set(DATA_EXPORT.EXPORT_TO_S3, new permission(true, [], terms.OPERATIONS_ENUM.EXPORT_TO_S3));
175
+ requiredPermissions.set(DATA_EXPORT.EXPORT_LOCAL, new permission(true, [], terms.OPERATIONS_ENUM.EXPORT_LOCAL));
176
+ // SQL operations are distinct from operations above, so we need to store required perms for both.
177
+ requiredPermissions.set(terms.VALID_SQL_OPS_ENUM.DELETE, new permission(false, [DELETE_PERM]));
178
+ requiredPermissions.set(terms.VALID_SQL_OPS_ENUM.SELECT, new permission(false, [READ_PERM]));
179
+ requiredPermissions.set(terms.VALID_SQL_OPS_ENUM.INSERT, new permission(false, [INSERT_PERM]));
180
+ requiredPermissions.set(terms.VALID_SQL_OPS_ENUM.UPDATE, new permission(false, [UPDATE_PERM]));
181
+ module.exports = {
182
+ verifyPerms,
183
+ verifyPermsAst,
184
+ verifyBulkLoadAttributePerms,
185
+ };
186
+ /**
187
+ * Verifies permissions and restrictions for a SQL operation based on the user's assigned role.
188
+ * @param ast - The SQL statement in Syntax Tree form.
189
+ * @param userObject - The user and role specification
190
+ * @param operation - The operation specified in the call.
191
+ * @returns {null | PermissionResponseObject} - null if permissions match, errors returned in the PermissionResponseObject
192
+ */
193
+ function verifyPermsAst(ast, userObject, operation) {
194
+ //TODO - update these validation checks to use validate.js
195
+ if (commonUtils.isEmptyOrZeroLength(ast)) {
196
+ harperLogger.info('verify_perms_ast has an empty user parameter');
197
+ throw handleHDBError(new Error());
198
+ }
199
+ if (commonUtils.isEmptyOrZeroLength(userObject)) {
200
+ harperLogger.info('verify_perms_ast has an empty user parameter');
201
+ throw handleHDBError(new Error());
202
+ }
203
+ if (commonUtils.isEmptyOrZeroLength(operation)) {
204
+ harperLogger.info('verify_perms_ast has a null operation parameter');
205
+ throw handleHDBError(new Error());
206
+ }
207
+ try {
208
+ const bucket = require('../sqlTranslator/sql_statement_bucket.js');
209
+ const alasql = require('alasql');
210
+ const permsResponse = new PermissionResponseObject();
211
+ let parsedAst = new bucket(ast);
212
+ let schemas = parsedAst.getSchemas();
213
+ let schemaTableMap = new Map();
214
+ // Should not continue if there are no schemas defined and there are table columns defined.
215
+ // This is defined so we can do calc selects like : SELECT ABS(-12)
216
+ if ((!schemas || schemas.length === 0) && parsedAst.affected_attributes && parsedAst.affected_attributes.size > 0) {
217
+ harperLogger.info(`No schemas defined in verifyPermsAst(), will not continue.`);
218
+ throw handleHDBError(new Error());
219
+ }
220
+ // set to true if this operation affects a system table. Only su can read from system tables, but can't update/delete.
221
+ const isSuperUser = !!userObject.role.permission.super_user;
222
+ const isSuSystemOperation = schemas.includes('system');
223
+ if (isSuSystemOperation && FORBIDDEN_SYSTEM_OPS_ENUM[operation]) {
224
+ throw handleHDBError(new Error(), HDB_ERROR_MSGS.DROP_SYSTEM, HTTP_STATUS_CODES.FORBIDDEN);
225
+ }
226
+ if (isSuperUser && !isSuSystemOperation) {
227
+ //admins can do (almost) anything through the hole in sheet!
228
+ return null;
229
+ }
230
+ const fullRolePerms = permsTranslator.getRolePermissions(userObject.role);
231
+ userObject.role.permission = fullRolePerms;
232
+ //If the AST is for a SELECT, we need to check for wildcards and, if they exist, update the AST to include the
233
+ // attributes that the user has READ perms for - we can skip this step for super users
234
+ if (!isSuperUser && ast instanceof alasql.yy.Select) {
235
+ ast = parsedAst.updateAttributeWildcardsForRolePerms(fullRolePerms);
236
+ }
237
+ for (let s = 0; s < schemas.length; s++) {
238
+ //NOSONAR
239
+ let tables = parsedAst.getTablesBySchemaName(schemas[s]);
240
+ if (tables) {
241
+ schemaTableMap.set(schemas[s], tables);
242
+ }
243
+ }
244
+ let tablePermRestriction = hasPermissions(userObject, operation, schemaTableMap, permsResponse); //NOSONAR;
245
+ if (tablePermRestriction) {
246
+ return tablePermRestriction;
247
+ }
248
+ schemaTableMap.forEach((tables, schemaKey) => {
249
+ for (let t = 0; t < tables.length; t++) {
250
+ let attributes = parsedAst.getAttributesBySchemaTableName(schemaKey, tables[t]);
251
+ const attribute_permissions = getAttributePermissions(userObject.role.permission, schemaKey, tables[t]);
252
+ checkAttributePerms(attributes, attribute_permissions, operation, tables[t], schemaKey, permsResponse);
253
+ }
254
+ });
255
+ return permsResponse.getPermsResponse();
256
+ }
257
+ catch (e) {
258
+ throw handleHDBError(e);
259
+ }
260
+ }
261
+ /**
262
+ * Verifies permissions and restrictions for the NoSQL operation based on the user's assigned role.
263
+ *
264
+ * @param requestJson - The request body as json
265
+ * @param operation - The name of the operation specified in the request.
266
+ * @returns { null | PermissionResponseObject } - null if permissions match, errors are consolidated into PermissionResponseObj.
267
+ */
268
+ function verifyPerms(requestJson, operation) {
269
+ if (requestJson === null ||
270
+ operation === null ||
271
+ requestJson.hdb_user === undefined ||
272
+ requestJson.hdb_user === null) {
273
+ harperLogger.info(`null required parameter in verifyPerms`);
274
+ throw handleHDBError(new Error(), HDB_ERROR_MSGS.DEFAULT_INVALID_REQUEST, HTTP_STATUS_CODES.BAD_REQUEST);
275
+ }
276
+ //passing in the function rather than the function name is an easy mistake to make, so taking care of that case here.
277
+ let op = undefined;
278
+ if (operation instanceof Function) {
279
+ op = operation.name;
280
+ }
281
+ else {
282
+ op = operation;
283
+ }
284
+ //we need to use the action value, if present, to ensure the correct permission is checked below
285
+ let action = requestJson.action;
286
+ let operationSchema = requestJson.schema ?? requestJson.database;
287
+ let table = requestJson.table;
288
+ let schemaTableMap = new Map();
289
+ if (operationSchema && table) {
290
+ schemaTableMap.set(operationSchema, [table]);
291
+ }
292
+ const permsResponse = new PermissionResponseObject();
293
+ if (commonUtils.isEmptyOrZeroLength(requestJson.hdb_user?.role) ||
294
+ commonUtils.isEmptyOrZeroLength(requestJson.hdb_user?.role?.permission)) {
295
+ harperLogger.info(`User ${requestJson.hdb_user?.username} has no role or permissions. Please assign the user a valid role.`);
296
+ return permsResponse.handleUnauthorizedItem(HDB_ERROR_MSGS.USER_HAS_NO_PERMS(requestJson.hdb_user?.username));
297
+ }
298
+ const isSuperUser = !!requestJson.hdb_user?.role?.permission?.super_user;
299
+ const structureUser = requestJson.hdb_user?.role?.permission?.structure_user;
300
+ // set to true if this operation affects a system table. Only su can read from system tables, but can't update/delete.
301
+ let isSuSystemOperation = schemaTableMap.has(terms.SYSTEM_SCHEMA_NAME) || operationSchema === terms.SYSTEM_SCHEMA_NAME;
302
+ // Allow the hdbNodes, hdbRole & hdb_user tables to be modified by superusers
303
+ if (isSuperUser &&
304
+ isSuSystemOperation &&
305
+ ALLOWED_SYS_OPS[requestJson.operation] &&
306
+ (table === terms.SYSTEM_TABLE_NAMES.NODE_TABLE_NAME ||
307
+ table === terms.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME ||
308
+ table === terms.SYSTEM_TABLE_NAMES.USER_TABLE_NAME)) {
309
+ return null;
310
+ }
311
+ if (isSuSystemOperation && FORBIDDEN_SYSTEM_OPS_ENUM[op]) {
312
+ throw handleHDBError(new Error(), HDB_ERROR_MSGS.DROP_SYSTEM, HTTP_STATUS_CODES.FORBIDDEN);
313
+ }
314
+ if (isSuperUser && !isSuSystemOperation) {
315
+ //admins can do (almost) anything
316
+ return null;
317
+ }
318
+ //structureUsers can create/drop schemas if they are not locked down to specific schemas.
319
+ if (structureUser === true && (op === schema.createSchema.name || op === schema.dropSchema.name)) {
320
+ return null;
321
+ }
322
+ //check if this is a structureUser & trying to perform a structure user op
323
+ if (STRUCTURE_USER_OPS.indexOf(op) >= 0 && (structureUser === true || Array.isArray(structureUser))) {
324
+ //if true can perform op all schemas
325
+ if (structureUser === true) {
326
+ return null;
327
+ }
328
+ //if the structureUser value is an array and contains the operation schema, all good
329
+ if (structureUser.indexOf(operationSchema) >= 0) {
330
+ return null;
331
+ }
332
+ //if we get here then error out
333
+ return permsResponse.handleUnauthorizedItem(`User does not have access to perform '${requestJson.operation}' against schema '${operationSchema}'`);
334
+ }
335
+ // operations is an optional allowlist on the role. When present, it acts as a two-gate check:
336
+ // Gate 1 — operation allowlist: only ops explicitly listed (or expanded from a group) are reachable.
337
+ // Any unlisted op is denied here, before table CRUD checks even run.
338
+ // Gate 2 — SU bypass: if the op passed gate 1 and is normally restricted to super_user, the explicit
339
+ // listing is treated as a deliberate admin grant and allowed immediately (return null).
340
+ // Non-SU ops that pass gate 1 fall through to the normal table CRUD checks below.
341
+ const permission = requestJson.hdb_user?.role?.permission;
342
+ const operations = permission?.operations;
343
+ if (operations !== undefined) {
344
+ // _expandedOperations is pre-built at cache-load time (O(1) lookup).
345
+ // Fall back to on-demand expansion for inline-asserted roles (e.g. impersonation via hdb_user in body).
346
+ const allowedOps = permission._expandedOperations ?? expandOperationsPerms(operations);
347
+ // op is the internal camelCase function name; allowedOps contains snake_case API names.
348
+ // Resolve via the api_name stored on the permission entry (set at registration time).
349
+ const opApiName = requiredPermissions.get(op)?.api_name ?? op;
350
+ // Gate 1: op not in allowlist — deny regardless of table CRUD permissions.
351
+ if (!allowedOps.has(opApiName)) {
352
+ return permsResponse.handleUnauthorizedItem(HDB_ERROR_MSGS.OP_NOT_IN_OPERATIONS(opApiName));
353
+ }
354
+ // Gate 2: op is SU-only but was explicitly granted via operations — allow without super_user.
355
+ // Without this, the SU check further below would still deny it even though it passed gate 1.
356
+ // TODO: ops registered with both requires_su AND non-empty CRUD perms (currently only getBackup)
357
+ // have their table-level CRUD check bypassed here. Should fall through for those instead of
358
+ // returning null unconditionally. Low risk today but worth tightening.
359
+ if (requiredPermissions.get(op)?.requires_su) {
360
+ return null;
361
+ }
362
+ }
363
+ const fullRolePerms = permsTranslator.getRolePermissions(requestJson.hdb_user?.role);
364
+ if (requestJson.hdb_user?.role)
365
+ requestJson.hdb_user.role.permission = fullRolePerms;
366
+ if (op === DESCRIBE_SCHEMA_KEY || op === DESCRIBE_TABLE_KEY) {
367
+ if (!fullRolePerms.super_user) {
368
+ if (operationSchema === terms.SYSTEM_SCHEMA_NAME) {
369
+ return permsResponse.handleUnauthorizedItem(HDB_ERROR_MSGS.SCHEMA_PERM_ERROR(operationSchema));
370
+ }
371
+ if (op === DESCRIBE_SCHEMA_KEY) {
372
+ if (!fullRolePerms[operationSchema] || !fullRolePerms[operationSchema][DESCRIBE_PERM]) {
373
+ return permsResponse.handleInvalidItem(HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(operationSchema));
374
+ }
375
+ }
376
+ if (op === DESCRIBE_TABLE_KEY &&
377
+ (!fullRolePerms[operationSchema] ||
378
+ !fullRolePerms[operationSchema].tables[table] ||
379
+ !fullRolePerms[operationSchema].tables[table][DESCRIBE_PERM])) {
380
+ return permsResponse.handleInvalidItem(HDB_ERROR_MSGS.TABLE_NOT_FOUND(operationSchema, table));
381
+ }
382
+ }
383
+ }
384
+ let failedPermissions = hasPermissions(requestJson.hdb_user, op, schemaTableMap, permsResponse, action);
385
+ //check if failedTablePerms are back and return them B/C it will be an op-level permission issue
386
+ if (failedPermissions) {
387
+ return failedPermissions;
388
+ }
389
+ if (requiredPermissions.get(op) && requiredPermissions.get(op).perms.length === 0) {
390
+ return null;
391
+ }
392
+ //For a NoSQL search op with `get_attributes: '*'` - as long as the role has READ permissions on the table,
393
+ //we will convert the * to the specific attributes the user has READ permissions for via their role.
394
+ if (!isSuperUser && requestJson.get_attributes && terms.SEARCH_WILDCARDS.includes(requestJson.get_attributes[0])) {
395
+ let finalGetAttrs = [];
396
+ const table_perms = fullRolePerms[operationSchema].tables[table];
397
+ if (table_perms[terms.PERMS_CRUD_ENUM.READ]) {
398
+ if (table_perms.attribute_permissions.length > 0) {
399
+ const tableAttrPerms = table_perms.attribute_permissions.filter((perm) => perm[terms.PERMS_CRUD_ENUM.READ]);
400
+ tableAttrPerms.forEach((perm) => {
401
+ finalGetAttrs.push(perm.attribute_name);
402
+ });
403
+ }
404
+ else {
405
+ finalGetAttrs = global.hdb_schema[operationSchema][table].attributes.map((obj) => obj.attribute);
406
+ }
407
+ requestJson.get_attributes = finalGetAttrs;
408
+ }
409
+ }
410
+ const recordAttrs = getRecordAttributes(requestJson);
411
+ const attrPermissions = getAttributePermissions(requestJson.hdb_user?.role?.permission, operationSchema, table);
412
+ checkAttributePerms(recordAttrs, attrPermissions, op, table, operationSchema, permsResponse, action);
413
+ //This result value will be null if no perms issues were found in checkAttributePerms
414
+ return permsResponse.getPermsResponse();
415
+ }
416
+ /**
417
+ * Checks if the user's role has the required permissions for the operation specified.
418
+ * @param userObject - the hdb_user specified in the request body
419
+ * @param op - the name of the operation
420
+ * @param schemaTableMap - A map in the format [schemaKey, [tables]].
421
+ * @returns {PermissionResponseObject | null} - null value if permissions match, PermissionResponseObject if not.
422
+ */
423
+ function hasPermissions(userObject, op, schemaTableMap, permsResponse, action) {
424
+ if (commonUtils.arrayHasEmptyValues([userObject, op, schemaTableMap])) {
425
+ harperLogger.info(`hasPermissions has an invalid parameter`);
426
+ throw handleHDBError(new Error());
427
+ }
428
+ // set to true if this operation affects a system table. Only su can read from system tables, but can't update/delete.
429
+ let isSuSystemOperation = schemaTableMap.has('system');
430
+ const userPerms = userObject.role.permission;
431
+ if (userPerms.super_user && (!isSuSystemOperation || requiredPermissions.get(op).requires_su)) {
432
+ //admins can do (almost) anything through the hole in sheet!
433
+ return null;
434
+ }
435
+ // still here after the su check above but this operation require su, so fail.
436
+ if (!requiredPermissions.get(op)) {
437
+ harperLogger.info(`operation ${op} not found.`);
438
+ //This is here to catch if an operation has not been added to the permissions map above
439
+ throw handleHDBError(new Error(), HDB_ERROR_MSGS.OP_NOT_FOUND(op), HTTP_STATUS_CODES.BAD_REQUEST);
440
+ }
441
+ if (requiredPermissions.get(op) && requiredPermissions.get(op).requires_su) {
442
+ harperLogger.info(`operation ${op} requires SU permissions.`);
443
+ return permsResponse.handleUnauthorizedItem(HDB_ERROR_MSGS.OP_IS_SU_ONLY(op));
444
+ }
445
+ const schemaTableKeys = schemaTableMap.keys();
446
+ for (let schemaTable of schemaTableKeys) {
447
+ //check if schema exists and, if so, if user has DESCRIBE perms
448
+ try {
449
+ if ((schemaTable && !userPerms[schemaTable]) || userPerms[schemaTable][DESCRIBE_PERM] === false) {
450
+ //add schema does not exist error message
451
+ permsResponse.addInvalidItem(HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(schemaTable));
452
+ continue;
453
+ }
454
+ }
455
+ catch {
456
+ //we should never get here b/c if statement above should catch any possible errors and log the issue to
457
+ // permsResponse but keeping this here just to be safe
458
+ permsResponse.addInvalidItem(HDB_ERROR_MSGS.SCHEMA_NOT_FOUND(schemaTable));
459
+ continue;
460
+ }
461
+ const schemaTableData = schemaTableMap.get(schemaTable);
462
+ for (let table of schemaTableData) {
463
+ const tablePermissions = userPerms[schemaTable].tables[table];
464
+ //if table perms don't exist or DESCRIBE perm set to false, we add an invalid item error to response
465
+ if (!tablePermissions || tablePermissions[DESCRIBE_PERM] === false) {
466
+ permsResponse.addInvalidItem(HDB_ERROR_MSGS.TABLE_NOT_FOUND(schemaTable, table));
467
+ }
468
+ else {
469
+ try {
470
+ //Here we check all required permissions for the operation defined in the map with the values of the permissions in the role.
471
+ const requiredTablePerms = [];
472
+ let requiredPerms = requiredPermissions.get(op).perms;
473
+ //If an 'action' is included in the operation json, we want to only check permissions for that action
474
+ if (!commonUtils.isEmpty(action) && requiredPerms.includes(action)) {
475
+ requiredPerms = [action];
476
+ }
477
+ for (let i = 0; i < requiredPerms.length; i++) {
478
+ let perm = requiredPerms[i];
479
+ let userPermission = tablePermissions[perm];
480
+ if (userPermission === undefined || userPermission === null || userPermission === false) {
481
+ //need to check if any perm on table OR should return table not found
482
+ harperLogger.info(`Required ${perm} permission not found for ${op} ${action ? `${action} ` : ''}operation in role ${userObject.role.id}`);
483
+ requiredTablePerms.push(perm);
484
+ }
485
+ }
486
+ if (requiredTablePerms.length > 0) {
487
+ permsResponse.addUnauthorizedTable(schemaTable, table, requiredTablePerms);
488
+ }
489
+ }
490
+ catch (e) {
491
+ //if we hit an error here, we need to block operation and return error
492
+ const errMsg = HDB_ERROR_MSGS.UNKNOWN_OP_AUTH_ERROR(op, schemaTable, table);
493
+ harperLogger.error(errMsg);
494
+ harperLogger.error(e);
495
+ throw handleHDBError(hdbErrors.CHECK_LOGS_WRAPPER(errMsg));
496
+ }
497
+ }
498
+ }
499
+ }
500
+ //We need to check if there are multiple schemas in this operation (i.e. SQL cross schema select) and, if so,
501
+ // we continue to check specific attribute perms b/c there may be a mix of perms issues across schema
502
+ if (schemaTableMap.size < 2) {
503
+ return permsResponse.getPermsResponse();
504
+ }
505
+ return null;
506
+ }
507
+ /**
508
+ * Compare the attributes specified in the call with the user's role. If there are permissions in the role,
509
+ * ensure that the permission required for the operation matches the permission in the role.
510
+ * @param recordAttributes - An array of the attributes specified in the operation
511
+ * @param roleAttributePermissions - A Map of each permission in the user role, specified as [tableName, [attribute_permissions]].
512
+ * @param operation
513
+ * @param tableName - name of the table being checked
514
+ * @param schemaName - name of schema being checked
515
+ * @param permsResponse - PermissionResponseObject instance being used to track permissions issues to return in response, if necessary
516
+ * @returns {} - this function does not return a value - it updates the permsResponse which is checked later
517
+ */
518
+ function checkAttributePerms(recordAttributes, roleAttributePermissions, operation, tableName, schemaName, permsResponse, action) {
519
+ if (!recordAttributes || !roleAttributePermissions) {
520
+ harperLogger.info(`no attributes specified in checkAttributePerms.`);
521
+ throw handleHDBError(new Error());
522
+ }
523
+ // check each attribute with role permissions. Required perm should match the per in the operation
524
+ let neededPerms = requiredPermissions.get(operation).perms;
525
+ if (!neededPerms || neededPerms === '') {
526
+ // We should never get in here since all of our operations should have a perm, but just in case we should fail
527
+ // any operation that doesn't have perms.
528
+ harperLogger.info(`no permissions found for ${operation} in checkAttributePerms().`);
529
+ throw handleHDBError(new Error());
530
+ }
531
+ //Leave early if the role has no attribute permissions set
532
+ if (commonUtils.isEmptyOrZeroLength(roleAttributePermissions)) {
533
+ harperLogger.info(`No role permissions set (this is OK).`);
534
+ return null;
535
+ }
536
+ //If an 'action' is included in the operation json, we want to only check permissions for that action
537
+ if (action && neededPerms.includes(action)) {
538
+ neededPerms = [action];
539
+ }
540
+ let requiredAttrPerms = {};
541
+ // Check if each specified attribute in the call (recordAttributes) has a permission specified in the role. If there is
542
+ // a permission, check if the operation permission is false.
543
+ for (let element of recordAttributes) {
544
+ const permission = roleAttributePermissions.get(element);
545
+ if (permission) {
546
+ if (permission[DESCRIBE_PERM] === false) {
547
+ permsResponse.addInvalidItem(HDB_ERROR_MSGS.ATTR_NOT_FOUND(schemaName, tableName, element), schemaName, tableName);
548
+ continue;
549
+ }
550
+ if (neededPerms) {
551
+ for (let perm of neededPerms) {
552
+ if (terms.TIME_STAMP_NAMES.includes(permission.attribute_name) && perm !== READ_PERM) {
553
+ throw handleHDBError(new Error(), HDB_ERROR_MSGS.SYSTEM_TIMESTAMP_PERMS_ERR, HTTP_STATUS_CODES.FORBIDDEN);
554
+ }
555
+ if (permission[perm] === false) {
556
+ if (!requiredAttrPerms[permission.attribute_name]) {
557
+ requiredAttrPerms[permission.attribute_name] = [perm];
558
+ }
559
+ else {
560
+ requiredAttrPerms[permission.attribute_name].push(perm);
561
+ }
562
+ }
563
+ }
564
+ }
565
+ }
566
+ else {
567
+ //if we get here, it means that this is a new attribute and, because there are attr-level perms set, the role
568
+ // does not have permission to do anything with it b/c all perms will be set to FALSE by default
569
+ permsResponse.addInvalidItem(HDB_ERROR_MSGS.ATTR_NOT_FOUND(schemaName, tableName, element), schemaName, tableName);
570
+ }
571
+ }
572
+ const unauthorizedTableAttributes = Object.keys(requiredAttrPerms);
573
+ if (unauthorizedTableAttributes.length > 0) {
574
+ permsResponse.addUnauthorizedAttributes(unauthorizedTableAttributes, schemaName, tableName, requiredAttrPerms);
575
+ }
576
+ }
577
+ /**
578
+ * Pull the table attributes specified in the statement. Will always return a Set, even if empty or on error.
579
+ * @param json - json containing the request
580
+ * @returns {Set} - all attributes affected by the request statement.
581
+ */
582
+ function getRecordAttributes(json) {
583
+ let affectedAttributes = new Set();
584
+ try {
585
+ //Bulk load operations need to have attr-level permissions checked during the validateChunk step of the operation
586
+ // in the bulkLoad.js methods
587
+ if (json.action) {
588
+ return affectedAttributes;
589
+ }
590
+ if (json.operation === terms.OPERATIONS_ENUM.SEARCH_BY_CONDITIONS) {
591
+ json.conditions.forEach((condition) => {
592
+ let attribute = condition.attribute;
593
+ if (condition.search_attribute !== undefined) {
594
+ attribute = condition.search_attribute;
595
+ }
596
+ affectedAttributes.add(attribute);
597
+ });
598
+ }
599
+ if (json && (json.attribute || json.search_attribute)) {
600
+ let attribute = json.attribute;
601
+ if (json.search_attribute !== undefined) {
602
+ attribute = json.search_attribute;
603
+ }
604
+ affectedAttributes.add(attribute);
605
+ }
606
+ if (!json.records || json.records.length === 0) {
607
+ if (!json.get_attributes || json.get_attributes.length === 0) {
608
+ return affectedAttributes;
609
+ }
610
+ for (const attr of json.get_attributes) {
611
+ affectedAttributes.add(attr);
612
+ }
613
+ }
614
+ else {
615
+ // get unique affectedAttributes
616
+ for (const record of json.records) {
617
+ let keys = Object.keys(record);
618
+ for (const key of keys) {
619
+ affectedAttributes.add(key);
620
+ }
621
+ }
622
+ }
623
+ }
624
+ catch (err) {
625
+ harperLogger.info(err);
626
+ }
627
+ return affectedAttributes;
628
+ }
629
+ /**
630
+ * Pull the attribute permissions for the schema/table. Will always return a map, even empty or on error.
631
+ * @param jsonHdbUser - The hdb_user from the json request body
632
+ * @param operationSchema - The schema specified in the request
633
+ * @param table - The table specified.
634
+ * @returns {Map} A Map of attribute permissions of the form [attribute_name, attributePermission];
635
+ */
636
+ function getAttributePermissions(rolePerms, operationSchema, table) {
637
+ let roleAttributePermissions = new Map();
638
+ if (commonUtils.isEmpty(rolePerms)) {
639
+ harperLogger.info(`no hdb_user specified in getAttributePermissions`);
640
+ return roleAttributePermissions;
641
+ }
642
+ if (rolePerms.super_user) {
643
+ return roleAttributePermissions;
644
+ }
645
+ //Some commands do not require a table to be specified. If there is no table, there is likely not
646
+ // anything attribute permissions needs to check.
647
+ if (!operationSchema || !table) {
648
+ return roleAttributePermissions;
649
+ }
650
+ try {
651
+ rolePerms[operationSchema].tables[table].attribute_permissions.forEach((perm) => {
652
+ if (!roleAttributePermissions.has(perm.attribute_name)) {
653
+ roleAttributePermissions.set(perm.attribute_name, perm);
654
+ }
655
+ });
656
+ }
657
+ catch {
658
+ harperLogger.info(`No attribute permissions found for schema ${operationSchema} and table ${table}.`);
659
+ }
660
+ return roleAttributePermissions;
661
+ }
662
+ function verifyBulkLoadAttributePerms(rolePerms, op, action, operationSchema, operationTable, attributes, permsResponse) {
663
+ const recordAttrs = new Set(attributes);
664
+ const attrPermissions = getAttributePermissions(rolePerms, operationSchema, operationTable);
665
+ checkAttributePerms(recordAttrs, attrPermissions, op, operationTable, operationSchema, permsResponse, action);
666
+ }
667
+ //# sourceMappingURL=operation_authorization.js.map