prostgles-server 4.2.183 → 4.2.185

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/.github/workflows/main.yml +15 -15
  2. package/.prettierignore +2 -0
  3. package/README.md +1 -1
  4. package/dist/Auth/AuthHandler.d.ts +1 -1
  5. package/dist/Auth/AuthHandler.d.ts.map +1 -1
  6. package/dist/Auth/AuthHandler.js +64 -32
  7. package/dist/Auth/AuthHandler.js.map +1 -1
  8. package/dist/Auth/AuthTypes.d.ts +15 -1
  9. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  10. package/dist/Auth/getSafeReturnURL.d.ts.map +1 -1
  11. package/dist/Auth/getSafeReturnURL.js.map +1 -1
  12. package/dist/Auth/sendEmail.d.ts.map +1 -1
  13. package/dist/Auth/sendEmail.js +6 -6
  14. package/dist/Auth/sendEmail.js.map +1 -1
  15. package/dist/Auth/setAuthProviders.d.ts +1 -1
  16. package/dist/Auth/setAuthProviders.d.ts.map +1 -1
  17. package/dist/Auth/setAuthProviders.js +15 -8
  18. package/dist/Auth/setAuthProviders.js.map +1 -1
  19. package/dist/Auth/setEmailProvider.d.ts.map +1 -1
  20. package/dist/Auth/setEmailProvider.js +23 -4
  21. package/dist/Auth/setEmailProvider.js.map +1 -1
  22. package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
  23. package/dist/Auth/setupAuthRoutes.js +27 -9
  24. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  25. package/dist/DBEventsManager.d.ts.map +1 -1
  26. package/dist/DBEventsManager.js +24 -19
  27. package/dist/DBEventsManager.js.map +1 -1
  28. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  29. package/dist/DBSchemaBuilder.js +18 -5
  30. package/dist/DBSchemaBuilder.js.map +1 -1
  31. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  32. package/dist/DboBuilder/DboBuilder.js +7 -2
  33. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  34. package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
  35. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  36. package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
  37. package/dist/DboBuilder/QueryBuilder/Functions.d.ts +2 -2
  38. package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  39. package/dist/DboBuilder/QueryBuilder/Functions.js +293 -173
  40. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  41. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +2 -2
  42. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  43. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +52 -29
  44. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  45. package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
  46. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +51 -32
  47. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
  48. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  49. package/dist/DboBuilder/QueryBuilder/getNewQuery.js +48 -25
  50. package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
  51. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
  52. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
  53. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +32 -23
  54. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
  55. package/dist/DboBuilder/QueryStreamer.d.ts +2 -2
  56. package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
  57. package/dist/DboBuilder/QueryStreamer.js +68 -23
  58. package/dist/DboBuilder/QueryStreamer.js.map +1 -1
  59. package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
  60. package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
  61. package/dist/DboBuilder/TableHandler/DataValidator.js +79 -43
  62. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  63. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  64. package/dist/DboBuilder/TableHandler/TableHandler.js +39 -15
  65. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  66. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  67. package/dist/DboBuilder/TableHandler/delete.js +44 -13
  68. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  69. package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
  70. package/dist/DboBuilder/TableHandler/insert.js +81 -22
  71. package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
  72. package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -1
  73. package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
  74. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -1
  75. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
  76. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +7 -4
  77. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
  78. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  79. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -5
  80. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  81. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  82. package/dist/DboBuilder/TableHandler/update.js +16 -4
  83. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  84. package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
  85. package/dist/DboBuilder/TableHandler/updateBatch.js +33 -10
  86. package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
  87. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  88. package/dist/DboBuilder/TableHandler/updateFile.js +24 -6
  89. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  90. package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
  91. package/dist/DboBuilder/TableHandler/upsert.js +22 -6
  92. package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
  93. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +5 -5
  94. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  95. package/dist/DboBuilder/ViewHandler/ViewHandler.js +64 -36
  96. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  97. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
  98. package/dist/DboBuilder/ViewHandler/count.js +21 -7
  99. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  100. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  101. package/dist/DboBuilder/ViewHandler/find.js +76 -22
  102. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  103. package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
  104. package/dist/DboBuilder/ViewHandler/getExistsCondition.js +19 -10
  105. package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
  106. package/dist/DboBuilder/ViewHandler/getExistsFilters.d.ts.map +1 -1
  107. package/dist/DboBuilder/ViewHandler/getExistsFilters.js +12 -5
  108. package/dist/DboBuilder/ViewHandler/getExistsFilters.js.map +1 -1
  109. package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
  110. package/dist/DboBuilder/ViewHandler/getInfo.js +27 -9
  111. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  112. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts +2 -2
  113. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
  114. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +42 -23
  115. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
  116. package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts.map +1 -1
  117. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js +22 -9
  118. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js.map +1 -1
  119. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts +4 -4
  120. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
  121. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +13 -11
  122. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
  123. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts +1 -1
  124. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
  125. package/dist/DboBuilder/ViewHandler/parseJoinPath.js +44 -29
  126. package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
  127. package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
  128. package/dist/DboBuilder/ViewHandler/prepareSortItems.js +36 -27
  129. package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
  130. package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
  131. package/dist/DboBuilder/ViewHandler/prepareWhere.js +16 -12
  132. package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
  133. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
  134. package/dist/DboBuilder/ViewHandler/size.js +24 -7
  135. package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
  136. package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -1
  137. package/dist/DboBuilder/ViewHandler/subscribe.js +40 -12
  138. package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
  139. package/dist/DboBuilder/ViewHandler/validateViewRules.d.ts.map +1 -1
  140. package/dist/DboBuilder/ViewHandler/validateViewRules.js +20 -5
  141. package/dist/DboBuilder/ViewHandler/validateViewRules.js.map +1 -1
  142. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  143. package/dist/DboBuilder/dboBuilderUtils.js +18 -7
  144. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  145. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  146. package/dist/DboBuilder/getColumns.js +22 -7
  147. package/dist/DboBuilder/getColumns.js.map +1 -1
  148. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  149. package/dist/DboBuilder/getCondition.js +43 -30
  150. package/dist/DboBuilder/getCondition.js.map +1 -1
  151. package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
  152. package/dist/DboBuilder/getSubscribeRelatedTables.js +38 -27
  153. package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
  154. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
  155. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +9 -9
  156. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
  157. package/dist/DboBuilder/insertNestedRecords.d.ts +3 -3
  158. package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
  159. package/dist/DboBuilder/insertNestedRecords.js +79 -44
  160. package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
  161. package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
  162. package/dist/DboBuilder/parseUpdateRules.js +38 -14
  163. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  164. package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
  165. package/dist/DboBuilder/prepareShortestJoinPaths.js +56 -31
  166. package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
  167. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  168. package/dist/DboBuilder/runSQL.js +41 -21
  169. package/dist/DboBuilder/runSQL.js.map +1 -1
  170. package/dist/DboBuilder/runTransaction.d.ts +1 -1
  171. package/dist/DboBuilder/runTransaction.d.ts.map +1 -1
  172. package/dist/DboBuilder/runTransaction.js +2 -2
  173. package/dist/DboBuilder/runTransaction.js.map +1 -1
  174. package/dist/DboBuilder/sqlErrCodeToMsg.d.ts.map +1 -1
  175. package/dist/DboBuilder/sqlErrCodeToMsg.js +297 -38
  176. package/dist/DboBuilder/sqlErrCodeToMsg.js.map +1 -1
  177. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  178. package/dist/DboBuilder/uploadFile.js +33 -9
  179. package/dist/DboBuilder/uploadFile.js.map +1 -1
  180. package/dist/Event_Trigger_Tags.d.ts +1 -1
  181. package/dist/Event_Trigger_Tags.d.ts.map +1 -1
  182. package/dist/Event_Trigger_Tags.js +1 -1
  183. package/dist/Event_Trigger_Tags.js.map +1 -1
  184. package/dist/FileManager/FileManager.d.ts.map +1 -1
  185. package/dist/FileManager/FileManager.js +6 -3
  186. package/dist/FileManager/FileManager.js.map +1 -1
  187. package/dist/FileManager/getValidatedFileType.d.ts.map +1 -1
  188. package/dist/FileManager/getValidatedFileType.js +18 -16
  189. package/dist/FileManager/getValidatedFileType.js.map +1 -1
  190. package/dist/FileManager/initFileManager.d.ts.map +1 -1
  191. package/dist/FileManager/initFileManager.js +7 -1
  192. package/dist/FileManager/initFileManager.js.map +1 -1
  193. package/dist/FileManager/upload.d.ts +1 -1
  194. package/dist/FileManager/upload.d.ts.map +1 -1
  195. package/dist/FileManager/upload.js +3 -3
  196. package/dist/FileManager/upload.js.map +1 -1
  197. package/dist/FileManager/uploadStream.d.ts +1 -1
  198. package/dist/FileManager/uploadStream.d.ts.map +1 -1
  199. package/dist/FileManager/uploadStream.js +6 -7
  200. package/dist/FileManager/uploadStream.js.map +1 -1
  201. package/dist/Filtering.d.ts +3 -3
  202. package/dist/Filtering.d.ts.map +1 -1
  203. package/dist/Filtering.js +70 -37
  204. package/dist/Filtering.js.map +1 -1
  205. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
  206. package/dist/JSONBValidation/validate_jsonb_schema_sql.js +1 -4
  207. package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -1
  208. package/dist/JSONBValidation/validation.d.ts.map +1 -1
  209. package/dist/JSONBValidation/validation.js +46 -24
  210. package/dist/JSONBValidation/validation.js.map +1 -1
  211. package/dist/Logging.d.ts +2 -2
  212. package/dist/Logging.d.ts.map +1 -1
  213. package/dist/PostgresNotifListenManager.d.ts.map +1 -1
  214. package/dist/PostgresNotifListenManager.js +20 -22
  215. package/dist/PostgresNotifListenManager.js.map +1 -1
  216. package/dist/Prostgles.d.ts +1 -1
  217. package/dist/Prostgles.d.ts.map +1 -1
  218. package/dist/Prostgles.js +37 -11
  219. package/dist/Prostgles.js.map +1 -1
  220. package/dist/ProstglesTypes.d.ts.map +1 -1
  221. package/dist/ProstglesTypes.js +6 -1
  222. package/dist/ProstglesTypes.js.map +1 -1
  223. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  224. package/dist/PubSubManager/PubSubManager.js +10 -5
  225. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  226. package/dist/PubSubManager/addSub.d.ts.map +1 -1
  227. package/dist/PubSubManager/addSub.js +4 -6
  228. package/dist/PubSubManager/addSub.js.map +1 -1
  229. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  230. package/dist/PubSubManager/addSync.js +10 -6
  231. package/dist/PubSubManager/addSync.js.map +1 -1
  232. package/dist/PubSubManager/getCreatePubSubManagerError.d.ts.map +1 -1
  233. package/dist/PubSubManager/getCreatePubSubManagerError.js +3 -1
  234. package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
  235. package/dist/PubSubManager/getPubSubManagerInitQuery.d.ts.map +1 -1
  236. package/dist/PubSubManager/getPubSubManagerInitQuery.js +8 -8
  237. package/dist/PubSubManager/getPubSubManagerInitQuery.js.map +1 -1
  238. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  239. package/dist/PubSubManager/initPubSubManager.js +7 -9
  240. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  241. package/dist/PubSubManager/notifListener.d.ts.map +1 -1
  242. package/dist/PubSubManager/notifListener.js +23 -12
  243. package/dist/PubSubManager/notifListener.js.map +1 -1
  244. package/dist/PubSubManager/orphanTriggerCheck.d.ts.map +1 -1
  245. package/dist/PubSubManager/orphanTriggerCheck.js.map +1 -1
  246. package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
  247. package/dist/PubSubManager/pushSubData.js +1 -1
  248. package/dist/PubSubManager/pushSubData.js.map +1 -1
  249. package/dist/PublishParser/PublishParser.d.ts +1 -1
  250. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  251. package/dist/PublishParser/PublishParser.js +25 -14
  252. package/dist/PublishParser/PublishParser.js.map +1 -1
  253. package/dist/PublishParser/getFileTableRules.d.ts.map +1 -1
  254. package/dist/PublishParser/getFileTableRules.js +23 -16
  255. package/dist/PublishParser/getFileTableRules.js.map +1 -1
  256. package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
  257. package/dist/PublishParser/getSchemaFromPublish.js +39 -16
  258. package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
  259. package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
  260. package/dist/PublishParser/getTableRulesWithoutFileTable.js +42 -22
  261. package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
  262. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  263. package/dist/PublishParser/publishTypesAndUtils.js +5 -1
  264. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  265. package/dist/RestApi.d.ts +1 -1
  266. package/dist/RestApi.d.ts.map +1 -1
  267. package/dist/RestApi.js +1 -1
  268. package/dist/RestApi.js.map +1 -1
  269. package/dist/SchemaWatch/SchemaWatch.d.ts +2 -2
  270. package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
  271. package/dist/SchemaWatch/SchemaWatch.js +11 -9
  272. package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
  273. package/dist/SchemaWatch/getValidatedWatchSchemaType.d.ts.map +1 -1
  274. package/dist/SchemaWatch/getValidatedWatchSchemaType.js +3 -3
  275. package/dist/SchemaWatch/getValidatedWatchSchemaType.js.map +1 -1
  276. package/dist/SchemaWatch/getWatchSchemaTagList.d.ts.map +1 -1
  277. package/dist/SchemaWatch/getWatchSchemaTagList.js +12 -6
  278. package/dist/SchemaWatch/getWatchSchemaTagList.js.map +1 -1
  279. package/dist/SyncReplication.d.ts.map +1 -1
  280. package/dist/SyncReplication.js +84 -42
  281. package/dist/SyncReplication.js.map +1 -1
  282. package/dist/TableConfig/TableConfig.d.ts +5 -5
  283. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  284. package/dist/TableConfig/TableConfig.js +18 -5
  285. package/dist/TableConfig/TableConfig.js.map +1 -1
  286. package/dist/TableConfig/getColumnDefinitionQuery.d.ts +2 -2
  287. package/dist/TableConfig/getColumnDefinitionQuery.d.ts.map +1 -1
  288. package/dist/TableConfig/getColumnDefinitionQuery.js +20 -9
  289. package/dist/TableConfig/getColumnDefinitionQuery.js.map +1 -1
  290. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts +3 -3
  291. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
  292. package/dist/TableConfig/getConstraintDefinitionQueries.js +12 -7
  293. package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
  294. package/dist/TableConfig/getFutureTableSchema.d.ts +1 -1
  295. package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
  296. package/dist/TableConfig/getFutureTableSchema.js +6 -4
  297. package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
  298. package/dist/TableConfig/getPGIndexes.d.ts.map +1 -1
  299. package/dist/TableConfig/getPGIndexes.js.map +1 -1
  300. package/dist/TableConfig/getTableColumnQueries.d.ts +1 -1
  301. package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
  302. package/dist/TableConfig/getTableColumnQueries.js +38 -19
  303. package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
  304. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  305. package/dist/TableConfig/initTableConfig.js +91 -43
  306. package/dist/TableConfig/initTableConfig.js.map +1 -1
  307. package/dist/index.d.ts.map +1 -1
  308. package/dist/index.js.map +1 -1
  309. package/dist/initProstgles.d.ts.map +1 -1
  310. package/dist/initProstgles.js +14 -10
  311. package/dist/initProstgles.js.map +1 -1
  312. package/dist/onSocketConnected.d.ts.map +1 -1
  313. package/dist/onSocketConnected.js +38 -16
  314. package/dist/onSocketConnected.js.map +1 -1
  315. package/dist/runClientRequest.d.ts.map +1 -1
  316. package/dist/runClientRequest.js +33 -14
  317. package/dist/runClientRequest.js.map +1 -1
  318. package/dist/shortestPath.d.ts.map +1 -1
  319. package/dist/shortestPath.js +1 -1
  320. package/dist/shortestPath.js.map +1 -1
  321. package/dist/typeTests/dboTypeCheck.js.map +1 -1
  322. package/examples/full-example-typescript/DBoGenerated.d.ts +112 -54
  323. package/examples/full-example-typescript/DBoGenerated.js +3 -3
  324. package/examples/full-example-typescript/home.html +28 -26
  325. package/examples/full-example-typescript/index.d.ts +1 -1
  326. package/examples/full-example-typescript/index.js +80 -53
  327. package/examples/full-example-vanilla/home.html +151 -125
  328. package/examples/server/javascript/index.js +17 -19
  329. package/lib/Auth/AuthHandler.ts +234 -155
  330. package/lib/Auth/AuthTypes.ts +27 -4
  331. package/lib/Auth/getSafeReturnURL.ts +35 -21
  332. package/lib/Auth/sendEmail.ts +34 -31
  333. package/lib/Auth/setAuthProviders.ts +94 -71
  334. package/lib/Auth/setEmailProvider.ts +45 -27
  335. package/lib/Auth/setupAuthRoutes.ts +164 -100
  336. package/lib/DBEventsManager.ts +87 -65
  337. package/lib/DBSchemaBuilder.ts +62 -28
  338. package/lib/DboBuilder/DboBuilder.ts +45 -21
  339. package/lib/DboBuilder/DboBuilderTypes.ts +99 -95
  340. package/lib/DboBuilder/QueryBuilder/Functions.ts +862 -580
  341. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +202 -141
  342. package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +199 -124
  343. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +209 -148
  344. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +101 -75
  345. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +10 -5
  346. package/lib/DboBuilder/QueryStreamer.ts +207 -100
  347. package/lib/DboBuilder/TableHandler/DataValidator.ts +253 -148
  348. package/lib/DboBuilder/TableHandler/TableHandler.ts +155 -60
  349. package/lib/DboBuilder/TableHandler/delete.ts +82 -29
  350. package/lib/DboBuilder/TableHandler/insert.ts +177 -81
  351. package/lib/DboBuilder/TableHandler/insertTest.ts +13 -7
  352. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +35 -21
  353. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +95 -45
  354. package/lib/DboBuilder/TableHandler/update.ts +54 -14
  355. package/lib/DboBuilder/TableHandler/updateBatch.ts +59 -21
  356. package/lib/DboBuilder/TableHandler/updateFile.ts +57 -26
  357. package/lib/DboBuilder/TableHandler/upsert.ts +58 -13
  358. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +264 -121
  359. package/lib/DboBuilder/ViewHandler/count.ts +56 -25
  360. package/lib/DboBuilder/ViewHandler/find.ts +153 -68
  361. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +59 -32
  362. package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +31 -19
  363. package/lib/DboBuilder/ViewHandler/getInfo.ts +47 -16
  364. package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +91 -57
  365. package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +51 -29
  366. package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +35 -29
  367. package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +130 -76
  368. package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +140 -92
  369. package/lib/DboBuilder/ViewHandler/prepareWhere.ts +66 -26
  370. package/lib/DboBuilder/ViewHandler/size.ts +56 -22
  371. package/lib/DboBuilder/ViewHandler/subscribe.ts +122 -46
  372. package/lib/DboBuilder/ViewHandler/validateViewRules.ts +39 -14
  373. package/lib/DboBuilder/dboBuilderUtils.ts +41 -18
  374. package/lib/DboBuilder/getColumns.ts +44 -12
  375. package/lib/DboBuilder/getCondition.ts +120 -79
  376. package/lib/DboBuilder/getSubscribeRelatedTables.ts +144 -83
  377. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +61 -44
  378. package/lib/DboBuilder/insertNestedRecords.ts +370 -235
  379. package/lib/DboBuilder/parseUpdateRules.ts +117 -61
  380. package/lib/DboBuilder/prepareShortestJoinPaths.ts +115 -56
  381. package/lib/DboBuilder/runSQL.ts +135 -74
  382. package/lib/DboBuilder/runTransaction.ts +27 -16
  383. package/lib/DboBuilder/sqlErrCodeToMsg.ts +502 -244
  384. package/lib/DboBuilder/uploadFile.ts +67 -31
  385. package/lib/Event_Trigger_Tags.ts +6 -4
  386. package/lib/FileManager/FileManager.ts +53 -21
  387. package/lib/FileManager/getValidatedFileType.ts +79 -35
  388. package/lib/FileManager/initFileManager.ts +21 -9
  389. package/lib/FileManager/upload.ts +21 -19
  390. package/lib/FileManager/uploadStream.ts +33 -34
  391. package/lib/Filtering.ts +249 -197
  392. package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +2 -7
  393. package/lib/JSONBValidation/validation.ts +147 -82
  394. package/lib/Logging.ts +107 -97
  395. package/lib/PostgresNotifListenManager.ts +96 -63
  396. package/lib/Prostgles.ts +106 -35
  397. package/lib/ProstglesTypes.ts +31 -9
  398. package/lib/PubSubManager/PubSubManager.ts +62 -27
  399. package/lib/PubSubManager/addSub.ts +56 -37
  400. package/lib/PubSubManager/addSync.ts +50 -33
  401. package/lib/PubSubManager/getCreatePubSubManagerError.ts +29 -21
  402. package/lib/PubSubManager/getPubSubManagerInitQuery.ts +45 -27
  403. package/lib/PubSubManager/initPubSubManager.ts +27 -18
  404. package/lib/PubSubManager/notifListener.ts +77 -59
  405. package/lib/PubSubManager/orphanTriggerCheck.ts +5 -4
  406. package/lib/PubSubManager/pushSubData.ts +11 -9
  407. package/lib/PublishParser/PublishParser.ts +102 -44
  408. package/lib/PublishParser/getFileTableRules.ts +97 -54
  409. package/lib/PublishParser/getSchemaFromPublish.ts +146 -74
  410. package/lib/PublishParser/getTableRulesWithoutFileTable.ts +101 -51
  411. package/lib/PublishParser/publishTypesAndUtils.ts +74 -23
  412. package/lib/RestApi.ts +10 -2
  413. package/lib/SchemaWatch/SchemaWatch.ts +52 -34
  414. package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +1 -1
  415. package/lib/SchemaWatch/getValidatedWatchSchemaType.ts +32 -22
  416. package/lib/SchemaWatch/getWatchSchemaTagList.ts +24 -16
  417. package/lib/SyncReplication.ts +376 -190
  418. package/lib/TableConfig/TableConfig.ts +200 -136
  419. package/lib/TableConfig/getColumnDefinitionQuery.ts +65 -44
  420. package/lib/TableConfig/getConstraintDefinitionQueries.ts +41 -25
  421. package/lib/TableConfig/getFutureTableSchema.ts +31 -21
  422. package/lib/TableConfig/getPGIndexes.ts +7 -4
  423. package/lib/TableConfig/getTableColumnQueries.ts +101 -54
  424. package/lib/TableConfig/initTableConfig.ts +192 -101
  425. package/lib/index.ts +6 -5
  426. package/lib/initProstgles.ts +57 -51
  427. package/lib/onSocketConnected.ts +75 -40
  428. package/lib/runClientRequest.ts +148 -79
  429. package/lib/shortestPath.ts +80 -76
  430. package/lib/typeTests/DBoGenerated.d.ts +5 -1
  431. package/lib/typeTests/dboTypeCheck.ts +8 -8
  432. package/package.json +1 -1
@@ -29,7 +29,11 @@ import {
29
29
  } from "prostgles-types";
30
30
 
31
31
  import { find, pickKeys, tryCatch } from "prostgles-types/dist/util";
32
- import { LocalFuncs, getOnDataFunc, matchesLocalFuncs } from "../DboBuilder/ViewHandler/subscribe";
32
+ import {
33
+ LocalFuncs,
34
+ getOnDataFunc,
35
+ matchesLocalFuncs,
36
+ } from "../DboBuilder/ViewHandler/subscribe";
33
37
  import { EVENT_TRIGGER_TAGS } from "../Event_Trigger_Tags";
34
38
  import { EventTypes } from "../Logging";
35
39
  import { TableRule } from "../PublishParser/PublishParser";
@@ -109,7 +113,10 @@ export type ViewSubscriptionOptions = (
109
113
  }[];
110
114
  };
111
115
 
112
- export type SubscriptionParams = Pick<SubscribeParams, "throttle" | "throttleOpts"> & {
116
+ export type SubscriptionParams = Pick<
117
+ SubscribeParams,
118
+ "throttle" | "throttleOpts"
119
+ > & {
113
120
  socket_id?: string;
114
121
  channel_name: string;
115
122
 
@@ -230,16 +237,17 @@ export class PubSubManager {
230
237
  const { watchSchema } = this.dboBuilder.prostgles.opts;
231
238
  if (watchSchema && !(await getIsSuperUser(this.db))) {
232
239
  console.warn(
233
- "prostgles watchSchema requires superuser db user. Will not watch using event triggers"
240
+ "prostgles watchSchema requires superuser db user. Will not watch using event triggers",
234
241
  );
235
242
  }
236
243
 
237
244
  try {
238
245
  /** We use these names because they include schema where necessary */
239
- const allTableNames = Object.keys(this.dbo).filter((k) => this.dbo[k]?.tableOrViewInfo);
240
- const tableFilterQuery =
241
- allTableNames.length ?
242
- `OR table_name NOT IN (${allTableNames.map((tblName) => asValue(tblName)).join(", ")})`
246
+ const allTableNames = Object.keys(this.dbo).filter(
247
+ (k) => this.dbo[k]?.tableOrViewInfo,
248
+ );
249
+ const tableFilterQuery = allTableNames.length
250
+ ? `OR table_name NOT IN (${allTableNames.map((tblName) => asValue(tblName)).join(", ")})`
243
251
  : "";
244
252
  const query = pgp.as.format(
245
253
  `
@@ -295,7 +303,7 @@ export class PubSubManager {
295
303
 
296
304
  COMMIT;
297
305
  `,
298
- { EVENT_TRIGGER_TAGS }
306
+ { EVENT_TRIGGER_TAGS },
299
307
  );
300
308
 
301
309
  await this.db
@@ -316,45 +324,58 @@ export class PubSubManager {
316
324
  channel_name,
317
325
  localFuncs,
318
326
  socket_id,
319
- }: Pick<Subscription, "localFuncs" | "socket_id" | "channel_name">): Subscription[] {
327
+ }: Pick<
328
+ Subscription,
329
+ "localFuncs" | "socket_id" | "channel_name"
330
+ >): Subscription[] {
320
331
  return this.subs.filter((s) => {
321
332
  return (
322
333
  s.channel_name === channel_name &&
323
- (matchesLocalFuncs(localFuncs, s.localFuncs) || (socket_id && s.socket_id === socket_id))
334
+ (matchesLocalFuncs(localFuncs, s.localFuncs) ||
335
+ (socket_id && s.socket_id === socket_id))
324
336
  );
325
337
  });
326
338
  }
327
339
 
328
340
  getTriggerSubs(table_name: string, condition: string): Subscription[] {
329
- const subs = this.subs.filter((s) => find(s.triggers, { table_name, condition }));
341
+ const subs = this.subs.filter((s) =>
342
+ find(s.triggers, { table_name, condition }),
343
+ );
330
344
  return subs;
331
345
  }
332
346
 
333
347
  removeLocalSub(channelName: string, localFuncs: LocalFuncs) {
334
348
  const matchingSubIdx = this.subs.findIndex(
335
349
  (s) =>
336
- s.channel_name === channelName && getOnDataFunc(localFuncs) === getOnDataFunc(s.localFuncs)
350
+ s.channel_name === channelName &&
351
+ getOnDataFunc(localFuncs) === getOnDataFunc(s.localFuncs),
337
352
  );
338
353
  if (matchingSubIdx > -1) {
339
354
  this.subs.splice(matchingSubIdx, 1);
340
355
  } else {
341
- console.error("Could not unsubscribe. Subscription might not have initialised yet", {
342
- channelName,
343
- });
356
+ console.error(
357
+ "Could not unsubscribe. Subscription might not have initialised yet",
358
+ {
359
+ channelName,
360
+ },
361
+ );
344
362
  }
345
363
  }
346
364
 
347
365
  getSyncs(table_name: string, condition: string) {
348
366
  return (this.syncs || []).filter(
349
- (s: SyncParams) => s.table_name === table_name && s.condition === condition
367
+ (s: SyncParams) =>
368
+ s.table_name === table_name && s.condition === condition,
350
369
  );
351
370
  }
352
371
 
353
372
  notifListener = notifListener.bind(this);
354
373
 
355
374
  getSubData = async (
356
- sub: Subscription
357
- ): Promise<{ data: any[]; err?: undefined } | { data?: undefined; err: any }> => {
375
+ sub: Subscription,
376
+ ): Promise<
377
+ { data: any[]; err?: undefined } | { data?: undefined; err: any }
378
+ > => {
358
379
  const { table_info, filter, params, table_rules } = sub; //, subOne = false
359
380
  const { name: table_name } = table_info;
360
381
 
@@ -363,7 +384,12 @@ export class PubSubManager {
363
384
  }
364
385
 
365
386
  try {
366
- const data = await this.dbo?.[table_name]!.find!(filter, params, undefined, table_rules);
387
+ const data = await this.dbo?.[table_name]!.find!(
388
+ filter,
389
+ params,
390
+ undefined,
391
+ table_rules,
392
+ );
367
393
  return { data };
368
394
  } catch (err) {
369
395
  return { err };
@@ -395,10 +421,13 @@ export class PubSubManager {
395
421
  socketId: socket.id,
396
422
  connectedSocketIds: this.connectedSocketIds,
397
423
  remainingSubs: JSON.stringify(
398
- this.subs.map((s) => ({ tableName: s.table_info.name, triggers: s.triggers }))
424
+ this.subs.map((s) => ({
425
+ tableName: s.table_info.name,
426
+ triggers: s.triggers,
427
+ })),
399
428
  ),
400
429
  remainingSyncs: JSON.stringify(
401
- this.syncs.map((s) => pickKeys(s, ["table_name", "condition"]))
430
+ this.syncs.map((s) => pickKeys(s, ["table_name", "condition"])),
402
431
  ),
403
432
  });
404
433
 
@@ -424,7 +453,9 @@ export class PubSubManager {
424
453
  getActiveListeners = (): { table_name: string; condition: string }[] => {
425
454
  const activeListeners: { table_name: string; condition: string }[] = [];
426
455
  const upsert = (t: string, c: string) => {
427
- if (!activeListeners.find((r) => r.table_name === t && r.condition === c)) {
456
+ if (
457
+ !activeListeners.find((r) => r.table_name === t && r.condition === c)
458
+ ) {
428
459
  activeListeners.push({ table_name: t, condition: c });
429
460
  }
430
461
  };
@@ -455,7 +486,7 @@ export class PubSubManager {
455
486
  WHERE app_id = $1
456
487
  ORDER BY table_name, condition
457
488
  `,
458
- [this.dboBuilder.prostgles.appId]
489
+ [this.dboBuilder.prostgles.appId],
459
490
  );
460
491
 
461
492
  this._triggers = {};
@@ -473,7 +504,7 @@ export class PubSubManager {
473
504
  async addTrigger(
474
505
  params: { table_name: string; condition: string },
475
506
  viewOptions: ViewSubscriptionOptions | undefined,
476
- socket: PRGLIOSocket | undefined
507
+ socket: PRGLIOSocket | undefined,
477
508
  ) {
478
509
  const addedTrigger = await tryCatch(async () => {
479
510
  const { table_name } = { ...params };
@@ -491,7 +522,9 @@ export class PubSubManager {
491
522
  const trgVals = {
492
523
  tbl: asValue(table_name),
493
524
  cond: asValue(condition),
494
- condHash: asValue(crypto.createHash("md5").update(condition).digest("hex")),
525
+ condHash: asValue(
526
+ crypto.createHash("md5").update(condition).digest("hex"),
527
+ ),
495
528
  };
496
529
 
497
530
  await this.db.tx((t) =>
@@ -530,7 +563,7 @@ export class PubSubManager {
530
563
  ON CONFLICT DO NOTHING;
531
564
 
532
565
  COMMIT WORK;
533
- `)
566
+ `),
534
567
  );
535
568
 
536
569
  /** This might be redundant due to trigger on app_triggers */
@@ -549,7 +582,9 @@ export class PubSubManager {
549
582
  error: addedTrigger.error,
550
583
  sid: this.dboBuilder.prostgles.authHandler?.getSIDNoError({ socket }),
551
584
  tableName: addedTrigger.tbl ?? params.table_name,
552
- connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
585
+ connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map(
586
+ (s) => s.id,
587
+ ),
553
588
  localParams: { socket },
554
589
  });
555
590
 
@@ -1,20 +1,41 @@
1
1
  import { SubscriptionChannels } from "prostgles-types";
2
- import { BasicCallback, parseCondition, PubSubManager, Subscription, SubscriptionParams } from "./PubSubManager";
2
+ import {
3
+ BasicCallback,
4
+ parseCondition,
5
+ PubSubManager,
6
+ Subscription,
7
+ SubscriptionParams,
8
+ } from "./PubSubManager";
3
9
  import { VoidFunction } from "../SchemaWatch/SchemaWatch";
4
10
 
5
11
  type AddSubscriptionParams = SubscriptionParams & {
6
12
  condition: string;
7
- }
13
+ };
8
14
 
9
- type AddSubResult = SubscriptionChannels & { sendFirstData: VoidFunction | undefined }
15
+ type AddSubResult = SubscriptionChannels & {
16
+ sendFirstData: VoidFunction | undefined;
17
+ };
10
18
 
11
19
  /* Must return a channel for socket */
12
20
  /* The distinct list of {table_name, condition} must have a corresponding trigger in the database */
13
- export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSubscriptionParams, "channel_name" | "parentSubParams">): Promise<AddSubResult> {
21
+ export async function addSub(
22
+ this: PubSubManager,
23
+ subscriptionParams: Omit<
24
+ AddSubscriptionParams,
25
+ "channel_name" | "parentSubParams"
26
+ >,
27
+ ): Promise<AddSubResult> {
14
28
  const {
15
- socket, localFuncs, table_rules, filter = {},
16
- params = {}, condition = "", throttle = 0, //subOne = false,
17
- viewOptions, table_info, throttleOpts,
29
+ socket,
30
+ localFuncs,
31
+ table_rules,
32
+ filter = {},
33
+ params = {},
34
+ condition = "",
35
+ throttle = 0, //subOne = false,
36
+ viewOptions,
37
+ table_info,
38
+ throttleOpts,
18
39
  } = subscriptionParams || {};
19
40
  const table_name = table_info.name;
20
41
 
@@ -55,71 +76,70 @@ export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSu
55
76
  socket_id: socket?.id,
56
77
  table_rules,
57
78
  throttle: validated_throttle,
58
- triggers: [
59
- mainTrigger
60
- ]
61
- }
79
+ triggers: [mainTrigger],
80
+ };
62
81
 
63
82
  const result: AddSubResult = {
64
83
  channelName: channel_name,
65
84
  channelNameReady: channel_name + ".ready",
66
85
  channelNameUnsubscribe: channel_name + ".unsubscribe",
67
86
  sendFirstData: undefined,
68
- }
87
+ };
69
88
 
70
89
  const [matchingSub] = this.getClientSubs(newSub);
71
- if(matchingSub){
90
+ if (matchingSub) {
72
91
  console.error("Trying to add a duplicate sub for: ", channel_name);
73
92
  return result;
74
93
  }
75
94
 
76
95
  this.upsertSocket(socket);
77
96
 
78
- if(viewOptions){
79
- for await(const relatedTable of viewOptions.relatedTables){
97
+ if (viewOptions) {
98
+ for await (const relatedTable of viewOptions.relatedTables) {
80
99
  const relatedSub = {
81
100
  table_name: relatedTable.tableName,
82
101
  condition: parseCondition(relatedTable.condition),
83
102
  is_related: true,
84
103
  } as const;
85
104
 
86
- newSub.triggers.push(relatedSub)
87
-
88
- await this.addTrigger(relatedSub, viewOptions, socket);
89
- }
105
+ newSub.triggers.push(relatedSub);
90
106
 
107
+ await this.addTrigger(relatedSub, viewOptions, socket);
108
+ }
91
109
  }
92
110
 
93
-
94
- if(localFuncs){
95
- /**
96
- * Must ensure sub will start sending data after all triggers are set up.
111
+ if (localFuncs) {
112
+ /**
113
+ * Must ensure sub will start sending data after all triggers are set up.
97
114
  * Socket clients are not affected as they need to confirm they are ready to receive data
98
- */
115
+ */
99
116
  result.sendFirstData = () => {
100
117
  this.pushSubData(newSub);
101
- }
102
-
118
+ };
103
119
  } else if (socket) {
104
120
  const removeListeners = () => {
105
121
  socket.removeAllListeners(channel_name);
106
122
  socket.removeAllListeners(result.channelNameReady);
107
123
  socket.removeAllListeners(result.channelNameUnsubscribe);
108
- }
124
+ };
109
125
  removeListeners();
110
126
 
111
127
  socket.once(result.channelNameReady, () => {
112
128
  this.pushSubData(newSub);
113
129
  });
114
- socket.once(result.channelNameUnsubscribe, (_data: any, cb: BasicCallback) => {
115
- const res = "ok";
116
- this.subs = this.subs.filter(s => {
117
- const isMatch = s.socket?.id === socket.id && s.channel_name === channel_name;
118
- return !isMatch;
119
- });
120
- removeListeners();
121
- cb(null, { res });
122
- });
130
+ socket.once(
131
+ result.channelNameUnsubscribe,
132
+ (_data: any, cb: BasicCallback) => {
133
+ const res = "ok";
134
+ this.subs = this.subs.filter((s) => {
135
+ const isMatch =
136
+ s.socket?.id === socket.id && s.channel_name === channel_name;
137
+ return !isMatch;
138
+ });
139
+ removeListeners();
140
+ cb(null, { res });
141
+ },
142
+ );
123
143
  }
124
144
 
125
145
  this.subs.push(newSub);
@@ -129,7 +149,6 @@ export async function addSub(this: PubSubManager, subscriptionParams: Omit<AddSu
129
149
  if (!viewOptions?.relatedTables.length) {
130
150
  throw "PubSubManager: view parent_tables missing";
131
151
  }
132
-
133
152
  } else {
134
153
  await this.addTrigger(mainTrigger, undefined, socket);
135
154
  }
@@ -1,30 +1,43 @@
1
1
  import { find, tryCatch } from "prostgles-types/dist/util";
2
- import { AddSyncParams, BasicCallback, DEFAULT_SYNC_BATCH_SIZE, PubSubManager, parseCondition } from "./PubSubManager";
2
+ import {
3
+ AddSyncParams,
4
+ BasicCallback,
5
+ DEFAULT_SYNC_BATCH_SIZE,
6
+ PubSubManager,
7
+ parseCondition,
8
+ } from "./PubSubManager";
3
9
 
4
10
  /**
5
11
  * Returns a sync channel
6
12
  * A sync channel is unique per socket for each filter
7
13
  */
8
14
  export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
9
-
10
- const sid = this.dboBuilder.prostgles.authHandler?.getSIDNoError({ socket: syncParams.socket });
15
+ const sid = this.dboBuilder.prostgles.authHandler?.getSIDNoError({
16
+ socket: syncParams.socket,
17
+ });
11
18
  const res = await tryCatch(async () => {
12
-
13
19
  const {
14
- socket = null, table_info = null, table_rules, synced_field = null,
15
- allow_delete = false, id_fields = [], filter = {},
16
- params, condition = "", throttle = 0
17
- } = syncParams || {} as AddSyncParams;
20
+ socket = null,
21
+ table_info = null,
22
+ table_rules,
23
+ synced_field = null,
24
+ allow_delete = false,
25
+ id_fields = [],
26
+ filter = {},
27
+ params,
28
+ condition = "",
29
+ throttle = 0,
30
+ } = syncParams || ({} as AddSyncParams);
18
31
  const conditionParsed = parseCondition(condition);
19
32
  if (!socket || !table_info) throw "socket or table_info missing";
20
-
33
+
21
34
  const { name: table_name } = table_info;
22
35
  const channel_name = `${this.socketChannelPreffix}.${table_name}.${JSON.stringify(filter)}.sync`;
23
-
36
+
24
37
  if (!synced_field) throw "synced_field missing from table_rules";
25
38
 
26
39
  this.upsertSocket(socket);
27
-
40
+
28
41
  const upsertSync = () => {
29
42
  const newSync = {
30
43
  channel_name,
@@ -46,7 +59,7 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
46
59
  is_syncing: false,
47
60
  wal: undefined,
48
61
  socket,
49
- params
62
+ params,
50
63
  };
51
64
 
52
65
  /* Only a sync per socket per table per condition allowed */
@@ -54,15 +67,15 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
54
67
  const existing = find(this.syncs, { socket_id: socket.id, channel_name });
55
68
  if (!existing) {
56
69
  this.syncs.push(newSync);
57
-
70
+
58
71
  const unsyncChn = channel_name + "unsync";
59
72
  socket.removeAllListeners(unsyncChn);
60
73
  socket.once(unsyncChn, (_data: any, cb: BasicCallback) => {
61
- this._log({
62
- type: "sync",
63
- command: "unsync",
64
- socketId: socket.id,
65
- tableName: table_name,
74
+ this._log({
75
+ type: "sync",
76
+ command: "unsync",
77
+ socketId: socket.id,
78
+ tableName: table_name,
66
79
  condition,
67
80
  sid,
68
81
  connectedSocketIds: this.connectedSocketIds,
@@ -70,8 +83,11 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
70
83
  });
71
84
  socket.removeAllListeners(channel_name);
72
85
  socket.removeAllListeners(unsyncChn);
73
- this.syncs = this.syncs.filter(s => {
74
- const isMatch = s.socket_id && s.socket_id === socket.id && s.channel_name === channel_name;
86
+ this.syncs = this.syncs.filter((s) => {
87
+ const isMatch =
88
+ s.socket_id &&
89
+ s.socket_id === socket.id &&
90
+ s.channel_name === channel_name;
75
91
  return !isMatch;
76
92
  });
77
93
  cb(null, { res: "ok" });
@@ -79,14 +95,13 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
79
95
 
80
96
  socket.removeAllListeners(channel_name);
81
97
  socket.on(channel_name, (data: any, cb: BasicCallback) => {
82
-
83
98
  if (!data) {
84
99
  cb({ err: "Unexpected request. Need data or onSyncRequest" });
85
100
  return;
86
101
  }
87
102
 
88
103
  /*
89
- */
104
+ */
90
105
 
91
106
  /* Server will:
92
107
  1. Ask for last_synced emit(onSyncRequest)
@@ -103,12 +118,10 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
103
118
 
104
119
  if (data.onSyncRequest) {
105
120
  this.syncData(newSync, data.onSyncRequest, "client");
106
-
107
121
  } else {
108
- console.error("Unexpected sync request data from client: ", data)
122
+ console.error("Unexpected sync request data from client: ", data);
109
123
  }
110
124
  });
111
-
112
125
  } else {
113
126
  console.warn("UNCLOSED DUPLICATE SYNC FOUND", existing.channel_name);
114
127
  }
@@ -118,16 +131,20 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
118
131
 
119
132
  upsertSync();
120
133
 
121
- await this.addTrigger({ table_name, condition: conditionParsed }, undefined, socket);
134
+ await this.addTrigger(
135
+ { table_name, condition: conditionParsed },
136
+ undefined,
137
+ socket,
138
+ );
122
139
 
123
140
  return { result: channel_name };
124
141
  });
125
142
 
126
- await this._log({
127
- type: "sync",
128
- command: "addSync",
129
- tableName: syncParams.table_info.name,
130
- condition: syncParams.condition,
143
+ await this._log({
144
+ type: "sync",
145
+ command: "addSync",
146
+ tableName: syncParams.table_info.name,
147
+ condition: syncParams.condition,
131
148
  socketId: syncParams.socket.id,
132
149
  connectedSocketIds: this.connectedSocketIds,
133
150
  duration: res.duration,
@@ -135,7 +152,7 @@ export async function addSync(this: PubSubManager, syncParams: AddSyncParams) {
135
152
  sid,
136
153
  });
137
154
 
138
- if(res.error !== undefined) throw res.error;
155
+ if (res.error !== undefined) throw res.error;
139
156
 
140
157
  return res.result;
141
- }
158
+ }
@@ -3,10 +3,12 @@ import { getPubSubManagerInitQuery } from "./getPubSubManagerInitQuery";
3
3
  import { getCanExecute } from "../DboBuilder/dboBuilderUtils";
4
4
  import { DboBuilder } from "../DboBuilder/DboBuilder";
5
5
 
6
- export const getCreatePubSubManagerError = async (dboBuilder: DboBuilder): Promise<string | undefined> => {
6
+ export const getCreatePubSubManagerError = async (
7
+ dboBuilder: DboBuilder,
8
+ ): Promise<string | undefined> => {
7
9
  const db = dboBuilder.db;
8
-
9
- const canExecute = await getCanExecute(db)
10
+
11
+ const canExecute = await getCanExecute(db);
10
12
  if (!canExecute) return "Cannot run EXECUTE statements on this connection";
11
13
 
12
14
  /** Check if prostgles schema exists */
@@ -16,25 +18,26 @@ export const getCreatePubSubManagerError = async (dboBuilder: DboBuilder): Promi
16
18
  WHERE nspname = 'prostgles'
17
19
  `);
18
20
 
19
- const checkIfCanCreateProstglesSchema = () => tryCatch(async () => {
20
- const allGood = await db.task(async t => {
21
- try {
22
- await t.none(`
21
+ const checkIfCanCreateProstglesSchema = () =>
22
+ tryCatch(async () => {
23
+ const allGood = await db.task(async (t) => {
24
+ try {
25
+ await t.none(`
23
26
  BEGIN;
24
27
  DROP SCHEMA IF EXISTS prostgles CASCADE;
25
28
  CREATE SCHEMA IF NOT EXISTS prostgles;
26
29
  ROLLBACK;
27
30
  `);
28
- } catch (e) {
29
- await t.none(`ROLLBACK`);
30
- return false;
31
- }
31
+ } catch (e) {
32
+ await t.none(`ROLLBACK`);
33
+ return false;
34
+ }
32
35
 
33
- return true;
34
- });
36
+ return true;
37
+ });
35
38
 
36
- return allGood;
37
- });
39
+ return allGood;
40
+ });
38
41
 
39
42
  if (!prglSchema.length) {
40
43
  const canCreate = await checkIfCanCreateProstglesSchema();
@@ -52,21 +55,26 @@ export const getCreatePubSubManagerError = async (dboBuilder: DboBuilder): Promi
52
55
  return { ok: true };
53
56
  });
54
57
 
55
- if(!canCheckVersion.ok){
56
- console.error("prostgles schema exists but cannot check version. Check logs", canCheckVersion.error);
58
+ if (!canCheckVersion.ok) {
59
+ console.error(
60
+ "prostgles schema exists but cannot check version. Check logs",
61
+ canCheckVersion.error,
62
+ );
57
63
  return "prostgles schema exists but cannot check version. Check logs";
58
64
  }
59
65
  }
60
66
 
61
- const initQuery = await tryCatch(async () => ({ query: await getPubSubManagerInitQuery.bind(dboBuilder)() }));
62
- if(initQuery.hasError){
67
+ const initQuery = await tryCatch(async () => ({
68
+ query: await getPubSubManagerInitQuery.bind(dboBuilder)(),
69
+ }));
70
+ if (initQuery.hasError) {
63
71
  console.error(initQuery.error);
64
72
  return "Could not get initQuery. Check logs";
65
73
  }
66
74
 
67
- if(!initQuery.query){
75
+ if (!initQuery.query) {
68
76
  return undefined;
69
77
  }
70
78
 
71
79
  return undefined;
72
- }
80
+ };