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
@@ -1,10 +1,4 @@
1
- import {
2
- AnyObject,
3
- TableHandler,
4
- UserLike,
5
- getKeys,
6
- pickKeys,
7
- } from "prostgles-types";
1
+ import { AnyObject, TableHandler, UserLike, getKeys, pickKeys } from "prostgles-types";
8
2
  import { ExpressReq } from "./Auth/AuthTypes";
9
3
  import { LocalParams, PRGLIOSocket } from "./DboBuilder/DboBuilder";
10
4
  import { parseFieldFilter } from "./DboBuilder/ViewHandler/parseFieldFilter";
@@ -47,10 +41,7 @@ const TABLE_METHODS = {
47
41
  getColumns: 1,
48
42
  getInfo: 1,
49
43
  sync: 1,
50
- } as const satisfies Record<
51
- keyof (TableHandler & Pick<TableHandlerServer, "sync">),
52
- 1
53
- >;
44
+ } as const satisfies Record<keyof (TableHandler & Pick<TableHandlerServer, "sync">), 1>;
54
45
 
55
46
  const TABLE_METHODS_KEYS = getKeys(TABLE_METHODS);
56
47
  const SOCKET_ONLY_COMMANDS = [
@@ -79,36 +70,29 @@ type TableMethodFunctionWithRulesAndLocalParams = (
79
70
  arg2: any,
80
71
  arg3: any,
81
72
  tableRule: TableRule,
82
- localParams: LocalParams,
73
+ localParams: LocalParams
83
74
  ) => any;
84
75
 
85
76
  export const runClientRequest = async function (this: Prostgles, args: Args) {
86
77
  /* Channel name will only include client-sent params so we ignore table_rules enforced params */
87
78
  if (
79
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
88
80
  (args.type === "socket" && !args.socket) ||
81
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
89
82
  (args.type === "http" && !args.httpReq) ||
90
- !this.authHandler ||
83
+ // !this.authHandler ||
91
84
  !this.publishParser ||
92
85
  !this.dbo
93
86
  ) {
94
87
  throw "socket/httpReq or authhandler missing";
95
88
  }
96
89
 
97
- const {
98
- tableName,
99
- command: nonValidatedCommand,
100
- param1,
101
- param2,
102
- param3,
103
- } = args;
90
+ const { tableName, command: nonValidatedCommand, param1, param2, param3 } = args;
104
91
  if (!TABLE_METHODS_KEYS.some((v) => v === nonValidatedCommand)) {
105
92
  throw `Invalid command: ${nonValidatedCommand}. Expecting one of: ${TABLE_METHODS_KEYS};`;
106
93
  }
107
94
  const command = nonValidatedCommand as keyof TableHandler;
108
- if (
109
- args.type !== "socket" &&
110
- SOCKET_ONLY_COMMANDS.some((v) => v === command)
111
- ) {
95
+ if (args.type !== "socket" && SOCKET_ONLY_COMMANDS.some((v) => v === command)) {
112
96
  throw (
113
97
  "The following commands cannot be completed over a non-websocket connection: " +
114
98
  SOCKET_ONLY_COMMANDS
@@ -116,22 +100,25 @@ export const runClientRequest = async function (this: Prostgles, args: Args) {
116
100
  }
117
101
 
118
102
  const reqInfo = getReqInfoClient(args);
119
- const clientInfo = await this.authHandler.getClientInfo(args);
103
+ const clientInfo = await this.authHandler?.getClientInfo(args);
120
104
  const validRules = await this.publishParser.getValidatedRequestRule(
121
105
  { tableName, command, localParams: reqInfo },
122
- clientInfo,
106
+ clientInfo
123
107
  );
108
+
109
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
124
110
  if (!validRules) {
125
111
  throw `Invalid OR disallowed request: ${tableName}.${command} `;
126
112
  }
127
113
 
128
- const sessionUser: UserLike | undefined = !clientInfo?.user
129
- ? undefined
114
+ const sessionUser: UserLike | undefined =
115
+ !clientInfo?.user ?
116
+ undefined
130
117
  : {
131
118
  ...parseFieldFilter(
132
119
  clientInfo.sessionFields ?? ([] as any),
133
120
  false,
134
- Object.keys(clientInfo.user),
121
+ Object.keys(clientInfo.user)
135
122
  ),
136
123
  ...(pickKeys(clientInfo.user, ["id", "type"]) as UserLike),
137
124
  };
@@ -148,8 +135,7 @@ export const runClientRequest = async function (this: Prostgles, args: Args) {
148
135
  }
149
136
  }
150
137
  const tableHandler = this.dbo[tableName];
151
- if (!tableHandler || !tableHandler.column_names)
152
- throw `Invalid tableName ${tableName} provided`;
138
+ if (!tableHandler || !tableHandler.column_names) throw `Invalid tableName ${tableName} provided`;
153
139
 
154
140
  /**
155
141
  * satisfies check is used to ensure rules arguments are correctly passed to each method
@@ -158,23 +144,21 @@ export const runClientRequest = async function (this: Prostgles, args: Args) {
158
144
  | undefined
159
145
  | TableMethodFunctionWithRulesAndLocalParams;
160
146
  if (!tableCommand) throw `Invalid or disallowed command provided: ${command}`;
161
- return (
162
- this.dbo[tableName]![command] as TableMethodFunctionWithRulesAndLocalParams
163
- )(param1, param2, param3, validRules, localParams);
147
+ return (this.dbo[tableName]![command] as TableMethodFunctionWithRulesAndLocalParams)(
148
+ param1,
149
+ param2,
150
+ param3,
151
+ validRules,
152
+ localParams
153
+ );
164
154
  // This approach is breaking context
165
155
  // const result = await (tableCommand as TableMethodFunctionWithRulesAndLocalParams)(param1, param2, param3, validRules, localParams);
166
156
  // return result;
167
157
  };
168
158
 
169
- export const clientCanRunSqlRequest = async function (
170
- this: Prostgles,
171
- args: ReqInfo,
172
- ) {
159
+ export const clientCanRunSqlRequest = async function (this: Prostgles, args: ReqInfo) {
173
160
  const reqInfo = getReqInfoClient(args);
174
- if (
175
- !this.opts.publishRawSQL ||
176
- typeof this.opts.publishRawSQL !== "function"
177
- ) {
161
+ if (!this.opts.publishRawSQL || typeof this.opts.publishRawSQL !== "function") {
178
162
  return { allowed: false, reqInfo };
179
163
  }
180
164
  const canRunSQL = async () => {
@@ -195,10 +179,7 @@ type ArgsSql = ReqInfo & {
195
179
  args?: AnyObject | any[];
196
180
  options?: any;
197
181
  };
198
- export const runClientSqlRequest = async function (
199
- this: Prostgles,
200
- params: ArgsSql,
201
- ) {
182
+ export const runClientSqlRequest = async function (this: Prostgles, params: ArgsSql) {
202
183
  const { allowed, reqInfo } = await clientCanRunSqlRequest.bind(this)(params);
203
184
  if (!allowed) {
204
185
  throw "Not allowed to execute sql";
@@ -212,10 +193,7 @@ type ArgsMethod = ReqInfo & {
212
193
  method: string;
213
194
  params?: any[];
214
195
  };
215
- export const runClientMethod = async function (
216
- this: Prostgles,
217
- reqArgs: ArgsMethod,
218
- ) {
196
+ export const runClientMethod = async function (this: Prostgles, reqArgs: ArgsMethod) {
219
197
  const reqInfo = getReqInfoClient(reqArgs);
220
198
  const { method, params = [] } = reqArgs;
221
199
  const methods = await this.publishParser?.getAllowedMethods(reqInfo);
@@ -226,10 +204,9 @@ export const runClientMethod = async function (
226
204
 
227
205
  const methodDef = methods[method]!;
228
206
  const onRun =
229
- typeof methodDef === "function" ||
230
- typeof (methodDef as any).then === "function"
231
- ? (methodDef as (...args: any) => Promise<void>)
232
- : methodDef.run;
207
+ typeof methodDef === "function" || typeof (methodDef as any).then === "function" ?
208
+ (methodDef as (...args: any) => Promise<void>)
209
+ : methodDef.run;
233
210
  const res = await onRun(...params);
234
211
  return res;
235
212
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.187",
3
+ "version": "4.2.188",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -55,7 +55,7 @@
55
55
  "pg": "^8.11.5",
56
56
  "pg-cursor": "^2.11.0",
57
57
  "pg-promise": "^11.9.1",
58
- "prostgles-types": "^4.0.123"
58
+ "prostgles-types": "^4.0.129"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/express": "^4.17.21",
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSafeReturnURL.d.ts","sourceRoot":"","sources":["../../lib/Auth/getSafeReturnURL.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,cAChB,MAAM,sBACG,MAAM,wCAuB3B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSafeReturnURL.js","sourceRoot":"","sources":["../../lib/Auth/getSafeReturnURL.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAC9B,SAAiB,EACjB,kBAA0B,EAC1B,KAAK,GAAG,KAAK,EACb,EAAE;IACF,yCAAyC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,aAAa,GAAG,mBAAmB,CAAC;QAC1C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,CACxD,SAAS,EACT,aAAa,CACd,CAAC;QACF,IACE,MAAM,KAAK,aAAa;YACxB,SAAS,KAAK,GAAG,QAAQ,GAAG,MAAM,EAAE;YACpC,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,EACpC,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,SAAS,oBAAoB,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAzBW,QAAA,gBAAgB,oBAyB3B;AAEF,MAAM,KAAK,GACT;IACE,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;IAC1D,CAAC,gCAAgC,EAAE,GAAG,CAAC;IACvC,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,WAAW,EAAE,GAAG,CAAC;IAClB,CAAC,YAAY,EAAE,GAAG,CAAC;CAEtB,CAAC,IAAI,CACJ,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CACxB,IAAA,wBAAgB,EAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,QAAQ,CAC9D,CAAC;AAEF,IAAI,KAAK,EAAE,CAAC;IACV,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,EAAE,CACjE,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"setEmailProvider.d.ts","sourceRoot":"","sources":["../../lib/Auth/setEmailProvider.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,EAA0B,WAAW,EAAiC,MAAM,eAAe,CAAC;AAKnG,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,iBAmGvE"}
@@ -1,133 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setEmailProvider = void 0;
4
- const AuthHandler_1 = require("./AuthHandler");
5
- const sendEmail_1 = require("./sendEmail");
6
- const node_dns_1 = require("node:dns");
7
- async function setEmailProvider(app) {
8
- const { email, websiteUrl } = this.opts?.expressConfig?.registrations ?? {};
9
- if (!email)
10
- return;
11
- if (websiteUrl) {
12
- await checkDmarc(websiteUrl);
13
- }
14
- /**
15
- * Setup nodemailer transporters
16
- */
17
- if (email.signupType === "withPassword") {
18
- if (email.emailConfirmation) {
19
- tryGetTransporter(email.emailConfirmation.smtp);
20
- }
21
- }
22
- else {
23
- tryGetTransporter(email.emailMagicLink.smtp);
24
- }
25
- app.post(AuthHandler_1.AUTH_ROUTES_AND_PARAMS.emailSignup, async (req, res) => {
26
- const { username, password } = req.body;
27
- let validationError = "";
28
- if (typeof username !== "string") {
29
- validationError = "Invalid username";
30
- }
31
- if (email.signupType === "withPassword") {
32
- const { minPasswordLength = 8 } = email;
33
- if (typeof password !== "string") {
34
- validationError = "Invalid password";
35
- }
36
- else if (password.length < minPasswordLength) {
37
- validationError = `Password must be at least ${minPasswordLength} characters long`;
38
- }
39
- }
40
- if (validationError) {
41
- res.status(AuthHandler_1.HTTPCODES.AUTH_ERROR).json({ success: false, error: validationError });
42
- return;
43
- }
44
- try {
45
- const { httpReq, ...clientInfo } = (0, AuthHandler_1.getLoginClientInfo)({ httpReq: req });
46
- let emailMessage;
47
- if (email.signupType === "withPassword") {
48
- if (email.emailConfirmation) {
49
- const { onSend, smtp } = email.emailConfirmation;
50
- const message = await onSend({
51
- email: username,
52
- password,
53
- confirmationUrlPath: `${websiteUrl}${AuthHandler_1.AUTH_ROUTES_AND_PARAMS.confirmEmail}`,
54
- clientInfo,
55
- req: httpReq,
56
- });
57
- emailMessage = { message: { ...message, to: username }, smtp };
58
- }
59
- }
60
- else {
61
- const { emailMagicLink } = email;
62
- const message = await emailMagicLink.onSend({
63
- email: username,
64
- magicLinkPath: `${websiteUrl}${AuthHandler_1.AUTH_ROUTES_AND_PARAMS.magicLinksRoute}`,
65
- clientInfo,
66
- req: httpReq,
67
- });
68
- emailMessage = {
69
- message: { ...message, to: username },
70
- smtp: emailMagicLink.smtp,
71
- };
72
- }
73
- if (emailMessage) {
74
- await (0, sendEmail_1.sendEmail)(emailMessage.smtp, emailMessage.message);
75
- res.json({
76
- success: true,
77
- message: email.signupType === "withPassword" ?
78
- `We've sent a confirmation email to ${emailMessage.message.to}. Please check your inbox (and your spam folder) for a message from us.`
79
- : "Email sent",
80
- });
81
- }
82
- }
83
- catch {
84
- res.status(AuthHandler_1.HTTPCODES.AUTH_ERROR).json({ success: false, error: "Failed to send email" });
85
- }
86
- });
87
- if (email.signupType === "withPassword" && email.emailConfirmation) {
88
- app.get(AuthHandler_1.AUTH_ROUTES_AND_PARAMS.confirmEmailExpressRoute, async (req, res) => {
89
- const { id } = req.params ?? {};
90
- try {
91
- if (!id || typeof id !== "string") {
92
- throw new Error("Invalid confirmation code");
93
- }
94
- const { httpReq, ...clientInfo } = (0, AuthHandler_1.getLoginClientInfo)({ httpReq: req });
95
- await email.emailConfirmation?.onConfirmed({
96
- confirmationCode: id,
97
- clientInfo,
98
- req: httpReq,
99
- });
100
- res.json({ success: true, message: "Email confirmed" });
101
- }
102
- catch (_e) {
103
- res.status(AuthHandler_1.HTTPCODES.AUTH_ERROR).json({ success: false, error: "Failed to confirm email" });
104
- }
105
- });
106
- }
107
- }
108
- exports.setEmailProvider = setEmailProvider;
109
- const checkDmarc = async (websiteUrl) => {
110
- const { host, hostname } = new URL(websiteUrl);
111
- const ignoredHosts = ["localhost", "127.0.0.1"];
112
- if (!hostname || ignoredHosts.includes(hostname)) {
113
- return;
114
- }
115
- const dmarc = await node_dns_1.promises.resolveTxt(`_dmarc.${host}`);
116
- const dmarkTxt = dmarc[0]?.[0];
117
- if (!dmarkTxt?.includes("v=DMARC1") ||
118
- (!dmarkTxt?.includes("p=reject") && !dmarkTxt?.includes("p=quarantine"))) {
119
- throw new Error("DMARC not set to reject/quarantine");
120
- }
121
- else {
122
- console.log("DMARC set to reject");
123
- }
124
- };
125
- const tryGetTransporter = (smtp) => {
126
- try {
127
- (0, sendEmail_1.getOrSetTransporter)(smtp);
128
- }
129
- catch (err) {
130
- console.error("Failed to set email transporter", err);
131
- }
132
- };
133
- //# sourceMappingURL=setEmailProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setEmailProvider.js","sourceRoot":"","sources":["../../lib/Auth/setEmailProvider.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import * as pg from "pg";
2
- export type PGTX = (query: pg.Client["query"]) => Promise<void>;
3
- export type RunTransactionOpts = {
4
- begin?: boolean;
5
- onSuccess: "COMMIT" | "ROLLBACK" | undefined;
6
- };
7
- export declare const runClientTransaction: (handler: PGTX, { onSuccess, begin }: RunTransactionOpts, dbConn: pg.ClientConfig) => Promise<void>;
8
- export declare const runClientTransactionStatement: (statement: string, dbConn: pg.ClientConfig) => Promise<void>;
9
- //# sourceMappingURL=runTransaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runTransaction.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/runTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAChE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAC9C,CAAC;AACF,eAAO,MAAM,oBAAoB,YACtB,IAAI,wBACgB,kBAAkB,UACvC,GAAG,YAAY,kBAiBxB,CAAC;AAEF,eAAO,MAAM,6BAA6B,cAC7B,MAAM,UACT,GAAG,YAAY,kBASxB,CAAC"}
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runClientTransactionStatement = exports.runClientTransaction = void 0;
4
- const pg = require("pg");
5
- const { Client } = pg;
6
- const runClientTransaction = async (handler, { onSuccess, begin = true }, dbConn) => {
7
- const client = new Client(dbConn);
8
- try {
9
- if (begin) {
10
- await client.query("BEGIN");
11
- }
12
- await handler(client.query);
13
- if (onSuccess) {
14
- await client.query(onSuccess);
15
- }
16
- }
17
- catch (e) {
18
- await client.query("ROLLBACK");
19
- throw e;
20
- }
21
- finally {
22
- client.end();
23
- }
24
- };
25
- exports.runClientTransaction = runClientTransaction;
26
- const runClientTransactionStatement = async (statement, dbConn) => {
27
- return (0, exports.runClientTransaction)(async (query) => {
28
- await query(statement);
29
- }, { onSuccess: undefined, begin: false }, dbConn);
30
- };
31
- exports.runClientTransactionStatement = runClientTransactionStatement;
32
- // let pool: pg.Pool | undefined;
33
- // export const runPoolTransaction = async (handler: PGTX, { onSuccess, begin = true }: RunTransactionOpts, dbConn: pg.ClientConfig) => {
34
- // pool ??= new Pool(dbConn);
35
- // const client = await pool.connect()
36
- // try {
37
- // await client.query('BEGIN')
38
- // await handler(client.query);
39
- // if(onSuccess){
40
- // await client.query(onSuccess);
41
- // }
42
- // } catch (e) {
43
- // await client.query('ROLLBACK');
44
- // throw e
45
- // } finally {
46
- // client.release();
47
- // }
48
- // }
49
- //# sourceMappingURL=runTransaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runTransaction.js","sourceRoot":"","sources":["../../lib/DboBuilder/runTransaction.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAOf,MAAM,oBAAoB,GAAG,KAAK,EACvC,OAAa,EACb,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,EAAsB,EAC/C,MAAuB,EACvB,EAAE;IACF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC;IACV,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AApBW,QAAA,oBAAoB,wBAoB/B;AAEK,MAAM,6BAA6B,GAAG,KAAK,EAChD,SAAiB,EACjB,MAAuB,EACvB,EAAE;IACF,OAAO,IAAA,4BAAoB,EACzB,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,EACD,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EACtC,MAAM,CACP,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,6BAA6B,iCAWxC;AAEF,iCAAiC;AACjC,yIAAyI;AACzI,+BAA+B;AAC/B,wCAAwC;AAExC,UAAU;AACV,kCAAkC;AAClC,mCAAmC;AACnC,qBAAqB;AACrB,uCAAuC;AACvC,QAAQ;AACR,kBAAkB;AAClB,sCAAsC;AACtC,cAAc;AACd,gBAAgB;AAChB,wBAAwB;AACxB,MAAM;AACN,IAAI"}
@@ -1,132 +0,0 @@
1
- import e from "express";
2
- import { AUTH_ROUTES_AND_PARAMS, AuthHandler, getLoginClientInfo, HTTPCODES } from "./AuthHandler";
3
- import { Email, SMTPConfig } from "./AuthTypes";
4
- import { getOrSetTransporter, sendEmail } from "./sendEmail";
5
- import { promises } from "node:dns";
6
-
7
- export async function setEmailProvider(this: AuthHandler, app: e.Express) {
8
- const { email, websiteUrl } = this.opts?.expressConfig?.registrations ?? {};
9
- if (!email) return;
10
- if (websiteUrl) {
11
- await checkDmarc(websiteUrl);
12
- }
13
-
14
- /**
15
- * Setup nodemailer transporters
16
- */
17
- if (email.signupType === "withPassword") {
18
- if (email.emailConfirmation) {
19
- tryGetTransporter(email.emailConfirmation.smtp);
20
- }
21
- } else {
22
- tryGetTransporter(email.emailMagicLink.smtp);
23
- }
24
-
25
- app.post(AUTH_ROUTES_AND_PARAMS.emailSignup, async (req, res) => {
26
- const { username, password } = req.body;
27
- let validationError = "";
28
- if (typeof username !== "string") {
29
- validationError = "Invalid username";
30
- }
31
- if (email.signupType === "withPassword") {
32
- const { minPasswordLength = 8 } = email;
33
- if (typeof password !== "string") {
34
- validationError = "Invalid password";
35
- } else if (password.length < minPasswordLength) {
36
- validationError = `Password must be at least ${minPasswordLength} characters long`;
37
- }
38
- }
39
- if (validationError) {
40
- res.status(HTTPCODES.AUTH_ERROR).json({ success: false, error: validationError });
41
- return;
42
- }
43
- try {
44
- const { httpReq, ...clientInfo } = getLoginClientInfo({ httpReq: req });
45
- let emailMessage: undefined | { message: Email; smtp: SMTPConfig };
46
- if (email.signupType === "withPassword") {
47
- if (email.emailConfirmation) {
48
- const { onSend, smtp } = email.emailConfirmation;
49
- const message = await onSend({
50
- email: username,
51
- password,
52
- confirmationUrlPath: `${websiteUrl}${AUTH_ROUTES_AND_PARAMS.confirmEmail}`,
53
- clientInfo,
54
- req: httpReq,
55
- });
56
- emailMessage = { message: { ...message, to: username }, smtp };
57
- }
58
- } else {
59
- const { emailMagicLink } = email;
60
- const message = await emailMagicLink.onSend({
61
- email: username,
62
- magicLinkPath: `${websiteUrl}${AUTH_ROUTES_AND_PARAMS.magicLinksRoute}`,
63
- clientInfo,
64
- req: httpReq,
65
- });
66
- emailMessage = {
67
- message: { ...message, to: username },
68
- smtp: emailMagicLink.smtp,
69
- };
70
- }
71
-
72
- if (emailMessage) {
73
- await sendEmail(emailMessage.smtp, emailMessage.message);
74
- res.json({
75
- success: true,
76
- message:
77
- email.signupType === "withPassword" ?
78
- `We've sent a confirmation email to ${emailMessage.message.to}. Please check your inbox (and your spam folder) for a message from us.`
79
- : "Email sent",
80
- });
81
- }
82
- } catch {
83
- res.status(HTTPCODES.AUTH_ERROR).json({ success: false, error: "Failed to send email" });
84
- }
85
- });
86
-
87
- if (email.signupType === "withPassword" && email.emailConfirmation) {
88
- app.get(AUTH_ROUTES_AND_PARAMS.confirmEmailExpressRoute, async (req, res) => {
89
- const { id } = req.params ?? {};
90
- try {
91
- if (!id || typeof id !== "string") {
92
- throw new Error("Invalid confirmation code");
93
- }
94
- const { httpReq, ...clientInfo } = getLoginClientInfo({ httpReq: req });
95
- await email.emailConfirmation?.onConfirmed({
96
- confirmationCode: id,
97
- clientInfo,
98
- req: httpReq,
99
- });
100
- res.json({ success: true, message: "Email confirmed" });
101
- } catch (_e) {
102
- res.status(HTTPCODES.AUTH_ERROR).json({ success: false, error: "Failed to confirm email" });
103
- }
104
- });
105
- }
106
- }
107
-
108
- const checkDmarc = async (websiteUrl: string) => {
109
- const { host, hostname } = new URL(websiteUrl);
110
- const ignoredHosts = ["localhost", "127.0.0.1"];
111
- if (!hostname || ignoredHosts.includes(hostname)) {
112
- return;
113
- }
114
- const dmarc = await promises.resolveTxt(`_dmarc.${host}`);
115
- const dmarkTxt = dmarc[0]?.[0];
116
- if (
117
- !dmarkTxt?.includes("v=DMARC1") ||
118
- (!dmarkTxt?.includes("p=reject") && !dmarkTxt?.includes("p=quarantine"))
119
- ) {
120
- throw new Error("DMARC not set to reject/quarantine");
121
- } else {
122
- console.log("DMARC set to reject");
123
- }
124
- };
125
-
126
- const tryGetTransporter = (smtp: SMTPConfig) => {
127
- try {
128
- getOrSetTransporter(smtp);
129
- } catch (err) {
130
- console.error("Failed to set email transporter", err);
131
- }
132
- };
@@ -1,27 +0,0 @@
1
- import { isEmpty } from "prostgles-types";
2
- import type { Filter } from "../DboBuilderTypes";
3
- import type { SelectItemValidated } from "./QueryBuilder";
4
- import { parseFilterItem } from "../../Filtering";
5
-
6
- type Args = {
7
- having: Filter | undefined;
8
- select: SelectItemValidated[];
9
- tableAlias: string | undefined;
10
- filterFieldNames: string[];
11
- };
12
- export const prepareHaving = ({
13
- having,
14
- select,
15
- tableAlias,
16
- filterFieldNames,
17
- }: Args) => {
18
- if (!having || isEmpty(having)) return "";
19
-
20
- const havingStr = parseFilterItem({
21
- filter: having,
22
- select,
23
- tableAlias,
24
- allowedColumnNames: filterFieldNames,
25
- });
26
- return havingStr;
27
- };
@@ -1,61 +0,0 @@
1
- import * as pg from "pg";
2
- const { Client } = pg;
3
-
4
- export type PGTX = (query: pg.Client["query"]) => Promise<void>;
5
- export type RunTransactionOpts = {
6
- begin?: boolean;
7
- onSuccess: "COMMIT" | "ROLLBACK" | undefined;
8
- };
9
- export const runClientTransaction = async (
10
- handler: PGTX,
11
- { onSuccess, begin = true }: RunTransactionOpts,
12
- dbConn: pg.ClientConfig,
13
- ) => {
14
- const client = new Client(dbConn);
15
- try {
16
- if (begin) {
17
- await client.query("BEGIN");
18
- }
19
- await handler(client.query);
20
- if (onSuccess) {
21
- await client.query(onSuccess);
22
- }
23
- } catch (e) {
24
- await client.query("ROLLBACK");
25
- throw e;
26
- } finally {
27
- client.end();
28
- }
29
- };
30
-
31
- export const runClientTransactionStatement = async (
32
- statement: string,
33
- dbConn: pg.ClientConfig,
34
- ) => {
35
- return runClientTransaction(
36
- async (query) => {
37
- await query(statement);
38
- },
39
- { onSuccess: undefined, begin: false },
40
- dbConn,
41
- );
42
- };
43
-
44
- // let pool: pg.Pool | undefined;
45
- // export const runPoolTransaction = async (handler: PGTX, { onSuccess, begin = true }: RunTransactionOpts, dbConn: pg.ClientConfig) => {
46
- // pool ??= new Pool(dbConn);
47
- // const client = await pool.connect()
48
-
49
- // try {
50
- // await client.query('BEGIN')
51
- // await handler(client.query);
52
- // if(onSuccess){
53
- // await client.query(onSuccess);
54
- // }
55
- // } catch (e) {
56
- // await client.query('ROLLBACK');
57
- // throw e
58
- // } finally {
59
- // client.release();
60
- // }
61
- // }
@@ -1,3 +0,0 @@
1
- // export const createSchemaWatchEventTrigger = () => {
2
-
3
- // }