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
- getKeys,
4
- InsertParams,
5
- isDefined,
6
- isObject,
7
- } from "prostgles-types";
1
+ import { AnyObject, getKeys, InsertParams, isDefined, isObject } from "prostgles-types";
8
2
  import { LocalParams, TableHandlers } from "./DboBuilder";
9
3
  import { TableRule } from "../PublishParser/PublishParser";
10
4
  import { omitKeys } from "../PubSubManager/PubSubManager";
@@ -22,7 +16,7 @@ type InsertNestedRecordsArgs = {
22
16
  */
23
17
  export async function insertNestedRecords(
24
18
  this: TableHandler,
25
- { data, param2, tableRules, localParams = {} }: InsertNestedRecordsArgs,
19
+ { data, param2, tableRules, localParams = {} }: InsertNestedRecordsArgs
26
20
  ): Promise<{
27
21
  data?: AnyObject | AnyObject[];
28
22
  insertResult?: AnyObject | AnyObject[];
@@ -55,28 +49,25 @@ export async function insertNestedRecords(
55
49
  * Nested insert is not allowed for the file table
56
50
  * */
57
51
  const isMultiInsert = Array.isArray(data);
58
- const hasNestedInserts = this.is_media
59
- ? false
60
- : (isMultiInsert ? data : [data]).some(
61
- (d) =>
62
- getExtraKeys(d).length || getReferenceColumnInserts(this, d).length,
63
- );
52
+ const hasNestedInserts =
53
+ this.is_media ? false : (
54
+ (isMultiInsert ? data : [data]).some(
55
+ (d) => getExtraKeys(d).length || getReferenceColumnInserts(this, d).length
56
+ )
57
+ );
64
58
 
65
59
  /**
66
60
  * Make sure nested insert uses a transaction
67
61
  */
68
62
  const dbTX = this.getFinalDBtx(localParams);
69
- const t = localParams?.tx?.t || this.tx?.t;
63
+ const t = localParams.tx?.t || this.tx?.t;
70
64
  if (hasNestedInserts && (!dbTX || !t)) {
71
65
  return {
72
66
  insertResult: await this.dboBuilder.getTX((dbTX, _t) =>
73
- (dbTX[this.name] as TableHandler).insert(
74
- data,
75
- param2,
76
- undefined,
77
- tableRules,
78
- { tx: { dbTX, t: _t }, ...localParams },
79
- ),
67
+ (dbTX[this.name] as TableHandler).insert(data, param2, undefined, tableRules, {
68
+ tx: { dbTX, t: _t },
69
+ ...localParams,
70
+ })
80
71
  ),
81
72
  };
82
73
  }
@@ -114,7 +105,7 @@ export async function insertNestedRecords(
114
105
  if (colInserts.length) {
115
106
  for await (const colInsert of colInsertsResult) {
116
107
  const newLocalParams: LocalParams = {
117
- ...(localParams ?? {}),
108
+ ...localParams,
118
109
  nestedInsert: {
119
110
  depth: (localParams.nestedInsert?.depth ?? 0) + 1,
120
111
  previousData: rootData,
@@ -127,7 +118,7 @@ export async function insertNestedRecords(
127
118
  dbTX,
128
119
  newLocalParams,
129
120
  colInsert.tableName,
130
- row[colInsert.col],
121
+ row[colInsert.col]
131
122
  );
132
123
  if (
133
124
  !Array.isArray(colRows) ||
@@ -135,8 +126,7 @@ export async function insertNestedRecords(
135
126
  [null, undefined].includes(colRows[0]![colInsert.fcol])
136
127
  ) {
137
128
  throw new Error(
138
- "Could not do nested column insert: Unexpected return " +
139
- JSON.stringify(colRows),
129
+ "Could not do nested column insert: Unexpected return " + JSON.stringify(colRows)
140
130
  );
141
131
  }
142
132
  colInsert.inserted = colRows;
@@ -151,7 +141,7 @@ export async function insertNestedRecords(
151
141
  { returning: "*" },
152
142
  undefined,
153
143
  tableRules,
154
- localParams,
144
+ localParams
155
145
  );
156
146
  let returnData: AnyObject | undefined;
157
147
  const returning = param2?.returning;
@@ -159,16 +149,15 @@ export async function insertNestedRecords(
159
149
  returnData = {};
160
150
  const returningItems = await this.prepareReturning(
161
151
  returning,
162
- this.parseFieldFilter(tableRules?.insert?.returningFields),
152
+ this.parseFieldFilter(tableRules?.insert?.returningFields)
163
153
  );
164
154
  returningItems
165
155
  .filter((s) => s.selected)
166
156
  .map((rs) => {
167
- const colInsertResult = colInsertsResult.find(
168
- ({ col }) => col === rs.columnName,
169
- );
170
- const inserted = colInsertResult?.singleInsert
171
- ? colInsertResult.inserted?.[0]
157
+ const colInsertResult = colInsertsResult.find(({ col }) => col === rs.columnName);
158
+ const inserted =
159
+ colInsertResult?.singleInsert ?
160
+ colInsertResult.inserted?.[0]
172
161
  : colInsertResult?.inserted;
173
162
  returnData![rs.alias] = inserted ?? fullRootResult[rs.alias];
174
163
  });
@@ -176,47 +165,27 @@ export async function insertNestedRecords(
176
165
 
177
166
  await Promise.all(
178
167
  extraKeys.map(async (targetTable) => {
179
- const childDataItems = Array.isArray(row[targetTable])
180
- ? row[targetTable]
181
- : [row[targetTable]];
182
-
183
- const childInsert = async (
184
- cdata: AnyObject | AnyObject[],
185
- tableName: string,
186
- ) => {
187
- return referencedInsert(
188
- this,
189
- dbTX,
190
- localParams,
191
- tableName,
192
- cdata,
193
- );
168
+ const childDataItems =
169
+ Array.isArray(row[targetTable]) ? row[targetTable] : [row[targetTable]];
170
+
171
+ const childInsert = async (cdata: AnyObject | AnyObject[], tableName: string) => {
172
+ return referencedInsert(this, dbTX, localParams, tableName, cdata);
194
173
  };
195
174
 
196
175
  const joinPath = await getJoinPath(this, targetTable);
197
176
 
198
177
  const { path } = joinPath;
199
178
  const [tbl1, tbl2, tbl3] = path;
200
- targetTableRules = await getInsertTableRules(
201
- this,
202
- targetTable,
203
- localParams,
204
- ); // tbl3
179
+ targetTableRules = await getInsertTableRules(this, targetTable, localParams);
205
180
 
206
181
  const cols2 = this.dboBuilder.dbo[tbl2!]!.columns || [];
207
- if (!this.dboBuilder.dbo[tbl2!])
208
- throw "Invalid/disallowed table: " + tbl2;
209
- const colsRefT1 = cols2?.filter((c) =>
210
- c.references?.some(
211
- (rc) => rc.cols.length === 1 && rc.ftable === tbl1,
212
- ),
182
+ if (!this.dboBuilder.dbo[tbl2!]) throw "Invalid/disallowed table: " + tbl2;
183
+ const colsRefT1 = cols2.filter((c) =>
184
+ c.references?.some((rc) => rc.cols.length === 1 && rc.ftable === tbl1)
213
185
  );
214
186
 
215
187
  if (!path.length) {
216
- throw (
217
- "Nested inserts join path not found for " +
218
- [this.name, targetTable]
219
- );
188
+ throw "Nested inserts join path not found for " + [this.name, targetTable];
220
189
  } else if (path.length === 2) {
221
190
  if (targetTable !== tbl2) throw "Did not expect this";
222
191
 
@@ -233,32 +202,26 @@ export async function insertNestedRecords(
233
202
  });
234
203
  return result;
235
204
  }),
236
- targetTable,
205
+ targetTable
237
206
  );
238
207
  } else if (path.length === 3) {
239
208
  if (targetTable !== tbl3) throw "Did not expect this";
240
- const colsRefT3 = cols2?.filter((c) =>
241
- c.references?.some(
242
- (rc) => rc.cols.length === 1 && rc.ftable === tbl3,
243
- ),
209
+ const colsRefT3 = cols2.filter((c) =>
210
+ c.references?.some((rc) => rc.cols.length === 1 && rc.ftable === tbl3)
244
211
  );
245
212
  if (!colsRefT1.length || !colsRefT3.length)
246
213
  throw "Incorrectly referenced or missing columns for nested insert";
247
214
 
248
- const fileTable =
249
- this.dboBuilder.prostgles.fileManager?.tableName;
215
+ const fileTable = this.dboBuilder.prostgles.fileManager?.tableName;
250
216
  if (targetTable !== fileTable) {
251
217
  throw "Only media allowed to have nested inserts more than 2 tables apart";
252
218
  }
253
219
 
254
220
  /* We expect tbl2 to have only 2 columns (media_id and foreign_id) */
255
221
  if (
256
- !cols2 ||
257
222
  !(
258
- cols2.filter((c) => c.references?.[0]?.ftable === fileTable)
259
- .length === 1 &&
260
- cols2.filter((c) => c.references?.[0]?.ftable === _this.name)
261
- .length === 1
223
+ cols2.filter((c) => c.references?.[0]?.ftable === fileTable).length === 1 &&
224
+ cols2.filter((c) => c.references?.[0]?.ftable === _this.name).length === 1
262
225
  )
263
226
  ) {
264
227
  console.log({
@@ -286,32 +249,23 @@ export async function insertNestedRecords(
286
249
  tbl2Row[col.name] = t3Child[col.references![0]!.fcols[0]!];
287
250
  });
288
251
  colsRefT1.map((col) => {
289
- tbl2Row[col.name] =
290
- fullRootResult[col.references![0]!.fcols[0]!];
252
+ tbl2Row[col.name] = fullRootResult[col.references![0]!.fcols[0]!];
291
253
  });
292
254
 
293
255
  await childInsert(tbl2Row, tbl2!); //.then(() => {});
294
- }),
256
+ })
295
257
  );
296
258
  } else {
297
- console.error(
298
- JSON.stringify(
299
- { path, thisTable: this.name, targetTable },
300
- null,
301
- 2,
302
- ),
303
- );
259
+ console.error(JSON.stringify({ path, thisTable: this.name, targetTable }, null, 2));
304
260
  throw "Unexpected path for Nested inserts";
305
261
  }
306
262
 
307
263
  /* Return also the nested inserted data */
308
- if (targetTableRules && insertedChildren?.length && returning) {
264
+ if (insertedChildren.length && returning) {
309
265
  const targetTableHandler = dbTX![targetTable] as TableHandler;
310
266
  const targetReturning = await targetTableHandler.prepareReturning(
311
267
  "*",
312
- targetTableHandler.parseFieldFilter(
313
- targetTableRules?.insert?.returningFields,
314
- ),
268
+ targetTableHandler.parseFieldFilter(targetTableRules.insert?.returningFields)
315
269
  );
316
270
  const clientTargetInserts = insertedChildren.map((d) => {
317
271
  const _d = { ...d };
@@ -323,18 +277,16 @@ export async function insertNestedRecords(
323
277
  });
324
278
 
325
279
  returnData![targetTable] =
326
- clientTargetInserts.length === 1
327
- ? clientTargetInserts[0]
328
- : clientTargetInserts;
280
+ clientTargetInserts.length === 1 ? clientTargetInserts[0] : clientTargetInserts;
329
281
  }
330
- }),
282
+ })
331
283
  );
332
284
 
333
285
  return returnData;
334
286
  }
335
287
 
336
288
  return row;
337
- }),
289
+ })
338
290
  );
339
291
 
340
292
  const result = isMultiInsert ? _data : _data[0];
@@ -347,38 +299,31 @@ export async function insertNestedRecords(
347
299
  export const getInsertTableRules = async (
348
300
  tableHandler: TableHandler,
349
301
  targetTable: string,
350
- localParams: LocalParams,
302
+ localParams: LocalParams
351
303
  ) => {
352
- const childRules =
353
- await tableHandler.dboBuilder.publishParser?.getValidatedRequestRuleWusr({
354
- tableName: targetTable,
355
- command: "insert",
356
- localParams,
357
- });
358
- if (!childRules || !childRules.insert)
359
- throw "Dissallowed nested insert into table " + childRules;
304
+ const childRules = await tableHandler.dboBuilder.publishParser?.getValidatedRequestRuleWusr({
305
+ tableName: targetTable,
306
+ command: "insert",
307
+ localParams,
308
+ });
309
+ if (!childRules || !childRules.insert) throw "Dissallowed nested insert into table " + childRules;
360
310
  return childRules;
361
311
  };
362
312
 
363
313
  const getJoinPath = async (
364
314
  tableHandler: TableHandler,
365
- targetTable: string,
315
+ targetTable: string
366
316
  ): Promise<{
367
317
  t1: string;
368
318
  t2: string;
369
319
  path: string[];
370
320
  }> => {
371
- const jp = tableHandler.dboBuilder.getShortestJoinPath(
372
- tableHandler,
373
- targetTable,
374
- );
321
+ const jp = tableHandler.dboBuilder.getShortestJoinPath(tableHandler, targetTable);
375
322
  if (!jp) {
376
323
  const pref =
377
- tableHandler.dboBuilder.prostgles.opts.joins !== "inferred"
378
- ? "Joins are not inferred! "
379
- : "";
324
+ tableHandler.dboBuilder.prostgles.opts.joins !== "inferred" ? "Joins are not inferred! " : "";
380
325
  throw new Error(
381
- `${pref}Could not find a single join path for the nested data ( sourceTable: ${tableHandler.name} targetTable: ${targetTable} ) `,
326
+ `${pref}Could not find a single join path for the nested data ( sourceTable: ${tableHandler.name} targetTable: ${targetTable} ) `
382
327
  );
383
328
  }
384
329
  return jp;
@@ -389,27 +334,16 @@ const referencedInsert = async (
389
334
  dbTX: TableHandlers | undefined,
390
335
  localParams: LocalParams,
391
336
  targetTable: string,
392
- targetData: AnyObject | AnyObject[],
337
+ targetData: AnyObject | AnyObject[]
393
338
  ): Promise<AnyObject[]> => {
394
- // const thisInfo = await tableHandler.getInfo();
395
339
  await getJoinPath(tableHandler, targetTable);
396
340
 
397
- if (
398
- !targetData ||
399
- !dbTX?.[targetTable] ||
400
- !("insert" in dbTX[targetTable]!)
401
- ) {
402
- throw new Error(
403
- "childInsertErr: Table handler missing for referenced table: " +
404
- targetTable,
405
- );
341
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
342
+ if (!targetData || !dbTX?.[targetTable] || !("insert" in dbTX[targetTable]!)) {
343
+ throw new Error("childInsertErr: Table handler missing for referenced table: " + targetTable);
406
344
  }
407
345
 
408
- const childRules = await getInsertTableRules(
409
- tableHandler,
410
- targetTable,
411
- localParams,
412
- );
346
+ const childRules = await getInsertTableRules(tableHandler, targetTable, localParams);
413
347
 
414
348
  // if (thisInfo.has_media === "one" && thisInfo.media_table_name === targetTable && Array.isArray(targetData) && targetData.length > 1) {
415
349
  // throw "Constraint check fail: Cannot insert more than one record into " + JSON.stringify(targetTable);
@@ -420,8 +354,8 @@ const referencedInsert = async (
420
354
  .insert(m, { returning: "*" }, undefined, childRules, localParams)
421
355
  .catch((e) => {
422
356
  return Promise.reject(e);
423
- }),
424
- ),
357
+ })
358
+ )
425
359
  );
426
360
  };
427
361
 
@@ -443,13 +377,13 @@ type ReferenceColumnInsert<ExpectSingleInsert> = {
443
377
  export const getReferenceColumnInserts = <ExpectSingleInsert extends boolean>(
444
378
  tableHandler: TableHandler,
445
379
  parentRow: AnyObject,
446
- expectSingleInsert?: ExpectSingleInsert,
380
+ expectSingleInsert?: ExpectSingleInsert
447
381
  ): ReferenceColumnInsert<ExpectSingleInsert>[] => {
448
382
  return Object.entries(parentRow)
449
383
  .map(([insertedFieldName, insertedFieldValue]) => {
450
384
  if (insertedFieldValue && isObject(insertedFieldValue)) {
451
385
  const insertedRefCol = tableHandler.columns.find(
452
- (c) => c.name === insertedFieldName && c.references?.length,
386
+ (c) => c.name === insertedFieldName && c.references?.length
453
387
  );
454
388
  if (!insertedRefCol) return undefined;
455
389
  return {
@@ -466,9 +400,7 @@ export const getReferenceColumnInserts = <ExpectSingleInsert extends boolean>(
466
400
  throw "Cannot do a nested insert on column that references multiple tables";
467
401
  }
468
402
 
469
- const referencesMultipleColumns = insertedRefColRef?.some(
470
- (refs) => refs.fcols.length !== 1,
471
- );
403
+ const referencesMultipleColumns = insertedRefColRef.some((refs) => refs.fcols.length !== 1);
472
404
  if (referencesMultipleColumns) {
473
405
  throw "Cannot do a nested insert on multi-column foreign key reference";
474
406
  }
@@ -53,7 +53,7 @@ export async function parseUpdateRules(
53
53
  tableRules.update);
54
54
 
55
55
  returningFields =
56
- tableRules.update.returningFields ?? tableRules?.select?.fields ?? "";
56
+ tableRules.update.returningFields ?? tableRules.select?.fields ?? "";
57
57
 
58
58
  if (!returningFields && params?.returning) {
59
59
  throw "You are not allowed to return any fields from the update";
@@ -9,15 +9,11 @@ type Result = {
9
9
  joins: Join[];
10
10
  shortestJoinPaths: JoinPaths;
11
11
  };
12
- export async function prepareShortestJoinPaths(
13
- dboBuilder: DboBuilder,
14
- ): Promise<Result> {
12
+ export async function prepareShortestJoinPaths(dboBuilder: DboBuilder): Promise<Result> {
15
13
  if (dboBuilder.prostgles.opts.joins) {
16
14
  let joinConfig = await dboBuilder.prostgles.opts.joins;
17
15
  if (!dboBuilder.tablesOrViews) {
18
- throw new Error(
19
- "Could not create join config. this.tablesOrViews missing",
20
- );
16
+ throw new Error("Could not create join config. this.tablesOrViews missing");
21
17
  }
22
18
 
23
19
  const inferredJoins = await getInferredJoins2(dboBuilder.tablesOrViews);
@@ -27,14 +23,13 @@ export async function prepareShortestJoinPaths(
27
23
  } else if (Array.isArray(joinConfig)) {
28
24
  const joinTables = joinConfig.map((j) => j.tables).flat();
29
25
  joinConfig = joinConfig.concat(
30
- inferredJoins.filter(
31
- (j) => !j.tables.find((t) => joinTables.includes(t)),
32
- ),
26
+ inferredJoins.filter((j) => !j.tables.find((t) => joinTables.includes(t)))
33
27
  );
28
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
34
29
  } else if (joinConfig) {
35
30
  throw new Error(
36
31
  "Unexpected joins init param. Expecting 'inferred' OR joinConfig but got: " +
37
- JSON.stringify(joinConfig),
32
+ JSON.stringify(joinConfig)
38
33
  );
39
34
  }
40
35
  const joins = JSON.parse(JSON.stringify(joinConfig)) as Join[];
@@ -44,9 +39,7 @@ export async function prepareShortestJoinPaths(
44
39
  const tovNames = dboBuilder.tablesOrViews!.map((t) => t.name);
45
40
 
46
41
  // 2 find incorrect tables
47
- const missing = joins
48
- .flatMap((j) => j.tables)
49
- .find((t) => !tovNames.includes(t));
42
+ const missing = joins.flatMap((j) => j.tables).find((t) => !tovNames.includes(t));
50
43
  if (missing) {
51
44
  throw "Table not found: " + missing;
52
45
  }
@@ -67,10 +60,8 @@ export async function prepareShortestJoinPaths(
67
60
 
68
61
  const tov = dboBuilder.tablesOrViews!.find((_t) => _t.name === t);
69
62
  if (!tov) throw "Table not found: " + t;
70
- const m1 = f.filter(
71
- (k) => !tov!.columns.map((c) => c.name).includes(k),
72
- );
73
- if (m1 && m1.length) {
63
+ const m1 = f.filter((k) => !tov!.columns.map((c) => c.name).includes(k));
64
+ if (m1.length) {
74
65
  throw `Table ${t}(${tov.columns.map((c) => c.name).join()}) has no fields named: ${m1.join()}`;
75
66
  }
76
67
  });
@@ -79,23 +70,13 @@ export async function prepareShortestJoinPaths(
79
70
 
80
71
  // 4 find incorrect/missing join types
81
72
  const expected_types =
82
- " \n\n-> Expecting: " +
83
- JOIN_TYPES.map((t) => JSON.stringify(t)).join(` | `);
73
+ " \n\n-> Expecting: " + JOIN_TYPES.map((t) => JSON.stringify(t)).join(` | `);
74
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
84
75
  const mt = joins.find((j) => !j.type);
85
- if (mt)
86
- throw (
87
- "Join type missing for: " +
88
- JSON.stringify(mt, null, 2) +
89
- expected_types
90
- );
76
+ if (mt) throw "Join type missing for: " + JSON.stringify(mt, null, 2) + expected_types;
91
77
 
92
78
  const it = joins.find((j) => !JOIN_TYPES.includes(j.type));
93
- if (it)
94
- throw (
95
- "Incorrect join type for: " +
96
- JSON.stringify(it, null, 2) +
97
- expected_types
98
- );
79
+ if (it) throw "Incorrect join type for: " + JSON.stringify(it, null, 2) + expected_types;
99
80
  } catch (e) {
100
81
  const errMsg =
101
82
  ((joinConfig as any) === "inferred" ? "INFERRED " : "") +
@@ -121,15 +102,15 @@ export async function prepareShortestJoinPaths(
121
102
  });
122
103
  const tables = Array.from(new Set(joins.flatMap((t) => t.tables)));
123
104
  const shortestJoinPaths: JoinPaths = [];
124
- tables.forEach((t1, i1) => {
125
- tables.forEach((t2, i2) => {
105
+ tables.forEach((t1) => {
106
+ tables.forEach((t2) => {
126
107
  /** Prevent recursion */
127
108
  if (
128
109
  t1 === t2 ||
129
110
  shortestJoinPaths.some((jp) => {
130
111
  if (arrayValuesMatch([jp.t1, jp.t2], [t1, t2])) {
131
112
  const spath = findShortestPath(joinGraph, t1, t2);
132
- if (spath && arrayValuesMatch(spath.path, jp.path)) {
113
+ if (arrayValuesMatch(spath.path, jp.path)) {
133
114
  return true;
134
115
  }
135
116
  }
@@ -139,18 +120,14 @@ export async function prepareShortestJoinPaths(
139
120
  }
140
121
 
141
122
  const spath = findShortestPath(joinGraph, t1, t2);
142
- if (!(spath && spath.distance < Infinity)) return;
123
+ if (!(spath.distance < Infinity)) return;
143
124
 
144
- const existing1 = shortestJoinPaths.find(
145
- (j) => j.t1 === t1 && j.t2 === t2,
146
- );
125
+ const existing1 = shortestJoinPaths.find((j) => j.t1 === t1 && j.t2 === t2);
147
126
  if (!existing1) {
148
127
  shortestJoinPaths.push({ t1, t2, path: spath.path.slice() });
149
128
  }
150
129
 
151
- const existing2 = shortestJoinPaths.find(
152
- (j) => j.t2 === t1 && j.t1 === t2,
153
- );
130
+ const existing2 = shortestJoinPaths.find((j) => j.t2 === t1 && j.t1 === t2);
154
131
  if (!existing2) {
155
132
  shortestJoinPaths.push({
156
133
  t1: t2,
@@ -183,17 +160,12 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
183
160
  t1: string,
184
161
  t2: string,
185
162
  cols: { col1: string; col2: string }[],
186
- type: Join["type"],
163
+ type: Join["type"]
187
164
  ) => {
188
- const existingIdx = joins.findIndex((j) =>
189
- arrayValuesMatch(j.tables.slice(0), [t1, t2]),
190
- );
165
+ const existingIdx = joins.findIndex((j) => arrayValuesMatch(j.tables.slice(0), [t1, t2]));
191
166
  const existing = joins[existingIdx];
192
167
  const normalCond = cols.reduce((a, v) => ({ ...a, [v.col1]: v.col2 }), {});
193
- const revertedCond = cols.reduce(
194
- (a, v) => ({ ...a, [v.col2]: v.col1 }),
195
- {},
196
- );
168
+ const revertedCond = cols.reduce((a, v) => ({ ...a, [v.col2]: v.col1 }), {});
197
169
  if (existing) {
198
170
  const isLTR = existing.tables[0] === t1;
199
171
  const cond = isLTR ? normalCond : revertedCond;
@@ -202,11 +174,7 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
202
174
  // const fixedType = isLTR? type : type.split("").reverse().join("") as Join["type"];
203
175
 
204
176
  /** Avoid duplicates */
205
- if (
206
- !existing.on.some(
207
- (_cond) => JSON.stringify(_cond) === JSON.stringify(cond),
208
- )
209
- ) {
177
+ if (!existing.on.some((_cond) => JSON.stringify(_cond) === JSON.stringify(cond))) {
210
178
  existing.on.push(cond);
211
179
  joins[existingIdx] = existing;
212
180
  }
@@ -230,10 +198,7 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
230
198
  const ftablePkeys = schema
231
199
  .find((_tov) => _tov.name === r.ftable)
232
200
  ?.columns.filter((fcol) => fcol.is_pkey);
233
- if (
234
- ftablePkeys?.length &&
235
- ftablePkeys.every((fkey) => r.fcols.includes(fkey.name))
236
- ) {
201
+ if (ftablePkeys?.length && ftablePkeys.every((fkey) => r.fcols.includes(fkey.name))) {
237
202
  type = "one-one";
238
203
  }
239
204
  upsertJoin(tov.name, r.ftable, joinCols, type);