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
@@ -5,7 +5,7 @@ import { canCreateTables } from "../DboBuilder/runSQL";
5
5
  import { Prostgles } from "../Prostgles";
6
6
  import { FileManager, HOUR, LocalConfig } from "./FileManager";
7
7
  import { runClientRequest } from "../runClientRequest";
8
- import { HTTPCODES } from "../Auth/AuthHandler";
8
+ import { HTTP_FAIL_CODES } from "../Auth/AuthHandler";
9
9
 
10
10
  export async function initFileManager(this: FileManager, prg: Prostgles) {
11
11
  this.prostgles = prg;
@@ -17,10 +17,9 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
17
17
  const { tableName = "files", referencedTables = {} } = fileTable;
18
18
  this.tableName = tableName;
19
19
 
20
- const maxBfSizeMB =
21
- (prg.opts.io?.engine?.opts?.maxHttpBufferSize || 1e6) / 1e6;
20
+ const maxBfSizeMB = (prg.opts.io?.engine.opts.maxHttpBufferSize || 1e6) / 1e6;
22
21
  console.log(
23
- `Prostgles: Initiated file manager. Max allowed file size: ${maxBfSizeMB}MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options`,
22
+ `Prostgles: Initiated file manager. Max allowed file size: ${maxBfSizeMB}MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options`
24
23
  );
25
24
 
26
25
  const canCreate = await canCreateTables(this.db);
@@ -66,7 +65,7 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
66
65
  UNIQUE(id),
67
66
  UNIQUE(name)
68
67
  )`,
69
- `Create fileTable ${asName(tableName)}`,
68
+ `Create fileTable ${asName(tableName)}`
70
69
  );
71
70
  await prg.refreshDBO();
72
71
  }
@@ -85,9 +84,7 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
85
84
  for (const [colName] of Object.entries(tableConfig.referenceColumns)) {
86
85
  const existingCol = cols.find((c) => c.name === colName);
87
86
  if (existingCol) {
88
- if (
89
- existingCol.references?.some(({ ftable }) => ftable === tableName)
90
- ) {
87
+ if (existingCol.references?.some(({ ftable }) => ftable === tableName)) {
91
88
  // All ok
92
89
  } else {
93
90
  if (existingCol.udt_name === "uuid") {
@@ -97,12 +94,12 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
97
94
  await runQuery(query, msg);
98
95
  } catch (e) {
99
96
  console.error(
100
- `Could not add constraing. Err: ${e instanceof Error ? e.message : JSON.stringify(e)}`,
97
+ `Could not add constraing. Err: ${e instanceof Error ? e.message : JSON.stringify(e)}`
101
98
  );
102
99
  }
103
100
  } else {
104
101
  console.error(
105
- `Referenced file column ${refTable} (${colName}) exists but is not of required type (UUID). Choose a different column name or ALTER the existing column to match the type and the data found in file table ${tableName}(id)`,
102
+ `Referenced file column ${refTable} (${colName}) exists but is not of required type (UUID). Choose a different column name or ALTER the existing column to match the type and the data found in file table ${tableName}(id)`
106
103
  );
107
104
  }
108
105
  }
@@ -118,7 +115,7 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
118
115
  // }
119
116
  // await createColumn();
120
117
  console.error(
121
- `Referenced file column ${refTable} (${colName}) does not exist. Create it using this query:\n${query}`,
118
+ `Referenced file column ${refTable} (${colName}) does not exist. Create it using this query:\n${query}`
122
119
  );
123
120
  }
124
121
  }
@@ -136,76 +133,71 @@ export async function initFileManager(this: FileManager, prg: Prostgles) {
136
133
  }
137
134
  this.fileRoute = fileServeRoute;
138
135
 
139
- if (app) {
140
- app.get(this.fileRouteExpress, async (req, res) => {
141
- if (!this.dbo[tableName]) {
142
- res
143
- .status(HTTPCODES.INTERNAL_SERVER_ERROR)
144
- .json(`Internal error: media table (${tableName}) not valid`);
145
- return false;
146
- }
136
+ app.get(this.fileRouteExpress, async (req, res) => {
137
+ if (!this.dbo[tableName]) {
138
+ res
139
+ .status(HTTP_FAIL_CODES.INTERNAL_SERVER_ERROR)
140
+ .json(`Internal error: media table (${tableName}) not valid`);
141
+ return false;
142
+ }
147
143
 
148
- const mediaTable = this.dbo[tableName] as unknown as TableHandler;
144
+ const mediaTable = this.dbo[tableName] as unknown as TableHandler;
149
145
 
150
- try {
151
- const { name } = req.params;
152
- if (typeof name !== "string" || !name) {
153
- throw "Invalid media name";
154
- }
155
- if (!this.prostgles) {
156
- throw "Prostgles instance missing";
157
- }
158
- const id = name.slice(0, 36);
159
- const selectParams = {
160
- select: {
161
- id: 1,
162
- name: 1,
163
- signed_url: 1,
164
- signed_url_expires: 1,
165
- content_type: 1,
166
- },
167
- };
168
- const media = await runClientRequest.bind(this.prostgles)({
169
- type: "http",
170
- httpReq: req,
171
- command: "findOne",
172
- tableName,
173
- param1: { id },
174
- param2: selectParams,
175
- param3: undefined,
176
- });
177
-
178
- if (!media) {
179
- res.status(HTTPCODES.NOT_FOUND).send("File not found or not allowed");
180
- return;
181
- }
146
+ try {
147
+ const { name } = req.params;
148
+ if (typeof name !== "string" || !name) {
149
+ throw "Invalid media name";
150
+ }
151
+ if (!this.prostgles) {
152
+ throw "Prostgles instance missing";
153
+ }
154
+ const id = name.slice(0, 36);
155
+ const selectParams = {
156
+ select: {
157
+ id: 1,
158
+ name: 1,
159
+ signed_url: 1,
160
+ signed_url_expires: 1,
161
+ content_type: 1,
162
+ },
163
+ };
164
+ const media = await runClientRequest.bind(this.prostgles)({
165
+ type: "http",
166
+ httpReq: req,
167
+ command: "findOne",
168
+ tableName,
169
+ param1: { id },
170
+ param2: selectParams,
171
+ param3: undefined,
172
+ });
173
+
174
+ if (!media) {
175
+ res.status(HTTP_FAIL_CODES.NOT_FOUND).send("File not found or not allowed");
176
+ return;
177
+ }
182
178
 
183
- if (this.cloudClient) {
184
- let url = media.signed_url;
185
- const expires = +(media.signed_url_expires || 0);
179
+ if (this.cloudClient) {
180
+ let url = media.signed_url;
181
+ const expires = +(media.signed_url_expires || 0);
186
182
 
187
- const EXPIRES = Date.now() + HOUR;
188
- if (!url || expires < EXPIRES) {
189
- url = await this.getFileCloudDownloadURL(media.name, 60 * 60);
190
- await mediaTable.update(
191
- { name },
192
- { signed_url: url, signed_url_expires: EXPIRES },
193
- );
194
- }
183
+ const EXPIRES = Date.now() + HOUR;
184
+ if (!url || expires < EXPIRES) {
185
+ url = await this.getFileCloudDownloadURL(media.name, 60 * 60);
186
+ await mediaTable.update({ name }, { signed_url: url, signed_url_expires: EXPIRES });
187
+ }
195
188
 
196
- res.redirect(url);
197
- } else {
198
- const pth = `${(this.config as LocalConfig).localFolderPath}/${media.name}`;
199
- if (!fs.existsSync(pth)) {
200
- throw new Error("File not found");
201
- }
202
- res.contentType(media.content_type);
203
- res.sendFile(pth);
189
+ res.redirect(url);
190
+ } else {
191
+ const pth = `${(this.config as LocalConfig).localFolderPath}/${media.name}`;
192
+ if (!fs.existsSync(pth)) {
193
+ throw new Error("File not found");
204
194
  }
205
- } catch (e) {
206
- console.log(e);
207
- res.status(HTTPCODES.BAD_REQUEST).send("Invalid/disallowed file");
195
+ res.contentType(media.content_type);
196
+ res.sendFile(pth);
208
197
  }
209
- });
210
- }
198
+ } catch (e) {
199
+ console.log(e);
200
+ res.status(HTTP_FAIL_CODES.BAD_REQUEST).send("Invalid/disallowed file");
201
+ }
202
+ });
211
203
  }
@@ -42,7 +42,7 @@ export function uploadStream(
42
42
  const now = Date.now();
43
43
  if (now - lastProgress > throttle) {
44
44
  lastProgress = now;
45
- onProgress?.({ loaded, total: expectedSizeBytes ?? 0 });
45
+ onProgress({ loaded, total: expectedSizeBytes ?? 0 });
46
46
  }
47
47
  });
48
48
  }
@@ -54,7 +54,7 @@ export function uploadStream(
54
54
  try {
55
55
  content_length = fs.statSync(filePath).size;
56
56
 
57
- onEnd?.({
57
+ onEnd({
58
58
  url,
59
59
  filePath,
60
60
  etag: `none`,
package/lib/Filtering.ts CHANGED
@@ -41,12 +41,10 @@ export const FILTER_OPERAND_TO_SQL_OPERAND = Object.fromEntries(
41
41
  else if (filterOperand === "$nin") sqlOperand = "NOT IN";
42
42
  else if (filterOperand === "$between") sqlOperand = "BETWEEN";
43
43
  else if (filterOperand === "$notBetween") sqlOperand = "NOT BETWEEN";
44
- else if (filterOperand === "$isDistinctFrom")
45
- sqlOperand = "IS DISTINCT FROM";
46
- else if (filterOperand === "$isNotDistinctFrom")
47
- sqlOperand = "IS NOT DISTINCT FROM";
44
+ else if (filterOperand === "$isDistinctFrom") sqlOperand = "IS DISTINCT FROM";
45
+ else if (filterOperand === "$isNotDistinctFrom") sqlOperand = "IS NOT DISTINCT FROM";
48
46
  return [filterOperand, sqlOperand];
49
- }),
47
+ })
50
48
  ) as Record<(typeof FILTER_OPERANDS)[number], string>;
51
49
 
52
50
  /**
@@ -54,7 +52,7 @@ export const FILTER_OPERAND_TO_SQL_OPERAND = Object.fromEntries(
54
52
  * Ensure only single key objects reach this point
55
53
  */
56
54
  type ParseFilterItemArgs = {
57
- filter: FullFilter<void, void>;
55
+ filter: FullFilter<void, void> | undefined;
58
56
  select: SelectItem[] | undefined;
59
57
  tableAlias: string | undefined;
60
58
  allowedColumnNames: string[];
@@ -85,7 +83,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
85
83
  select,
86
84
  tableAlias,
87
85
  allowedColumnNames,
88
- }),
86
+ })
89
87
  )
90
88
  .sort() /* sorted to ensure duplicate subscription channels are not created due to different condition order */
91
89
  .join(" AND ");
@@ -102,20 +100,15 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
102
100
  const validateSelectedItemFilter = (selectedItem: SelectItem | undefined) => {
103
101
  const fields = selectedItem?.getFields();
104
102
  if (Array.isArray(fields) && fields.length > 1) {
105
- const dissallowedFields = fields.filter(
106
- (fname) => !allowedColumnNames.includes(fname),
107
- );
103
+ const dissallowedFields = fields.filter((fname) => !allowedColumnNames.includes(fname));
108
104
  if (dissallowedFields.length) {
109
- throw new Error(
110
- `Invalid/disallowed columns found in filter: ${dissallowedFields}`,
111
- );
105
+ throw new Error(`Invalid/disallowed columns found in filter: ${dissallowedFields}`);
112
106
  }
113
107
  }
114
108
  };
115
109
  const getLeftQ = (selItm: SelectItem) => {
116
110
  validateSelectedItemFilter(selItem);
117
- if (selItm.type === "function" || selItm.type === "aggregation")
118
- return selItm.getQuery();
111
+ if (selItm.type === "function" || selItm.type === "aggregation") return selItm.getQuery();
119
112
  return selItm.getQuery(tableAlias);
120
113
  };
121
114
 
@@ -133,16 +126,14 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
133
126
  /* See if dot notation. Pick the best matching starting string */
134
127
  if (select) {
135
128
  selItem = select.find((s) =>
136
- dot_notation_delims.find((delimiter) =>
137
- fKey.startsWith(s.alias + delimiter),
138
- ),
129
+ dot_notation_delims.find((delimiter) => fKey.startsWith(s.alias + delimiter))
139
130
  );
140
131
  validateSelectedItemFilter(selItem);
141
132
  }
142
133
  if (!selItem) {
143
134
  return mErr(
144
135
  "Bad filter. Could not match to a column or alias or dot notation" +
145
- select?.map((s) => s.alias),
136
+ select?.map((s) => s.alias)
146
137
  );
147
138
  }
148
139
 
@@ -152,7 +143,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
152
143
  if (remainingStr.startsWith("->")) {
153
144
  /** Has shorthand operand 'col->>key.<>' */
154
145
  const matchingOperand = CompareFilterKeys.find((operand) =>
155
- remainingStr.endsWith(`.${operand}`),
146
+ remainingStr.endsWith(`.${operand}`)
156
147
  );
157
148
  if (matchingOperand) {
158
149
  remainingStr = remainingStr.slice(0, -matchingOperand.length - 1);
@@ -195,10 +186,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
195
186
  }
196
187
 
197
188
  leftQ +=
198
- currSep.sep +
199
- asValue(
200
- remainingStr.slice(currSep.idx + currSep.sep.length, nextIdx),
201
- );
189
+ currSep.sep + asValue(remainingStr.slice(currSep.idx + currSep.sep.length, nextIdx));
202
190
  currSep = nextSep;
203
191
  }
204
192
 
@@ -238,9 +226,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
238
226
  rightF = res;
239
227
  } else {
240
228
  // console.trace(141, select, selItem, remainingStr)
241
- mErr(
242
- "Bad filter. Could not find the valid col name or alias or col json path",
243
- );
229
+ mErr("Bad filter. Could not find the valid col name or alias or col json path");
244
230
  }
245
231
  } else {
246
232
  leftQ = getLeftQ(selItem);
@@ -248,10 +234,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
248
234
 
249
235
  if (!leftQ) mErr("Internal error: leftQ missing?!");
250
236
 
251
- const parseRightVal = (
252
- val: any,
253
- expect?: "csv" | "array" | "json" | "jsonb",
254
- ) => {
237
+ const parseRightVal = (val: any, expect?: "csv" | "array" | "json" | "jsonb") => {
255
238
  try {
256
239
  return parseFilterRightValue(val, { selectItem: selItem, expect });
257
240
  } catch (e: any) {
@@ -265,26 +248,17 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
265
248
  let filterOperand: (typeof FILTER_OPERANDS)[number] = filterKeys[0] as any;
266
249
 
267
250
  /** JSON cannot be compared so we'll cast it to TEXT */
268
- if (
269
- selItem?.column_udt_type === "json" ||
270
- TextFilterKeys.includes(filterOperand as any)
271
- ) {
251
+ if (selItem.column_udt_type === "json" || TextFilterKeys.includes(filterOperand as any)) {
272
252
  leftQ += "::TEXT ";
273
253
  }
274
254
 
275
255
  /** It's an object key which means it's an equality comparison against a json object */
276
- if (
277
- selItem?.column_udt_type?.startsWith("json") &&
278
- !FILTER_OPERANDS.includes(filterOperand)
279
- ) {
256
+ if (selItem.column_udt_type?.startsWith("json") && !FILTER_OPERANDS.includes(filterOperand)) {
280
257
  return leftQ + " = " + parseRightVal(rightF);
281
258
  }
282
259
 
283
260
  let filterValue = rightF[filterOperand];
284
- const ALLOWED_FUNCS = [
285
- ...GeomFilter_Funcs,
286
- ...TextFilter_FullTextSearchFilterKeys,
287
- ] as const;
261
+ const ALLOWED_FUNCS = [...GeomFilter_Funcs, ...TextFilter_FullTextSearchFilterKeys] as const;
288
262
  let funcName: undefined | (typeof ALLOWED_FUNCS)[number];
289
263
  let funcArgs: undefined | any[];
290
264
 
@@ -349,9 +323,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
349
323
  return " FALSE ";
350
324
  }
351
325
 
352
- const filterNonNullValues: any[] = filterValue.filter(
353
- (v: any) => v !== null,
354
- );
326
+ const filterNonNullValues: any[] = filterValue.filter((v: any) => v !== null);
355
327
  let c1 = "",
356
328
  c2 = "";
357
329
  if (filterNonNullValues.length) {
@@ -366,9 +338,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
366
338
  return " TRUE ";
367
339
  }
368
340
 
369
- const nonNullFilterValues: any[] = filterValue.filter(
370
- (v: any) => v !== null,
371
- );
341
+ const nonNullFilterValues: any[] = filterValue.filter((v: any) => v !== null);
372
342
  let c1 = "",
373
343
  c2 = "";
374
344
  if (nonNullFilterValues.length)
@@ -379,13 +349,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
379
349
  if (!Array.isArray(filterValue) || filterValue.length !== 2) {
380
350
  return mErr("Between filter expects an array of two values");
381
351
  }
382
- return (
383
- leftQ +
384
- " BETWEEN " +
385
- asValue(filterValue[0]) +
386
- " AND " +
387
- asValue(filterValue[1])
388
- );
352
+ return leftQ + " BETWEEN " + asValue(filterValue[0]) + " AND " + asValue(filterValue[1]);
389
353
  } else if (["$ilike"].includes(filterOperand)) {
390
354
  return leftQ + " ILIKE " + asValue(filterValue);
391
355
  } else if (["$like"].includes(filterOperand)) {
@@ -394,33 +358,19 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
394
358
  return leftQ + " NOT ILIKE " + asValue(filterValue);
395
359
  } else if (["$nlike"].includes(filterOperand)) {
396
360
  return leftQ + " NOT LIKE " + asValue(filterValue);
397
- } else if (
398
- filterOperand === "$isDistinctFrom" ||
399
- filterOperand === "$isNotDistinctFrom"
400
- ) {
361
+ } else if (filterOperand === "$isDistinctFrom" || filterOperand === "$isNotDistinctFrom") {
401
362
  const operator = FILTER_OPERAND_TO_SQL_OPERAND[filterOperand];
402
363
  return leftQ + ` ${operator} ` + asValue(filterValue);
403
364
 
404
365
  /* MAYBE TEXT OR MAYBE ARRAY */
405
366
  } else if (
406
- [
407
- "@>",
408
- "<@",
409
- "$contains",
410
- "$containedBy",
411
- "$overlaps",
412
- "&&",
413
- "@@",
414
- ].includes(filterOperand)
367
+ ["@>", "<@", "$contains", "$containedBy", "$overlaps", "&&", "@@"].includes(filterOperand)
415
368
  ) {
416
369
  const operand =
417
- filterOperand === "@@"
418
- ? "@@"
419
- : ["@>", "$contains"].includes(filterOperand)
420
- ? "@>"
421
- : ["&&", "$overlaps"].includes(filterOperand)
422
- ? "&&"
423
- : "<@";
370
+ filterOperand === "@@" ? "@@"
371
+ : ["@>", "$contains"].includes(filterOperand) ? "@>"
372
+ : ["&&", "$overlaps"].includes(filterOperand) ? "&&"
373
+ : "<@";
424
374
 
425
375
  /* Array for sure */
426
376
  if (Array.isArray(filterValue)) {
@@ -432,10 +382,9 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
432
382
  TextFilter_FullTextSearchFilterKeys.includes(funcName! as any)
433
383
  ) {
434
384
  let lq = `to_tsvector(${leftQ}::text)`;
435
- if (selItem && selItem.columnPGDataType === "tsvector") lq = leftQ!;
385
+ if (selItem.columnPGDataType === "tsvector") lq = leftQ!;
436
386
 
437
- const res =
438
- `${lq} ${operand} ` + `${funcName}${parseRightVal(funcArgs, "csv")}`;
387
+ const res = `${lq} ${operand} ` + `${funcName}${parseRightVal(funcArgs, "csv")}`;
439
388
 
440
389
  return res;
441
390
  } else {
@@ -453,10 +402,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
453
402
  * Ensure that when comparing an array to a json column, the array is cast to json
454
403
  */
455
404
  let valueStr = asValue(rightF);
456
- if (
457
- selItem?.column_udt_type?.startsWith("json") &&
458
- Array.isArray(rightF)
459
- ) {
405
+ if (selItem.column_udt_type?.startsWith("json") && Array.isArray(rightF)) {
460
406
  valueStr = pgp.as.format(`$1::jsonb`, [JSON.stringify(rightF)]);
461
407
  }
462
408
  return `${leftQ} = ${valueStr}`;
@@ -468,10 +414,7 @@ type ParseRightValOpts = {
468
414
  expect?: "csv" | "array" | "json" | "jsonb";
469
415
  selectItem: SelectItem | undefined;
470
416
  };
471
- export const parseFilterRightValue = (
472
- val: any,
473
- { expect, selectItem }: ParseRightValOpts,
474
- ) => {
417
+ export const parseFilterRightValue = (val: any, { expect, selectItem }: ParseRightValOpts) => {
475
418
  const asValue = (v: any) => pgp.as.format("$1", [v]);
476
419
  const checkIfArr = () => {
477
420
  if (!Array.isArray(val)) {