prostgles-server 4.2.183 → 4.2.185

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 (432) hide show
  1. package/.github/workflows/main.yml +15 -15
  2. package/.prettierignore +2 -0
  3. package/README.md +1 -1
  4. package/dist/Auth/AuthHandler.d.ts +1 -1
  5. package/dist/Auth/AuthHandler.d.ts.map +1 -1
  6. package/dist/Auth/AuthHandler.js +64 -32
  7. package/dist/Auth/AuthHandler.js.map +1 -1
  8. package/dist/Auth/AuthTypes.d.ts +15 -1
  9. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  10. package/dist/Auth/getSafeReturnURL.d.ts.map +1 -1
  11. package/dist/Auth/getSafeReturnURL.js.map +1 -1
  12. package/dist/Auth/sendEmail.d.ts.map +1 -1
  13. package/dist/Auth/sendEmail.js +6 -6
  14. package/dist/Auth/sendEmail.js.map +1 -1
  15. package/dist/Auth/setAuthProviders.d.ts +1 -1
  16. package/dist/Auth/setAuthProviders.d.ts.map +1 -1
  17. package/dist/Auth/setAuthProviders.js +15 -8
  18. package/dist/Auth/setAuthProviders.js.map +1 -1
  19. package/dist/Auth/setEmailProvider.d.ts.map +1 -1
  20. package/dist/Auth/setEmailProvider.js +23 -4
  21. package/dist/Auth/setEmailProvider.js.map +1 -1
  22. package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
  23. package/dist/Auth/setupAuthRoutes.js +27 -9
  24. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  25. package/dist/DBEventsManager.d.ts.map +1 -1
  26. package/dist/DBEventsManager.js +24 -19
  27. package/dist/DBEventsManager.js.map +1 -1
  28. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  29. package/dist/DBSchemaBuilder.js +18 -5
  30. package/dist/DBSchemaBuilder.js.map +1 -1
  31. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  32. package/dist/DboBuilder/DboBuilder.js +7 -2
  33. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  34. package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
  35. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  36. package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
  37. package/dist/DboBuilder/QueryBuilder/Functions.d.ts +2 -2
  38. package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  39. package/dist/DboBuilder/QueryBuilder/Functions.js +293 -173
  40. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  41. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +2 -2
  42. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  43. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +52 -29
  44. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  45. package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
  46. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +51 -32
  47. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
  48. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  49. package/dist/DboBuilder/QueryBuilder/getNewQuery.js +48 -25
  50. package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
  51. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
  52. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
  53. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +32 -23
  54. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
  55. package/dist/DboBuilder/QueryStreamer.d.ts +2 -2
  56. package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
  57. package/dist/DboBuilder/QueryStreamer.js +68 -23
  58. package/dist/DboBuilder/QueryStreamer.js.map +1 -1
  59. package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
  60. package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
  61. package/dist/DboBuilder/TableHandler/DataValidator.js +79 -43
  62. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  63. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  64. package/dist/DboBuilder/TableHandler/TableHandler.js +39 -15
  65. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  66. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  67. package/dist/DboBuilder/TableHandler/delete.js +44 -13
  68. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  69. package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
  70. package/dist/DboBuilder/TableHandler/insert.js +81 -22
  71. package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
  72. package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -1
  73. package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
  74. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -1
  75. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
  76. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +7 -4
  77. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
  78. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  79. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -5
  80. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  81. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  82. package/dist/DboBuilder/TableHandler/update.js +16 -4
  83. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  84. package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
  85. package/dist/DboBuilder/TableHandler/updateBatch.js +33 -10
  86. package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
  87. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  88. package/dist/DboBuilder/TableHandler/updateFile.js +24 -6
  89. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  90. package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
  91. package/dist/DboBuilder/TableHandler/upsert.js +22 -6
  92. package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
  93. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +5 -5
  94. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  95. package/dist/DboBuilder/ViewHandler/ViewHandler.js +64 -36
  96. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  97. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
  98. package/dist/DboBuilder/ViewHandler/count.js +21 -7
  99. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  100. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  101. package/dist/DboBuilder/ViewHandler/find.js +76 -22
  102. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  103. package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
  104. package/dist/DboBuilder/ViewHandler/getExistsCondition.js +19 -10
  105. package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
  106. package/dist/DboBuilder/ViewHandler/getExistsFilters.d.ts.map +1 -1
  107. package/dist/DboBuilder/ViewHandler/getExistsFilters.js +12 -5
  108. package/dist/DboBuilder/ViewHandler/getExistsFilters.js.map +1 -1
  109. package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
  110. package/dist/DboBuilder/ViewHandler/getInfo.js +27 -9
  111. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  112. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts +2 -2
  113. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
  114. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +42 -23
  115. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
  116. package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts.map +1 -1
  117. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js +22 -9
  118. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js.map +1 -1
  119. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts +4 -4
  120. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
  121. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +13 -11
  122. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
  123. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts +1 -1
  124. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
  125. package/dist/DboBuilder/ViewHandler/parseJoinPath.js +44 -29
  126. package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
  127. package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
  128. package/dist/DboBuilder/ViewHandler/prepareSortItems.js +36 -27
  129. package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
  130. package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
  131. package/dist/DboBuilder/ViewHandler/prepareWhere.js +16 -12
  132. package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
  133. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
  134. package/dist/DboBuilder/ViewHandler/size.js +24 -7
  135. package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
  136. package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -1
  137. package/dist/DboBuilder/ViewHandler/subscribe.js +40 -12
  138. package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
  139. package/dist/DboBuilder/ViewHandler/validateViewRules.d.ts.map +1 -1
  140. package/dist/DboBuilder/ViewHandler/validateViewRules.js +20 -5
  141. package/dist/DboBuilder/ViewHandler/validateViewRules.js.map +1 -1
  142. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  143. package/dist/DboBuilder/dboBuilderUtils.js +18 -7
  144. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  145. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  146. package/dist/DboBuilder/getColumns.js +22 -7
  147. package/dist/DboBuilder/getColumns.js.map +1 -1
  148. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  149. package/dist/DboBuilder/getCondition.js +43 -30
  150. package/dist/DboBuilder/getCondition.js.map +1 -1
  151. package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
  152. package/dist/DboBuilder/getSubscribeRelatedTables.js +38 -27
  153. package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
  154. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
  155. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +9 -9
  156. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
  157. package/dist/DboBuilder/insertNestedRecords.d.ts +3 -3
  158. package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
  159. package/dist/DboBuilder/insertNestedRecords.js +79 -44
  160. package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
  161. package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
  162. package/dist/DboBuilder/parseUpdateRules.js +38 -14
  163. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  164. package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
  165. package/dist/DboBuilder/prepareShortestJoinPaths.js +56 -31
  166. package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
  167. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  168. package/dist/DboBuilder/runSQL.js +41 -21
  169. package/dist/DboBuilder/runSQL.js.map +1 -1
  170. package/dist/DboBuilder/runTransaction.d.ts +1 -1
  171. package/dist/DboBuilder/runTransaction.d.ts.map +1 -1
  172. package/dist/DboBuilder/runTransaction.js +2 -2
  173. package/dist/DboBuilder/runTransaction.js.map +1 -1
  174. package/dist/DboBuilder/sqlErrCodeToMsg.d.ts.map +1 -1
  175. package/dist/DboBuilder/sqlErrCodeToMsg.js +297 -38
  176. package/dist/DboBuilder/sqlErrCodeToMsg.js.map +1 -1
  177. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  178. package/dist/DboBuilder/uploadFile.js +33 -9
  179. package/dist/DboBuilder/uploadFile.js.map +1 -1
  180. package/dist/Event_Trigger_Tags.d.ts +1 -1
  181. package/dist/Event_Trigger_Tags.d.ts.map +1 -1
  182. package/dist/Event_Trigger_Tags.js +1 -1
  183. package/dist/Event_Trigger_Tags.js.map +1 -1
  184. package/dist/FileManager/FileManager.d.ts.map +1 -1
  185. package/dist/FileManager/FileManager.js +6 -3
  186. package/dist/FileManager/FileManager.js.map +1 -1
  187. package/dist/FileManager/getValidatedFileType.d.ts.map +1 -1
  188. package/dist/FileManager/getValidatedFileType.js +18 -16
  189. package/dist/FileManager/getValidatedFileType.js.map +1 -1
  190. package/dist/FileManager/initFileManager.d.ts.map +1 -1
  191. package/dist/FileManager/initFileManager.js +7 -1
  192. package/dist/FileManager/initFileManager.js.map +1 -1
  193. package/dist/FileManager/upload.d.ts +1 -1
  194. package/dist/FileManager/upload.d.ts.map +1 -1
  195. package/dist/FileManager/upload.js +3 -3
  196. package/dist/FileManager/upload.js.map +1 -1
  197. package/dist/FileManager/uploadStream.d.ts +1 -1
  198. package/dist/FileManager/uploadStream.d.ts.map +1 -1
  199. package/dist/FileManager/uploadStream.js +6 -7
  200. package/dist/FileManager/uploadStream.js.map +1 -1
  201. package/dist/Filtering.d.ts +3 -3
  202. package/dist/Filtering.d.ts.map +1 -1
  203. package/dist/Filtering.js +70 -37
  204. package/dist/Filtering.js.map +1 -1
  205. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
  206. package/dist/JSONBValidation/validate_jsonb_schema_sql.js +1 -4
  207. package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -1
  208. package/dist/JSONBValidation/validation.d.ts.map +1 -1
  209. package/dist/JSONBValidation/validation.js +46 -24
  210. package/dist/JSONBValidation/validation.js.map +1 -1
  211. package/dist/Logging.d.ts +2 -2
  212. package/dist/Logging.d.ts.map +1 -1
  213. package/dist/PostgresNotifListenManager.d.ts.map +1 -1
  214. package/dist/PostgresNotifListenManager.js +20 -22
  215. package/dist/PostgresNotifListenManager.js.map +1 -1
  216. package/dist/Prostgles.d.ts +1 -1
  217. package/dist/Prostgles.d.ts.map +1 -1
  218. package/dist/Prostgles.js +37 -11
  219. package/dist/Prostgles.js.map +1 -1
  220. package/dist/ProstglesTypes.d.ts.map +1 -1
  221. package/dist/ProstglesTypes.js +6 -1
  222. package/dist/ProstglesTypes.js.map +1 -1
  223. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  224. package/dist/PubSubManager/PubSubManager.js +10 -5
  225. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  226. package/dist/PubSubManager/addSub.d.ts.map +1 -1
  227. package/dist/PubSubManager/addSub.js +4 -6
  228. package/dist/PubSubManager/addSub.js.map +1 -1
  229. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  230. package/dist/PubSubManager/addSync.js +10 -6
  231. package/dist/PubSubManager/addSync.js.map +1 -1
  232. package/dist/PubSubManager/getCreatePubSubManagerError.d.ts.map +1 -1
  233. package/dist/PubSubManager/getCreatePubSubManagerError.js +3 -1
  234. package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
  235. package/dist/PubSubManager/getPubSubManagerInitQuery.d.ts.map +1 -1
  236. package/dist/PubSubManager/getPubSubManagerInitQuery.js +8 -8
  237. package/dist/PubSubManager/getPubSubManagerInitQuery.js.map +1 -1
  238. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  239. package/dist/PubSubManager/initPubSubManager.js +7 -9
  240. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  241. package/dist/PubSubManager/notifListener.d.ts.map +1 -1
  242. package/dist/PubSubManager/notifListener.js +23 -12
  243. package/dist/PubSubManager/notifListener.js.map +1 -1
  244. package/dist/PubSubManager/orphanTriggerCheck.d.ts.map +1 -1
  245. package/dist/PubSubManager/orphanTriggerCheck.js.map +1 -1
  246. package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
  247. package/dist/PubSubManager/pushSubData.js +1 -1
  248. package/dist/PubSubManager/pushSubData.js.map +1 -1
  249. package/dist/PublishParser/PublishParser.d.ts +1 -1
  250. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  251. package/dist/PublishParser/PublishParser.js +25 -14
  252. package/dist/PublishParser/PublishParser.js.map +1 -1
  253. package/dist/PublishParser/getFileTableRules.d.ts.map +1 -1
  254. package/dist/PublishParser/getFileTableRules.js +23 -16
  255. package/dist/PublishParser/getFileTableRules.js.map +1 -1
  256. package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
  257. package/dist/PublishParser/getSchemaFromPublish.js +39 -16
  258. package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
  259. package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
  260. package/dist/PublishParser/getTableRulesWithoutFileTable.js +42 -22
  261. package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
  262. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  263. package/dist/PublishParser/publishTypesAndUtils.js +5 -1
  264. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  265. package/dist/RestApi.d.ts +1 -1
  266. package/dist/RestApi.d.ts.map +1 -1
  267. package/dist/RestApi.js +1 -1
  268. package/dist/RestApi.js.map +1 -1
  269. package/dist/SchemaWatch/SchemaWatch.d.ts +2 -2
  270. package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
  271. package/dist/SchemaWatch/SchemaWatch.js +11 -9
  272. package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
  273. package/dist/SchemaWatch/getValidatedWatchSchemaType.d.ts.map +1 -1
  274. package/dist/SchemaWatch/getValidatedWatchSchemaType.js +3 -3
  275. package/dist/SchemaWatch/getValidatedWatchSchemaType.js.map +1 -1
  276. package/dist/SchemaWatch/getWatchSchemaTagList.d.ts.map +1 -1
  277. package/dist/SchemaWatch/getWatchSchemaTagList.js +12 -6
  278. package/dist/SchemaWatch/getWatchSchemaTagList.js.map +1 -1
  279. package/dist/SyncReplication.d.ts.map +1 -1
  280. package/dist/SyncReplication.js +84 -42
  281. package/dist/SyncReplication.js.map +1 -1
  282. package/dist/TableConfig/TableConfig.d.ts +5 -5
  283. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  284. package/dist/TableConfig/TableConfig.js +18 -5
  285. package/dist/TableConfig/TableConfig.js.map +1 -1
  286. package/dist/TableConfig/getColumnDefinitionQuery.d.ts +2 -2
  287. package/dist/TableConfig/getColumnDefinitionQuery.d.ts.map +1 -1
  288. package/dist/TableConfig/getColumnDefinitionQuery.js +20 -9
  289. package/dist/TableConfig/getColumnDefinitionQuery.js.map +1 -1
  290. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts +3 -3
  291. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
  292. package/dist/TableConfig/getConstraintDefinitionQueries.js +12 -7
  293. package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
  294. package/dist/TableConfig/getFutureTableSchema.d.ts +1 -1
  295. package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
  296. package/dist/TableConfig/getFutureTableSchema.js +6 -4
  297. package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
  298. package/dist/TableConfig/getPGIndexes.d.ts.map +1 -1
  299. package/dist/TableConfig/getPGIndexes.js.map +1 -1
  300. package/dist/TableConfig/getTableColumnQueries.d.ts +1 -1
  301. package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
  302. package/dist/TableConfig/getTableColumnQueries.js +38 -19
  303. package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
  304. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  305. package/dist/TableConfig/initTableConfig.js +91 -43
  306. package/dist/TableConfig/initTableConfig.js.map +1 -1
  307. package/dist/index.d.ts.map +1 -1
  308. package/dist/index.js.map +1 -1
  309. package/dist/initProstgles.d.ts.map +1 -1
  310. package/dist/initProstgles.js +14 -10
  311. package/dist/initProstgles.js.map +1 -1
  312. package/dist/onSocketConnected.d.ts.map +1 -1
  313. package/dist/onSocketConnected.js +38 -16
  314. package/dist/onSocketConnected.js.map +1 -1
  315. package/dist/runClientRequest.d.ts.map +1 -1
  316. package/dist/runClientRequest.js +33 -14
  317. package/dist/runClientRequest.js.map +1 -1
  318. package/dist/shortestPath.d.ts.map +1 -1
  319. package/dist/shortestPath.js +1 -1
  320. package/dist/shortestPath.js.map +1 -1
  321. package/dist/typeTests/dboTypeCheck.js.map +1 -1
  322. package/examples/full-example-typescript/DBoGenerated.d.ts +112 -54
  323. package/examples/full-example-typescript/DBoGenerated.js +3 -3
  324. package/examples/full-example-typescript/home.html +28 -26
  325. package/examples/full-example-typescript/index.d.ts +1 -1
  326. package/examples/full-example-typescript/index.js +80 -53
  327. package/examples/full-example-vanilla/home.html +151 -125
  328. package/examples/server/javascript/index.js +17 -19
  329. package/lib/Auth/AuthHandler.ts +234 -155
  330. package/lib/Auth/AuthTypes.ts +27 -4
  331. package/lib/Auth/getSafeReturnURL.ts +35 -21
  332. package/lib/Auth/sendEmail.ts +34 -31
  333. package/lib/Auth/setAuthProviders.ts +94 -71
  334. package/lib/Auth/setEmailProvider.ts +45 -27
  335. package/lib/Auth/setupAuthRoutes.ts +164 -100
  336. package/lib/DBEventsManager.ts +87 -65
  337. package/lib/DBSchemaBuilder.ts +62 -28
  338. package/lib/DboBuilder/DboBuilder.ts +45 -21
  339. package/lib/DboBuilder/DboBuilderTypes.ts +99 -95
  340. package/lib/DboBuilder/QueryBuilder/Functions.ts +862 -580
  341. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +202 -141
  342. package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +199 -124
  343. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +209 -148
  344. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +101 -75
  345. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +10 -5
  346. package/lib/DboBuilder/QueryStreamer.ts +207 -100
  347. package/lib/DboBuilder/TableHandler/DataValidator.ts +253 -148
  348. package/lib/DboBuilder/TableHandler/TableHandler.ts +155 -60
  349. package/lib/DboBuilder/TableHandler/delete.ts +82 -29
  350. package/lib/DboBuilder/TableHandler/insert.ts +177 -81
  351. package/lib/DboBuilder/TableHandler/insertTest.ts +13 -7
  352. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +35 -21
  353. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +95 -45
  354. package/lib/DboBuilder/TableHandler/update.ts +54 -14
  355. package/lib/DboBuilder/TableHandler/updateBatch.ts +59 -21
  356. package/lib/DboBuilder/TableHandler/updateFile.ts +57 -26
  357. package/lib/DboBuilder/TableHandler/upsert.ts +58 -13
  358. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +264 -121
  359. package/lib/DboBuilder/ViewHandler/count.ts +56 -25
  360. package/lib/DboBuilder/ViewHandler/find.ts +153 -68
  361. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +59 -32
  362. package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +31 -19
  363. package/lib/DboBuilder/ViewHandler/getInfo.ts +47 -16
  364. package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +91 -57
  365. package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +51 -29
  366. package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +35 -29
  367. package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +130 -76
  368. package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +140 -92
  369. package/lib/DboBuilder/ViewHandler/prepareWhere.ts +66 -26
  370. package/lib/DboBuilder/ViewHandler/size.ts +56 -22
  371. package/lib/DboBuilder/ViewHandler/subscribe.ts +122 -46
  372. package/lib/DboBuilder/ViewHandler/validateViewRules.ts +39 -14
  373. package/lib/DboBuilder/dboBuilderUtils.ts +41 -18
  374. package/lib/DboBuilder/getColumns.ts +44 -12
  375. package/lib/DboBuilder/getCondition.ts +120 -79
  376. package/lib/DboBuilder/getSubscribeRelatedTables.ts +144 -83
  377. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +61 -44
  378. package/lib/DboBuilder/insertNestedRecords.ts +370 -235
  379. package/lib/DboBuilder/parseUpdateRules.ts +117 -61
  380. package/lib/DboBuilder/prepareShortestJoinPaths.ts +115 -56
  381. package/lib/DboBuilder/runSQL.ts +135 -74
  382. package/lib/DboBuilder/runTransaction.ts +27 -16
  383. package/lib/DboBuilder/sqlErrCodeToMsg.ts +502 -244
  384. package/lib/DboBuilder/uploadFile.ts +67 -31
  385. package/lib/Event_Trigger_Tags.ts +6 -4
  386. package/lib/FileManager/FileManager.ts +53 -21
  387. package/lib/FileManager/getValidatedFileType.ts +79 -35
  388. package/lib/FileManager/initFileManager.ts +21 -9
  389. package/lib/FileManager/upload.ts +21 -19
  390. package/lib/FileManager/uploadStream.ts +33 -34
  391. package/lib/Filtering.ts +249 -197
  392. package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +2 -7
  393. package/lib/JSONBValidation/validation.ts +147 -82
  394. package/lib/Logging.ts +107 -97
  395. package/lib/PostgresNotifListenManager.ts +96 -63
  396. package/lib/Prostgles.ts +106 -35
  397. package/lib/ProstglesTypes.ts +31 -9
  398. package/lib/PubSubManager/PubSubManager.ts +62 -27
  399. package/lib/PubSubManager/addSub.ts +56 -37
  400. package/lib/PubSubManager/addSync.ts +50 -33
  401. package/lib/PubSubManager/getCreatePubSubManagerError.ts +29 -21
  402. package/lib/PubSubManager/getPubSubManagerInitQuery.ts +45 -27
  403. package/lib/PubSubManager/initPubSubManager.ts +27 -18
  404. package/lib/PubSubManager/notifListener.ts +77 -59
  405. package/lib/PubSubManager/orphanTriggerCheck.ts +5 -4
  406. package/lib/PubSubManager/pushSubData.ts +11 -9
  407. package/lib/PublishParser/PublishParser.ts +102 -44
  408. package/lib/PublishParser/getFileTableRules.ts +97 -54
  409. package/lib/PublishParser/getSchemaFromPublish.ts +146 -74
  410. package/lib/PublishParser/getTableRulesWithoutFileTable.ts +101 -51
  411. package/lib/PublishParser/publishTypesAndUtils.ts +74 -23
  412. package/lib/RestApi.ts +10 -2
  413. package/lib/SchemaWatch/SchemaWatch.ts +52 -34
  414. package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +1 -1
  415. package/lib/SchemaWatch/getValidatedWatchSchemaType.ts +32 -22
  416. package/lib/SchemaWatch/getWatchSchemaTagList.ts +24 -16
  417. package/lib/SyncReplication.ts +376 -190
  418. package/lib/TableConfig/TableConfig.ts +200 -136
  419. package/lib/TableConfig/getColumnDefinitionQuery.ts +65 -44
  420. package/lib/TableConfig/getConstraintDefinitionQueries.ts +41 -25
  421. package/lib/TableConfig/getFutureTableSchema.ts +31 -21
  422. package/lib/TableConfig/getPGIndexes.ts +7 -4
  423. package/lib/TableConfig/getTableColumnQueries.ts +101 -54
  424. package/lib/TableConfig/initTableConfig.ts +192 -101
  425. package/lib/index.ts +6 -5
  426. package/lib/initProstgles.ts +57 -51
  427. package/lib/onSocketConnected.ts +75 -40
  428. package/lib/runClientRequest.ts +148 -79
  429. package/lib/shortestPath.ts +80 -76
  430. package/lib/typeTests/DBoGenerated.d.ts +5 -1
  431. package/lib/typeTests/dboTypeCheck.ts +8 -8
  432. package/package.json +1 -1
@@ -34,7 +34,9 @@ export const getErrorAsObject = (rawError: any, includeStack = false) => {
34
34
  return { message: rawError };
35
35
  }
36
36
  if (rawError instanceof Error) {
37
- const result = JSON.parse(JSON.stringify(rawError, Object.getOwnPropertyNames(rawError)));
37
+ const result = JSON.parse(
38
+ JSON.stringify(rawError, Object.getOwnPropertyNames(rawError)),
39
+ );
38
40
  if (!includeStack) {
39
41
  return omitKeys(result, ["stack"]);
40
42
  }
@@ -76,7 +78,7 @@ const otherKeys = [
76
78
 
77
79
  export function getSerializedClientErrorFromPGError(
78
80
  rawError: any,
79
- args: GetSerializedClientErrorFromPGErrorArgs
81
+ args: GetSerializedClientErrorFromPGErrorArgs,
80
82
  ): AnyObject {
81
83
  const err = getErrorAsObject(rawError);
82
84
  if (err.code) {
@@ -89,7 +91,9 @@ export function getSerializedClientErrorFromPGError(
89
91
  const isServerSideRequest = !args.localParams;
90
92
  //TODO: add a rawSQL check for HTTP requests
91
93
  const showFullError =
92
- isServerSideRequest || args.type === "sql" || args.localParams?.socket?.prostgles?.rawSQL;
94
+ isServerSideRequest ||
95
+ args.type === "sql" ||
96
+ args.localParams?.socket?.prostgles?.rawSQL;
93
97
  if (showFullError) {
94
98
  return err;
95
99
  }
@@ -102,15 +106,19 @@ export function getSerializedClientErrorFromPGError(
102
106
  ];
103
107
 
104
108
  const errObject = pickKeys(err, finalKeys);
105
- if (view?.dboBuilder?.constraints && errObject.constraint && !errObject.column) {
109
+ if (
110
+ view?.dboBuilder?.constraints &&
111
+ errObject.constraint &&
112
+ !errObject.column
113
+ ) {
106
114
  const constraint = view.dboBuilder.constraints.find(
107
- (c) => c.conname === errObject.constraint && c.relname === view.name
115
+ (c) => c.conname === errObject.constraint && c.relname === view.name,
108
116
  );
109
117
  if (constraint) {
110
118
  const cols = view.columns?.filter(
111
119
  (c) =>
112
120
  (!allowedKeys || allowedKeys.includes(c.name)) &&
113
- constraint.conkey.includes(c.ordinal_position)
121
+ constraint.conkey.includes(c.ordinal_position),
114
122
  );
115
123
  const [firstCol] = cols ?? [];
116
124
  if (firstCol) {
@@ -123,7 +131,7 @@ export function getSerializedClientErrorFromPGError(
123
131
  }
124
132
  export function getClientErrorFromPGError(
125
133
  rawError: any,
126
- args: GetSerializedClientErrorFromPGErrorArgs
134
+ args: GetSerializedClientErrorFromPGErrorArgs,
127
135
  ) {
128
136
  const errorObj = getSerializedClientErrorFromPGError(rawError, args);
129
137
  return Promise.reject(errorObj);
@@ -135,11 +143,16 @@ export function getClientErrorFromPGError(
135
143
  export function parseError(e: any, _caller: string): ProstglesError {
136
144
  const errorObject = isObject(e) ? e : undefined;
137
145
  const message =
138
- typeof e === "string" ? e
139
- : e instanceof Error ? e.message
140
- : isObject(errorObject) ?
141
- (errorObject.message ?? errorObject.txt ?? JSON.stringify(errorObject) ?? "")
142
- : "";
146
+ typeof e === "string"
147
+ ? e
148
+ : e instanceof Error
149
+ ? e.message
150
+ : isObject(errorObject)
151
+ ? (errorObject.message ??
152
+ errorObject.txt ??
153
+ JSON.stringify(errorObject) ??
154
+ "")
155
+ : "";
143
156
 
144
157
  const result: ProstglesError = {
145
158
  ...errorObject,
@@ -175,7 +188,7 @@ export type PGConstraint = {
175
188
 
176
189
  export const getConstraints = async (
177
190
  db: DB,
178
- schema: ProstglesInitOptions["schemaFilter"]
191
+ schema: ProstglesInitOptions["schemaFilter"],
179
192
  ): Promise<PGConstraint[]> => {
180
193
  const { sql, schemaNames } = getSchemaFilter(schema);
181
194
  return db.any(
@@ -188,7 +201,7 @@ export const getConstraints = async (
188
201
  ON nsp.oid = connamespace
189
202
  WHERE nsp.nspname ${sql}
190
203
  `,
191
- { schemaNames }
204
+ { schemaNames },
192
205
  );
193
206
  };
194
207
 
@@ -200,7 +213,9 @@ export function isPlainObject(o: any): o is Record<string, any> {
200
213
  return Object(o) === o && Object.getPrototypeOf(o) === Object.prototype;
201
214
  }
202
215
 
203
- export function postgresToTsType(udt_data_type: PG_COLUMN_UDT_DATA_TYPE): keyof typeof TS_PG_Types {
216
+ export function postgresToTsType(
217
+ udt_data_type: PG_COLUMN_UDT_DATA_TYPE,
218
+ ): keyof typeof TS_PG_Types {
204
219
  return (
205
220
  getKeys(TS_PG_Types).find((k) => {
206
221
  // @ts-ignore
@@ -209,14 +224,19 @@ export function postgresToTsType(udt_data_type: PG_COLUMN_UDT_DATA_TYPE): keyof
209
224
  );
210
225
  }
211
226
 
212
- export const prepareOrderByQuery = (items: SortItem[], tableAlias?: string): string[] => {
227
+ export const prepareOrderByQuery = (
228
+ items: SortItem[],
229
+ tableAlias?: string,
230
+ ): string[] => {
213
231
  if (!items.length) return [];
214
232
  return [
215
233
  "ORDER BY " +
216
234
  items
217
235
  .map((d) => {
218
236
  const orderType = d.asc ? " ASC " : " DESC ";
219
- const nullOrder = d.nulls ? ` NULLS ${d.nulls === "first" ? " FIRST " : " LAST "}` : "";
237
+ const nullOrder = d.nulls
238
+ ? ` NULLS ${d.nulls === "first" ? " FIRST " : " LAST "}`
239
+ : "";
220
240
  if (d.type === "query" && d.nested) {
221
241
  return d.fieldQuery;
222
242
  }
@@ -237,7 +257,10 @@ export const getCanExecute = async (db: DB) => {
237
257
  return false;
238
258
  };
239
259
 
240
- export const withUserRLS = (localParams: LocalParams | undefined, query: string) => {
260
+ export const withUserRLS = (
261
+ localParams: LocalParams | undefined,
262
+ query: string,
263
+ ) => {
241
264
  const user = localParams?.isRemoteRequest?.user;
242
265
  const queryPrefix = `SET SESSION "prostgles.user" \nTO`;
243
266
  let firstQuery = `${queryPrefix} '';`;
@@ -15,7 +15,8 @@ import {
15
15
  import { TableHandler } from "./TableHandler/TableHandler";
16
16
  import { ViewHandler } from "./ViewHandler/ViewHandler";
17
17
 
18
- export const isTableHandler = (v: any): v is TableHandler => "parseUpdateRules" in v;
18
+ export const isTableHandler = (v: any): v is TableHandler =>
19
+ "parseUpdateRules" in v;
19
20
 
20
21
  export async function getColumns(
21
22
  this: ViewHandler,
@@ -23,7 +24,7 @@ export async function getColumns(
23
24
  params?: { rule: "update"; filter: AnyObject },
24
25
  _param3?: undefined,
25
26
  tableRules?: TableRule,
26
- localParams?: LocalParams
27
+ localParams?: LocalParams,
27
28
  ): Promise<ValidatedColumnInfo[]> {
28
29
  const start = Date.now();
29
30
  try {
@@ -34,7 +35,11 @@ export async function getColumns(
34
35
  let dynamicUpdateFields = this.column_names;
35
36
 
36
37
  if (params && tableRules && isTableHandler(this)) {
37
- if (!isObject(params) || !isObject(params.filter) || params.rule !== "update") {
38
+ if (
39
+ !isObject(params) ||
40
+ !isObject(params.filter) ||
41
+ params.rule !== "update"
42
+ ) {
38
43
  throw (
39
44
  "params must be { rule: 'update', filter: object } but received: " +
40
45
  JSON.stringify(params)
@@ -45,7 +50,12 @@ export async function getColumns(
45
50
  dynamicUpdateFields = [];
46
51
  } else {
47
52
  const { filter } = params;
48
- const updateRules = await this.parseUpdateRules(filter, undefined, tableRules, localParams);
53
+ const updateRules = await this.parseUpdateRules(
54
+ filter,
55
+ undefined,
56
+ tableRules,
57
+ localParams,
58
+ );
49
59
  dynamicUpdateFields = updateRules.fields;
50
60
  }
51
61
  }
@@ -79,11 +89,17 @@ export async function getColumns(
79
89
  });
80
90
 
81
91
  /** Do not allow updates to file table unless it's to delete fields */
82
- if (prostgles.fileManager?.config && prostgles.fileManager.tableName === this.name) {
92
+ if (
93
+ prostgles.fileManager?.config &&
94
+ prostgles.fileManager.tableName === this.name
95
+ ) {
83
96
  update = false;
84
97
  }
85
98
 
86
- const nonOrderableUD_Types: PG_COLUMN_UDT_DATA_TYPE[] = [..._PG_geometric, "xml" as any];
99
+ const nonOrderableUD_Types: PG_COLUMN_UDT_DATA_TYPE[] = [
100
+ ..._PG_geometric,
101
+ "xml" as any,
102
+ ];
87
103
 
88
104
  const result: ValidatedColumnInfo = {
89
105
  ...c,
@@ -97,7 +113,9 @@ export async function getColumns(
97
113
  select: select && Boolean(p.select?.fields?.includes(c.name)),
98
114
  orderBy:
99
115
  select &&
100
- Boolean(p.select?.fields && p.select.orderByFields.includes(c.name)) &&
116
+ Boolean(
117
+ p.select?.fields && p.select.orderByFields.includes(c.name),
118
+ ) &&
101
119
  !nonOrderableUD_Types.includes(c.udt_name),
102
120
  filter: Boolean(p.select?.filterFields?.includes(c.name)),
103
121
  update:
@@ -108,9 +126,16 @@ export async function getColumns(
108
126
  dynamicUpdateFields.includes(c.name),
109
127
  delete:
110
128
  _delete &&
111
- Boolean(p.delete && p.delete.filterFields && p.delete.filterFields.includes(c.name)),
112
- ...(prostgles?.tableConfigurator?.getColInfo({ table: this.name, col: c.name, lang }) ||
113
- {}),
129
+ Boolean(
130
+ p.delete &&
131
+ p.delete.filterFields &&
132
+ p.delete.filterFields.includes(c.name),
133
+ ),
134
+ ...(prostgles?.tableConfigurator?.getColInfo({
135
+ table: this.name,
136
+ col: c.name,
137
+ lang,
138
+ }) || {}),
114
139
  ...(fileConfig && { file: fileConfig }),
115
140
  };
116
141
 
@@ -133,14 +158,21 @@ export async function getColumns(
133
158
  duration: Date.now() - start,
134
159
  error: getErrorAsObject(e),
135
160
  });
136
- throw getSerializedClientErrorFromPGError(e, { type: "tableMethod", localParams, view: this });
161
+ throw getSerializedClientErrorFromPGError(e, {
162
+ type: "tableMethod",
163
+ localParams,
164
+ view: this,
165
+ });
137
166
  }
138
167
  }
139
168
 
140
169
  function replaceNonAlphaNumeric(string: string, replacement = "_"): string {
141
170
  return string.replace(/[\W_]+/g, replacement);
142
171
  }
143
- function capitalizeFirstLetter(string: string, nonalpha_replacement?: string): string {
172
+ function capitalizeFirstLetter(
173
+ string: string,
174
+ nonalpha_replacement?: string,
175
+ ): string {
144
176
  const str = replaceNonAlphaNumeric(string, nonalpha_replacement);
145
177
  return str.charAt(0).toUpperCase() + str.slice(1);
146
178
  }
@@ -9,7 +9,7 @@ import { getExistsCondition } from "./ViewHandler/getExistsCondition";
9
9
  import { getExistsFilters } from "./ViewHandler/getExistsFilters";
10
10
  import { parseComplexFilter } from "./ViewHandler/parseComplexFilter";
11
11
 
12
- const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
12
+ const FILTER_FUNCS = FUNCTIONS.filter((f) => f.canBeUsedForFilter);
13
13
 
14
14
  /**
15
15
  * parses a single filter
@@ -18,52 +18,79 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
18
18
  * { fff: { $ilike: 'abc' } } => "fff" ilike 'abc'
19
19
  */
20
20
  export async function getCondition(
21
- this: ViewHandler,
22
- params: {
23
- filter: any,
24
- select: SelectItem[] | undefined,
25
- allowed_colnames: string[],
26
- tableAlias?: string,
27
- localParams?: LocalParams,
28
- tableRules?: TableRule,
29
- isHaving?: boolean,
21
+ this: ViewHandler,
22
+ params: {
23
+ filter: any;
24
+ select: SelectItem[] | undefined;
25
+ allowed_colnames: string[];
26
+ tableAlias?: string;
27
+ localParams?: LocalParams;
28
+ tableRules?: TableRule;
29
+ isHaving?: boolean;
30
30
  },
31
31
  ): Promise<{ exists: ExistsFilterConfig[]; condition: string }> {
32
- const { filter: rawFilter, select, allowed_colnames, tableAlias, localParams, tableRules, isHaving } = params;
33
-
34
- const filter = { ... (rawFilter as any) } as any;
32
+ const {
33
+ filter: rawFilter,
34
+ select,
35
+ allowed_colnames,
36
+ tableAlias,
37
+ localParams,
38
+ tableRules,
39
+ isHaving,
40
+ } = params;
41
+
42
+ const filter = { ...(rawFilter as any) } as any;
35
43
 
36
44
  const existsConfigs = getExistsFilters(filter, this);
37
45
 
38
46
  const funcConds: string[] = [];
39
- const funcFilter = FILTER_FUNCS.filter(f => f.name in filter);
47
+ const funcFilter = FILTER_FUNCS.filter((f) => f.name in filter);
40
48
 
41
- funcFilter.map(f => {
49
+ funcFilter.map((f) => {
42
50
  const funcArgs = filter[f.name];
43
51
  if (!Array.isArray(funcArgs)) {
44
52
  throw `A function filter must contain an array. E.g: { $funcFilterName: ["col1"] } \n but got: ${JSON.stringify(pickKeys(filter, [f.name]))} `;
45
53
  }
46
- const fields = this.parseFieldFilter(f.getFields(funcArgs), true, allowed_colnames);
54
+ const fields = this.parseFieldFilter(
55
+ f.getFields(funcArgs),
56
+ true,
57
+ allowed_colnames,
58
+ );
47
59
 
48
- const dissallowedCols = fields.filter(fname => !allowed_colnames.includes(fname))
60
+ const dissallowedCols = fields.filter(
61
+ (fname) => !allowed_colnames.includes(fname),
62
+ );
49
63
  if (dissallowedCols.length) {
50
- throw `Invalid/disallowed columns found in function filter: ${dissallowedCols}`
64
+ throw `Invalid/disallowed columns found in function filter: ${dissallowedCols}`;
51
65
  }
52
- funcConds.push(f.getQuery({ args: funcArgs, allColumns: this.columns, allowedFields: allowed_colnames, tableAlias }));
66
+ funcConds.push(
67
+ f.getQuery({
68
+ args: funcArgs,
69
+ allColumns: this.columns,
70
+ allowedFields: allowed_colnames,
71
+ tableAlias,
72
+ }),
73
+ );
53
74
  });
54
75
 
55
-
56
76
  let existsCond = "";
57
77
  if (existsConfigs.length) {
58
- existsCond = (await Promise.all(existsConfigs.map(async existsConfig => await getExistsCondition.bind(this)(existsConfig, localParams)))).join(" AND ");
78
+ existsCond = (
79
+ await Promise.all(
80
+ existsConfigs.map(
81
+ async (existsConfig) =>
82
+ await getExistsCondition.bind(this)(existsConfig, localParams),
83
+ ),
84
+ )
85
+ ).join(" AND ");
59
86
  }
60
87
 
61
88
  /* Computed field queries ($rowhash) */
62
89
  const p = this.getValidatedRules(tableRules, localParams);
63
- const computedFields = p.allColumns.filter(c => c.type === "computed");
90
+ const computedFields = p.allColumns.filter((c) => c.type === "computed");
64
91
  const computedColConditions: string[] = [];
65
- Object.keys(filter || {}).map(key => {
66
- const compCol = computedFields.find(cf => cf.name === key);
92
+ Object.keys(filter || {}).map((key) => {
93
+ const compCol = computedFields.find((cf) => cf.name === key);
67
94
  if (compCol) {
68
95
  computedColConditions.push(
69
96
  compCol.getQuery({
@@ -75,7 +102,7 @@ export async function getCondition(
75
102
  // ctidField: this.is_view? undefined : "ctid"
76
103
 
77
104
  ctidField: undefined,
78
- }) + ` = ${pgp.as.format("$1", [(filter as any)[key]])}`
105
+ }) + ` = ${pgp.as.format("$1", [(filter as any)[key]])}`,
79
106
  );
80
107
  delete (filter as any)[key];
81
108
  }
@@ -85,41 +112,48 @@ export async function getCondition(
85
112
  /* Select aliases take precedence over col names. This is to ensure filters work correctly even on computed cols*/
86
113
  if (select) {
87
114
  /* Allow filtering by selected fields/funcs */
88
- allowedSelect = select.filter(s => {
89
- if (["function", "computed", "column"].includes(s.type) || isHaving && s.type === "aggregation") {
115
+ allowedSelect = select.filter((s) => {
116
+ if (
117
+ ["function", "computed", "column"].includes(s.type) ||
118
+ (isHaving && s.type === "aggregation")
119
+ ) {
90
120
  /** Selected computed cols are allowed for filtering without checking. Why not allow all?! */
91
121
  if (s.type !== "column" || allowed_colnames.includes(s.alias)) {
92
122
  return true;
93
123
  }
94
124
  }
95
125
  return false;
96
- })
126
+ });
97
127
  }
98
128
 
99
129
  /* Add remaining allowed fields */
100
- const remainingNonSelectedColumns: SelectItem[] = p.allColumns.filter(c =>
101
- allowed_colnames.includes(c.name) &&
102
- !allowedSelect.find(s => s.alias === c.name)
103
- ).map(f => ({
104
- type: f.type,
105
- alias: f.name,
106
- columnName: f.type === "column"? f.name : undefined as any,
107
- getQuery: (tableAlias) => f.getQuery({
108
- tableAlias,
109
- allColumns: this.columns,
110
- allowedFields: allowed_colnames
111
- }),
112
- selected: false,
113
- getFields: () => [f.name],
114
- column_udt_type: f.type === "column" ? this.columns.find(c => c.name === f.name)?.udt_name : undefined
115
- }))
116
- allowedSelect = allowedSelect.concat(
117
- remainingNonSelectedColumns
118
- );
130
+ const remainingNonSelectedColumns: SelectItem[] = p.allColumns
131
+ .filter(
132
+ (c) =>
133
+ allowed_colnames.includes(c.name) &&
134
+ !allowedSelect.find((s) => s.alias === c.name),
135
+ )
136
+ .map((f) => ({
137
+ type: f.type,
138
+ alias: f.name,
139
+ columnName: f.type === "column" ? f.name : (undefined as any),
140
+ getQuery: (tableAlias) =>
141
+ f.getQuery({
142
+ tableAlias,
143
+ allColumns: this.columns,
144
+ allowedFields: allowed_colnames,
145
+ }),
146
+ selected: false,
147
+ getFields: () => [f.name],
148
+ column_udt_type:
149
+ f.type === "column"
150
+ ? this.columns.find((c) => c.name === f.name)?.udt_name
151
+ : undefined,
152
+ }));
153
+ allowedSelect = allowedSelect.concat(remainingNonSelectedColumns);
119
154
  const complexFilters: string[] = [];
120
155
  const complexFilterKey = "$filter";
121
156
  if (complexFilterKey in filter) {
122
-
123
157
  const complexFilterCondition = parseComplexFilter({
124
158
  filter,
125
159
  complexFilterKey,
@@ -135,39 +169,43 @@ export async function getCondition(
135
169
  will make an exists filter
136
170
  */
137
171
 
138
- const filterKeys = Object.keys(filter)
139
- .filter(k =>
140
- k !== complexFilterKey &&
141
- !funcFilter.find(ek => ek.name === k) &&
142
- !computedFields.find(cf => cf.name === k) &&
143
- !existsConfigs.find(ek => ek.existType === k)
144
- );
172
+ const filterKeys = Object.keys(filter).filter(
173
+ (k) =>
174
+ k !== complexFilterKey &&
175
+ !funcFilter.find((ek) => ek.name === k) &&
176
+ !computedFields.find((cf) => cf.name === k) &&
177
+ !existsConfigs.find((ek) => ek.existType === k),
178
+ );
145
179
 
146
- const validFieldNames = allowedSelect.map(s => s.alias);
147
- const invalidColumn = filterKeys
148
- .find(fName => !validFieldNames.find(c =>
149
- c === fName ||
150
- (
151
- fName.startsWith(c) && (
152
- fName.slice(c.length).includes("->") ||
153
- fName.slice(c.length).includes(".")
154
- )
155
- )
156
- ));
180
+ const validFieldNames = allowedSelect.map((s) => s.alias);
181
+ const invalidColumn = filterKeys.find(
182
+ (fName) =>
183
+ !validFieldNames.find(
184
+ (c) =>
185
+ c === fName ||
186
+ (fName.startsWith(c) &&
187
+ (fName.slice(c.length).includes("->") ||
188
+ fName.slice(c.length).includes("."))),
189
+ ),
190
+ );
157
191
 
158
192
  if (invalidColumn) {
159
- const selItem = select?.find(s => s.alias === invalidColumn);
193
+ const selItem = select?.find((s) => s.alias === invalidColumn);
160
194
  let isComplexFilter = false;
161
- if(selItem?.type === "aggregation"){
162
- if(!params.isHaving){
163
- throw new Error(`Filtering by ${invalidColumn} is not allowed. Aggregations cannot be filtered. Use HAVING clause instead.`);
195
+ if (selItem?.type === "aggregation") {
196
+ if (!params.isHaving) {
197
+ throw new Error(
198
+ `Filtering by ${invalidColumn} is not allowed. Aggregations cannot be filtered. Use HAVING clause instead.`,
199
+ );
164
200
  } else {
165
201
  isComplexFilter = true;
166
202
  }
167
203
  }
168
204
 
169
- if(!isComplexFilter){
170
- const allowedCols = allowedSelect.map(s => s.type === "column" ? s.getQuery() : s.alias).join(", ");
205
+ if (!isComplexFilter) {
206
+ const allowedCols = allowedSelect
207
+ .map((s) => (s.type === "column" ? s.getQuery() : s.alias))
208
+ .join(", ");
171
209
  const errMessage = `Table: ${this.name} -> disallowed/inexistent columns in filter: ${invalidColumn} \n Expecting one of: ${allowedCols}`;
172
210
  throw errMessage;
173
211
  }
@@ -182,10 +220,14 @@ export async function getCondition(
182
220
  filter: f,
183
221
  tableAlias,
184
222
  select: allowedSelect,
185
- allowedColumnNames: !tableRules? this.column_names.slice(0) : this.parseFieldFilter(tableRules.select?.filterFields ?? tableRules.select?.fields),
223
+ allowedColumnNames: !tableRules
224
+ ? this.column_names.slice(0)
225
+ : this.parseFieldFilter(
226
+ tableRules.select?.filterFields ?? tableRules.select?.fields,
227
+ ),
186
228
  });
187
229
 
188
- let templates: string[] = [q].filter(q => q);
230
+ let templates: string[] = [q].filter((q) => q);
189
231
 
190
232
  if (existsCond) templates.push(existsCond);
191
233
  templates = templates.concat(funcConds);
@@ -193,9 +235,8 @@ export async function getCondition(
193
235
  templates = templates.concat(complexFilters);
194
236
 
195
237
  /* sorted to ensure duplicate subscription channels are not created due to different condition order */
196
- return {
197
- exists: existsConfigs,
198
- condition: templates.sort().join(" AND \n")
238
+ return {
239
+ exists: existsConfigs,
240
+ condition: templates.sort().join(" AND \n"),
199
241
  };
200
-
201
- }
242
+ }