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
@@ -1,30 +1,45 @@
1
- import { AnyObject, AuthGuardLocation, AuthGuardLocationResponse, CHANNELS, AuthSocketSchema } from "prostgles-types";
1
+ import {
2
+ AnyObject,
3
+ AuthGuardLocation,
4
+ AuthGuardLocationResponse,
5
+ CHANNELS,
6
+ AuthSocketSchema,
7
+ } from "prostgles-types";
2
8
  import { LocalParams, PRGLIOSocket } from "../DboBuilder/DboBuilder";
3
9
  import { DBOFullyTyped } from "../DBSchemaBuilder";
4
10
  import { removeExpressRoute } from "../FileManager/FileManager";
5
11
  import { DB, DBHandlerServer, Prostgles } from "../Prostgles";
6
- import { Auth, AuthClientRequest, AuthResult, BasicSession, ExpressReq, ExpressRes, LoginClientInfo, LoginParams } from "./AuthTypes"
12
+ import {
13
+ Auth,
14
+ AuthClientRequest,
15
+ AuthResult,
16
+ BasicSession,
17
+ ExpressReq,
18
+ ExpressRes,
19
+ LoginClientInfo,
20
+ LoginParams,
21
+ } from "./AuthTypes";
7
22
  import { getSafeReturnURL } from "./getSafeReturnURL";
8
23
  import { setupAuthRoutes } from "./setupAuthRoutes";
9
24
  import { getProviders } from "./setAuthProviders";
10
25
 
11
- export const HTTPCODES = {
26
+ export const HTTPCODES = {
12
27
  AUTH_ERROR: 401,
13
28
  NOT_FOUND: 404,
14
29
  BAD_REQUEST: 400,
15
30
  INTERNAL_SERVER_ERROR: 500,
16
31
  } as const;
17
32
 
18
- export const getLoginClientInfo = (req: AuthClientRequest): AuthClientRequest & LoginClientInfo => {
19
- if("httpReq" in req){
33
+ export const getLoginClientInfo = <T extends AuthClientRequest>(req: T): T & LoginClientInfo => {
34
+ if (req.httpReq) {
20
35
  const ip_address = req.httpReq.ip;
21
- if(!ip_address) throw new Error("ip_address missing from req.httpReq");
36
+ if (!ip_address) throw new Error("ip_address missing from req.httpReq");
22
37
  const user_agent = req.httpReq.headers["user-agent"];
23
- return {
24
- ...req,
38
+ return {
39
+ ...req,
25
40
  ip_address,
26
41
  ip_address_remote: req.httpReq.connection.remoteAddress,
27
- x_real_ip: req.httpReq.headers['x-real-ip'] as any,
42
+ x_real_ip: req.httpReq.headers["x-real-ip"] as any,
28
43
  user_agent,
29
44
  };
30
45
  } else {
@@ -33,10 +48,10 @@ export const getLoginClientInfo = (req: AuthClientRequest): AuthClientRequest &
33
48
  ip_address: req.socket.handshake.address,
34
49
  ip_address_remote: req.socket.request.connection.remoteAddress,
35
50
  x_real_ip: req.socket.handshake.headers?.["x-real-ip"],
36
- user_agent: req.socket.handshake.headers?.['user-agent'],
37
- }
51
+ user_agent: req.socket.handshake.headers?.["user-agent"],
52
+ };
38
53
  }
39
- }
54
+ };
40
55
 
41
56
  export const AUTH_ROUTES_AND_PARAMS = {
42
57
  login: "/login",
@@ -61,7 +76,7 @@ export class AuthHandler {
61
76
  constructor(prostgles: Prostgles) {
62
77
  this.prostgles = prostgles;
63
78
  this.opts = prostgles.opts.auth as any;
64
- if(!prostgles.dbo || !prostgles.db) throw "dbo or db missing";
79
+ if (!prostgles.dbo || !prostgles.db) throw "dbo or db missing";
65
80
  this.dbo = prostgles.dbo;
66
81
  this.db = prostgles.db;
67
82
  }
@@ -74,65 +89,73 @@ export class AuthHandler {
74
89
  if (!sid) return undefined;
75
90
  if (typeof sid !== "string") throw "sid missing or not a string";
76
91
  return sid;
77
- }
92
+ };
78
93
 
79
94
  matchesRoute = (route: string | undefined, clientFullRoute: string) => {
80
- return route && clientFullRoute && (
81
- route === clientFullRoute ||
82
- clientFullRoute.startsWith(route) && ["/", "?", "#"].includes(clientFullRoute[route.length] ?? "")
83
- )
84
- }
95
+ return (
96
+ route &&
97
+ clientFullRoute &&
98
+ (route === clientFullRoute ||
99
+ (clientFullRoute.startsWith(route) &&
100
+ ["/", "?", "#"].includes(clientFullRoute[route.length] ?? "")))
101
+ );
102
+ };
85
103
 
86
104
  isUserRoute = (pathname: string) => {
87
105
  const { login, logoutGetPath, magicLinksRoute, loginWithProvider } = AUTH_ROUTES_AND_PARAMS;
88
106
  const pubRoutes = [
89
- ...this.opts?.expressConfig?.publicRoutes || [],
90
- login, logoutGetPath, magicLinksRoute, loginWithProvider,
91
- ].filter(publicRoute => publicRoute);
92
-
93
- return !pubRoutes.some(publicRoute => {
107
+ ...(this.opts?.expressConfig?.publicRoutes || []),
108
+ login,
109
+ logoutGetPath,
110
+ magicLinksRoute,
111
+ loginWithProvider,
112
+ ].filter((publicRoute) => publicRoute);
113
+
114
+ return !pubRoutes.some((publicRoute) => {
94
115
  return this.matchesRoute(publicRoute, pathname);
95
116
  });
96
- }
117
+ };
97
118
 
98
- setCookieAndGoToReturnURLIFSet = (cookie: { sid: string; expires: number; }, r: { req: ExpressReq; res: ExpressRes }) => {
119
+ setCookieAndGoToReturnURLIFSet = (
120
+ cookie: { sid: string; expires: number },
121
+ r: { req: ExpressReq; res: ExpressRes }
122
+ ) => {
99
123
  const { sid, expires } = cookie;
100
124
  const { res, req } = r;
101
125
  if (sid) {
102
126
  const maxAgeOneDay = 60 * 60 * 24; // 24 hours;
103
- type CD = { maxAge: number } | { expires: Date }
127
+ type CD = { maxAge: number } | { expires: Date };
104
128
  let cookieDuration: CD = {
105
- maxAge: maxAgeOneDay
106
- }
107
- if(expires && Number.isFinite(expires) && !isNaN(+ new Date(expires))){
129
+ maxAge: maxAgeOneDay,
130
+ };
131
+ if (expires && Number.isFinite(expires) && !isNaN(+new Date(expires))) {
108
132
  // const maxAge = (+new Date(expires)) - Date.now();
109
133
  cookieDuration = { expires: new Date(expires) };
110
- const days = (+cookieDuration.expires - Date.now())/(24 * 60 * 60e3);
111
- if(days >= 400){
112
- console.warn(`Cookie expiration is higher than the Chrome 400 day limit: ${days}days`)
134
+ const days = (+cookieDuration.expires - Date.now()) / (24 * 60 * 60e3);
135
+ if (days >= 400) {
136
+ console.warn(`Cookie expiration is higher than the Chrome 400 day limit: ${days}days`);
113
137
  }
114
138
  }
115
-
116
- const cookieOpts = {
117
- ...cookieDuration,
139
+
140
+ const cookieOpts = {
141
+ ...cookieDuration,
118
142
  httpOnly: true, // The cookie only accessible by the web server
119
143
  //signed: true // Indicates if the cookie should be signed
120
- secure: true,
121
- sameSite: "strict" as const,
122
- ...(this.opts?.expressConfig?.cookieOptions || {})
144
+ secure: true,
145
+ sameSite: "strict" as const,
146
+ ...(this.opts?.expressConfig?.cookieOptions || {}),
123
147
  };
124
148
  const cookieData = sid;
125
149
  res.cookie(this.sidKeyName, cookieData, cookieOpts);
126
150
  const successURL = this.getReturnUrl(req) || "/";
127
151
  res.redirect(successURL);
128
-
129
152
  } else {
130
- throw ("no user or session")
153
+ throw "no user or session";
131
154
  }
132
- }
155
+ };
133
156
 
134
- getUser = async (clientReq: { httpReq: ExpressReq; }): Promise<AuthResult> => {
135
- if(!this.opts?.getUser) {
157
+ getUser = async (clientReq: { httpReq: ExpressReq }): Promise<AuthResult> => {
158
+ if (!this.opts?.getUser) {
136
159
  throw "this.opts.getUser missing";
137
160
  }
138
161
  const sid = clientReq.httpReq?.cookies?.[this.sidKeyName];
@@ -140,13 +163,18 @@ export class AuthHandler {
140
163
 
141
164
  try {
142
165
  return this.throttledFunc(async () => {
143
- return this.opts!.getUser(this.validateSid(sid), this.dbo as any, this.db, getLoginClientInfo(clientReq));
144
- }, 50)
166
+ return this.opts!.getUser(
167
+ this.validateSid(sid),
168
+ this.dbo as any,
169
+ this.db,
170
+ getLoginClientInfo(clientReq)
171
+ );
172
+ }, 50);
145
173
  } catch (err) {
146
174
  console.error(err);
147
175
  }
148
176
  return undefined;
149
- }
177
+ };
150
178
 
151
179
  init = setupAuthRoutes.bind(this);
152
180
 
@@ -154,23 +182,43 @@ export class AuthHandler {
154
182
  const { returnUrlParamName } = AUTH_ROUTES_AND_PARAMS;
155
183
  if (returnUrlParamName && req?.query?.[returnUrlParamName]) {
156
184
  const returnURL = decodeURIComponent(req?.query?.[returnUrlParamName] as string);
157
-
185
+
158
186
  return getSafeReturnURL(returnURL, returnUrlParamName);
159
187
  }
160
188
  return null;
161
- }
189
+ };
162
190
 
163
191
  destroy = () => {
164
192
  const app = this.opts?.expressConfig?.app;
165
- const { login, logoutGetPath, magicLinksExpressRoute, catchAll, loginWithProvider, emailSignup, magicLinksRoute, confirmEmail, confirmEmailExpressRoute } = AUTH_ROUTES_AND_PARAMS;
166
- removeExpressRoute(app, [login, logoutGetPath, magicLinksExpressRoute, catchAll, loginWithProvider, emailSignup, magicLinksRoute, confirmEmail, confirmEmailExpressRoute]);
167
- }
193
+ const {
194
+ login,
195
+ logoutGetPath,
196
+ magicLinksExpressRoute,
197
+ catchAll,
198
+ loginWithProvider,
199
+ emailSignup,
200
+ magicLinksRoute,
201
+ confirmEmail,
202
+ confirmEmailExpressRoute,
203
+ } = AUTH_ROUTES_AND_PARAMS;
204
+ removeExpressRoute(app, [
205
+ login,
206
+ logoutGetPath,
207
+ magicLinksExpressRoute,
208
+ catchAll,
209
+ loginWithProvider,
210
+ emailSignup,
211
+ magicLinksRoute,
212
+ confirmEmail,
213
+ confirmEmailExpressRoute,
214
+ ]);
215
+ };
168
216
 
169
217
  throttledFunc = <T>(func: () => Promise<T>, throttle = 500): Promise<T> => {
170
-
171
218
  return new Promise(async (resolve, reject) => {
172
-
173
- let result: any, error: any, finished = false;
219
+ let result: any,
220
+ error: any,
221
+ finished = false;
174
222
 
175
223
  /**
176
224
  * Throttle reject response times to prevent timing attacks
@@ -181,24 +229,23 @@ export class AuthHandler {
181
229
  if (error) {
182
230
  reject(error);
183
231
  } else {
184
- resolve(result)
232
+ resolve(result);
185
233
  }
186
234
  }
187
235
  }, throttle);
188
236
 
189
-
190
237
  try {
191
238
  result = await func();
192
239
  resolve(result);
193
240
  clearInterval(interval);
194
241
  } catch (err) {
195
- console.log(err)
242
+ console.log(err);
196
243
  error = err;
197
244
  }
198
245
 
199
246
  finished = true;
200
- })
201
- }
247
+ });
248
+ };
202
249
 
203
250
  loginThrottled = async (params: LoginParams, client: LoginClientInfo): Promise<BasicSession> => {
204
251
  if (!this.opts?.login) throw "Auth login config missing";
@@ -207,25 +254,36 @@ export class AuthHandler {
207
254
  return this.throttledFunc(async () => {
208
255
  const result = await this.opts?.login?.(params, this.dbo as DBOFullyTyped, this.db, client);
209
256
  const err = {
210
- msg: "Bad login result type. \nExpecting: undefined | null | { sid: string; expires: number } but got: " + JSON.stringify(result)
211
- }
212
-
213
- if(!result) throw err;
214
- if(result && (typeof result.sid !== "string" || typeof result.expires !== "number") || !result && ![undefined, null].includes(result)) {
215
- throw err
257
+ msg:
258
+ "Bad login result type. \nExpecting: undefined | null | { sid: string; expires: number } but got: " +
259
+ JSON.stringify(result),
260
+ };
261
+
262
+ if (!result) throw err;
263
+ if (
264
+ (result && (typeof result.sid !== "string" || typeof result.expires !== "number")) ||
265
+ (!result && ![undefined, null].includes(result))
266
+ ) {
267
+ throw err;
216
268
  }
217
- if(result && result.expires < Date.now()){
218
- throw { msg: "auth.login() is returning an expired session. Can only login with a session.expires greater than Date.now()" }
269
+ if (result && result.expires < Date.now()) {
270
+ throw {
271
+ msg: "auth.login() is returning an expired session. Can only login with a session.expires greater than Date.now()",
272
+ };
219
273
  }
220
274
 
221
275
  return result;
222
276
  }, responseThrottle);
223
-
224
277
  };
225
278
 
226
- loginThrottledAndSetCookie = async (req: ExpressReq, res: ExpressRes, loginParams: LoginParams) => {
279
+ loginThrottledAndSetCookie = async (
280
+ req: ExpressReq,
281
+ res: ExpressRes,
282
+ loginParams: LoginParams
283
+ ) => {
227
284
  const start = Date.now();
228
- const { sid, expires } = await this.loginThrottled(loginParams, getLoginClientInfo({ httpReq: req })) || {};
285
+ const { sid, expires } =
286
+ (await this.loginThrottled(loginParams, getLoginClientInfo({ httpReq: req }))) || {};
229
287
  await this.prostgles.opts.onLog?.({
230
288
  type: "auth",
231
289
  command: "login",
@@ -233,21 +291,18 @@ export class AuthHandler {
233
291
  sid,
234
292
  socketId: undefined,
235
293
  });
236
-
237
- if (sid) {
238
294
 
295
+ if (sid) {
239
296
  this.setCookieAndGoToReturnURLIFSet({ sid, expires }, { req, res });
240
-
241
297
  } else {
242
- throw ("Internal error: no user or session")
298
+ throw "Internal error: no user or session";
243
299
  }
244
- }
245
-
300
+ };
246
301
 
247
302
  /**
248
303
  * Will return first sid value found in:
249
- * Bearer header
250
- * http cookie
304
+ * Bearer header
305
+ * http cookie
251
306
  * query params
252
307
  * Based on sid names in auth
253
308
  */
@@ -266,29 +321,28 @@ export class AuthHandler {
266
321
  rawSid = cookie[sidKeyName];
267
322
  }
268
323
  return this.validateSid(rawSid);
269
-
270
324
  } else if (localParams.httpReq) {
271
- const [tokenType, base64Token] = localParams.httpReq.headers.authorization?.split(' ') ?? [];
325
+ const [tokenType, base64Token] = localParams.httpReq.headers.authorization?.split(" ") ?? [];
272
326
  let bearerSid: string | undefined;
273
- if(tokenType && base64Token){
274
- if(tokenType.trim() !== "Bearer"){
327
+ if (tokenType && base64Token) {
328
+ if (tokenType.trim() !== "Bearer") {
275
329
  throw "Only Bearer Authorization header allowed";
276
330
  }
277
- bearerSid = Buffer.from(base64Token, 'base64').toString();
331
+ bearerSid = Buffer.from(base64Token, "base64").toString();
278
332
  }
279
333
  return this.validateSid(bearerSid ?? localParams.httpReq?.cookies?.[sidKeyName]);
280
-
281
334
  } else throw "socket OR httpReq missing from localParams";
282
335
 
283
336
  function parseCookieStr(cookie_str: string | undefined): any {
284
337
  if (!cookie_str || typeof cookie_str !== "string") {
285
- return {}
338
+ return {};
286
339
  }
287
340
 
288
- return cookie_str.replace(/\s/g, '')
341
+ return cookie_str
342
+ .replace(/\s/g, "")
289
343
  .split(";")
290
344
  .reduce<AnyObject>((prev, current) => {
291
- const [name, value] = current.split('=');
345
+ const [name, value] = current.split("=");
292
346
  prev[name!] = value;
293
347
  return prev;
294
348
  }, {});
@@ -299,71 +353,76 @@ export class AuthHandler {
299
353
  * Used for logging
300
354
  */
301
355
  getSIDNoError = (localParams: LocalParams | undefined): string | undefined => {
302
- if(!localParams) return undefined;
356
+ if (!localParams) return undefined;
303
357
  try {
304
358
  return this.getSID(localParams);
305
359
  } catch {
306
360
  return undefined;
307
361
  }
308
- }
362
+ };
309
363
 
310
364
  async getClientInfo(localParams: Pick<LocalParams, "socket" | "httpReq">): Promise<AuthResult> {
311
365
  if (!this.opts) return {};
312
366
 
313
367
  const getSession = this.opts.cacheSession?.getSession;
314
368
  const isSocket = "socket" in localParams;
315
- if(isSocket){
316
- if(getSession && localParams.socket?.__prglCache){
369
+ if (isSocket) {
370
+ if (getSession && localParams.socket?.__prglCache) {
317
371
  const { session, user, clientUser } = localParams.socket.__prglCache;
318
- const isValid = this.isValidSocketSession(localParams.socket, session)
319
- if(isValid){
320
-
372
+ const isValid = this.isValidSocketSession(localParams.socket, session);
373
+ if (isValid) {
321
374
  return {
322
375
  sid: session.sid,
323
- user,
376
+ user,
324
377
  clientUser,
325
- }
326
- } else return {
327
- sid: session.sid
328
- };
329
- }
378
+ };
379
+ } else
380
+ return {
381
+ sid: session.sid,
382
+ };
383
+ }
330
384
  }
331
385
 
332
386
  const authStart = Date.now();
333
387
  const res = await this.throttledFunc(async () => {
334
-
335
388
  const { getUser } = this.opts ?? {};
336
389
 
337
390
  if (getUser && localParams && (localParams.httpReq || localParams.socket)) {
338
391
  const sid = this.getSID(localParams);
339
- const clientReq = localParams.httpReq? { httpReq: localParams.httpReq } : { socket: localParams.socket! };
392
+ const clientReq =
393
+ localParams.httpReq ? { httpReq: localParams.httpReq } : { socket: localParams.socket! };
340
394
  let user, clientUser;
341
- if(sid){
342
- const res = await getUser(sid, this.dbo as any, this.db, getLoginClientInfo(clientReq)) as any;
395
+ if (sid) {
396
+ const res = (await getUser(
397
+ sid,
398
+ this.dbo as any,
399
+ this.db,
400
+ getLoginClientInfo(clientReq)
401
+ )) as any;
343
402
  user = res?.user;
344
403
  clientUser = res?.clientUser;
345
404
  }
346
- if(getSession && isSocket){
347
- const session = await getSession(sid, this.dbo as any, this.db)
348
- if(session?.expires && user && clientUser && localParams.socket){
349
- localParams.socket.__prglCache = {
405
+ if (getSession && isSocket) {
406
+ const session = await getSession(sid, this.dbo as any, this.db);
407
+ if (session?.expires && user && clientUser && localParams.socket) {
408
+ localParams.socket.__prglCache = {
350
409
  session,
351
- user,
410
+ user,
352
411
  clientUser,
353
- }
412
+ };
354
413
  }
355
414
  }
356
- if(sid) {
357
- return { sid, user, clientUser }
415
+ if (sid) {
416
+ return { sid, user, clientUser };
358
417
  }
359
418
  }
360
-
419
+
361
420
  return {};
362
421
  }, 5);
363
422
 
364
- await this.prostgles.opts.onLog?.({
365
- type: "auth",
366
- command: "getClientInfo",
423
+ await this.prostgles.opts.onLog?.({
424
+ type: "auth",
425
+ command: "getClientInfo",
367
426
  duration: Date.now() - authStart,
368
427
  sid: res.sid,
369
428
  socketId: localParams.socket?.id,
@@ -372,54 +431,71 @@ export class AuthHandler {
372
431
  }
373
432
 
374
433
  isValidSocketSession = (socket: PRGLIOSocket, session: BasicSession): boolean => {
375
- const hasExpired = Boolean(session && session.expires <= Date.now())
376
- if(this.opts?.expressConfig?.publicRoutes && !this.opts.expressConfig?.disableSocketAuthGuard){
434
+ const hasExpired = Boolean(session && session.expires <= Date.now());
435
+ if (
436
+ this.opts?.expressConfig?.publicRoutes &&
437
+ !this.opts.expressConfig?.disableSocketAuthGuard
438
+ ) {
377
439
  const error = "Session has expired";
378
- if(hasExpired){
379
- if(session.onExpiration === "redirect")
380
- socket.emit(CHANNELS.AUTHGUARD, {
381
- shouldReload: session.onExpiration === "redirect",
382
- error
383
- });
440
+ if (hasExpired) {
441
+ if (session.onExpiration === "redirect")
442
+ socket.emit(CHANNELS.AUTHGUARD, {
443
+ shouldReload: session.onExpiration === "redirect",
444
+ error,
445
+ });
384
446
  throw error;
385
447
  }
386
448
  }
387
449
  return Boolean(session && !hasExpired);
388
- }
389
-
390
- getClientAuth = async (clientReq: Pick<LocalParams, "socket" | "httpReq">): Promise<{ auth: AuthSocketSchema; userData: AuthResult; }> => {
450
+ };
391
451
 
452
+ getClientAuth = async (
453
+ clientReq: Pick<LocalParams, "socket" | "httpReq">
454
+ ): Promise<{ auth: AuthSocketSchema; userData: AuthResult }> => {
392
455
  let pathGuard = false;
393
- if (this.opts?.expressConfig?.publicRoutes && !this.opts.expressConfig?.disableSocketAuthGuard) {
394
-
456
+ if (
457
+ this.opts?.expressConfig?.publicRoutes &&
458
+ !this.opts.expressConfig?.disableSocketAuthGuard
459
+ ) {
395
460
  pathGuard = true;
396
461
 
397
- if("socket" in clientReq && clientReq.socket){
462
+ if ("socket" in clientReq && clientReq.socket) {
398
463
  const { socket } = clientReq;
399
- socket.removeAllListeners(CHANNELS.AUTHGUARD)
400
- socket.on(CHANNELS.AUTHGUARD, async (params: AuthGuardLocation, cb = (_err: any, _res?: AuthGuardLocationResponse) => { /** EMPTY */ }) => {
401
-
402
- try {
403
-
404
- const { pathname, origin } = typeof params === "string" ? JSON.parse(params) : (params || {});
405
- if (pathname && typeof pathname !== "string") {
406
- console.warn("Invalid pathname provided for AuthGuardLocation: ", pathname);
464
+ socket.removeAllListeners(CHANNELS.AUTHGUARD);
465
+ socket.on(
466
+ CHANNELS.AUTHGUARD,
467
+ async (
468
+ params: AuthGuardLocation,
469
+ cb = (_err: any, _res?: AuthGuardLocationResponse) => {
470
+ /** EMPTY */
407
471
  }
408
-
409
- /** These origins */
410
- const IGNORED_API_ORIGINS = ["file://"]
411
- if (!IGNORED_API_ORIGINS.includes(origin) && pathname && typeof pathname === "string" && this.isUserRoute(pathname) && !(await this.getClientInfo({ socket }))?.user) {
412
- cb(null, { shouldReload: true });
413
- } else {
414
- cb(null, { shouldReload: false });
472
+ ) => {
473
+ try {
474
+ const { pathname, origin } =
475
+ typeof params === "string" ? JSON.parse(params) : params || {};
476
+ if (pathname && typeof pathname !== "string") {
477
+ console.warn("Invalid pathname provided for AuthGuardLocation: ", pathname);
478
+ }
479
+
480
+ /** These origins */
481
+ const IGNORED_API_ORIGINS = ["file://"];
482
+ if (
483
+ !IGNORED_API_ORIGINS.includes(origin) &&
484
+ pathname &&
485
+ typeof pathname === "string" &&
486
+ this.isUserRoute(pathname) &&
487
+ !(await this.getClientInfo({ socket }))?.user
488
+ ) {
489
+ cb(null, { shouldReload: true });
490
+ } else {
491
+ cb(null, { shouldReload: false });
492
+ }
493
+ } catch (err) {
494
+ console.error("AUTHGUARD err: ", err);
495
+ cb(err);
415
496
  }
416
-
417
- } catch (err) {
418
- console.error("AUTHGUARD err: ", err);
419
- cb(err)
420
497
  }
421
- });
422
-
498
+ );
423
499
  }
424
500
  }
425
501
 
@@ -427,11 +503,14 @@ export class AuthHandler {
427
503
  const { email } = this.opts?.expressConfig?.registrations ?? {};
428
504
  const auth: AuthSocketSchema = {
429
505
  providers: getProviders.bind(this)(),
430
- register: email && { type: email.signupType, url: AUTH_ROUTES_AND_PARAMS.emailSignup },
506
+ register: email && {
507
+ type: email.signupType,
508
+ url: AUTH_ROUTES_AND_PARAMS.emailSignup,
509
+ },
431
510
  user: userData?.clientUser,
432
511
  loginType: email?.signupType ?? "withPassword",
433
512
  pathGuard,
434
513
  };
435
514
  return { auth, userData };
436
- }
437
- }
515
+ };
516
+ }