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
@@ -1,11 +1,13 @@
1
- import * as pgPromise from 'pg-promise';
1
+ import * as pgPromise from "pg-promise";
2
2
  import {
3
3
  AnyObject,
4
- ColumnInfo, FieldFilter, SelectParams,
4
+ ColumnInfo,
5
+ FieldFilter,
6
+ SelectParams,
5
7
  SubscribeParams,
6
8
  asName,
7
9
  isEmpty,
8
- isObject
10
+ isObject,
9
11
  } from "prostgles-types";
10
12
  import { TableEvent } from "../../Logging";
11
13
  import { DB } from "../../Prostgles";
@@ -16,12 +18,13 @@ import {
16
18
  DboBuilder,
17
19
  Filter,
18
20
  LocalParams,
19
- TableHandlers, ValidatedTableRules,
21
+ TableHandlers,
22
+ ValidatedTableRules,
20
23
  escapeTSNames,
21
24
  getSerializedClientErrorFromPGError,
22
- postgresToTsType
25
+ postgresToTsType,
23
26
  } from "../DboBuilder";
24
- import { TableSchema } from '../DboBuilderTypes';
27
+ import { TableSchema } from "../DboBuilderTypes";
25
28
  import { COMPUTED_FIELDS, FieldSpec } from "../QueryBuilder/Functions";
26
29
  import { asNameAlias } from "../QueryBuilder/QueryBuilder";
27
30
  import { getColumns } from "../getColumns";
@@ -57,7 +60,7 @@ export class ViewHandler {
57
60
  tx?: {
58
61
  t: pgPromise.ITask<{}>;
59
62
  dbTX: TableHandlers;
60
- }
63
+ };
61
64
  get dbHandler() {
62
65
  return this.tx?.t ?? this.db;
63
66
  }
@@ -65,7 +68,13 @@ export class ViewHandler {
65
68
  is_view = true;
66
69
  filterDef = "";
67
70
  is_media = false;
68
- constructor(db: DB, tableOrViewInfo: TableSchema, dboBuilder: DboBuilder, tx?: { t: pgPromise.ITask<{}>, dbTX: TableHandlers }, joinPaths?: JoinPaths) {
71
+ constructor(
72
+ db: DB,
73
+ tableOrViewInfo: TableSchema,
74
+ dboBuilder: DboBuilder,
75
+ tx?: { t: pgPromise.ITask<{}>; dbTX: TableHandlers },
76
+ joinPaths?: JoinPaths
77
+ ) {
69
78
  if (!db || !tableOrViewInfo) throw "";
70
79
 
71
80
  this.db = db;
@@ -76,115 +85,161 @@ export class ViewHandler {
76
85
  this.escapedName = tableOrViewInfo.escaped_identifier;
77
86
  this.columns = tableOrViewInfo.columns;
78
87
  /* cols are sorted by name to reduce .d.ts schema rewrites */
79
- this.columnsForTypes = tableOrViewInfo.columns.slice(0).sort((a, b) => a.name.localeCompare(b.name));
88
+ this.columnsForTypes = tableOrViewInfo.columns
89
+ .slice(0)
90
+ .sort((a, b) => a.name.localeCompare(b.name));
91
+
92
+ this.column_names = tableOrViewInfo.columns.map((c) => c.name);
80
93
 
81
- this.column_names = tableOrViewInfo.columns.map(c => c.name);
82
-
83
94
  this.dboBuilder = dboBuilder;
84
- this.joins = this.dboBuilder.joins ?? [];
95
+ this.joins = this.dboBuilder.joins ?? [];
85
96
  this.columnsForTypes.map(({ name, udt_name, is_nullable }) => {
86
- this.tsColumnDefs.push(`${escapeTSNames(name)}?: ${postgresToTsType(udt_name) as string} ${is_nullable ? " | null " : ""};`);
97
+ this.tsColumnDefs.push(
98
+ `${escapeTSNames(name)}?: ${postgresToTsType(udt_name) as string} ${is_nullable ? " | null " : ""};`
99
+ );
87
100
  });
88
- }
101
+ }
89
102
 
90
- _log = ({ command, data, localParams, duration, error }: Pick<TableEvent, "command" | "data" | "localParams"> & { duration: number; error?: any; }) => {
91
- if(localParams?.noLog){
92
- if(localParams?.socket || localParams.httpReq) {
103
+ _log = ({
104
+ command,
105
+ data,
106
+ localParams,
107
+ duration,
108
+ error,
109
+ }: Pick<TableEvent, "command" | "data" | "localParams"> & {
110
+ duration: number;
111
+ error?: any;
112
+ }) => {
113
+ if (localParams?.noLog) {
114
+ if (localParams?.socket || localParams.httpReq) {
93
115
  throw new Error("noLog option is not allowed from a remote client");
94
116
  }
95
117
  return;
96
118
  }
97
119
  const sid = this.dboBuilder.prostgles.authHandler?.getSIDNoError(localParams);
98
- return this.dboBuilder.prostgles.opts.onLog?.({
99
- type: "table",
100
- command,
101
- duration,
120
+ return this.dboBuilder.prostgles.opts.onLog?.({
121
+ type: "table",
122
+ command,
123
+ duration,
102
124
  error,
103
125
  txInfo: this.tx?.t.ctx,
104
- sid,
105
- socketId: localParams?.socket?.id,
106
- tableName: this.name,
107
- data,
108
- localParams,
126
+ sid,
127
+ socketId: localParams?.socket?.id,
128
+ tableName: this.name,
129
+ data,
130
+ localParams,
109
131
  });
110
- }
132
+ };
111
133
 
112
134
  getRowHashSelect(allowedFields: FieldFilter, alias?: string, tableAlias?: string): string {
113
135
  let allowed_cols = this.column_names;
114
136
  if (allowedFields) allowed_cols = this.parseFieldFilter(allowedFields);
115
- return "md5(" +
137
+ return (
138
+ "md5(" +
116
139
  allowed_cols
117
140
  /* CTID not available in AFTER trigger */
118
141
  // .concat(this.is_view? [] : ["ctid"])
119
142
  .sort()
120
- .map(f => (tableAlias ? (asName(tableAlias) + ".") : "") + asName(f))
121
- .map(f => `md5(coalesce(${f}::text, 'dd'))`)
143
+ .map((f) => (tableAlias ? asName(tableAlias) + "." : "") + asName(f))
144
+ .map((f) => `md5(coalesce(${f}::text, 'dd'))`)
122
145
  .join(" || ") +
123
- `)` + (alias ? ` as ${asName(alias)}` : "");
146
+ `)` +
147
+ (alias ? ` as ${asName(alias)}` : "")
148
+ );
124
149
  }
125
150
 
126
151
  validateViewRules = validateViewRules.bind(this);
127
152
 
128
- getShortestJoin(table1: string, table2: string, startAlias: number, isInner = false): { query: string, toOne: boolean } {
129
- const getJoinCondition = (on: Record<string, string>[], leftTable: string, rightTable: string) => {
130
- return on.map(cond => Object.keys(cond).map(lKey => `${leftTable}.${lKey} = ${rightTable}.${cond[lKey]}`).join("\nAND ")).join(" OR ")
131
- }
153
+ getShortestJoin(
154
+ table1: string,
155
+ table2: string,
156
+ startAlias: number,
157
+ isInner = false
158
+ ): { query: string; toOne: boolean } {
159
+ const getJoinCondition = (
160
+ on: Record<string, string>[],
161
+ leftTable: string,
162
+ rightTable: string
163
+ ) => {
164
+ return on
165
+ .map((cond) =>
166
+ Object.keys(cond)
167
+ .map((lKey) => `${leftTable}.${lKey} = ${rightTable}.${cond[lKey]}`)
168
+ .join("\nAND ")
169
+ )
170
+ .join(" OR ");
171
+ };
132
172
 
133
173
  // let toOne = true;
134
- const query = this.joins.map(({ tables, on, type }, i) => {
174
+ const query = this.joins
175
+ .map(({ tables, on, type }, i) => {
135
176
  if (type.split("-")[1] === "many") {
136
177
  // toOne = false;
137
178
  }
138
179
  const tl = `tl${startAlias + i}`,
139
180
  tr = `tr${startAlias + i}`;
140
181
  return `FROM ${tables[0]} ${tl} ${isInner ? "INNER" : "LEFT"} JOIN ${tables[1]} ${tr} ON ${getJoinCondition(on, tl, tr)}`;
141
- }).join("\n");
142
- return { query, toOne: false }
182
+ })
183
+ .join("\n");
184
+ return { query, toOne: false };
143
185
  }
144
186
 
145
187
  checkFilter(filter: any) {
146
- if (filter === null || filter && !isObject(filter)) throw `invalid filter -> ${JSON.stringify(filter)} \nExpecting: undefined | {} | { field_name: "value" } | { field: { $gt: 22 } } ... `;
188
+ if (filter === null || (filter && !isObject(filter)))
189
+ throw `invalid filter -> ${JSON.stringify(filter)} \nExpecting: undefined | {} | { field_name: "value" } | { field: { $gt: 22 } } ... `;
147
190
  }
148
191
 
149
- getInfo = getInfo.bind(this)
192
+ getInfo = getInfo.bind(this);
150
193
 
151
194
  getColumns = getColumns.bind(this);
152
195
 
153
196
  getValidatedRules(tableRules?: TableRule, localParams?: LocalParams): ValidatedTableRules {
154
-
155
197
  if (localParams?.socket && !tableRules) {
156
198
  throw "INTERNAL ERROR: Unexpected case -> localParams && !tableRules";
157
199
  }
158
200
 
159
201
  /* Computed fields are allowed only if select is allowed */
160
- const allColumns: FieldSpec[] = this.column_names.slice(0).map(fieldName => ({
161
- type: "column",
162
- name: fieldName,
163
- getQuery: ({ tableAlias }) => asNameAlias(fieldName, tableAlias),
164
- selected: false
165
- } as FieldSpec)).concat(COMPUTED_FIELDS.map(c => ({
166
- type: c.type,
167
- name: c.name,
168
- getQuery: ({ tableAlias, allowedFields }) => c.getQuery({
169
- allowedFields,
170
- ctidField: undefined,
171
- allColumns: this.columns,
172
-
173
- /* CTID not available in AFTER trigger */
174
- // ctidField: this.is_view? undefined : "ctid",
175
- tableAlias
176
- }),
177
- selected: false
178
- })));
202
+ const allColumns: FieldSpec[] = this.column_names
203
+ .slice(0)
204
+ .map(
205
+ (fieldName) =>
206
+ ({
207
+ type: "column",
208
+ name: fieldName,
209
+ getQuery: ({ tableAlias }) => asNameAlias(fieldName, tableAlias),
210
+ selected: false,
211
+ }) as FieldSpec
212
+ )
213
+ .concat(
214
+ COMPUTED_FIELDS.map((c) => ({
215
+ type: c.type,
216
+ name: c.name,
217
+ getQuery: ({ tableAlias, allowedFields }) =>
218
+ c.getQuery({
219
+ allowedFields,
220
+ ctidField: undefined,
221
+ allColumns: this.columns,
222
+
223
+ /* CTID not available in AFTER trigger */
224
+ // ctidField: this.is_view? undefined : "ctid",
225
+ tableAlias,
226
+ }),
227
+ selected: false,
228
+ }))
229
+ );
179
230
 
180
231
  if (tableRules) {
181
- if (isEmpty(tableRules)) throw "INTERNAL ERROR: Unexpected case -> Empty table rules for " + this.name;
182
- const throwFieldsErr = (command: "select" | "update" | "delete" | "insert", fieldType = "fields") => {
183
- throw `Invalid publish.${this.name}.${command} rule -> ${fieldType} setting is missing.\nPlease specify allowed ${fieldType} in this format: "*" | { col_name: false } | { col1: true, col2: true }`;
184
- },
232
+ if (isEmpty(tableRules))
233
+ throw "INTERNAL ERROR: Unexpected case -> Empty table rules for " + this.name;
234
+ const throwFieldsErr = (
235
+ command: "select" | "update" | "delete" | "insert",
236
+ fieldType = "fields"
237
+ ) => {
238
+ throw `Invalid publish.${this.name}.${command} rule -> ${fieldType} setting is missing.\nPlease specify allowed ${fieldType} in this format: "*" | { col_name: false } | { col1: true, col2: true }`;
239
+ },
185
240
  getFirstSpecified = (...fieldParams: (FieldFilter | undefined)[]): string[] => {
186
- const firstValid = fieldParams.find(fp => fp !== undefined);
187
- return this.parseFieldFilter(firstValid)
241
+ const firstValid = fieldParams.find((fp) => fp !== undefined);
242
+ return this.parseFieldFilter(firstValid);
188
243
  };
189
244
 
190
245
  const res: ValidatedTableRules = {
@@ -197,19 +252,30 @@ export class ViewHandler {
197
252
  if (!tableRules.select.fields) return throwFieldsErr("select");
198
253
 
199
254
  let maxLimit: number | null = null;
200
- if (!localParams?.bypassLimit && tableRules.select.maxLimit !== undefined && tableRules.select.maxLimit !== maxLimit) {
255
+ if (
256
+ !localParams?.bypassLimit &&
257
+ tableRules.select.maxLimit !== undefined &&
258
+ tableRules.select.maxLimit !== maxLimit
259
+ ) {
201
260
  const ml = tableRules.select.maxLimit;
202
- if (ml !== null && (!Number.isInteger(ml) || ml < 0)) throw ` Invalid publish.${this.name}.select.maxLimit -> expecting a positive integer OR null but got ` + ml;
261
+ if (ml !== null && (!Number.isInteger(ml) || ml < 0))
262
+ throw (
263
+ ` Invalid publish.${this.name}.select.maxLimit -> expecting a positive integer OR null but got ` +
264
+ ml
265
+ );
203
266
  maxLimit = ml;
204
267
  }
205
268
 
206
- const fields = this.parseFieldFilter(tableRules.select.fields)
269
+ const fields = this.parseFieldFilter(tableRules.select.fields);
207
270
  res.select = {
208
271
  fields,
209
- orderByFields: tableRules.select.orderByFields ? this.parseFieldFilter(tableRules.select.orderByFields) : fields,
272
+ orderByFields:
273
+ tableRules.select.orderByFields ?
274
+ this.parseFieldFilter(tableRules.select.orderByFields)
275
+ : fields,
210
276
  forcedFilter: { ...tableRules.select.forcedFilter },
211
277
  filterFields: this.parseFieldFilter(tableRules.select.filterFields),
212
- maxLimit
278
+ maxLimit,
213
279
  };
214
280
  }
215
281
 
@@ -220,9 +286,13 @@ export class ViewHandler {
220
286
  fields: this.parseFieldFilter(tableRules.update.fields),
221
287
  forcedData: { ...tableRules.update.forcedData },
222
288
  forcedFilter: { ...tableRules.update.forcedFilter },
223
- returningFields: getFirstSpecified(tableRules.update?.returningFields, tableRules?.select?.fields, tableRules.update.fields),
224
- filterFields: this.parseFieldFilter(tableRules.update.filterFields)
225
- }
289
+ returningFields: getFirstSpecified(
290
+ tableRules.update?.returningFields,
291
+ tableRules?.select?.fields,
292
+ tableRules.update.fields
293
+ ),
294
+ filterFields: this.parseFieldFilter(tableRules.update.filterFields),
295
+ };
226
296
  }
227
297
 
228
298
  if (tableRules.insert) {
@@ -231,8 +301,12 @@ export class ViewHandler {
231
301
  res.insert = {
232
302
  fields: this.parseFieldFilter(tableRules.insert.fields),
233
303
  forcedData: { ...tableRules.insert.forcedData },
234
- returningFields: getFirstSpecified(tableRules.insert.returningFields, tableRules?.select?.fields, tableRules.insert.fields)
235
- }
304
+ returningFields: getFirstSpecified(
305
+ tableRules.insert.returningFields,
306
+ tableRules?.select?.fields,
307
+ tableRules.insert.fields
308
+ ),
309
+ };
236
310
  }
237
311
 
238
312
  if (tableRules.delete) {
@@ -241,8 +315,12 @@ export class ViewHandler {
241
315
  res.delete = {
242
316
  forcedFilter: { ...tableRules.delete.forcedFilter },
243
317
  filterFields: this.parseFieldFilter(tableRules.delete.filterFields),
244
- returningFields: getFirstSpecified(tableRules.delete.returningFields, tableRules?.select?.fields, tableRules.delete.filterFields)
245
- }
318
+ returningFields: getFirstSpecified(
319
+ tableRules.delete.returningFields,
320
+ tableRules?.select?.fields,
321
+ tableRules.delete.filterFields
322
+ ),
323
+ };
246
324
  }
247
325
 
248
326
  if (!tableRules.select && !tableRules.update && !tableRules.delete && !tableRules.insert) {
@@ -269,65 +347,125 @@ export class ViewHandler {
269
347
  filterFields: allCols,
270
348
  forcedFilter: {},
271
349
  forcedData: {},
272
- returningFields: allCols
350
+ returningFields: allCols,
273
351
  },
274
352
  insert: {
275
353
  fields: allCols,
276
354
  forcedData: {},
277
- returningFields: allCols
355
+ returningFields: allCols,
278
356
  },
279
357
  delete: {
280
358
  filterFields: allCols,
281
359
  forcedFilter: {},
282
- returningFields: allCols
283
- }
360
+ returningFields: allCols,
361
+ },
284
362
  };
285
-
286
363
  }
287
-
288
364
  }
289
365
  find = find.bind(this);
290
-
291
- async findOne(filter?: Filter, selectParams?: SelectParams, _param3_unused?: undefined, table_rules?: TableRule, localParams?: LocalParams): Promise<any> {
292
366
 
367
+ async findOne(
368
+ filter?: Filter,
369
+ selectParams?: SelectParams,
370
+ _param3_unused?: undefined,
371
+ table_rules?: TableRule,
372
+ localParams?: LocalParams
373
+ ): Promise<any> {
293
374
  try {
294
375
  const { limit, ...params } = selectParams ?? {};
295
376
  if (limit) {
296
377
  throw "limit not allowed in findOne()";
297
378
  }
298
379
  const start = Date.now();
299
- const result = await this.find(filter, { ...params, limit: 1, returnType: "row" }, undefined, table_rules, localParams);
300
- await this._log({ command: "find", localParams, data: { filter, selectParams }, duration: Date.now() - start });
380
+ const result = await this.find(
381
+ filter,
382
+ { ...params, limit: 1, returnType: "row" },
383
+ undefined,
384
+ table_rules,
385
+ localParams
386
+ );
387
+ await this._log({
388
+ command: "find",
389
+ localParams,
390
+ data: { filter, selectParams },
391
+ duration: Date.now() - start,
392
+ });
301
393
  return result;
302
394
  } catch (e) {
303
- throw getSerializedClientErrorFromPGError(e, { type: "tableMethod", localParams, view: this });
395
+ throw getSerializedClientErrorFromPGError(e, {
396
+ type: "tableMethod",
397
+ localParams,
398
+ view: this,
399
+ });
304
400
  }
305
401
  }
306
402
 
307
- async subscribe(filter: Filter, params: SubscribeParams, localFuncs: LocalFuncs): Promise<{ unsubscribe: () => any }>
308
- async subscribe(filter: Filter, params: SubscribeParams, localFuncs: undefined, table_rules: TableRule | undefined, localParams: LocalParams): Promise<string>
309
- async subscribe(filter: Filter, params: SubscribeParams, localFuncs?: LocalFuncs, table_rules?: TableRule, localParams?: LocalParams):
310
- Promise<{ unsubscribe: () => any } | string> {
403
+ async subscribe(
404
+ filter: Filter,
405
+ params: SubscribeParams,
406
+ localFuncs: LocalFuncs
407
+ ): Promise<{ unsubscribe: () => any }>;
408
+
409
+ async subscribe(
410
+ filter: Filter,
411
+ params: SubscribeParams,
412
+ localFuncs: undefined,
413
+ table_rules: TableRule | undefined,
414
+ localParams: LocalParams
415
+ ): Promise<string>;
416
+
417
+ async subscribe(
418
+ filter: Filter,
419
+ params: SubscribeParams,
420
+ localFuncs?: LocalFuncs,
421
+ table_rules?: TableRule,
422
+ localParams?: LocalParams
423
+ ): Promise<{ unsubscribe: () => any } | string> {
424
+ //@ts-ignore
425
+ return subscribe.bind(this)(
426
+ filter,
427
+ params,
311
428
  //@ts-ignore
312
- return subscribe.bind(this)(filter, params, localFuncs, table_rules, localParams);
429
+ localFuncs,
430
+ table_rules,
431
+ localParams
432
+ );
313
433
  }
314
434
 
315
435
  /* This should only be called from server */
316
- subscribeOne(filter: Filter, params: SubscribeParams, localFunc: (item: AnyObject) => any): Promise<{ unsubscribe: () => any }>
317
- subscribeOne(filter: Filter, params: SubscribeParams, localFunc: undefined, table_rules: TableRule, localParams: LocalParams): Promise<string>
318
- subscribeOne(filter: Filter, params: SubscribeParams = {}, localFunc?: (item: AnyObject) => any, table_rules?: TableRule, localParams?: LocalParams):
319
- Promise<string | { unsubscribe: () => any }> {
320
-
321
- //@ts-ignore
322
- const func = localParams? undefined : (rows: AnyObject[]) => localFunc(rows[0]);
323
- //@ts-ignore
324
- return this.subscribe(filter, { ...params, limit: 2 }, func, table_rules, localParams);
436
+ subscribeOne(
437
+ filter: Filter,
438
+ params: SubscribeParams,
439
+ localFunc: (item: AnyObject) => any
440
+ ): Promise<{ unsubscribe: () => any }>;
441
+ subscribeOne(
442
+ filter: Filter,
443
+ params: SubscribeParams,
444
+ localFunc: undefined,
445
+ table_rules: TableRule,
446
+ localParams: LocalParams
447
+ ): Promise<string>;
448
+ subscribeOne(
449
+ filter: Filter,
450
+ params: SubscribeParams = {},
451
+ localFunc?: (item: AnyObject) => any,
452
+ table_rules?: TableRule,
453
+ localParams?: LocalParams
454
+ ): Promise<string | { unsubscribe: () => any }> {
455
+ //@ts-ignore
456
+ const func = localParams ? undefined : (rows: AnyObject[]) => localFunc(rows[0]);
457
+ //@ts-ignore
458
+ return this.subscribe(filter, { ...params, limit: 2 }, func, table_rules, localParams);
325
459
  }
326
460
 
327
461
  count = count.bind(this);
328
462
  size = size.bind(this);
329
463
 
330
- getAllowedSelectFields(selectParams: FieldFilter = "*", allowed_cols: FieldFilter, allow_empty = true): string[] {
464
+ getAllowedSelectFields(
465
+ selectParams: FieldFilter = "*",
466
+ allowed_cols: FieldFilter,
467
+ allow_empty = true
468
+ ): string[] {
331
469
  const all_columns = this.column_names.slice(0);
332
470
  let allowedFields = all_columns.slice(0),
333
471
  resultFields: string[] = [];
@@ -338,22 +476,26 @@ export class ViewHandler {
338
476
  if (allowed_cols) {
339
477
  allowedFields = this.parseFieldFilter(allowed_cols, allow_empty);
340
478
  }
341
- let col_names = (resultFields || []).filter(f => !allowedFields || allowedFields.includes(f));
479
+ let col_names = (resultFields || []).filter((f) => !allowedFields || allowedFields.includes(f));
342
480
 
343
481
  /* Maintain allowed cols order */
344
- if (selectParams === "*" && allowedFields && allowedFields.length){
482
+ if (selectParams === "*" && allowedFields && allowedFields.length) {
345
483
  col_names = allowedFields;
346
484
  }
347
485
 
348
486
  return col_names;
349
- }
487
+ }
350
488
 
351
489
  /**
352
490
  * Parses group or simple filter
353
491
  */
354
- prepareWhere = prepareWhere.bind(this);
492
+ prepareWhere = prepareWhere.bind(this);
355
493
 
356
- intersectColumns(allowedFields: FieldFilter, dissallowedFields: FieldFilter, removeDisallowedFields = false): string[] {
494
+ intersectColumns(
495
+ allowedFields: FieldFilter,
496
+ dissallowedFields: FieldFilter,
497
+ removeDisallowedFields = false
498
+ ): string[] {
357
499
  let result: string[] = [];
358
500
  if (allowedFields) {
359
501
  result = this.parseFieldFilter(allowedFields);
@@ -362,32 +504,33 @@ export class ViewHandler {
362
504
  const _dissalowed = this.parseFieldFilter(dissallowedFields);
363
505
 
364
506
  if (!removeDisallowedFields) {
365
-
366
- throw `dissallowed/invalid field found for ${this.name}: `
507
+ throw `dissallowed/invalid field found for ${this.name}: `;
367
508
  }
368
- result = result.filter(key => !_dissalowed.includes(key));
509
+ result = result.filter((key) => !_dissalowed.includes(key));
369
510
  }
370
511
 
371
512
  return result;
372
513
  }
373
514
 
374
- parseFieldFilter(fieldParams: FieldFilter = "*", allow_empty = true, allowed_cols?: string[]): string[] {
375
- return parseFieldFilter(fieldParams, allow_empty, allowed_cols ?? this.column_names.slice(0))
515
+ parseFieldFilter(
516
+ fieldParams: FieldFilter = "*",
517
+ allow_empty = true,
518
+ allowed_cols?: string[]
519
+ ): string[] {
520
+ return parseFieldFilter(fieldParams, allow_empty, allowed_cols ?? this.column_names.slice(0));
376
521
  }
377
-
378
522
  }
379
523
 
380
-
381
- /**
382
- * Throw error if illegal keys found in object
383
- */
524
+ /**
525
+ * Throw error if illegal keys found in object
526
+ */
384
527
  export const validateObj = <T extends Record<string, any>>(obj: T, allowedKeys: string[]): T => {
385
528
  if (obj && Object.keys(obj).length) {
386
- const invalid_keys = Object.keys(obj).filter(k => !allowedKeys.includes(k));
529
+ const invalid_keys = Object.keys(obj).filter((k) => !allowedKeys.includes(k));
387
530
  if (invalid_keys.length) {
388
531
  throw "Invalid/Illegal fields found: " + invalid_keys.join(", ");
389
532
  }
390
533
  }
391
534
 
392
535
  return obj;
393
- }
536
+ };
@@ -1,38 +1,69 @@
1
1
  import { SelectParams } from "prostgles-types";
2
2
  import { TableRule } from "../../PublishParser/publishTypesAndUtils";
3
3
  import { Filter, LocalParams } from "../DboBuilder";
4
- import { getErrorAsObject, getSerializedClientErrorFromPGError, withUserRLS } from "../dboBuilderUtils";
4
+ import {
5
+ getErrorAsObject,
6
+ getSerializedClientErrorFromPGError,
7
+ withUserRLS,
8
+ } from "../dboBuilderUtils";
5
9
  import { ViewHandler } from "./ViewHandler";
6
10
 
7
- export async function count(this: ViewHandler, _filter?: Filter, selectParams?: SelectParams, _param3_unused?: undefined, table_rules?: TableRule, localParams?: LocalParams): Promise<number> {
11
+ export async function count(
12
+ this: ViewHandler,
13
+ _filter?: Filter,
14
+ selectParams?: SelectParams,
15
+ _param3_unused?: undefined,
16
+ table_rules?: TableRule,
17
+ localParams?: LocalParams,
18
+ ): Promise<number> {
8
19
  const filter = _filter || {};
9
20
  const { limit: _limit, ...selectParamsWithoutLimit } = selectParams ?? {};
10
21
  const start = Date.now();
11
22
  try {
12
- const result = await this.find(filter, { select: selectParamsWithoutLimit?.select ?? "", limit: 0 }, undefined, table_rules, localParams)
13
- .then(async _allowed => {
14
- const findQuery = await this.find(
15
- filter,
16
- selectParamsWithoutLimit,
17
- undefined,
18
- table_rules,
19
- { ...localParams, returnQuery: "noRLS", bypassLimit: true }
20
- ) as unknown as string;
21
- const query = [
22
- withUserRLS(localParams, ""),
23
- "SELECT COUNT(*)",
24
- "FROM (",
25
- findQuery,
26
- ") t"
27
- ].join("\n");
28
- const handler = this.tx?.t ?? this.db;
29
- return handler.one(query).then(({ count }) => +count);
30
- });
23
+ const result = await this.find(
24
+ filter,
25
+ { select: selectParamsWithoutLimit?.select ?? "", limit: 0 },
26
+ undefined,
27
+ table_rules,
28
+ localParams,
29
+ ).then(async (_allowed) => {
30
+ const findQuery = (await this.find(
31
+ filter,
32
+ selectParamsWithoutLimit,
33
+ undefined,
34
+ table_rules,
35
+ { ...localParams, returnQuery: "noRLS", bypassLimit: true },
36
+ )) as unknown as string;
37
+ const query = [
38
+ withUserRLS(localParams, ""),
39
+ "SELECT COUNT(*)",
40
+ "FROM (",
41
+ findQuery,
42
+ ") t",
43
+ ].join("\n");
44
+ const handler = this.tx?.t ?? this.db;
45
+ return handler.one(query).then(({ count }) => +count);
46
+ });
31
47
 
32
- await this._log({ command: "count", localParams, data: { filter }, duration: Date.now() - start });
48
+ await this._log({
49
+ command: "count",
50
+ localParams,
51
+ data: { filter },
52
+ duration: Date.now() - start,
53
+ });
33
54
  return result;
34
55
  } catch (e) {
35
- await this._log({ command: "count", localParams, data: { filter }, duration: Date.now() - start, error: getErrorAsObject(e) });
36
- throw getSerializedClientErrorFromPGError(e, { type: "tableMethod", localParams, view: this });
56
+ await this._log({
57
+ command: "count",
58
+ localParams,
59
+ data: { filter },
60
+ duration: Date.now() - start,
61
+ error: getErrorAsObject(e),
62
+ });
63
+ throw getSerializedClientErrorFromPGError(e, {
64
+ type: "tableMethod",
65
+ localParams,
66
+ view: this,
67
+ });
37
68
  }
38
- }
69
+ }