prostgles-server 4.2.187 → 4.2.188

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 (338) hide show
  1. package/.eslintignore +2 -1
  2. package/.eslintrc.json +2 -0
  3. package/dist/Auth/AuthHandler.d.ts +18 -11
  4. package/dist/Auth/AuthHandler.d.ts.map +1 -1
  5. package/dist/Auth/AuthHandler.js +94 -120
  6. package/dist/Auth/AuthHandler.js.map +1 -1
  7. package/dist/Auth/AuthTypes.d.ts +78 -71
  8. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  9. package/dist/Auth/{setEmailProvider.d.ts → authProviders/setEmailProvider.d.ts} +1 -1
  10. package/dist/Auth/authProviders/setEmailProvider.d.ts.map +1 -0
  11. package/dist/Auth/authProviders/setEmailProvider.js +27 -0
  12. package/dist/Auth/authProviders/setEmailProvider.js.map +1 -0
  13. package/dist/Auth/authProviders/setOAuthProviders.d.ts +5 -0
  14. package/dist/Auth/authProviders/setOAuthProviders.d.ts.map +1 -0
  15. package/dist/Auth/authProviders/setOAuthProviders.js +78 -0
  16. package/dist/Auth/authProviders/setOAuthProviders.js.map +1 -0
  17. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts +7 -0
  18. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts.map +1 -0
  19. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js +29 -0
  20. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js.map +1 -0
  21. package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts +7 -0
  22. package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts.map +1 -0
  23. package/dist/Auth/endpoints/getRegisterRequestHandler.js +74 -0
  24. package/dist/Auth/endpoints/getRegisterRequestHandler.js.map +1 -0
  25. package/dist/Auth/setAuthProviders.d.ts.map +1 -1
  26. package/dist/Auth/setAuthProviders.js +4 -74
  27. package/dist/Auth/setAuthProviders.js.map +1 -1
  28. package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
  29. package/dist/Auth/setupAuthRoutes.js +23 -33
  30. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  31. package/dist/Auth/utils/checkDmarc.d.ts +2 -0
  32. package/dist/Auth/utils/checkDmarc.d.ts.map +1 -0
  33. package/dist/Auth/utils/checkDmarc.js +22 -0
  34. package/dist/Auth/utils/checkDmarc.js.map +1 -0
  35. package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +3 -0
  36. package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -0
  37. package/dist/Auth/utils/getClientRequestIPsInfo.js +29 -0
  38. package/dist/Auth/utils/getClientRequestIPsInfo.js.map +1 -0
  39. package/dist/Auth/utils/getReturnUrl.d.ts +3 -0
  40. package/dist/Auth/utils/getReturnUrl.d.ts.map +1 -0
  41. package/dist/Auth/utils/getReturnUrl.js +15 -0
  42. package/dist/Auth/utils/getReturnUrl.js.map +1 -0
  43. package/dist/Auth/utils/getSafeReturnURL.d.ts.map +1 -0
  44. package/dist/Auth/utils/getSafeReturnURL.js.map +1 -0
  45. package/dist/DBEventsManager.d.ts.map +1 -1
  46. package/dist/DBEventsManager.js +4 -5
  47. package/dist/DBEventsManager.js.map +1 -1
  48. package/dist/DBSchemaBuilder.js +1 -1
  49. package/dist/DBSchemaBuilder.js.map +1 -1
  50. package/dist/DboBuilder/DboBuilder.d.ts +0 -1
  51. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  52. package/dist/DboBuilder/DboBuilder.js +3 -12
  53. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  54. package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
  55. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  56. package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
  57. package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  58. package/dist/DboBuilder/QueryBuilder/Functions.js +38 -76
  59. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  60. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  61. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +4 -12
  62. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  63. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  64. package/dist/DboBuilder/QueryBuilder/getNewQuery.js +23 -33
  65. package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
  66. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
  67. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
  68. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +6 -6
  69. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
  70. package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
  71. package/dist/DboBuilder/QueryStreamer.js +13 -19
  72. package/dist/DboBuilder/QueryStreamer.js.map +1 -1
  73. package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
  74. package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
  75. package/dist/DboBuilder/TableHandler/DataValidator.js +7 -16
  76. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  77. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  78. package/dist/DboBuilder/TableHandler/TableHandler.js +7 -5
  79. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  80. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  81. package/dist/DboBuilder/TableHandler/delete.js +5 -8
  82. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  83. package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
  84. package/dist/DboBuilder/TableHandler/insert.js +10 -15
  85. package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
  86. package/dist/DboBuilder/TableHandler/insertTest.js +1 -1
  87. package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
  88. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  89. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +1 -1
  90. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  91. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  92. package/dist/DboBuilder/TableHandler/update.js +5 -9
  93. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  94. package/dist/DboBuilder/TableHandler/updateFile.d.ts +1 -1
  95. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  96. package/dist/DboBuilder/TableHandler/updateFile.js +7 -9
  97. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  98. package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
  99. package/dist/DboBuilder/TableHandler/upsert.js +1 -1
  100. package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
  101. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  102. package/dist/DboBuilder/ViewHandler/ViewHandler.js +11 -13
  103. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  104. package/dist/DboBuilder/ViewHandler/count.js +1 -1
  105. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  106. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  107. package/dist/DboBuilder/ViewHandler/find.js +20 -27
  108. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  109. package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
  110. package/dist/DboBuilder/ViewHandler/getExistsCondition.js +4 -10
  111. package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
  112. package/dist/DboBuilder/ViewHandler/getInfo.js +2 -2
  113. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  114. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
  115. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +6 -22
  116. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
  117. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
  118. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +6 -10
  119. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
  120. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
  121. package/dist/DboBuilder/ViewHandler/parseJoinPath.js +8 -11
  122. package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
  123. package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
  124. package/dist/DboBuilder/ViewHandler/prepareSortItems.js +7 -12
  125. package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
  126. package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
  127. package/dist/DboBuilder/ViewHandler/prepareWhere.js +6 -10
  128. package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
  129. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  130. package/dist/DboBuilder/dboBuilderUtils.js +8 -23
  131. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  132. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  133. package/dist/DboBuilder/getColumns.js +19 -26
  134. package/dist/DboBuilder/getColumns.js.map +1 -1
  135. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  136. package/dist/DboBuilder/getCondition.js +7 -9
  137. package/dist/DboBuilder/getCondition.js.map +1 -1
  138. package/dist/DboBuilder/getSubscribeRelatedTables.js +2 -2
  139. package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
  140. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
  141. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +14 -15
  142. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
  143. package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
  144. package/dist/DboBuilder/insertNestedRecords.js +26 -40
  145. package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
  146. package/dist/DboBuilder/parseUpdateRules.js +1 -1
  147. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  148. package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
  149. package/dist/DboBuilder/prepareShortestJoinPaths.js +12 -18
  150. package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
  151. package/dist/DboBuilder/runSQL.d.ts +1 -1
  152. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  153. package/dist/DboBuilder/runSQL.js +14 -27
  154. package/dist/DboBuilder/runSQL.js.map +1 -1
  155. package/dist/DboBuilder/uploadFile.d.ts +1 -1
  156. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  157. package/dist/DboBuilder/uploadFile.js +4 -11
  158. package/dist/DboBuilder/uploadFile.js.map +1 -1
  159. package/dist/FileManager/FileManager.d.ts.map +1 -1
  160. package/dist/FileManager/FileManager.js +11 -13
  161. package/dist/FileManager/FileManager.js.map +1 -1
  162. package/dist/FileManager/initFileManager.d.ts.map +1 -1
  163. package/dist/FileManager/initFileManager.js +60 -62
  164. package/dist/FileManager/initFileManager.js.map +1 -1
  165. package/dist/FileManager/uploadStream.js +2 -2
  166. package/dist/FileManager/uploadStream.js.map +1 -1
  167. package/dist/Filtering.d.ts +1 -1
  168. package/dist/Filtering.d.ts.map +1 -1
  169. package/dist/Filtering.js +12 -35
  170. package/dist/Filtering.js.map +1 -1
  171. package/dist/JSONBValidation/validation.d.ts.map +1 -1
  172. package/dist/JSONBValidation/validation.js +20 -26
  173. package/dist/JSONBValidation/validation.js.map +1 -1
  174. package/dist/Logging.d.ts +1 -0
  175. package/dist/Logging.d.ts.map +1 -1
  176. package/dist/PostgresNotifListenManager.d.ts.map +1 -1
  177. package/dist/PostgresNotifListenManager.js +1 -5
  178. package/dist/PostgresNotifListenManager.js.map +1 -1
  179. package/dist/Prostgles.d.ts +1 -1
  180. package/dist/Prostgles.d.ts.map +1 -1
  181. package/dist/Prostgles.js +18 -33
  182. package/dist/Prostgles.js.map +1 -1
  183. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  184. package/dist/PubSubManager/PubSubManager.js +8 -13
  185. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  186. package/dist/PubSubManager/addSub.d.ts.map +1 -1
  187. package/dist/PubSubManager/addSub.js +1 -1
  188. package/dist/PubSubManager/addSub.js.map +1 -1
  189. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  190. package/dist/PubSubManager/addSync.js +4 -7
  191. package/dist/PubSubManager/addSync.js.map +1 -1
  192. package/dist/PubSubManager/getCreatePubSubManagerError.js +6 -6
  193. package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
  194. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  195. package/dist/PubSubManager/initPubSubManager.js +2 -3
  196. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  197. package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
  198. package/dist/PubSubManager/pushSubData.js +0 -2
  199. package/dist/PubSubManager/pushSubData.js.map +1 -1
  200. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  201. package/dist/PublishParser/PublishParser.js +8 -13
  202. package/dist/PublishParser/PublishParser.js.map +1 -1
  203. package/dist/PublishParser/getFileTableRules.js +1 -1
  204. package/dist/PublishParser/getFileTableRules.js.map +1 -1
  205. package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
  206. package/dist/PublishParser/getSchemaFromPublish.js +6 -13
  207. package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
  208. package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
  209. package/dist/PublishParser/getTableRulesWithoutFileTable.js +14 -19
  210. package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
  211. package/dist/RestApi.d.ts +1 -1
  212. package/dist/RestApi.d.ts.map +1 -1
  213. package/dist/RestApi.js +2 -2
  214. package/dist/RestApi.js.map +1 -1
  215. package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
  216. package/dist/SchemaWatch/SchemaWatch.js +2 -2
  217. package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
  218. package/dist/SyncReplication.d.ts.map +1 -1
  219. package/dist/SyncReplication.js +31 -41
  220. package/dist/SyncReplication.js.map +1 -1
  221. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  222. package/dist/TableConfig/TableConfig.js +7 -9
  223. package/dist/TableConfig/TableConfig.js.map +1 -1
  224. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
  225. package/dist/TableConfig/getConstraintDefinitionQueries.js +1 -6
  226. package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
  227. package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
  228. package/dist/TableConfig/getFutureTableSchema.js +16 -28
  229. package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
  230. package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
  231. package/dist/TableConfig/getTableColumnQueries.js +5 -9
  232. package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
  233. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  234. package/dist/TableConfig/initTableConfig.js +22 -25
  235. package/dist/TableConfig/initTableConfig.js.map +1 -1
  236. package/dist/initProstgles.js +1 -1
  237. package/dist/initProstgles.js.map +1 -1
  238. package/dist/onSocketConnected.d.ts.map +1 -1
  239. package/dist/onSocketConnected.js +2 -4
  240. package/dist/onSocketConnected.js.map +1 -1
  241. package/dist/runClientRequest.d.ts.map +1 -1
  242. package/dist/runClientRequest.js +14 -13
  243. package/dist/runClientRequest.js.map +1 -1
  244. package/lib/Auth/AuthHandler.ts +117 -137
  245. package/lib/Auth/AuthTypes.ts +97 -81
  246. package/lib/Auth/authProviders/setEmailProvider.ts +29 -0
  247. package/lib/Auth/authProviders/setOAuthProviders.ts +97 -0
  248. package/lib/Auth/endpoints/getConfirmEmailRequestHandler.ts +39 -0
  249. package/lib/Auth/endpoints/getRegisterRequestHandler.ts +83 -0
  250. package/lib/Auth/setAuthProviders.ts +8 -111
  251. package/lib/Auth/setupAuthRoutes.ts +105 -148
  252. package/lib/Auth/utils/checkDmarc.ts +19 -0
  253. package/lib/Auth/utils/getClientRequestIPsInfo.ts +25 -0
  254. package/lib/Auth/utils/getReturnUrl.ts +13 -0
  255. package/lib/DBEventsManager.ts +12 -26
  256. package/lib/DBSchemaBuilder.ts +1 -1
  257. package/lib/DboBuilder/DboBuilder.ts +23 -52
  258. package/lib/DboBuilder/DboBuilderTypes.ts +9 -23
  259. package/lib/DboBuilder/QueryBuilder/Functions.ts +86 -188
  260. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +11 -36
  261. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +102 -129
  262. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +14 -27
  263. package/lib/DboBuilder/QueryStreamer.ts +26 -57
  264. package/lib/DboBuilder/TableHandler/DataValidator.ts +58 -90
  265. package/lib/DboBuilder/TableHandler/TableHandler.ts +19 -45
  266. package/lib/DboBuilder/TableHandler/delete.ts +9 -18
  267. package/lib/DboBuilder/TableHandler/insert.ts +18 -31
  268. package/lib/DboBuilder/TableHandler/insertTest.ts +1 -1
  269. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +8 -19
  270. package/lib/DboBuilder/TableHandler/update.ts +17 -46
  271. package/lib/DboBuilder/TableHandler/updateFile.ts +18 -21
  272. package/lib/DboBuilder/TableHandler/upsert.ts +7 -24
  273. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +13 -15
  274. package/lib/DboBuilder/ViewHandler/count.ts +1 -1
  275. package/lib/DboBuilder/ViewHandler/find.ts +28 -35
  276. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +8 -30
  277. package/lib/DboBuilder/ViewHandler/getInfo.ts +2 -2
  278. package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +16 -32
  279. package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +9 -16
  280. package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +26 -44
  281. package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +58 -82
  282. package/lib/DboBuilder/ViewHandler/prepareWhere.ts +14 -27
  283. package/lib/DboBuilder/dboBuilderUtils.ts +19 -46
  284. package/lib/DboBuilder/getColumns.ts +24 -46
  285. package/lib/DboBuilder/getCondition.ts +18 -30
  286. package/lib/DboBuilder/getSubscribeRelatedTables.ts +2 -2
  287. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +44 -62
  288. package/lib/DboBuilder/insertNestedRecords.ts +67 -135
  289. package/lib/DboBuilder/parseUpdateRules.ts +1 -1
  290. package/lib/DboBuilder/prepareShortestJoinPaths.ts +23 -58
  291. package/lib/DboBuilder/runSQL.ts +41 -76
  292. package/lib/DboBuilder/uploadFile.ts +26 -37
  293. package/lib/FileManager/FileManager.ts +27 -58
  294. package/lib/FileManager/initFileManager.ts +68 -76
  295. package/lib/FileManager/uploadStream.ts +2 -2
  296. package/lib/Filtering.ts +30 -87
  297. package/lib/JSONBValidation/validation.ts +36 -75
  298. package/lib/Logging.ts +1 -1
  299. package/lib/PostgresNotifListenManager.ts +11 -35
  300. package/lib/Prostgles.ts +42 -100
  301. package/lib/PubSubManager/PubSubManager.ts +30 -66
  302. package/lib/PubSubManager/addSub.ts +11 -18
  303. package/lib/PubSubManager/addSync.ts +5 -12
  304. package/lib/PubSubManager/getCreatePubSubManagerError.ts +9 -9
  305. package/lib/PubSubManager/initPubSubManager.ts +7 -13
  306. package/lib/PubSubManager/pushSubData.ts +1 -7
  307. package/lib/PublishParser/PublishParser.ts +8 -12
  308. package/lib/PublishParser/getFileTableRules.ts +1 -1
  309. package/lib/PublishParser/getSchemaFromPublish.ts +26 -42
  310. package/lib/PublishParser/getTableRulesWithoutFileTable.ts +22 -37
  311. package/lib/RestApi.ts +4 -12
  312. package/lib/SchemaWatch/SchemaWatch.ts +11 -24
  313. package/lib/SyncReplication.ts +96 -190
  314. package/lib/TableConfig/TableConfig.ts +16 -38
  315. package/lib/TableConfig/getConstraintDefinitionQueries.ts +2 -8
  316. package/lib/TableConfig/getFutureTableSchema.ts +20 -34
  317. package/lib/TableConfig/getTableColumnQueries.ts +13 -35
  318. package/lib/TableConfig/initTableConfig.ts +40 -64
  319. package/lib/initProstgles.ts +1 -1
  320. package/lib/onSocketConnected.ts +8 -12
  321. package/lib/runClientRequest.ts +31 -54
  322. package/package.json +2 -2
  323. package/dist/Auth/getSafeReturnURL.d.ts.map +0 -1
  324. package/dist/Auth/getSafeReturnURL.js.map +0 -1
  325. package/dist/Auth/setEmailProvider.d.ts.map +0 -1
  326. package/dist/Auth/setEmailProvider.js +0 -133
  327. package/dist/Auth/setEmailProvider.js.map +0 -1
  328. package/dist/DboBuilder/runTransaction.d.ts +0 -9
  329. package/dist/DboBuilder/runTransaction.d.ts.map +0 -1
  330. package/dist/DboBuilder/runTransaction.js +0 -49
  331. package/dist/DboBuilder/runTransaction.js.map +0 -1
  332. package/lib/Auth/setEmailProvider.ts +0 -132
  333. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +0 -27
  334. package/lib/DboBuilder/runTransaction.ts +0 -61
  335. package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +0 -3
  336. /package/dist/Auth/{getSafeReturnURL.d.ts → utils/getSafeReturnURL.d.ts} +0 -0
  337. /package/dist/Auth/{getSafeReturnURL.js → utils/getSafeReturnURL.js} +0 -0
  338. /package/lib/Auth/{getSafeReturnURL.ts → utils/getSafeReturnURL.ts} +0 -0
@@ -13,10 +13,7 @@ import { VoidFunction } from "../SchemaWatch/SchemaWatch";
13
13
  import { DB } from "../initProstgles";
14
14
  import { DboBuilder } from "./DboBuilder";
15
15
  import { PRGLIOSocket } from "./DboBuilderTypes";
16
- import {
17
- getErrorAsObject,
18
- getSerializedClientErrorFromPGError,
19
- } from "./dboBuilderUtils";
16
+ import { getErrorAsObject, getSerializedClientErrorFromPGError } from "./dboBuilderUtils";
20
17
  import { getDetailedFieldInfo } from "./runSQL";
21
18
  const Cursor: typeof CursorType = require("pg-cursor");
22
19
 
@@ -62,27 +59,19 @@ export class QueryStreamer {
62
59
  };
63
60
  this.adminClient = this.getConnection(
64
61
  (error) => {
65
- if (
66
- error.message?.includes("database") &&
67
- error.message?.includes("does not exist")
68
- )
62
+ if (error.message?.includes("database") && error.message?.includes("does not exist"))
69
63
  return;
70
64
  console.log("Admin client error. Reconnecting...", error);
71
65
  setAdminClient();
72
66
  },
73
- { keepAlive: true },
67
+ { keepAlive: true }
74
68
  );
75
69
  this.adminClient.connect();
76
70
  }
77
71
 
78
- getConnection = (
79
- onError: ((err: any) => void) | undefined,
80
- extraOptions?: pg.ClientConfig,
81
- ) => {
72
+ getConnection = (onError: ((err: any) => void) | undefined, extraOptions?: pg.ClientConfig) => {
82
73
  const connectionInfo =
83
- typeof this.db.$cn === "string"
84
- ? { connectionString: this.db.$cn }
85
- : (this.db.$cn as any);
74
+ typeof this.db.$cn === "string" ? { connectionString: this.db.$cn } : (this.db.$cn as any);
86
75
  const client = new pg.Client({ ...connectionInfo, ...extraOptions });
87
76
  client.on("error", (err) => {
88
77
  onError?.(err);
@@ -100,9 +89,7 @@ export class QueryStreamer {
100
89
  delete this.socketQueries[socketId];
101
90
  };
102
91
 
103
- create = async (
104
- query: ClientStreamedRequest,
105
- ): Promise<SocketSQLStreamServer> => {
92
+ create = async (query: ClientStreamedRequest): Promise<SocketSQLStreamServer> => {
106
93
  const { socket, persistConnection } = query;
107
94
  const socketId = socket.id;
108
95
  const id = getSetShortSocketId(socketId);
@@ -123,10 +110,10 @@ export class QueryStreamer {
123
110
  if (errored) return;
124
111
  errored = true;
125
112
 
126
- const errorWithoutQuery = getSerializedClientErrorFromPGError(
127
- rawError,
128
- { type: "sql", localParams: { socket } },
129
- );
113
+ const errorWithoutQuery = getSerializedClientErrorFromPGError(rawError, {
114
+ type: "sql",
115
+ localParams: { socket },
116
+ });
130
117
  // For some reason query is not present on the error object from sql stream mode
131
118
  const error = { ...errorWithoutQuery, query: query.query };
132
119
  socket.emit(channel, {
@@ -135,14 +122,12 @@ export class QueryStreamer {
135
122
  } satisfies SocketSQLStreamPacket);
136
123
  },
137
124
  };
125
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
138
126
  this.socketQueries[socketId]![id] ??= socketQuery;
139
127
  let processID = -1;
140
128
  let streamState: "started" | "ended" | "errored" | undefined;
141
129
 
142
- const startStream = async (
143
- client: pg.Client | undefined,
144
- query: ClientStreamedRequest,
145
- ) => {
130
+ const startStream = async (client: pg.Client | undefined, query: ClientStreamedRequest) => {
146
131
  const socketQuery = this.socketQueries[socketId]?.[id];
147
132
  if (!socketQuery) {
148
133
  throw "socket query not found";
@@ -157,10 +142,8 @@ export class QueryStreamer {
157
142
  }:
158
143
  | { reachedEnd: true; rows: any[]; info: Info }
159
144
  | { reachedEnd: false; rows: any[]; info: Omit<Info, "command"> }) => {
160
- if (!info?.fields) throw "No fields";
161
- const fields = getDetailedFieldInfo.bind(this.dboBuilder)(
162
- info.fields as any,
163
- );
145
+ if (!(info as any).fields) throw "No fields";
146
+ const fields = getDetailedFieldInfo.bind(this.dboBuilder)(info.fields as any);
164
147
  const packet: SocketSQLStreamPacket = {
165
148
  type: "data",
166
149
  rows,
@@ -193,16 +176,14 @@ export class QueryStreamer {
193
176
 
194
177
  if (
195
178
  query.options?.streamLimit &&
196
- (!Number.isInteger(query.options.streamLimit) ||
197
- query.options.streamLimit < 0)
179
+ (!Number.isInteger(query.options.streamLimit) || query.options.streamLimit < 0)
198
180
  ) {
199
181
  throw "streamLimit must be a positive integer";
200
182
  }
201
- const batchSize = query.options?.streamLimit
202
- ? Math.min(1e3, query.options?.streamLimit)
203
- : 1e3;
183
+ const batchSize =
184
+ query.options?.streamLimit ? Math.min(1e3, query.options.streamLimit) : 1e3;
204
185
  const cursor = currentClient.query(
205
- new Cursor(query.query, undefined, { rowMode: "array" }),
186
+ new Cursor(query.query, undefined, { rowMode: "array" })
206
187
  );
207
188
  this.socketQueries[socketId]![id]!.cursor = cursor;
208
189
  let streamLimitReached = false;
@@ -221,8 +202,7 @@ export class QueryStreamer {
221
202
  ]) as Info;
222
203
  rowsSent += rowChunk.length;
223
204
  streamLimitReached = Boolean(
224
- query.options?.streamLimit &&
225
- rowsSent >= query.options.streamLimit,
205
+ query.options?.streamLimit && rowsSent >= query.options.streamLimit
226
206
  );
227
207
  reachedEnd = rowChunk.length < batchSize;
228
208
  emit({
@@ -241,14 +221,11 @@ export class QueryStreamer {
241
221
  cursor.close();
242
222
  } catch (error: any) {
243
223
  streamState = "errored";
244
- if (
245
- error.message ===
246
- "cannot insert multiple commands into a prepared statement"
247
- ) {
224
+ if (error.message === "cannot insert multiple commands into a prepared statement") {
248
225
  this.dboBuilder.dbo.sql!(
249
226
  query.query,
250
227
  {},
251
- { returnType: "arrayMode", hasParams: false },
228
+ { returnType: "arrayMode", hasParams: false }
252
229
  )
253
230
  .then((res) => {
254
231
  emit({
@@ -276,10 +253,7 @@ export class QueryStreamer {
276
253
  socket.removeAllListeners(channel);
277
254
  delete this.socketQueries[socketId]?.[id];
278
255
  };
279
- const stop = async (
280
- opts: { terminate?: boolean } | undefined,
281
- cb: BasicCallback,
282
- ) => {
256
+ const stop = async (opts: { terminate?: boolean } | undefined, cb: BasicCallback) => {
283
257
  const { client: queryClient } = this.socketQueries[socketId]?.[id] ?? {};
284
258
  if (!queryClient) return;
285
259
  if (opts?.terminate) {
@@ -288,12 +262,10 @@ export class QueryStreamer {
288
262
  }, 4e3);
289
263
  }
290
264
  try {
291
- const stopFunction = opts?.terminate
292
- ? "pg_terminate_backend"
293
- : "pg_cancel_backend";
265
+ const stopFunction = opts?.terminate ? "pg_terminate_backend" : "pg_cancel_backend";
294
266
  const rows = await this.adminClient.query(
295
267
  `SELECT ${stopFunction}(pid), pid, state, query FROM pg_stat_activity WHERE pid = $1`,
296
- [processID],
268
+ [processID]
297
269
  );
298
270
  cleanup();
299
271
  cb({ processID, info: rows.rows[0] });
@@ -313,10 +285,7 @@ export class QueryStreamer {
313
285
  socket.removeAllListeners(channel);
314
286
  socket.on(
315
287
  channel,
316
- async (
317
- _data: { query: string; params: any } | undefined,
318
- cb: BasicCallback,
319
- ) => {
288
+ async (_data: { query: string; params: any } | undefined, cb: BasicCallback) => {
320
289
  if (streamState === "started") {
321
290
  return cb(processID, "Already started");
322
291
  }
@@ -340,7 +309,7 @@ export class QueryStreamer {
340
309
  cb(processID, getErrorAsObject(err) ?? "Something went wrong");
341
310
  }
342
311
  runCount++;
343
- },
312
+ }
344
313
  );
345
314
 
346
315
  /** If not started within 5 seconds then assume it will never happen */
@@ -2,21 +2,19 @@ import {
2
2
  AnyObject,
3
3
  ColumnInfo,
4
4
  FieldFilter,
5
- ValidatedColumnInfo,
6
5
  asName,
7
6
  getKeys,
8
7
  isEmpty,
9
8
  isObject,
10
9
  pickKeys,
11
- unpatchText,
12
10
  } from "prostgles-types/dist";
13
- import { ValidateRowBasic } from "../../PublishParser/PublishParser";
14
11
  import { DBHandlerServer } from "../../Prostgles";
12
+ import { ValidateRowBasic } from "../../PublishParser/PublishParser";
15
13
  import { asValue } from "../../PubSubManager/PubSubManager";
16
14
  import { LocalParams, TableSchemaColumn, pgp } from "../DboBuilder";
17
- import { TableHandler, ValidatedParams } from "./TableHandler";
18
15
  import { parseFunctionObject } from "../QueryBuilder/QueryBuilder";
19
16
  import { validateObj } from "../ViewHandler/ViewHandler";
17
+ import { TableHandler, ValidatedParams } from "./TableHandler";
20
18
 
21
19
  type RowFieldDataPlain = {
22
20
  type: "plain";
@@ -58,10 +56,7 @@ export class DataValidator {
58
56
 
59
57
  parse = async (args: ParseDataArgs) => {
60
58
  const { command } = args;
61
- const rowFieldData = await getValidatedRowFieldData(
62
- args,
63
- this.tableHandler,
64
- );
59
+ const rowFieldData = await getValidatedRowFieldData(args, this.tableHandler);
65
60
  const parsedRowFieldData = await getParsedRowFieldData(rowFieldData, args);
66
61
  if (command === "update") {
67
62
  if (rowFieldData.some((rowParts) => rowParts.length === 0)) {
@@ -71,8 +66,7 @@ export class DataValidator {
71
66
 
72
67
  return {
73
68
  parsedRowFieldData,
74
- getQuery: () =>
75
- getQuery(command, parsedRowFieldData, this.tableHandler.escapedName),
69
+ getQuery: () => getQuery(command, parsedRowFieldData, this.tableHandler.escapedName),
76
70
  };
77
71
  };
78
72
  }
@@ -80,23 +74,20 @@ export class DataValidator {
80
74
  const getQuery = (
81
75
  type: "insert" | "update",
82
76
  parsedRowFieldData: ParsedRowFieldData[][],
83
- escapedTableName: string,
77
+ escapedTableName: string
84
78
  ): string => {
85
79
  if (type === "insert") {
86
80
  const uniqueColumns = Array.from(
87
- new Set(
88
- parsedRowFieldData.flatMap((row) => row.map((r) => r.escapedCol)),
89
- ),
81
+ new Set(parsedRowFieldData.flatMap((row) => row.map((r) => r.escapedCol)))
90
82
  );
91
83
  const values = parsedRowFieldData
92
84
  .map(
93
85
  (row) =>
94
- `(${uniqueColumns.map((colName) => row.find((r) => r.escapedCol === colName)?.escapedVal ?? "DEFAULT")})`,
86
+ `(${uniqueColumns.map((colName) => row.find((r) => r.escapedCol === colName)?.escapedVal ?? "DEFAULT")})`
95
87
  )
96
88
  .join(",\n");
97
- const whatToInsert = !uniqueColumns.length
98
- ? "DEFAULT VALUES"
99
- : `(${uniqueColumns}) VALUES ${values}`;
89
+ const whatToInsert =
90
+ !uniqueColumns.length ? "DEFAULT VALUES" : `(${uniqueColumns}) VALUES ${values}`;
100
91
  return `INSERT INTO ${escapedTableName} ${whatToInsert} `;
101
92
  } else {
102
93
  const query =
@@ -104,9 +95,7 @@ const getQuery = (
104
95
  .map((rowParts) => {
105
96
  return (
106
97
  `UPDATE ${escapedTableName} SET ` +
107
- rowParts
108
- .map((r) => `${r.escapedCol} = ${r.escapedVal} `)
109
- .join(",\n")
98
+ rowParts.map((r) => `${r.escapedCol} = ${r.escapedVal} `).join(",\n")
110
99
  );
111
100
  })
112
101
  .join(";\n") + " ";
@@ -142,10 +131,7 @@ const getValidatedRow = ({
142
131
  if (!column_names.length) {
143
132
  throw "table column_names mising";
144
133
  }
145
- const validatedAllowedColumns = tableHandler.parseFieldFilter(
146
- allowedCols,
147
- false,
148
- );
134
+ const validatedAllowedColumns = tableHandler.parseFieldFilter(allowedCols, false);
149
135
 
150
136
  let finalRow = { ...row };
151
137
  if (removeDisallowedFields && !isEmpty(finalRow)) {
@@ -179,7 +165,7 @@ export const prepareNewData = async ({
179
165
  tableConfigurator,
180
166
  tableHandler,
181
167
  }: ValidatedParams) => {
182
- const synced_field = (tableRules ?? {})?.sync?.synced_field;
168
+ const synced_field = (tableRules ?? {}).sync?.synced_field;
183
169
 
184
170
  /* Update synced_field if sync is on and missing */
185
171
  if (synced_field && !row[synced_field]) {
@@ -201,16 +187,8 @@ export const prepareNewData = async ({
201
187
  col,
202
188
  value: data[col],
203
189
  });
204
- const colConfig = tableConfigurator?.getColumnConfig(
205
- tableHandler.name,
206
- col,
207
- );
208
- if (
209
- colConfig &&
210
- isObject(colConfig) &&
211
- "isText" in colConfig &&
212
- data[col]
213
- ) {
190
+ const colConfig = tableConfigurator?.getColumnConfig(tableHandler.name, col);
191
+ if (colConfig && isObject(colConfig) && "isText" in colConfig && data[col]) {
214
192
  if (colConfig.lowerCased) {
215
193
  data[col] = data[col].toString().toLowerCase();
216
194
  }
@@ -235,7 +213,7 @@ export const prepareNewData = async ({
235
213
  */
236
214
  const getValidatedRowFieldData = async (
237
215
  { allowedCols, rows, validationOptions, dbTx, command }: ParseDataArgs,
238
- tableHandler: TableHandler,
216
+ tableHandler: TableHandler
239
217
  ) => {
240
218
  if (!allowedCols.length && command === "update") {
241
219
  throw "allowedColumns cannot be empty";
@@ -255,7 +233,7 @@ const getValidatedRowFieldData = async (
255
233
  });
256
234
  }
257
235
  const keysAddedDuringValidate = Object.keys(row).filter(
258
- (newKey) => !initialRowKeys.includes(newKey),
236
+ (newKey) => !initialRowKeys.includes(newKey)
259
237
  );
260
238
 
261
239
  const getColumn = (fieldName: string) => {
@@ -269,44 +247,42 @@ const getValidatedRowFieldData = async (
269
247
  return column;
270
248
  };
271
249
 
272
- const rowPartValues = Object.entries(row).map(
273
- ([fieldName, fieldValue]) => {
274
- const column = getColumn(fieldName);
275
- if (isObject(fieldValue)) {
276
- // const textPatch = getTextPatch(column, fieldValue);
277
- // if(textPatch){
278
- // return {
279
- // type: "plain",
280
- // column,
281
- // fieldValue: textPatch,
282
- // } satisfies RowFieldData;
283
- // }
284
-
285
- const [firstKey, ...otherkeys] = Object.keys(fieldValue);
286
- const func =
287
- firstKey && !otherkeys.length
288
- ? convertionFuncs.some((f) => `$${f.name}` === firstKey)
289
- : undefined;
290
- if (func) {
291
- const { funcName, args } = parseFunctionObject(fieldValue);
292
- return {
293
- type: "function",
294
- column,
295
- funcName,
296
- args,
297
- } satisfies RowFieldData;
298
- }
250
+ const rowPartValues = Object.entries(row).map(([fieldName, fieldValue]) => {
251
+ const column = getColumn(fieldName);
252
+ if (isObject(fieldValue)) {
253
+ // const textPatch = getTextPatch(column, fieldValue);
254
+ // if(textPatch){
255
+ // return {
256
+ // type: "plain",
257
+ // column,
258
+ // fieldValue: textPatch,
259
+ // } satisfies RowFieldData;
260
+ // }
261
+
262
+ const [firstKey, ...otherkeys] = Object.keys(fieldValue);
263
+ const func =
264
+ firstKey && !otherkeys.length ?
265
+ convertionFuncs.some((f) => `$${f.name}` === firstKey)
266
+ : undefined;
267
+ if (func) {
268
+ const { funcName, args } = parseFunctionObject(fieldValue);
269
+ return {
270
+ type: "function",
271
+ column,
272
+ funcName,
273
+ args,
274
+ } satisfies RowFieldData;
299
275
  }
300
- return {
301
- type: "plain",
302
- column: getColumn(fieldName),
303
- fieldValue,
304
- } satisfies RowFieldData;
305
- },
306
- );
276
+ }
277
+ return {
278
+ type: "plain",
279
+ column: getColumn(fieldName),
280
+ fieldValue,
281
+ } satisfies RowFieldData;
282
+ });
307
283
 
308
284
  return rowPartValues;
309
- }),
285
+ })
310
286
  );
311
287
 
312
288
  return rowFieldData;
@@ -320,7 +296,7 @@ const getTextPatch = async (c: TableSchemaColumn, fieldValue: any) => {
320
296
  !["from", "to"].find((key) => typeof fieldValue[key] !== "number")
321
297
  ) {
322
298
  const unrecProps = Object.keys(fieldValue).filter(
323
- (k) => !["from", "to", "text", "md5"].includes(k),
299
+ (k) => !["from", "to", "text", "md5"].includes(k)
324
300
  );
325
301
  if (unrecProps.length) {
326
302
  throw "Unrecognised params in textPatch field: " + unrecProps.join(", ");
@@ -352,7 +328,7 @@ const getTextPatch = async (c: TableSchemaColumn, fieldValue: any) => {
352
328
 
353
329
  const getParsedRowFieldDataFunction = async (
354
330
  rowPart: RowFieldDataFunction,
355
- args: ParseDataArgs,
331
+ args: ParseDataArgs
356
332
  ) => {
357
333
  const func = convertionFuncs.find((f) => `$${f.name}` === rowPart.funcName);
358
334
  if (!func) {
@@ -364,10 +340,7 @@ const getParsedRowFieldDataFunction = async (
364
340
  return func.getQuery(rowPart);
365
341
  };
366
342
 
367
- const getParsedRowFieldData = async (
368
- rowFieldData: RowFieldData[][],
369
- args: ParseDataArgs,
370
- ) => {
343
+ const getParsedRowFieldData = async (rowFieldData: RowFieldData[][], args: ParseDataArgs) => {
371
344
  const parsedRowFieldData = Promise.all(
372
345
  rowFieldData.map((rowParts) => {
373
346
  return Promise.all(
@@ -377,12 +350,8 @@ const getParsedRowFieldData = async (
377
350
  escapedVal = await getParsedRowFieldDataFunction(rowPart, args);
378
351
  } else {
379
352
  /** Prevent pg-promise formatting jsonb */
380
- const colIsJSON = ["json", "jsonb"].includes(
381
- rowPart.column.data_type,
382
- );
383
- escapedVal = pgp.as.format(colIsJSON ? "$1:json" : "$1", [
384
- rowPart.fieldValue,
385
- ]);
353
+ const colIsJSON = ["json", "jsonb"].includes(rowPart.column.data_type);
354
+ escapedVal = pgp.as.format(colIsJSON ? "$1:json" : "$1", [rowPart.fieldValue]);
386
355
  }
387
356
 
388
357
  /**
@@ -394,9 +363,9 @@ const getParsedRowFieldData = async (
394
363
  escapedCol: asName(rowPart.column.name),
395
364
  escapedVal,
396
365
  };
397
- }),
366
+ })
398
367
  );
399
- }),
368
+ })
400
369
  );
401
370
 
402
371
  return parsedRowFieldData;
@@ -426,12 +395,11 @@ const convertionFuncs: ConvertionFunc[] = [
426
395
  const argList = args.map((arg) => asValue(arg)).join(", ");
427
396
  return `${name}(${argList})`;
428
397
  },
429
- }) satisfies ConvertionFunc,
398
+ }) satisfies ConvertionFunc
430
399
  ),
431
400
  {
432
401
  name: "to_timestamp",
433
- getQuery: ({ args }) =>
434
- `to_timestamp(${asValue(args[0])}::BIGINT/1000.0)::timestamp`,
402
+ getQuery: ({ args }) => `to_timestamp(${asValue(args[0])}::BIGINT/1000.0)::timestamp`,
435
403
  },
436
404
  {
437
405
  name: "merge",
@@ -48,7 +48,7 @@ export class TableHandler extends ViewHandler {
48
48
  tableOrViewInfo: TableSchema,
49
49
  dboBuilder: DboBuilder,
50
50
  tx?: { t: pgPromise.ITask<{}>; dbTX: TableHandlers },
51
- joinPaths?: JoinPaths,
51
+ joinPaths?: JoinPaths
52
52
  ) {
53
53
  super(db, tableOrViewInfo, dboBuilder, tx, joinPaths);
54
54
 
@@ -76,20 +76,14 @@ export class TableHandler extends ViewHandler {
76
76
  param2?: InsertParams,
77
77
  param3_unused?: undefined,
78
78
  tableRules?: TableRule,
79
- _localParams?: LocalParams,
79
+ _localParams?: LocalParams
80
80
  ): Promise<any | any[] | boolean> {
81
- return insert.bind(this)(
82
- rowOrRows,
83
- param2,
84
- param3_unused,
85
- tableRules,
86
- _localParams,
87
- );
81
+ return insert.bind(this)(rowOrRows, param2, param3_unused, tableRules, _localParams);
88
82
  }
89
83
 
90
84
  prepareReturning = async (
91
85
  returning: Select | undefined,
92
- allowedFields: string[],
86
+ allowedFields: string[]
93
87
  ): Promise<SelectItem[]> => {
94
88
  const result: SelectItem[] = [];
95
89
  if (returning) {
@@ -98,9 +92,7 @@ export class TableHandler extends ViewHandler {
98
92
  allowedFields,
99
93
  allowedOrderByFields: allowedFields,
100
94
  computedFields: COMPUTED_FIELDS,
101
- functions: FUNCTIONS.filter(
102
- (f) => f.type === "function" && f.singleColArg,
103
- ),
95
+ functions: FUNCTIONS.filter((f) => f.type === "function" && f.singleColArg),
104
96
  isView: this.is_view,
105
97
  columns: this.columns,
106
98
  });
@@ -122,15 +114,9 @@ export class TableHandler extends ViewHandler {
122
114
  params?: DeleteParams,
123
115
  param3_unused?: undefined,
124
116
  table_rules?: TableRule,
125
- localParams?: LocalParams,
117
+ localParams?: LocalParams
126
118
  ): Promise<any> {
127
- return _delete.bind(this)(
128
- filter,
129
- params,
130
- param3_unused,
131
- table_rules,
132
- localParams,
133
- );
119
+ return _delete.bind(this)(filter, params, param3_unused, table_rules, localParams);
134
120
  }
135
121
 
136
122
  remove(
@@ -138,7 +124,7 @@ export class TableHandler extends ViewHandler {
138
124
  params?: UpdateParams,
139
125
  param3_unused?: undefined,
140
126
  tableRules?: TableRule,
141
- localParams?: LocalParams,
127
+ localParams?: LocalParams
142
128
  ) {
143
129
  return this.delete(filter, params, param3_unused, tableRules, localParams);
144
130
  }
@@ -151,7 +137,7 @@ export class TableHandler extends ViewHandler {
151
137
  params: { select?: FieldFilter },
152
138
  param3_unused: undefined,
153
139
  table_rules: TableRule,
154
- localParams: LocalParams,
140
+ localParams: LocalParams
155
141
  ) {
156
142
  const start = Date.now();
157
143
  try {
@@ -159,50 +145,38 @@ export class TableHandler extends ViewHandler {
159
145
  throw "Cannot subscribe. PubSubManager not initiated";
160
146
  }
161
147
 
148
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
162
149
  if (!localParams) throw "Sync not allowed within the server code";
163
150
  const { socket } = localParams;
164
151
  if (!socket) throw "socket missing";
165
152
 
153
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
166
154
  if (!table_rules || !table_rules.sync || !table_rules.select)
167
155
  throw "sync or select table rules missing";
168
156
 
169
157
  if (this.tx) throw "Sync not allowed within transactions";
170
158
 
171
159
  const ALLOWED_PARAMS = ["select"];
172
- const invalidParams = Object.keys(params || {}).filter(
173
- (k) => !ALLOWED_PARAMS.includes(k),
174
- );
160
+ const invalidParams = Object.keys(params).filter((k) => !ALLOWED_PARAMS.includes(k));
175
161
  if (invalidParams.length)
176
- throw (
177
- "Invalid or dissallowed params found: " + invalidParams.join(", ")
178
- );
162
+ throw "Invalid or dissallowed params found: " + invalidParams.join(", ");
179
163
 
180
164
  const { synced_field, allow_delete }: SyncRule = table_rules.sync;
181
165
 
182
166
  if (!table_rules.sync.id_fields.length || !synced_field) {
183
- const err =
184
- "INTERNAL ERROR: id_fields OR synced_field missing from publish";
167
+ const err = "INTERNAL ERROR: id_fields OR synced_field missing from publish";
185
168
  console.error(err);
186
169
  throw err;
187
170
  }
188
171
 
189
- const id_fields = this.parseFieldFilter(
190
- table_rules.sync.id_fields,
191
- false,
192
- );
172
+ const id_fields = this.parseFieldFilter(table_rules.sync.id_fields, false);
193
173
  const syncFields = [...id_fields, synced_field];
194
174
 
195
- const allowedSelect = this.parseFieldFilter(
196
- table_rules?.select.fields ?? false,
197
- );
175
+ const allowedSelect = this.parseFieldFilter(table_rules.select.fields);
198
176
  if (syncFields.find((f) => !allowedSelect.includes(f))) {
199
177
  throw `INTERNAL ERROR: sync field missing from publish.${this.name}.select.fields`;
200
178
  }
201
- const select = this.getAllowedSelectFields(
202
- params?.select ?? "*",
203
- allowedSelect,
204
- false,
205
- );
179
+ const select = this.getAllowedSelectFields(params.select ?? "*", allowedSelect, false);
206
180
  if (!select.length) throw "Empty select not allowed";
207
181
 
208
182
  /* Add sync fields if missing */
@@ -216,9 +190,9 @@ export class TableHandler extends ViewHandler {
216
190
  { select, limit: 0 },
217
191
  undefined,
218
192
  table_rules,
219
- localParams,
193
+ localParams
220
194
  ).then(async (_isValid) => {
221
- const { filterFields, forcedFilter } = table_rules?.select || {};
195
+ const { filterFields, forcedFilter } = table_rules.select || {};
222
196
  const condition = (
223
197
  await this.prepareWhere({
224
198
  select: undefined,