prostgles-server 4.2.187 → 4.2.189

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/.eslintignore +2 -1
  2. package/.eslintrc.json +2 -0
  3. package/dist/Auth/AuthHandler.d.ts +20 -11
  4. package/dist/Auth/AuthHandler.d.ts.map +1 -1
  5. package/dist/Auth/AuthHandler.js +98 -120
  6. package/dist/Auth/AuthHandler.js.map +1 -1
  7. package/dist/Auth/AuthTypes.d.ts +69 -71
  8. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  9. package/dist/Auth/{setEmailProvider.d.ts → authProviders/setEmailProvider.d.ts} +1 -1
  10. package/dist/Auth/authProviders/setEmailProvider.d.ts.map +1 -0
  11. package/dist/Auth/authProviders/setEmailProvider.js +27 -0
  12. package/dist/Auth/authProviders/setEmailProvider.js.map +1 -0
  13. package/dist/Auth/authProviders/setOAuthProviders.d.ts +5 -0
  14. package/dist/Auth/authProviders/setOAuthProviders.d.ts.map +1 -0
  15. package/dist/Auth/authProviders/setOAuthProviders.js +78 -0
  16. package/dist/Auth/authProviders/setOAuthProviders.js.map +1 -0
  17. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts +7 -0
  18. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.d.ts.map +1 -0
  19. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js +29 -0
  20. package/dist/Auth/endpoints/getConfirmEmailRequestHandler.js.map +1 -0
  21. package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts +7 -0
  22. package/dist/Auth/endpoints/getRegisterRequestHandler.d.ts.map +1 -0
  23. package/dist/Auth/endpoints/getRegisterRequestHandler.js +77 -0
  24. package/dist/Auth/endpoints/getRegisterRequestHandler.js.map +1 -0
  25. package/dist/Auth/setAuthProviders.d.ts.map +1 -1
  26. package/dist/Auth/setAuthProviders.js +4 -74
  27. package/dist/Auth/setAuthProviders.js.map +1 -1
  28. package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
  29. package/dist/Auth/setupAuthRoutes.js +23 -33
  30. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  31. package/dist/Auth/utils/checkDmarc.d.ts +2 -0
  32. package/dist/Auth/utils/checkDmarc.d.ts.map +1 -0
  33. package/dist/Auth/utils/checkDmarc.js +22 -0
  34. package/dist/Auth/utils/checkDmarc.js.map +1 -0
  35. package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +3 -0
  36. package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -0
  37. package/dist/Auth/utils/getClientRequestIPsInfo.js +29 -0
  38. package/dist/Auth/utils/getClientRequestIPsInfo.js.map +1 -0
  39. package/dist/Auth/utils/getReturnUrl.d.ts +3 -0
  40. package/dist/Auth/utils/getReturnUrl.d.ts.map +1 -0
  41. package/dist/Auth/utils/getReturnUrl.js +15 -0
  42. package/dist/Auth/utils/getReturnUrl.js.map +1 -0
  43. package/dist/Auth/utils/getSafeReturnURL.d.ts.map +1 -0
  44. package/dist/Auth/utils/getSafeReturnURL.js.map +1 -0
  45. package/dist/DBEventsManager.d.ts.map +1 -1
  46. package/dist/DBEventsManager.js +4 -5
  47. package/dist/DBEventsManager.js.map +1 -1
  48. package/dist/DBSchemaBuilder.js +1 -1
  49. package/dist/DBSchemaBuilder.js.map +1 -1
  50. package/dist/DboBuilder/DboBuilder.d.ts +0 -1
  51. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  52. package/dist/DboBuilder/DboBuilder.js +3 -12
  53. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  54. package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
  55. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  56. package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
  57. package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  58. package/dist/DboBuilder/QueryBuilder/Functions.js +38 -76
  59. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  60. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  61. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +4 -12
  62. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  63. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  64. package/dist/DboBuilder/QueryBuilder/getNewQuery.js +23 -33
  65. package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
  66. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
  67. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
  68. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +6 -6
  69. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
  70. package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
  71. package/dist/DboBuilder/QueryStreamer.js +13 -19
  72. package/dist/DboBuilder/QueryStreamer.js.map +1 -1
  73. package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
  74. package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
  75. package/dist/DboBuilder/TableHandler/DataValidator.js +7 -16
  76. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  77. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  78. package/dist/DboBuilder/TableHandler/TableHandler.js +7 -5
  79. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  80. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  81. package/dist/DboBuilder/TableHandler/delete.js +5 -8
  82. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  83. package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
  84. package/dist/DboBuilder/TableHandler/insert.js +10 -15
  85. package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
  86. package/dist/DboBuilder/TableHandler/insertTest.js +1 -1
  87. package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
  88. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  89. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +1 -1
  90. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  91. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  92. package/dist/DboBuilder/TableHandler/update.js +5 -9
  93. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  94. package/dist/DboBuilder/TableHandler/updateFile.d.ts +1 -1
  95. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  96. package/dist/DboBuilder/TableHandler/updateFile.js +7 -9
  97. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  98. package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
  99. package/dist/DboBuilder/TableHandler/upsert.js +1 -1
  100. package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
  101. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  102. package/dist/DboBuilder/ViewHandler/ViewHandler.js +11 -13
  103. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  104. package/dist/DboBuilder/ViewHandler/count.js +1 -1
  105. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  106. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  107. package/dist/DboBuilder/ViewHandler/find.js +20 -27
  108. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  109. package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
  110. package/dist/DboBuilder/ViewHandler/getExistsCondition.js +4 -10
  111. package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
  112. package/dist/DboBuilder/ViewHandler/getInfo.js +2 -2
  113. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  114. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
  115. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +6 -22
  116. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
  117. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
  118. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +6 -10
  119. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
  120. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
  121. package/dist/DboBuilder/ViewHandler/parseJoinPath.js +8 -11
  122. package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
  123. package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
  124. package/dist/DboBuilder/ViewHandler/prepareSortItems.js +7 -12
  125. package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
  126. package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
  127. package/dist/DboBuilder/ViewHandler/prepareWhere.js +6 -10
  128. package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
  129. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  130. package/dist/DboBuilder/dboBuilderUtils.js +8 -23
  131. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  132. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  133. package/dist/DboBuilder/getColumns.js +19 -26
  134. package/dist/DboBuilder/getColumns.js.map +1 -1
  135. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  136. package/dist/DboBuilder/getCondition.js +7 -9
  137. package/dist/DboBuilder/getCondition.js.map +1 -1
  138. package/dist/DboBuilder/getSubscribeRelatedTables.js +2 -2
  139. package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
  140. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
  141. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +14 -15
  142. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
  143. package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
  144. package/dist/DboBuilder/insertNestedRecords.js +26 -40
  145. package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
  146. package/dist/DboBuilder/parseUpdateRules.js +1 -1
  147. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  148. package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
  149. package/dist/DboBuilder/prepareShortestJoinPaths.js +12 -18
  150. package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
  151. package/dist/DboBuilder/runSQL.d.ts +1 -1
  152. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  153. package/dist/DboBuilder/runSQL.js +14 -27
  154. package/dist/DboBuilder/runSQL.js.map +1 -1
  155. package/dist/DboBuilder/uploadFile.d.ts +1 -1
  156. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  157. package/dist/DboBuilder/uploadFile.js +4 -11
  158. package/dist/DboBuilder/uploadFile.js.map +1 -1
  159. package/dist/FileManager/FileManager.d.ts.map +1 -1
  160. package/dist/FileManager/FileManager.js +11 -13
  161. package/dist/FileManager/FileManager.js.map +1 -1
  162. package/dist/FileManager/initFileManager.d.ts.map +1 -1
  163. package/dist/FileManager/initFileManager.js +60 -62
  164. package/dist/FileManager/initFileManager.js.map +1 -1
  165. package/dist/FileManager/uploadStream.js +2 -2
  166. package/dist/FileManager/uploadStream.js.map +1 -1
  167. package/dist/Filtering.d.ts +1 -1
  168. package/dist/Filtering.d.ts.map +1 -1
  169. package/dist/Filtering.js +12 -35
  170. package/dist/Filtering.js.map +1 -1
  171. package/dist/JSONBValidation/validation.d.ts.map +1 -1
  172. package/dist/JSONBValidation/validation.js +20 -26
  173. package/dist/JSONBValidation/validation.js.map +1 -1
  174. package/dist/Logging.d.ts +1 -0
  175. package/dist/Logging.d.ts.map +1 -1
  176. package/dist/PostgresNotifListenManager.d.ts.map +1 -1
  177. package/dist/PostgresNotifListenManager.js +1 -5
  178. package/dist/PostgresNotifListenManager.js.map +1 -1
  179. package/dist/Prostgles.d.ts +1 -1
  180. package/dist/Prostgles.d.ts.map +1 -1
  181. package/dist/Prostgles.js +18 -33
  182. package/dist/Prostgles.js.map +1 -1
  183. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  184. package/dist/PubSubManager/PubSubManager.js +8 -13
  185. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  186. package/dist/PubSubManager/addSub.d.ts.map +1 -1
  187. package/dist/PubSubManager/addSub.js +1 -1
  188. package/dist/PubSubManager/addSub.js.map +1 -1
  189. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  190. package/dist/PubSubManager/addSync.js +4 -7
  191. package/dist/PubSubManager/addSync.js.map +1 -1
  192. package/dist/PubSubManager/getCreatePubSubManagerError.js +6 -6
  193. package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
  194. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  195. package/dist/PubSubManager/initPubSubManager.js +2 -3
  196. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  197. package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
  198. package/dist/PubSubManager/pushSubData.js +0 -2
  199. package/dist/PubSubManager/pushSubData.js.map +1 -1
  200. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  201. package/dist/PublishParser/PublishParser.js +8 -13
  202. package/dist/PublishParser/PublishParser.js.map +1 -1
  203. package/dist/PublishParser/getFileTableRules.js +1 -1
  204. package/dist/PublishParser/getFileTableRules.js.map +1 -1
  205. package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
  206. package/dist/PublishParser/getSchemaFromPublish.js +6 -13
  207. package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
  208. package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
  209. package/dist/PublishParser/getTableRulesWithoutFileTable.js +14 -19
  210. package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
  211. package/dist/RestApi.d.ts +1 -1
  212. package/dist/RestApi.d.ts.map +1 -1
  213. package/dist/RestApi.js +2 -2
  214. package/dist/RestApi.js.map +1 -1
  215. package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
  216. package/dist/SchemaWatch/SchemaWatch.js +2 -2
  217. package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
  218. package/dist/SyncReplication.d.ts.map +1 -1
  219. package/dist/SyncReplication.js +31 -41
  220. package/dist/SyncReplication.js.map +1 -1
  221. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  222. package/dist/TableConfig/TableConfig.js +7 -9
  223. package/dist/TableConfig/TableConfig.js.map +1 -1
  224. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
  225. package/dist/TableConfig/getConstraintDefinitionQueries.js +1 -6
  226. package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
  227. package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
  228. package/dist/TableConfig/getFutureTableSchema.js +16 -28
  229. package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
  230. package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
  231. package/dist/TableConfig/getTableColumnQueries.js +5 -9
  232. package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
  233. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  234. package/dist/TableConfig/initTableConfig.js +22 -25
  235. package/dist/TableConfig/initTableConfig.js.map +1 -1
  236. package/dist/initProstgles.js +1 -1
  237. package/dist/initProstgles.js.map +1 -1
  238. package/dist/onSocketConnected.d.ts.map +1 -1
  239. package/dist/onSocketConnected.js +2 -4
  240. package/dist/onSocketConnected.js.map +1 -1
  241. package/dist/runClientRequest.d.ts.map +1 -1
  242. package/dist/runClientRequest.js +14 -13
  243. package/dist/runClientRequest.js.map +1 -1
  244. package/lib/Auth/AuthHandler.ts +114 -135
  245. package/lib/Auth/AuthTypes.ts +96 -81
  246. package/lib/Auth/authProviders/setEmailProvider.ts +29 -0
  247. package/lib/Auth/authProviders/setOAuthProviders.ts +97 -0
  248. package/lib/Auth/endpoints/getConfirmEmailRequestHandler.ts +39 -0
  249. package/lib/Auth/endpoints/getRegisterRequestHandler.ts +88 -0
  250. package/lib/Auth/setAuthProviders.ts +8 -111
  251. package/lib/Auth/setupAuthRoutes.ts +105 -148
  252. package/lib/Auth/utils/checkDmarc.ts +19 -0
  253. package/lib/Auth/utils/getClientRequestIPsInfo.ts +25 -0
  254. package/lib/Auth/utils/getReturnUrl.ts +13 -0
  255. package/lib/DBEventsManager.ts +12 -26
  256. package/lib/DBSchemaBuilder.ts +1 -1
  257. package/lib/DboBuilder/DboBuilder.ts +23 -52
  258. package/lib/DboBuilder/DboBuilderTypes.ts +9 -23
  259. package/lib/DboBuilder/QueryBuilder/Functions.ts +86 -188
  260. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +11 -36
  261. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +102 -129
  262. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +14 -27
  263. package/lib/DboBuilder/QueryStreamer.ts +26 -57
  264. package/lib/DboBuilder/TableHandler/DataValidator.ts +58 -90
  265. package/lib/DboBuilder/TableHandler/TableHandler.ts +19 -45
  266. package/lib/DboBuilder/TableHandler/delete.ts +9 -18
  267. package/lib/DboBuilder/TableHandler/insert.ts +18 -31
  268. package/lib/DboBuilder/TableHandler/insertTest.ts +1 -1
  269. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +8 -19
  270. package/lib/DboBuilder/TableHandler/update.ts +17 -46
  271. package/lib/DboBuilder/TableHandler/updateFile.ts +18 -21
  272. package/lib/DboBuilder/TableHandler/upsert.ts +7 -24
  273. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +13 -15
  274. package/lib/DboBuilder/ViewHandler/count.ts +1 -1
  275. package/lib/DboBuilder/ViewHandler/find.ts +28 -35
  276. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +8 -30
  277. package/lib/DboBuilder/ViewHandler/getInfo.ts +2 -2
  278. package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +16 -32
  279. package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +9 -16
  280. package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +26 -44
  281. package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +58 -82
  282. package/lib/DboBuilder/ViewHandler/prepareWhere.ts +14 -27
  283. package/lib/DboBuilder/dboBuilderUtils.ts +19 -46
  284. package/lib/DboBuilder/getColumns.ts +24 -46
  285. package/lib/DboBuilder/getCondition.ts +18 -30
  286. package/lib/DboBuilder/getSubscribeRelatedTables.ts +2 -2
  287. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +44 -62
  288. package/lib/DboBuilder/insertNestedRecords.ts +67 -135
  289. package/lib/DboBuilder/parseUpdateRules.ts +1 -1
  290. package/lib/DboBuilder/prepareShortestJoinPaths.ts +23 -58
  291. package/lib/DboBuilder/runSQL.ts +41 -76
  292. package/lib/DboBuilder/uploadFile.ts +26 -37
  293. package/lib/FileManager/FileManager.ts +27 -58
  294. package/lib/FileManager/initFileManager.ts +68 -76
  295. package/lib/FileManager/uploadStream.ts +2 -2
  296. package/lib/Filtering.ts +30 -87
  297. package/lib/JSONBValidation/validation.ts +36 -75
  298. package/lib/Logging.ts +1 -1
  299. package/lib/PostgresNotifListenManager.ts +11 -35
  300. package/lib/Prostgles.ts +42 -100
  301. package/lib/PubSubManager/PubSubManager.ts +30 -66
  302. package/lib/PubSubManager/addSub.ts +11 -18
  303. package/lib/PubSubManager/addSync.ts +5 -12
  304. package/lib/PubSubManager/getCreatePubSubManagerError.ts +9 -9
  305. package/lib/PubSubManager/initPubSubManager.ts +7 -13
  306. package/lib/PubSubManager/pushSubData.ts +1 -7
  307. package/lib/PublishParser/PublishParser.ts +8 -12
  308. package/lib/PublishParser/getFileTableRules.ts +1 -1
  309. package/lib/PublishParser/getSchemaFromPublish.ts +26 -42
  310. package/lib/PublishParser/getTableRulesWithoutFileTable.ts +22 -37
  311. package/lib/RestApi.ts +4 -12
  312. package/lib/SchemaWatch/SchemaWatch.ts +11 -24
  313. package/lib/SyncReplication.ts +96 -190
  314. package/lib/TableConfig/TableConfig.ts +16 -38
  315. package/lib/TableConfig/getConstraintDefinitionQueries.ts +2 -8
  316. package/lib/TableConfig/getFutureTableSchema.ts +20 -34
  317. package/lib/TableConfig/getTableColumnQueries.ts +13 -35
  318. package/lib/TableConfig/initTableConfig.ts +40 -64
  319. package/lib/initProstgles.ts +1 -1
  320. package/lib/onSocketConnected.ts +8 -12
  321. package/lib/runClientRequest.ts +31 -54
  322. package/package.json +2 -2
  323. package/dist/Auth/getSafeReturnURL.d.ts.map +0 -1
  324. package/dist/Auth/getSafeReturnURL.js.map +0 -1
  325. package/dist/Auth/setEmailProvider.d.ts.map +0 -1
  326. package/dist/Auth/setEmailProvider.js +0 -133
  327. package/dist/Auth/setEmailProvider.js.map +0 -1
  328. package/dist/DboBuilder/runTransaction.d.ts +0 -9
  329. package/dist/DboBuilder/runTransaction.d.ts.map +0 -1
  330. package/dist/DboBuilder/runTransaction.js +0 -49
  331. package/dist/DboBuilder/runTransaction.js.map +0 -1
  332. package/lib/Auth/setEmailProvider.ts +0 -132
  333. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +0 -27
  334. package/lib/DboBuilder/runTransaction.ts +0 -61
  335. package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +0 -3
  336. /package/dist/Auth/{getSafeReturnURL.d.ts → utils/getSafeReturnURL.d.ts} +0 -0
  337. /package/dist/Auth/{getSafeReturnURL.js → utils/getSafeReturnURL.js} +0 -0
  338. /package/lib/Auth/{getSafeReturnURL.ts → utils/getSafeReturnURL.ts} +0 -0
@@ -1,14 +1,6 @@
1
- import pgPromise, {
2
- ParameterizedQuery as PQ,
3
- ParameterizedQuery,
4
- } from "pg-promise";
1
+ import pgPromise, { ParameterizedQuery as PQ, ParameterizedQuery } from "pg-promise";
5
2
  import pg from "pg-promise/typescript/pg-subset";
6
- import {
7
- AnyObject,
8
- SQLOptions,
9
- SQLResult,
10
- SQLResultInfo,
11
- } from "prostgles-types";
3
+ import { AnyObject, SQLOptions, SQLResult, SQLResultInfo } from "prostgles-types";
12
4
  import { DB, Prostgles } from "../Prostgles";
13
5
  import { DboBuilder, LocalParams, pgp, postgresToTsType } from "./DboBuilder";
14
6
 
@@ -17,18 +9,16 @@ export async function runSQL(
17
9
  queryWithoutRLS: string,
18
10
  args: undefined | AnyObject | any[],
19
11
  options: SQLOptions | undefined,
20
- localParams?: LocalParams,
12
+ localParams?: LocalParams
21
13
  ) {
22
14
  const queryWithRLS = queryWithoutRLS;
23
15
  if (
24
16
  queryWithRLS
25
- ?.replace(/\s\s+/g, " ")
17
+ .replace(/\s\s+/g, " ")
26
18
  .toLowerCase()
27
19
  .includes("create extension pg_stat_statements")
28
20
  ) {
29
- const { shared_preload_libraries } = await this.db.oneOrNone(
30
- "SHOW shared_preload_libraries",
31
- );
21
+ const { shared_preload_libraries } = await this.db.oneOrNone("SHOW shared_preload_libraries");
32
22
  if (!(shared_preload_libraries || "").includes("pg_stat_statements")) {
33
23
  throw (
34
24
  "This query will crash the server (pg_stat_statements must be loaded via shared_preload_libraries). Need to: \n ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements' \n" +
@@ -43,11 +33,7 @@ export async function runSQL(
43
33
  throw "Not allowed to run SQL";
44
34
  }
45
35
 
46
- const {
47
- returnType,
48
- allowListen,
49
- hasParams = true,
50
- }: SQLOptions = options || ({} as SQLOptions);
36
+ const { returnType, allowListen, hasParams = true }: SQLOptions = options || ({} as SQLOptions);
51
37
  const { socket } = localParams || {};
52
38
 
53
39
  const db = localParams?.tx?.t || this.db;
@@ -71,16 +57,10 @@ export async function runSQL(
71
57
  }
72
58
  }
73
59
 
74
- if (!db) {
75
- throw "db is missing";
76
- }
77
-
78
60
  let finalQuery: string | ParameterizedQuery = queryWithRLS + "";
79
61
  const isNotListenOrNotify =
80
62
  returnType === "arrayMode" &&
81
- !["listen ", "notify "].find((c) =>
82
- queryWithoutRLS.toLowerCase().trim().startsWith(c),
83
- );
63
+ !["listen ", "notify "].find((c) => queryWithoutRLS.toLowerCase().trim().startsWith(c));
84
64
  if (isNotListenOrNotify) {
85
65
  finalQuery = new PQ({
86
66
  rowMode: "array",
@@ -92,16 +72,10 @@ export async function runSQL(
92
72
  let queryResult: pgPromise.IResultExt<AnyObject> | undefined;
93
73
 
94
74
  if (returnType === "default-with-rollback") {
95
- const ROLLBACK = "Rollback";
96
- await db
97
- .tx(async (t) => {
98
- queryResult = await t.result<AnyObject>(finalQuery, params);
99
- /** Rollback */
100
- return Promise.reject(new Error(ROLLBACK));
101
- })
102
- .catch((e) => {
103
- if (!(e instanceof Error && e.message === ROLLBACK)) throw e;
104
- });
75
+ await db.tx(async (t) => {
76
+ queryResult = await t.result<AnyObject>(finalQuery, params);
77
+ await t.none("ROLLBACK");
78
+ });
105
79
  } else {
106
80
  queryResult = await db.result<AnyObject>(finalQuery, params);
107
81
  }
@@ -112,7 +86,7 @@ export async function runSQL(
112
86
  queryWithoutRLS,
113
87
  queryResult,
114
88
  allowListen,
115
- localParams,
89
+ localParams
116
90
  );
117
91
  if (listenHandlers) {
118
92
  return listenHandlers;
@@ -123,9 +97,9 @@ export async function runSQL(
123
97
  } else if (returnType === "row") {
124
98
  return rows[0];
125
99
  } else if (returnType === "value") {
126
- return Object.values(rows?.[0] ?? {})?.[0];
100
+ return Object.values(rows[0] ?? {})[0];
127
101
  } else if (returnType === "values") {
128
- return rows.map((r) => Object.values(r ?? {})[0]);
102
+ return rows.map((r) => Object.values(r)[0]);
129
103
  } else {
130
104
  const qres: SQLResult<typeof returnType> = {
131
105
  duration: 0,
@@ -141,7 +115,7 @@ const onSQLResult = async function (
141
115
  queryWithoutRLS: string,
142
116
  { command }: Omit<SQLResultInfo, "duration">,
143
117
  allowListen: boolean | undefined,
144
- localParams?: LocalParams,
118
+ localParams?: LocalParams
145
119
  ) {
146
120
  this.prostgles.schemaWatch?.onSchemaChangeFallback?.({
147
121
  command,
@@ -152,13 +126,10 @@ const onSQLResult = async function (
152
126
  const { socket } = localParams || {};
153
127
  if (!allowListen)
154
128
  throw new Error(
155
- `Your query contains a LISTEN command. Set { allowListen: true } to get subscription hooks. Or ignore this message`,
129
+ `Your query contains a LISTEN command. Set { allowListen: true } to get subscription hooks. Or ignore this message`
156
130
  );
157
131
  if (!socket) throw "Only allowed with client socket";
158
- return await this.prostgles.dbEventsManager?.addNotify(
159
- queryWithoutRLS,
160
- socket,
161
- );
132
+ return await this.prostgles.dbEventsManager?.addNotify(queryWithoutRLS, socket);
162
133
  }
163
134
  };
164
135
 
@@ -168,10 +139,8 @@ export async function cacheDBTypes(this: DboBuilder, force = false) {
168
139
  this.USER_TABLES = undefined;
169
140
  this.USER_TABLE_COLUMNS = undefined;
170
141
  }
171
- this.DATA_TYPES ??=
172
- (await this.db.any("SELECT oid, typname FROM pg_type")) ?? [];
173
- this.USER_TABLES ??=
174
- (await this.db.any(`
142
+ this.DATA_TYPES ??= await this.db.any("SELECT oid, typname FROM pg_type");
143
+ this.USER_TABLES ??= await this.db.any(`
175
144
  SELECT
176
145
  relid,
177
146
  relname,
@@ -187,7 +156,7 @@ export async function cacheDBTypes(this: DboBuilder, force = false) {
187
156
  ) c
188
157
  ON t.relid = c.table_oid
189
158
  GROUP BY relid, relname, schemaname
190
- `)) ?? [];
159
+ `);
191
160
  this.USER_TABLE_COLUMNS ??= await this.db.any(`
192
161
  SELECT t.relid, t.schemaname,t.relname, c.column_name, c.udt_name, c.ordinal_position
193
162
  FROM information_schema.columns c
@@ -197,35 +166,31 @@ export async function cacheDBTypes(this: DboBuilder, force = false) {
197
166
  }
198
167
 
199
168
  export function getDetailedFieldInfo(this: DboBuilder, fields: pg.IColumn[]) {
200
- return (
201
- fields?.map((f) => {
202
- const dataType =
203
- this.DATA_TYPES!.find((dt) => +dt.oid === +f.dataTypeID)?.typname ??
204
- "text",
205
- table = this.USER_TABLES!.find((t) => +t.relid === +f.tableID),
206
- column = this.USER_TABLE_COLUMNS!.find(
207
- (c) => +c.relid === +f.tableID && c.ordinal_position === f.columnID,
208
- ),
209
- tsDataType = postgresToTsType(dataType);
210
-
211
- return {
212
- ...f,
213
- tsDataType,
214
- dataType,
215
- udt_name: dataType,
216
- tableName: table?.relname,
217
- tableSchema: table?.schemaname,
218
- columnName: column?.column_name,
219
- };
220
- }) ?? []
221
- );
169
+ return fields.map((f) => {
170
+ const dataType = this.DATA_TYPES!.find((dt) => +dt.oid === +f.dataTypeID)?.typname ?? "text",
171
+ table = this.USER_TABLES!.find((t) => +t.relid === +f.tableID),
172
+ column = this.USER_TABLE_COLUMNS!.find(
173
+ (c) => +c.relid === +f.tableID && c.ordinal_position === f.columnID
174
+ ),
175
+ tsDataType = postgresToTsType(dataType);
176
+
177
+ return {
178
+ ...f,
179
+ tsDataType,
180
+ dataType,
181
+ udt_name: dataType,
182
+ tableName: table?.relname,
183
+ tableSchema: table?.schemaname,
184
+ columnName: column?.column_name,
185
+ };
186
+ });
222
187
  }
223
188
 
224
189
  export const canRunSQL = async (
225
190
  prostgles: Prostgles,
226
- localParams?: LocalParams,
191
+ localParams?: LocalParams
227
192
  ): Promise<boolean> => {
228
- if (!localParams?.socket || !localParams?.httpReq) return true;
193
+ if (!localParams?.socket || !localParams.httpReq) return true;
229
194
 
230
195
  const { socket } = localParams;
231
196
  const publishParams = await prostgles.publishParser!.getPublishParams({
@@ -239,5 +204,5 @@ export const canRunSQL = async (
239
204
  export const canCreateTables = async (db: DB): Promise<boolean> => {
240
205
  return db
241
206
  .any(`SELECT has_database_privilege(current_database(), 'create') as yes`)
242
- .then((rows) => rows?.[0].yes === true);
207
+ .then((rows) => rows[0].yes === true);
243
208
  };
@@ -3,14 +3,14 @@ import { LocalParams, Media } from "./DboBuilder";
3
3
  import { ValidateRowBasic } from "../PublishParser/PublishParser";
4
4
  import { TableHandler } from "./TableHandler/TableHandler";
5
5
 
6
- export const isFile = (row: AnyObject) => {
6
+ export const isFile = (row: any) => {
7
7
  return Boolean(
8
8
  row &&
9
9
  isObject(row) &&
10
10
  getKeys(row).sort().join() === ["name", "data"].sort().join() &&
11
11
  row.data &&
12
12
  (typeof row.data === "string" || Buffer.isBuffer(row.data)) &&
13
- typeof row.name === "string",
13
+ typeof row.name === "string"
14
14
  );
15
15
  };
16
16
 
@@ -26,9 +26,9 @@ type UploadFileArgs = {
26
26
 
27
27
  export async function uploadFile(
28
28
  this: TableHandler,
29
- { row, localParams, validate, mediaId }: UploadFileArgs,
29
+ { row, localParams, validate, mediaId }: UploadFileArgs
30
30
  ): Promise<Media> {
31
- if (!this.dboBuilder.prostgles?.fileManager) throw "fileManager not set up";
31
+ if (!this.dboBuilder.prostgles.fileManager) throw "fileManager not set up";
32
32
 
33
33
  if (!isFile(row))
34
34
  throw (
@@ -39,26 +39,16 @@ export async function uploadFile(
39
39
  );
40
40
  const { data, name } = row;
41
41
 
42
- const media_id =
43
- mediaId ??
44
- (await this.db.oneOrNone("SELECT gen_random_uuid() as name")).name;
42
+ const media_id = mediaId ?? (await this.db.oneOrNone("SELECT gen_random_uuid() as name")).name;
45
43
  const nestedInsert = localParams?.nestedInsert;
46
- const type = await this.dboBuilder.prostgles.fileManager.getValidatedFileType(
47
- {
48
- file: data,
49
- fileName: name,
50
- tableName: nestedInsert?.previousTable,
51
- colName: nestedInsert?.referencingColumn,
52
- },
53
- );
44
+ const type = await this.dboBuilder.prostgles.fileManager.getValidatedFileType({
45
+ file: data,
46
+ fileName: name,
47
+ tableName: nestedInsert?.previousTable,
48
+ colName: nestedInsert?.referencingColumn,
49
+ });
54
50
  const media_name = `${media_id}.${type.ext}`;
55
- const parsedMediaKeys = [
56
- "id",
57
- "name",
58
- "original_name",
59
- "extension",
60
- "content_type",
61
- ] as const;
51
+ const parsedMediaKeys = ["id", "name", "original_name", "extension", "content_type"] as const;
62
52
  const media: Required<Pick<Media, (typeof parsedMediaKeys)[number]>> = {
63
53
  id: media_id,
64
54
  name: media_name,
@@ -80,21 +70,20 @@ export async function uploadFile(
80
70
  }
81
71
  }
82
72
 
83
- const _media: Media =
84
- await this.dboBuilder.prostgles.fileManager.uploadAsMedia({
85
- item: {
86
- data,
87
- name: media.name ?? "????",
88
- content_type: media.content_type as any,
89
- extension: media.extension,
90
- },
91
- // imageCompression: {
92
- // inside: {
93
- // width: 1100,
94
- // height: 630
95
- // }
96
- // }
97
- });
73
+ const _media: Media = await this.dboBuilder.prostgles.fileManager.uploadAsMedia({
74
+ item: {
75
+ data,
76
+ name: media.name,
77
+ content_type: media.content_type as any,
78
+ extension: media.extension,
79
+ },
80
+ // imageCompression: {
81
+ // inside: {
82
+ // width: 1100,
83
+ // height: 630
84
+ // }
85
+ // }
86
+ });
98
87
 
99
88
  const mediaRow = {
100
89
  ...media,
@@ -23,10 +23,7 @@ import { ExpressApp } from "../RestApi";
23
23
 
24
24
  export const HOUR = 3600 * 1000;
25
25
 
26
- export const asSQLIdentifier = async (
27
- name: string,
28
- db: DB,
29
- ): Promise<string> => {
26
+ export const asSQLIdentifier = async (name: string, db: DB): Promise<string> => {
30
27
  return (await db.one("select format('%I', $1) as name", [name]))?.name;
31
28
  };
32
29
 
@@ -54,9 +51,7 @@ export type FileUploadArgs = {
54
51
  contentType: string;
55
52
  file: string | Buffer | stream.PassThrough;
56
53
  onFinish: (
57
- ...args:
58
- | [error: Error, result: undefined]
59
- | [error: undefined, result: UploadedCloudFile]
54
+ ...args: [error: Error, result: undefined] | [error: undefined, result: UploadedCloudFile]
60
55
  ) => void;
61
56
  onProgress?: (bytesUploaded: number) => void;
62
57
  };
@@ -64,10 +59,7 @@ export type CloudClient = {
64
59
  upload: (file: FileUploadArgs) => Promise<void>;
65
60
  downloadAsStream: (name: string) => Promise<stream.Readable>;
66
61
  delete: (fileName: string) => Promise<void>;
67
- getSignedUrlForDownload: (
68
- fileName: string,
69
- expiresInSeconds: number,
70
- ) => Promise<string>;
62
+ getSignedUrlForDownload: (fileName: string, expiresInSeconds: number) => Promise<string>;
71
63
  };
72
64
 
73
65
  export type LocalConfig = {
@@ -161,14 +153,11 @@ export class FileManager {
161
153
  }
162
154
  } else {
163
155
  console.error(
164
- "FileManager checkInterval delayedDelete FAIL: Could not access file table tableHandler.delete()",
156
+ "FileManager checkInterval delayedDelete FAIL: Could not access file table tableHandler.delete()"
165
157
  );
166
158
  }
167
159
  },
168
- Math.max(
169
- 10000,
170
- (fullConfig.delayedDelete.checkIntervalHours || 0) * HOUR,
171
- ),
160
+ Math.max(10000, (fullConfig.delayedDelete.checkIntervalHours || 0) * HOUR)
172
161
  );
173
162
  }
174
163
  }
@@ -187,7 +176,7 @@ export class FileManager {
187
176
 
188
177
  async deleteFile(name: string) {
189
178
  if (this.cloudClient) {
190
- const res = await this.cloudClient?.delete(name);
179
+ const res = await this.cloudClient.delete(name);
191
180
  return res;
192
181
  } else if ("localFolderPath" in this.config) {
193
182
  const path = `${this.config.localFolderPath}/${name}`;
@@ -202,8 +191,7 @@ export class FileManager {
202
191
 
203
192
  getValidatedFileType = getValidatedFileType.bind(this);
204
193
 
205
- getLocalFileUrl = (name: string) =>
206
- this.fileRoute ? `${this.fileRoute}/${name}` : "";
194
+ getLocalFileUrl = (name: string) => (this.fileRoute ? `${this.fileRoute}/${name}` : "");
207
195
 
208
196
  checkFreeSpace = async (folderPath: string, fileSize = 0) => {
209
197
  if (!this.cloudClient && "localFolderPath" in this.config) {
@@ -229,8 +217,9 @@ export class FileManager {
229
217
  dissallowedExtensions?: Array<ALLOWED_EXTENSION>;
230
218
  imageOptions?: ImageOptions;
231
219
  }): Promise<UploadedItem> => {
232
- const { item, imageOptions } = params;
233
- const { name, data, content_type, extension } = item;
220
+ const { item } = params;
221
+ const { name, data, content_type } = item;
222
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
234
223
  if (!data) throw "No file provided";
235
224
  if (!name || typeof name !== "string") throw "Expecting a string name";
236
225
 
@@ -280,32 +269,24 @@ export class FileManager {
280
269
  return res;
281
270
  };
282
271
 
283
- async getFileCloudDownloadURL(
284
- fileName: string,
285
- expiresInSecondsRaw: number = 30 * 60,
286
- ) {
272
+ async getFileCloudDownloadURL(fileName: string, expiresInSecondsRaw: number = 30 * 60) {
287
273
  const expiresInSeconds = Math.max(1, Math.round(expiresInSecondsRaw));
288
- return await this.cloudClient?.getSignedUrlForDownload(
289
- fileName,
290
- expiresInSeconds,
291
- );
274
+ return await this.cloudClient?.getSignedUrlForDownload(fileName, expiresInSeconds);
292
275
  }
293
276
 
294
- parseSQLIdentifier = async (name: string) =>
295
- asSQLIdentifier(name, this.prostgles!.db!); // this.prostgles.dbo.sql<"value">("select format('%I', $1)", [name], { returnType: "value" } )
277
+ parseSQLIdentifier = async (name: string) => asSQLIdentifier(name, this.prostgles!.db!); // this.prostgles.dbo.sql<"value">("select format('%I', $1)", [name], { returnType: "value" } )
296
278
 
297
279
  getColInfo = (args: {
298
280
  tableName: string;
299
281
  colName: string;
300
282
  }): ValidatedColumnInfo["file"] | undefined => {
301
283
  const { colName, tableName } = args;
302
- const tableConfig =
303
- this.prostgles?.opts.fileTable?.referencedTables?.[tableName];
284
+ const tableConfig = this.prostgles?.opts.fileTable?.referencedTables?.[tableName];
304
285
  const isReferencingFileTable = this.dbo[tableName]?.columns?.some(
305
286
  (c) =>
306
287
  c.name === colName &&
307
288
  c.references &&
308
- c.references?.some(({ ftable }) => ftable === this.tableName),
289
+ c.references.some(({ ftable }) => ftable === this.tableName)
309
290
  );
310
291
  const allowAllFiles = { acceptedContent: "*" } as const;
311
292
  if (isReferencingFileTable) {
@@ -320,15 +301,13 @@ export class FileManager {
320
301
  init = initFileManager.bind(this);
321
302
 
322
303
  destroy = () => {
323
- removeExpressRoute(this.prostgles?.opts.fileTable?.expressApp, [
324
- this.fileRouteExpress,
325
- ]);
304
+ removeExpressRoute(this.prostgles?.opts.fileTable?.expressApp, [this.fileRouteExpress]);
326
305
  };
327
306
  }
328
307
 
329
308
  export const removeExpressRoute = (
330
309
  app: ExpressApp | undefined,
331
- routePaths: (string | undefined)[],
310
+ routePaths: (string | undefined)[]
332
311
  ) => {
333
312
  const routes = app?._router?.stack;
334
313
  if (routes) {
@@ -340,10 +319,7 @@ export const removeExpressRoute = (
340
319
  }
341
320
  };
342
321
 
343
- export const removeExpressRouteByName = (
344
- app: ExpressApp | undefined,
345
- name: string,
346
- ) => {
322
+ export const removeExpressRouteByName = (app: ExpressApp | undefined, name: string) => {
347
323
  const routes = app?._router?.stack;
348
324
  if (routes) {
349
325
  routes.forEach((route, i) => {
@@ -355,17 +331,15 @@ export const removeExpressRouteByName = (
355
331
  };
356
332
 
357
333
  export const getFileTypeFromFilename = (
358
- fileName: string,
359
- ):
360
- | { mime: ALLOWED_CONTENT_TYPE; ext: ALLOWED_EXTENSION | string }
361
- | undefined => {
334
+ fileName: string
335
+ ): { mime: ALLOWED_CONTENT_TYPE; ext: ALLOWED_EXTENSION | string } | undefined => {
362
336
  const nameParts = fileName.split(".");
363
337
 
364
338
  if (nameParts.length < 2) return undefined;
365
339
 
366
340
  const nameExt = nameParts.at(-1)!.toLowerCase(),
367
341
  mime = getKeys(CONTENT_TYPE_TO_EXT).find((k) =>
368
- (CONTENT_TYPE_TO_EXT[k] as readonly string[]).includes(nameExt),
342
+ (CONTENT_TYPE_TO_EXT[k] as readonly string[]).includes(nameExt)
369
343
  );
370
344
 
371
345
  if (!mime) return undefined;
@@ -381,7 +355,7 @@ export const getFileTypeFromFilename = (
381
355
 
382
356
  export const getFileType = async (
383
357
  file: Buffer | string,
384
- fileName: string,
358
+ fileName: string
385
359
  ): Promise<{ mime: ALLOWED_CONTENT_TYPE; ext: ALLOWED_EXTENSION }> => {
386
360
  const { fileTypeFromBuffer } = await (eval('import("file-type")') as Promise<
387
361
  typeof import("file-type")
@@ -389,25 +363,20 @@ export const getFileType = async (
389
363
 
390
364
  const fileNameMime = getFileTypeFromFilename(fileName);
391
365
  if (!fileNameMime?.ext) throw new Error("File name must contain extenion");
392
- const res = await fileTypeFromBuffer(
393
- typeof file === "string" ? Buffer.from(file, "utf8") : file,
394
- );
366
+ const res = await fileTypeFromBuffer(typeof file === "string" ? Buffer.from(file, "utf8") : file);
395
367
 
396
368
  if (!res) {
397
369
  /* Set correct/missing extension */
398
- const nameExt = fileNameMime?.ext;
399
- if (
400
- ["xml", "txt", "csv", "tsv", "svg", "sql"].includes(nameExt) &&
401
- fileNameMime.mime
402
- ) {
370
+ const nameExt = fileNameMime.ext;
371
+ if (["xml", "txt", "csv", "tsv", "svg", "sql"].includes(nameExt)) {
403
372
  return fileNameMime as any;
404
373
  }
405
374
 
406
375
  throw new Error("Could not get the file type from file buffer");
407
376
  } else {
408
- if (!res.ext || fileNameMime?.ext.toLowerCase() !== res.ext.toLowerCase()) {
377
+ if (fileNameMime.ext.toLowerCase() !== res.ext.toLowerCase()) {
409
378
  throw new Error(
410
- `There is a mismatch between file name extension and actual buffer extension: ${fileNameMime?.ext} vs ${res.ext}`,
379
+ `There is a mismatch between file name extension and actual buffer extension: ${fileNameMime.ext} vs ${res.ext}`
411
380
  );
412
381
  }
413
382
  }