prostgles-server 4.2.183 → 4.2.184

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 (430) 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.map +1 -1
  5. package/dist/Auth/AuthHandler.js +71 -33
  6. package/dist/Auth/AuthHandler.js.map +1 -1
  7. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  8. package/dist/Auth/getSafeReturnURL.d.ts.map +1 -1
  9. package/dist/Auth/getSafeReturnURL.js.map +1 -1
  10. package/dist/Auth/sendEmail.d.ts.map +1 -1
  11. package/dist/Auth/sendEmail.js +6 -6
  12. package/dist/Auth/sendEmail.js.map +1 -1
  13. package/dist/Auth/setAuthProviders.d.ts +1 -1
  14. package/dist/Auth/setAuthProviders.d.ts.map +1 -1
  15. package/dist/Auth/setAuthProviders.js +15 -8
  16. package/dist/Auth/setAuthProviders.js.map +1 -1
  17. package/dist/Auth/setEmailProvider.d.ts.map +1 -1
  18. package/dist/Auth/setEmailProvider.js +21 -6
  19. package/dist/Auth/setEmailProvider.js.map +1 -1
  20. package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
  21. package/dist/Auth/setupAuthRoutes.js +27 -9
  22. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  23. package/dist/DBEventsManager.d.ts.map +1 -1
  24. package/dist/DBEventsManager.js +24 -19
  25. package/dist/DBEventsManager.js.map +1 -1
  26. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  27. package/dist/DBSchemaBuilder.js +18 -5
  28. package/dist/DBSchemaBuilder.js.map +1 -1
  29. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  30. package/dist/DboBuilder/DboBuilder.js +7 -2
  31. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  32. package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
  33. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  34. package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
  35. package/dist/DboBuilder/QueryBuilder/Functions.d.ts +2 -2
  36. package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  37. package/dist/DboBuilder/QueryBuilder/Functions.js +293 -173
  38. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  39. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +2 -2
  40. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  41. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +52 -29
  42. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  43. package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
  44. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +51 -32
  45. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
  46. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  47. package/dist/DboBuilder/QueryBuilder/getNewQuery.js +48 -25
  48. package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
  49. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
  50. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
  51. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +32 -23
  52. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
  53. package/dist/DboBuilder/QueryStreamer.d.ts +2 -2
  54. package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
  55. package/dist/DboBuilder/QueryStreamer.js +68 -23
  56. package/dist/DboBuilder/QueryStreamer.js.map +1 -1
  57. package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
  58. package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
  59. package/dist/DboBuilder/TableHandler/DataValidator.js +79 -43
  60. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  61. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  62. package/dist/DboBuilder/TableHandler/TableHandler.js +39 -15
  63. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  64. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  65. package/dist/DboBuilder/TableHandler/delete.js +44 -13
  66. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  67. package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
  68. package/dist/DboBuilder/TableHandler/insert.js +81 -22
  69. package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
  70. package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -1
  71. package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
  72. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -1
  73. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
  74. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +7 -4
  75. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
  76. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  77. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -5
  78. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  79. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  80. package/dist/DboBuilder/TableHandler/update.js +16 -4
  81. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  82. package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
  83. package/dist/DboBuilder/TableHandler/updateBatch.js +33 -10
  84. package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
  85. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  86. package/dist/DboBuilder/TableHandler/updateFile.js +24 -6
  87. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  88. package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
  89. package/dist/DboBuilder/TableHandler/upsert.js +22 -6
  90. package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
  91. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +5 -5
  92. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  93. package/dist/DboBuilder/ViewHandler/ViewHandler.js +64 -36
  94. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  95. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
  96. package/dist/DboBuilder/ViewHandler/count.js +21 -7
  97. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  98. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  99. package/dist/DboBuilder/ViewHandler/find.js +76 -22
  100. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  101. package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
  102. package/dist/DboBuilder/ViewHandler/getExistsCondition.js +19 -10
  103. package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
  104. package/dist/DboBuilder/ViewHandler/getExistsFilters.d.ts.map +1 -1
  105. package/dist/DboBuilder/ViewHandler/getExistsFilters.js +12 -5
  106. package/dist/DboBuilder/ViewHandler/getExistsFilters.js.map +1 -1
  107. package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
  108. package/dist/DboBuilder/ViewHandler/getInfo.js +27 -9
  109. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  110. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts +2 -2
  111. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
  112. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +42 -23
  113. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
  114. package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts.map +1 -1
  115. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js +22 -9
  116. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js.map +1 -1
  117. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts +4 -4
  118. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
  119. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +13 -11
  120. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
  121. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts +1 -1
  122. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
  123. package/dist/DboBuilder/ViewHandler/parseJoinPath.js +44 -29
  124. package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
  125. package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
  126. package/dist/DboBuilder/ViewHandler/prepareSortItems.js +36 -27
  127. package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
  128. package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
  129. package/dist/DboBuilder/ViewHandler/prepareWhere.js +16 -12
  130. package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
  131. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
  132. package/dist/DboBuilder/ViewHandler/size.js +24 -7
  133. package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
  134. package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -1
  135. package/dist/DboBuilder/ViewHandler/subscribe.js +40 -12
  136. package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
  137. package/dist/DboBuilder/ViewHandler/validateViewRules.d.ts.map +1 -1
  138. package/dist/DboBuilder/ViewHandler/validateViewRules.js +20 -5
  139. package/dist/DboBuilder/ViewHandler/validateViewRules.js.map +1 -1
  140. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  141. package/dist/DboBuilder/dboBuilderUtils.js +18 -7
  142. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  143. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  144. package/dist/DboBuilder/getColumns.js +22 -7
  145. package/dist/DboBuilder/getColumns.js.map +1 -1
  146. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  147. package/dist/DboBuilder/getCondition.js +43 -30
  148. package/dist/DboBuilder/getCondition.js.map +1 -1
  149. package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
  150. package/dist/DboBuilder/getSubscribeRelatedTables.js +38 -27
  151. package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
  152. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
  153. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +9 -9
  154. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
  155. package/dist/DboBuilder/insertNestedRecords.d.ts +3 -3
  156. package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
  157. package/dist/DboBuilder/insertNestedRecords.js +79 -44
  158. package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
  159. package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
  160. package/dist/DboBuilder/parseUpdateRules.js +38 -14
  161. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  162. package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
  163. package/dist/DboBuilder/prepareShortestJoinPaths.js +56 -31
  164. package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
  165. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  166. package/dist/DboBuilder/runSQL.js +41 -21
  167. package/dist/DboBuilder/runSQL.js.map +1 -1
  168. package/dist/DboBuilder/runTransaction.d.ts +1 -1
  169. package/dist/DboBuilder/runTransaction.d.ts.map +1 -1
  170. package/dist/DboBuilder/runTransaction.js +2 -2
  171. package/dist/DboBuilder/runTransaction.js.map +1 -1
  172. package/dist/DboBuilder/sqlErrCodeToMsg.d.ts.map +1 -1
  173. package/dist/DboBuilder/sqlErrCodeToMsg.js +297 -38
  174. package/dist/DboBuilder/sqlErrCodeToMsg.js.map +1 -1
  175. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  176. package/dist/DboBuilder/uploadFile.js +33 -9
  177. package/dist/DboBuilder/uploadFile.js.map +1 -1
  178. package/dist/Event_Trigger_Tags.d.ts +1 -1
  179. package/dist/Event_Trigger_Tags.d.ts.map +1 -1
  180. package/dist/Event_Trigger_Tags.js +1 -1
  181. package/dist/Event_Trigger_Tags.js.map +1 -1
  182. package/dist/FileManager/FileManager.d.ts.map +1 -1
  183. package/dist/FileManager/FileManager.js +6 -3
  184. package/dist/FileManager/FileManager.js.map +1 -1
  185. package/dist/FileManager/getValidatedFileType.d.ts.map +1 -1
  186. package/dist/FileManager/getValidatedFileType.js +18 -16
  187. package/dist/FileManager/getValidatedFileType.js.map +1 -1
  188. package/dist/FileManager/initFileManager.d.ts.map +1 -1
  189. package/dist/FileManager/initFileManager.js +7 -1
  190. package/dist/FileManager/initFileManager.js.map +1 -1
  191. package/dist/FileManager/upload.d.ts +1 -1
  192. package/dist/FileManager/upload.d.ts.map +1 -1
  193. package/dist/FileManager/upload.js +3 -3
  194. package/dist/FileManager/upload.js.map +1 -1
  195. package/dist/FileManager/uploadStream.d.ts +1 -1
  196. package/dist/FileManager/uploadStream.d.ts.map +1 -1
  197. package/dist/FileManager/uploadStream.js +6 -7
  198. package/dist/FileManager/uploadStream.js.map +1 -1
  199. package/dist/Filtering.d.ts +3 -3
  200. package/dist/Filtering.d.ts.map +1 -1
  201. package/dist/Filtering.js +70 -37
  202. package/dist/Filtering.js.map +1 -1
  203. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
  204. package/dist/JSONBValidation/validate_jsonb_schema_sql.js +1 -4
  205. package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -1
  206. package/dist/JSONBValidation/validation.d.ts.map +1 -1
  207. package/dist/JSONBValidation/validation.js +46 -24
  208. package/dist/JSONBValidation/validation.js.map +1 -1
  209. package/dist/Logging.d.ts +2 -2
  210. package/dist/Logging.d.ts.map +1 -1
  211. package/dist/PostgresNotifListenManager.d.ts.map +1 -1
  212. package/dist/PostgresNotifListenManager.js +20 -22
  213. package/dist/PostgresNotifListenManager.js.map +1 -1
  214. package/dist/Prostgles.d.ts +1 -1
  215. package/dist/Prostgles.d.ts.map +1 -1
  216. package/dist/Prostgles.js +37 -11
  217. package/dist/Prostgles.js.map +1 -1
  218. package/dist/ProstglesTypes.d.ts.map +1 -1
  219. package/dist/ProstglesTypes.js +6 -1
  220. package/dist/ProstglesTypes.js.map +1 -1
  221. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  222. package/dist/PubSubManager/PubSubManager.js +10 -5
  223. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  224. package/dist/PubSubManager/addSub.d.ts.map +1 -1
  225. package/dist/PubSubManager/addSub.js +4 -6
  226. package/dist/PubSubManager/addSub.js.map +1 -1
  227. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  228. package/dist/PubSubManager/addSync.js +10 -6
  229. package/dist/PubSubManager/addSync.js.map +1 -1
  230. package/dist/PubSubManager/getCreatePubSubManagerError.d.ts.map +1 -1
  231. package/dist/PubSubManager/getCreatePubSubManagerError.js +3 -1
  232. package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
  233. package/dist/PubSubManager/getPubSubManagerInitQuery.d.ts.map +1 -1
  234. package/dist/PubSubManager/getPubSubManagerInitQuery.js +8 -8
  235. package/dist/PubSubManager/getPubSubManagerInitQuery.js.map +1 -1
  236. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  237. package/dist/PubSubManager/initPubSubManager.js +7 -9
  238. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  239. package/dist/PubSubManager/notifListener.d.ts.map +1 -1
  240. package/dist/PubSubManager/notifListener.js +23 -12
  241. package/dist/PubSubManager/notifListener.js.map +1 -1
  242. package/dist/PubSubManager/orphanTriggerCheck.d.ts.map +1 -1
  243. package/dist/PubSubManager/orphanTriggerCheck.js.map +1 -1
  244. package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
  245. package/dist/PubSubManager/pushSubData.js +1 -1
  246. package/dist/PubSubManager/pushSubData.js.map +1 -1
  247. package/dist/PublishParser/PublishParser.d.ts +1 -1
  248. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  249. package/dist/PublishParser/PublishParser.js +25 -14
  250. package/dist/PublishParser/PublishParser.js.map +1 -1
  251. package/dist/PublishParser/getFileTableRules.d.ts.map +1 -1
  252. package/dist/PublishParser/getFileTableRules.js +23 -16
  253. package/dist/PublishParser/getFileTableRules.js.map +1 -1
  254. package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
  255. package/dist/PublishParser/getSchemaFromPublish.js +39 -16
  256. package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
  257. package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
  258. package/dist/PublishParser/getTableRulesWithoutFileTable.js +42 -22
  259. package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
  260. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  261. package/dist/PublishParser/publishTypesAndUtils.js +5 -1
  262. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  263. package/dist/RestApi.d.ts +1 -1
  264. package/dist/RestApi.d.ts.map +1 -1
  265. package/dist/RestApi.js +1 -1
  266. package/dist/RestApi.js.map +1 -1
  267. package/dist/SchemaWatch/SchemaWatch.d.ts +2 -2
  268. package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
  269. package/dist/SchemaWatch/SchemaWatch.js +11 -9
  270. package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
  271. package/dist/SchemaWatch/getValidatedWatchSchemaType.d.ts.map +1 -1
  272. package/dist/SchemaWatch/getValidatedWatchSchemaType.js +3 -3
  273. package/dist/SchemaWatch/getValidatedWatchSchemaType.js.map +1 -1
  274. package/dist/SchemaWatch/getWatchSchemaTagList.d.ts.map +1 -1
  275. package/dist/SchemaWatch/getWatchSchemaTagList.js +12 -6
  276. package/dist/SchemaWatch/getWatchSchemaTagList.js.map +1 -1
  277. package/dist/SyncReplication.d.ts.map +1 -1
  278. package/dist/SyncReplication.js +84 -42
  279. package/dist/SyncReplication.js.map +1 -1
  280. package/dist/TableConfig/TableConfig.d.ts +5 -5
  281. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  282. package/dist/TableConfig/TableConfig.js +18 -5
  283. package/dist/TableConfig/TableConfig.js.map +1 -1
  284. package/dist/TableConfig/getColumnDefinitionQuery.d.ts +2 -2
  285. package/dist/TableConfig/getColumnDefinitionQuery.d.ts.map +1 -1
  286. package/dist/TableConfig/getColumnDefinitionQuery.js +20 -9
  287. package/dist/TableConfig/getColumnDefinitionQuery.js.map +1 -1
  288. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts +3 -3
  289. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
  290. package/dist/TableConfig/getConstraintDefinitionQueries.js +12 -7
  291. package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
  292. package/dist/TableConfig/getFutureTableSchema.d.ts +1 -1
  293. package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
  294. package/dist/TableConfig/getFutureTableSchema.js +6 -4
  295. package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
  296. package/dist/TableConfig/getPGIndexes.d.ts.map +1 -1
  297. package/dist/TableConfig/getPGIndexes.js.map +1 -1
  298. package/dist/TableConfig/getTableColumnQueries.d.ts +1 -1
  299. package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
  300. package/dist/TableConfig/getTableColumnQueries.js +38 -19
  301. package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
  302. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  303. package/dist/TableConfig/initTableConfig.js +91 -43
  304. package/dist/TableConfig/initTableConfig.js.map +1 -1
  305. package/dist/index.d.ts.map +1 -1
  306. package/dist/index.js.map +1 -1
  307. package/dist/initProstgles.d.ts.map +1 -1
  308. package/dist/initProstgles.js +14 -10
  309. package/dist/initProstgles.js.map +1 -1
  310. package/dist/onSocketConnected.d.ts.map +1 -1
  311. package/dist/onSocketConnected.js +38 -16
  312. package/dist/onSocketConnected.js.map +1 -1
  313. package/dist/runClientRequest.d.ts.map +1 -1
  314. package/dist/runClientRequest.js +33 -14
  315. package/dist/runClientRequest.js.map +1 -1
  316. package/dist/shortestPath.d.ts.map +1 -1
  317. package/dist/shortestPath.js +1 -1
  318. package/dist/shortestPath.js.map +1 -1
  319. package/dist/typeTests/dboTypeCheck.js.map +1 -1
  320. package/examples/full-example-typescript/DBoGenerated.d.ts +112 -54
  321. package/examples/full-example-typescript/DBoGenerated.js +3 -3
  322. package/examples/full-example-typescript/home.html +28 -26
  323. package/examples/full-example-typescript/index.d.ts +1 -1
  324. package/examples/full-example-typescript/index.js +80 -53
  325. package/examples/full-example-vanilla/home.html +151 -125
  326. package/examples/server/javascript/index.js +17 -19
  327. package/lib/Auth/AuthHandler.ts +285 -167
  328. package/lib/Auth/AuthTypes.ts +43 -12
  329. package/lib/Auth/getSafeReturnURL.ts +35 -21
  330. package/lib/Auth/sendEmail.ts +34 -31
  331. package/lib/Auth/setAuthProviders.ts +94 -71
  332. package/lib/Auth/setEmailProvider.ts +53 -36
  333. package/lib/Auth/setupAuthRoutes.ts +164 -100
  334. package/lib/DBEventsManager.ts +87 -65
  335. package/lib/DBSchemaBuilder.ts +62 -28
  336. package/lib/DboBuilder/DboBuilder.ts +45 -21
  337. package/lib/DboBuilder/DboBuilderTypes.ts +99 -95
  338. package/lib/DboBuilder/QueryBuilder/Functions.ts +862 -580
  339. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +202 -141
  340. package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +199 -124
  341. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +209 -148
  342. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +101 -75
  343. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +10 -5
  344. package/lib/DboBuilder/QueryStreamer.ts +207 -100
  345. package/lib/DboBuilder/TableHandler/DataValidator.ts +253 -148
  346. package/lib/DboBuilder/TableHandler/TableHandler.ts +155 -60
  347. package/lib/DboBuilder/TableHandler/delete.ts +82 -29
  348. package/lib/DboBuilder/TableHandler/insert.ts +177 -81
  349. package/lib/DboBuilder/TableHandler/insertTest.ts +13 -7
  350. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +35 -21
  351. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +95 -45
  352. package/lib/DboBuilder/TableHandler/update.ts +54 -14
  353. package/lib/DboBuilder/TableHandler/updateBatch.ts +59 -21
  354. package/lib/DboBuilder/TableHandler/updateFile.ts +57 -26
  355. package/lib/DboBuilder/TableHandler/upsert.ts +58 -13
  356. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +264 -121
  357. package/lib/DboBuilder/ViewHandler/count.ts +56 -25
  358. package/lib/DboBuilder/ViewHandler/find.ts +153 -68
  359. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +59 -32
  360. package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +31 -19
  361. package/lib/DboBuilder/ViewHandler/getInfo.ts +47 -16
  362. package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +91 -57
  363. package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +51 -29
  364. package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +35 -29
  365. package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +130 -76
  366. package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +140 -92
  367. package/lib/DboBuilder/ViewHandler/prepareWhere.ts +66 -26
  368. package/lib/DboBuilder/ViewHandler/size.ts +56 -22
  369. package/lib/DboBuilder/ViewHandler/subscribe.ts +122 -46
  370. package/lib/DboBuilder/ViewHandler/validateViewRules.ts +39 -14
  371. package/lib/DboBuilder/dboBuilderUtils.ts +41 -18
  372. package/lib/DboBuilder/getColumns.ts +44 -12
  373. package/lib/DboBuilder/getCondition.ts +120 -79
  374. package/lib/DboBuilder/getSubscribeRelatedTables.ts +144 -83
  375. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +61 -44
  376. package/lib/DboBuilder/insertNestedRecords.ts +370 -235
  377. package/lib/DboBuilder/parseUpdateRules.ts +117 -61
  378. package/lib/DboBuilder/prepareShortestJoinPaths.ts +115 -56
  379. package/lib/DboBuilder/runSQL.ts +135 -74
  380. package/lib/DboBuilder/runTransaction.ts +27 -16
  381. package/lib/DboBuilder/sqlErrCodeToMsg.ts +502 -244
  382. package/lib/DboBuilder/uploadFile.ts +67 -31
  383. package/lib/Event_Trigger_Tags.ts +6 -4
  384. package/lib/FileManager/FileManager.ts +53 -21
  385. package/lib/FileManager/getValidatedFileType.ts +79 -35
  386. package/lib/FileManager/initFileManager.ts +21 -9
  387. package/lib/FileManager/upload.ts +21 -19
  388. package/lib/FileManager/uploadStream.ts +33 -34
  389. package/lib/Filtering.ts +249 -197
  390. package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +2 -7
  391. package/lib/JSONBValidation/validation.ts +147 -82
  392. package/lib/Logging.ts +107 -97
  393. package/lib/PostgresNotifListenManager.ts +96 -63
  394. package/lib/Prostgles.ts +106 -35
  395. package/lib/ProstglesTypes.ts +31 -9
  396. package/lib/PubSubManager/PubSubManager.ts +62 -27
  397. package/lib/PubSubManager/addSub.ts +56 -37
  398. package/lib/PubSubManager/addSync.ts +50 -33
  399. package/lib/PubSubManager/getCreatePubSubManagerError.ts +29 -21
  400. package/lib/PubSubManager/getPubSubManagerInitQuery.ts +45 -27
  401. package/lib/PubSubManager/initPubSubManager.ts +27 -18
  402. package/lib/PubSubManager/notifListener.ts +77 -59
  403. package/lib/PubSubManager/orphanTriggerCheck.ts +5 -4
  404. package/lib/PubSubManager/pushSubData.ts +11 -9
  405. package/lib/PublishParser/PublishParser.ts +102 -44
  406. package/lib/PublishParser/getFileTableRules.ts +97 -54
  407. package/lib/PublishParser/getSchemaFromPublish.ts +146 -74
  408. package/lib/PublishParser/getTableRulesWithoutFileTable.ts +101 -51
  409. package/lib/PublishParser/publishTypesAndUtils.ts +74 -23
  410. package/lib/RestApi.ts +10 -2
  411. package/lib/SchemaWatch/SchemaWatch.ts +52 -34
  412. package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +1 -1
  413. package/lib/SchemaWatch/getValidatedWatchSchemaType.ts +32 -22
  414. package/lib/SchemaWatch/getWatchSchemaTagList.ts +24 -16
  415. package/lib/SyncReplication.ts +376 -190
  416. package/lib/TableConfig/TableConfig.ts +200 -136
  417. package/lib/TableConfig/getColumnDefinitionQuery.ts +65 -44
  418. package/lib/TableConfig/getConstraintDefinitionQueries.ts +41 -25
  419. package/lib/TableConfig/getFutureTableSchema.ts +31 -21
  420. package/lib/TableConfig/getPGIndexes.ts +7 -4
  421. package/lib/TableConfig/getTableColumnQueries.ts +101 -54
  422. package/lib/TableConfig/initTableConfig.ts +192 -101
  423. package/lib/index.ts +6 -5
  424. package/lib/initProstgles.ts +57 -51
  425. package/lib/onSocketConnected.ts +75 -40
  426. package/lib/runClientRequest.ts +148 -79
  427. package/lib/shortestPath.ts +80 -76
  428. package/lib/typeTests/DBoGenerated.d.ts +5 -1
  429. package/lib/typeTests/dboTypeCheck.ts +8 -8
  430. package/package.json +1 -1
@@ -9,7 +9,7 @@ const parseFunction = (funcData) => {
9
9
  const { func, args, functions, allowedFields } = funcData;
10
10
  /* Function is computed column. No checks needed */
11
11
  if (typeof func !== "string") {
12
- const computedCol = exports.COMPUTED_FIELDS.find(c => c.name === func.name);
12
+ const computedCol = exports.COMPUTED_FIELDS.find((c) => c.name === func.name);
13
13
  if (!computedCol)
14
14
  throw `Unexpected function: computed column spec not found for ${JSON.stringify(func.name)}`;
15
15
  return func;
@@ -19,16 +19,20 @@ const parseFunction = (funcData) => {
19
19
  return `Issue with function ${JSON.stringify({ [funcName]: args })}: \n${msg}`;
20
20
  };
21
21
  /* Find function */
22
- const funcDef = functions.find(f => f.name === funcName);
22
+ const funcDef = functions.find((f) => f.name === funcName);
23
23
  if (!funcDef) {
24
- const sf = functions.filter(f => f.name.toLowerCase().slice(1).startsWith(funcName.toLowerCase())).sort((a, b) => (a.name.length - b.name.length));
25
- const hint = (sf.length ? `. \n Maybe you meant: \n | ${sf.map(s => s.name + " " + (s.description || "")).join(" \n | ")} ?` : "");
26
- throw "\n Function " + funcName + " does not exist or is not allowed " + hint;
24
+ const sf = functions
25
+ .filter((f) => f.name.toLowerCase().slice(1).startsWith(funcName.toLowerCase()))
26
+ .sort((a, b) => a.name.length - b.name.length);
27
+ const hint = sf.length
28
+ ? `. \n Maybe you meant: \n | ${sf.map((s) => s.name + " " + (s.description || "")).join(" \n | ")} ?`
29
+ : "";
30
+ throw ("\n Function " + funcName + " does not exist or is not allowed " + hint);
27
31
  }
28
32
  /* Validate fields */
29
33
  const fields = funcDef.getFields(args);
30
34
  if (fields !== "*") {
31
- fields.forEach(fieldKey => {
35
+ fields.forEach((fieldKey) => {
32
36
  if (typeof fieldKey !== "string" || !allowedFields.includes(fieldKey)) {
33
37
  throw makeErr(`getFields() => field name ${JSON.stringify(fieldKey)} is invalid or disallowed`);
34
38
  }
@@ -37,7 +41,11 @@ const parseFunction = (funcData) => {
37
41
  throw makeErr(`Less columns provided than necessary (minCols=${funcDef.minCols})`);
38
42
  }
39
43
  }
40
- if (funcDef.numArgs && funcDef.minCols !== 0 && fields !== "*" && Array.isArray(fields) && !fields.length) {
44
+ if (funcDef.numArgs &&
45
+ funcDef.minCols !== 0 &&
46
+ fields !== "*" &&
47
+ Array.isArray(fields) &&
48
+ !fields.length) {
41
49
  throw `\n Function "${funcDef.name}" expects at least a field name but has not been provided with one`;
42
50
  }
43
51
  return funcDef;
@@ -49,7 +57,9 @@ const parseUnix = (colName, tableAlias, allColumns, opts) => {
49
57
  let tz = "";
50
58
  if (opts) {
51
59
  const { timeZone } = opts ?? {};
52
- if (timeZone && typeof timeZone !== "string" && typeof timeZone !== "boolean") {
60
+ if (timeZone &&
61
+ typeof timeZone !== "string" &&
62
+ typeof timeZone !== "boolean") {
53
63
  throw `Bad timeZone value. timeZone can be boolean or string`;
54
64
  }
55
65
  if (timeZone === true) {
@@ -59,7 +69,7 @@ const parseUnix = (colName, tableAlias, allColumns, opts) => {
59
69
  tz = ` AT TIME ZONE ${asValue(timeZone)}`;
60
70
  }
61
71
  }
62
- const col = allColumns.find(c => c.name === colName);
72
+ const col = allColumns.find((c) => c.name === colName);
63
73
  if (!col)
64
74
  throw `Unexpected: column ${colName} not found`;
65
75
  const escapedName = (0, QueryBuilder_1.asNameAlias)(colName, tableAlias);
@@ -76,16 +86,18 @@ const JSON_Funcs = [
76
86
  numArgs: 4,
77
87
  type: "function",
78
88
  getFields: ([column]) => column,
79
- getQuery: ({ args: [colName, path = [], new_value, create_missing = true], tableAlias, allowedFields }) => {
89
+ getQuery: ({ args: [colName, path = [], new_value, create_missing = true], tableAlias, allowedFields, }) => {
80
90
  if (!allowedFields.includes(colName)) {
81
91
  throw `Unexpected: column ${colName} not found`;
82
92
  }
83
- if (!path || !Array.isArray(path) || !path.every(v => ["number", "string"].includes(typeof v))) {
93
+ if (!path ||
94
+ !Array.isArray(path) ||
95
+ !path.every((v) => ["number", "string"].includes(typeof v))) {
84
96
  throw "Expecting: [columnName: string, path: (string | number)[], new_value?: any, create_missing?: boolean ]";
85
97
  }
86
98
  const escapedName = (0, QueryBuilder_1.asNameAlias)(colName, tableAlias);
87
99
  return `jsonb_set(${escapedName}, ${asValue(path)}, ${asValue(new_value)}, ${create_missing})`;
88
- }
100
+ },
89
101
  },
90
102
  {
91
103
  name: "$jsonb_path_query",
@@ -94,7 +106,7 @@ const JSON_Funcs = [
94
106
  numArgs: 4,
95
107
  type: "function",
96
108
  getFields: ([column]) => column,
97
- getQuery: ({ args: [colName, jsonPath, ...otherArgs], tableAlias, allowedFields }) => {
109
+ getQuery: ({ args: [colName, jsonPath, ...otherArgs], tableAlias, allowedFields, }) => {
98
110
  if (!allowedFields.includes(colName)) {
99
111
  throw `Unexpected: column ${colName} not found`;
100
112
  }
@@ -102,20 +114,38 @@ const JSON_Funcs = [
102
114
  throw "Expecting: [columnName: string, jsonPath: string, vars?: object, silent?: boolean]";
103
115
  }
104
116
  const escapedName = (0, QueryBuilder_1.asNameAlias)(colName, tableAlias);
105
- return `jsonb_path_query(${escapedName}, ${[jsonPath, ...otherArgs].map(v => asValue(v)).join(", ")})`;
106
- }
117
+ return `jsonb_path_query(${escapedName}, ${[jsonPath, ...otherArgs].map((v) => asValue(v)).join(", ")})`;
118
+ },
107
119
  },
108
120
  ...[
109
- ["jsonb_array_length", "Returns the number of elements in the outermost JSON array"],
110
- ["jsonb_each", "Expands the outermost JSON object into a set of key/value pairs"],
111
- ["jsonb_each_text", "Expands the outermost JSON object into a set of key/value pairs. The returned values will be of type text"],
121
+ [
122
+ "jsonb_array_length",
123
+ "Returns the number of elements in the outermost JSON array",
124
+ ],
125
+ [
126
+ "jsonb_each",
127
+ "Expands the outermost JSON object into a set of key/value pairs",
128
+ ],
129
+ [
130
+ "jsonb_each_text",
131
+ "Expands the outermost JSON object into a set of key/value pairs. The returned values will be of type text",
132
+ ],
112
133
  ["jsonb_object_keys", "Returns set of keys in the outermost JSON object"],
113
- ["jsonb_strip_nulls", "Returns from_json with all object fields that have null values omitted. Other null values are untouched"],
134
+ [
135
+ "jsonb_strip_nulls",
136
+ "Returns from_json with all object fields that have null values omitted. Other null values are untouched",
137
+ ],
114
138
  ["jsonb_pretty", "Returns from_json as indented JSON text "],
115
139
  ["jsonb_to_record", "Builds an arbitrary record from a JSON object"],
116
140
  ["jsonb_array_elements", "Expands a JSON array to a set of JSON values"],
117
- ["jsonb_array_elements_text", "Expands a JSON array to a set of text values "],
118
- ["jsonb_typeof", "Returns the type of the outermost JSON value as a text string. Possible types are object, array, string, number, boolean, and null "],
141
+ [
142
+ "jsonb_array_elements_text",
143
+ "Expands a JSON array to a set of text values ",
144
+ ],
145
+ [
146
+ "jsonb_typeof",
147
+ "Returns the type of the outermost JSON value as a text string. Possible types are object, array, string, number, boolean, and null ",
148
+ ],
119
149
  ].map(([name, description]) => ({
120
150
  name: "$" + name,
121
151
  description,
@@ -126,8 +156,8 @@ const JSON_Funcs = [
126
156
  getQuery: ({ args: [colName], tableAlias }) => {
127
157
  const escapedName = (0, QueryBuilder_1.asNameAlias)(colName, tableAlias);
128
158
  return `${name}(${escapedName})`;
129
- }
130
- }))
159
+ },
160
+ })),
131
161
  ];
132
162
  const FTS_Funcs =
133
163
  /* Full text search
@@ -138,10 +168,10 @@ const FTS_Funcs =
138
168
  // "synonym", // replace word with a synonym
139
169
  "english",
140
170
  // "english_stem",
141
- // "english_hunspell",
142
- ""
143
- ].map(type => ({
144
- name: "$ts_headline" + (type ? ("_" + type) : ""),
171
+ // "english_hunspell",
172
+ "",
173
+ ].map((type) => ({
174
+ name: "$ts_headline" + (type ? "_" + type : ""),
145
175
  description: ` :[column_name <string>, search_term: <string | { to_tsquery: string } > ] -> sha512 hash of the of column content`,
146
176
  type: "function",
147
177
  singleColArg: true,
@@ -150,7 +180,7 @@ const FTS_Funcs =
150
180
  getQuery: ({ args }) => {
151
181
  const col = (0, prostgles_types_1.asName)(args[0]);
152
182
  let qVal = args[1], qType = "to_tsquery";
153
- const _type = type ? (asValue(type) + ",") : "";
183
+ const _type = type ? asValue(type) + "," : "";
154
184
  const searchTypes = prostgles_types_1.TextFilter_FullTextSearchFilterKeys;
155
185
  /* { to_tsquery: 'search term' } */
156
186
  if ((0, DboBuilder_1.isPlainObject)(qVal)) {
@@ -158,7 +188,8 @@ const FTS_Funcs =
158
188
  if (!keys.length)
159
189
  throw "Bad arg";
160
190
  if (keys.length !== 1 || !searchTypes.includes(keys[0]))
161
- throw "Expecting a an object with a single key named one of: " + searchTypes.join(", ");
191
+ throw ("Expecting a an object with a single key named one of: " +
192
+ searchTypes.join(", "));
162
193
  qType = keys[0];
163
194
  qVal = asValue(qVal[qType]);
164
195
  /* 'search term' */
@@ -171,7 +202,7 @@ const FTS_Funcs =
171
202
  const res = `ts_headline(${_type} ${col}::text, ${qVal}, 'ShortWord=1 ' )`;
172
203
  // console.log(res)
173
204
  return res;
174
- }
205
+ },
175
206
  }));
176
207
  let PostGIS_Funcs = [
177
208
  {
@@ -180,12 +211,12 @@ let PostGIS_Funcs = [
180
211
  -> Returns true if the geometries are within a given distance
181
212
  For geometry: The distance is specified in units defined by the spatial reference system of the geometries. For this function to make sense, the source geometries must be in the same coordinate system (have the same SRID).
182
213
  For geography: units are in meters and distance measurement defaults to use_spheroid=true. For faster evaluation use use_spheroid=false to measure on the sphere.
183
- `
214
+ `,
184
215
  },
185
216
  {
186
217
  fname: "<->",
187
218
  description: `:[column_name, { lat?: number; lng?: number; geojson?: object; srid?: number; use_spheroid?: boolean }]
188
- -> The <-> operator returns the 2D distance between two geometries. Used in the "ORDER BY" clause provides index-assisted nearest-neighbor result sets. For PostgreSQL below 9.5 only gives centroid distance of bounding boxes and for PostgreSQL 9.5+, does true KNN distance search giving true distance between geometries, and distance sphere for geographies.`
219
+ -> The <-> operator returns the 2D distance between two geometries. Used in the "ORDER BY" clause provides index-assisted nearest-neighbor result sets. For PostgreSQL below 9.5 only gives centroid distance of bounding boxes and for PostgreSQL 9.5+, does true KNN distance search giving true distance between geometries, and distance sphere for geographies.`,
189
220
  },
190
221
  {
191
222
  fname: "ST_Distance",
@@ -193,15 +224,17 @@ let PostGIS_Funcs = [
193
224
  -> For geometry types returns the minimum 2D Cartesian (planar) distance between two geometries, in projected units (spatial ref units).
194
225
  -> For geography types defaults to return the minimum geodesic distance between two geographies in meters, compute on the spheroid determined by the SRID. If use_spheroid is false, a faster spherical calculation is used.
195
226
  `,
196
- }, {
227
+ },
228
+ {
197
229
  fname: "ST_DistanceSpheroid",
198
230
  description: ` :[column_name, { lat?: number; lng?: number; geojson?: object; srid?: number; spheroid?: string; }] -> Returns minimum distance in meters between two lon/lat geometries given a particular spheroid. See the explanation of spheroids given for ST_LengthSpheroid.
199
231
 
200
232
  `,
201
- }, {
233
+ },
234
+ {
202
235
  fname: "ST_DistanceSphere",
203
236
  description: ` :[column_name, { lat?: number; lng?: number; geojson?: object; srid?: number }] -> Returns linear distance in meters between two lon/lat points. Uses a spherical earth and radius of 6370986 meters. Faster than ST_DistanceSpheroid, but less accurate. Only implemented for points.`,
204
- }
237
+ },
205
238
  ].map(({ fname, description }) => ({
206
239
  name: "$" + fname,
207
240
  description,
@@ -211,20 +244,22 @@ let PostGIS_Funcs = [
211
244
  canBeUsedForFilter: fname === "ST_DWithin",
212
245
  getFields: (args) => [args[0]],
213
246
  getQuery: ({ allColumns, args: [columnName, arg2], tableAlias }) => {
214
- const mErr = () => { throw `${fname}: Expecting a second argument like: { lat?: number; lng?: number; geojson?: object; srid?: number; use_spheroid?: boolean }`; };
247
+ const mErr = () => {
248
+ throw `${fname}: Expecting a second argument like: { lat?: number; lng?: number; geojson?: object; srid?: number; use_spheroid?: boolean }`;
249
+ };
215
250
  if (!(0, prostgles_types_1.isObject)(arg2)) {
216
251
  mErr();
217
252
  }
218
- const col = allColumns.find(c => c.name === columnName);
253
+ const col = allColumns.find((c) => c.name === columnName);
219
254
  if (!col) {
220
255
  throw new Error("Col not found: " + columnName);
221
256
  }
222
- const { lat, lng, srid = 4326, geojson, text, use_spheroid, distance, spheroid = 'SPHEROID["WGS 84", 6378137, 298.257223563]', unit, debug } = arg2;
257
+ const { lat, lng, srid = 4326, geojson, text, use_spheroid, distance, spheroid = 'SPHEROID["WGS 84", 6378137, 298.257223563]', unit, debug, } = arg2;
223
258
  let geomQ = "", extraParams = "";
224
259
  if (typeof text === "string") {
225
260
  geomQ = `ST_GeomFromText(${asValue(text)})`;
226
261
  }
227
- else if ([lat, lng].every(v => Number.isFinite(v))) {
262
+ else if ([lat, lng].every((v) => Number.isFinite(v))) {
228
263
  geomQ = `ST_Point(${asValue(lng)}, ${asValue(lat)})`;
229
264
  }
230
265
  else if ((0, DboBuilder_1.isPlainObject)(geojson)) {
@@ -246,8 +281,8 @@ let PostGIS_Funcs = [
246
281
  if (typeof use_spheroid === "boolean") {
247
282
  extraParams = ", " + asValue(use_spheroid);
248
283
  }
249
- colCast = (colIsGeog || use_spheroid) ? "::geography" : "::geometry";
250
- geomQCast = (colIsGeog || use_spheroid) ? "::geography" : "::geometry";
284
+ colCast = colIsGeog || use_spheroid ? "::geography" : "::geometry";
285
+ geomQCast = colIsGeog || use_spheroid ? "::geography" : "::geometry";
251
286
  /**
252
287
  * boolean ST_DWithin(geometry g1, geometry g2, double precision distance_of_srid);
253
288
  * boolean ST_DWithin(geography gg1, geography gg2, double precision distance_meters, boolean use_spheroid = true);
@@ -300,15 +335,21 @@ let PostGIS_Funcs = [
300
335
  throw query;
301
336
  }
302
337
  return query;
303
- }
338
+ },
304
339
  }));
305
340
  PostGIS_Funcs = PostGIS_Funcs.concat([
306
- "ST_AsText", "ST_AsEWKT", "ST_AsEWKB", "ST_AsBinary", "ST_AsMVT", "ST_AsMVTGeom",
307
- "ST_AsGeoJSON", "ST_Simplify",
308
- "ST_SnapToGrid", "ST_Centroid",
341
+ "ST_AsText",
342
+ "ST_AsEWKT",
343
+ "ST_AsEWKB",
344
+ "ST_AsBinary",
345
+ "ST_AsMVT",
346
+ "ST_AsMVTGeom",
347
+ "ST_AsGeoJSON",
348
+ "ST_Simplify",
349
+ "ST_SnapToGrid",
350
+ "ST_Centroid",
309
351
  "st_aslatlontext",
310
- ]
311
- .map(fname => {
352
+ ].map((fname) => {
312
353
  const res = {
313
354
  name: "$" + fname,
314
355
  description: ` :[column_name, precision?] -> json GeoJSON output of a geometry column`,
@@ -319,20 +360,32 @@ PostGIS_Funcs = PostGIS_Funcs.concat([
319
360
  getQuery: ({ args: [colName, ...otherArgs], tableAlias }) => {
320
361
  let secondArg = "";
321
362
  if (otherArgs.length)
322
- secondArg = ", " + otherArgs.map(arg => asValue(arg)).join(", ");
363
+ secondArg = ", " + otherArgs.map((arg) => asValue(arg)).join(", ");
323
364
  const escTabelName = (0, QueryBuilder_1.asNameAlias)(colName, tableAlias) + "::geometry";
324
- const result = DboBuilder_1.pgp.as.format(fname + "(" + escTabelName + secondArg + (fname === "ST_AsGeoJSON" ? ")::jsonb" : ")"));
365
+ const result = DboBuilder_1.pgp.as.format(fname +
366
+ "(" +
367
+ escTabelName +
368
+ secondArg +
369
+ (fname === "ST_AsGeoJSON" ? ")::jsonb" : ")"));
325
370
  if (["ST_Centroid", "ST_SnapToGrid", "ST_Simplify"].includes(fname)) {
326
371
  const r = `ST_AsGeoJSON(${result})::jsonb`;
327
372
  return r;
328
373
  }
329
374
  return result;
330
- }
375
+ },
331
376
  };
332
377
  return res;
333
378
  }));
334
- PostGIS_Funcs = PostGIS_Funcs.concat(["ST_Extent", "ST_3DExtent", "ST_XMin_Agg", "ST_XMax_Agg", "ST_YMin_Agg", "ST_YMax_Agg", "ST_ZMin_Agg", "ST_ZMax_Agg"]
335
- .map(fname => {
379
+ PostGIS_Funcs = PostGIS_Funcs.concat([
380
+ "ST_Extent",
381
+ "ST_3DExtent",
382
+ "ST_XMin_Agg",
383
+ "ST_XMax_Agg",
384
+ "ST_YMin_Agg",
385
+ "ST_YMax_Agg",
386
+ "ST_ZMin_Agg",
387
+ "ST_ZMax_Agg",
388
+ ].map((fname) => {
336
389
  const res = {
337
390
  name: "$" + fname,
338
391
  description: ` :[column_name] -> ST_Extent returns a bounding box that encloses a set of geometries.
@@ -348,11 +401,11 @@ PostGIS_Funcs = PostGIS_Funcs.concat(["ST_Extent", "ST_3DExtent", "ST_XMin_Agg",
348
401
  return `${fname}(${escTabelName})`;
349
402
  }
350
403
  return `${fname.endsWith("_Agg") ? fname.slice(0, -4) : fname}(ST_Collect(${escTabelName}))`;
351
- }
404
+ },
352
405
  };
353
406
  return res;
354
407
  }));
355
- PostGIS_Funcs = PostGIS_Funcs.concat(["ST_Length", "ST_X", "ST_Y", "ST_Z"].map(fname => ({
408
+ PostGIS_Funcs = PostGIS_Funcs.concat(["ST_Length", "ST_X", "ST_Y", "ST_Z"].map((fname) => ({
356
409
  name: "$" + fname,
357
410
  type: "function",
358
411
  singleColArg: true,
@@ -361,15 +414,15 @@ PostGIS_Funcs = PostGIS_Funcs.concat(["ST_Length", "ST_X", "ST_Y", "ST_Z"].map(f
361
414
  getQuery: ({ allColumns, args, tableAlias }) => {
362
415
  const colName = args[0];
363
416
  const escapedColName = (0, QueryBuilder_1.asNameAlias)(colName, tableAlias);
364
- const col = allColumns.find(c => c.name === colName);
417
+ const col = allColumns.find((c) => c.name === colName);
365
418
  if (!col)
366
419
  throw new Error("Col not found: " + colName);
367
420
  return `${fname}(${escapedColName})`;
368
- }
421
+ },
369
422
  })));
370
423
  /**
371
- * Each function expects a column at the very least
372
- */
424
+ * Each function expects a column at the very least
425
+ */
373
426
  exports.FUNCTIONS = [
374
427
  // Hashing
375
428
  {
@@ -380,9 +433,13 @@ exports.FUNCTIONS = [
380
433
  numArgs: MAX_COL_NUM,
381
434
  getFields: (args) => args,
382
435
  getQuery: ({ args, tableAlias }) => {
383
- const q = DboBuilder_1.pgp.as.format("md5(" + args.map(fname => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + "::text, '' )").join(" || ") + ")");
436
+ const q = DboBuilder_1.pgp.as.format("md5(" +
437
+ args
438
+ .map((fname) => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + "::text, '' )")
439
+ .join(" || ") +
440
+ ")");
384
441
  return q;
385
- }
442
+ },
386
443
  },
387
444
  {
388
445
  name: "$md5_multi_agg",
@@ -392,9 +449,13 @@ exports.FUNCTIONS = [
392
449
  numArgs: MAX_COL_NUM,
393
450
  getFields: (args) => args,
394
451
  getQuery: ({ args, tableAlias }) => {
395
- const q = DboBuilder_1.pgp.as.format("md5(string_agg(" + args.map(fname => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + "::text, '' )").join(" || ") + ", ','))");
452
+ const q = DboBuilder_1.pgp.as.format("md5(string_agg(" +
453
+ args
454
+ .map((fname) => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + "::text, '' )")
455
+ .join(" || ") +
456
+ ", ','))");
396
457
  return q;
397
- }
458
+ },
398
459
  },
399
460
  {
400
461
  name: "$sha256_multi",
@@ -404,9 +465,13 @@ exports.FUNCTIONS = [
404
465
  numArgs: MAX_COL_NUM,
405
466
  getFields: (args) => args,
406
467
  getQuery: ({ args, tableAlias }) => {
407
- const q = DboBuilder_1.pgp.as.format("encode(sha256((" + args.map(fname => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )").join(" || ") + ")::text::bytea), 'hex')");
468
+ const q = DboBuilder_1.pgp.as.format("encode(sha256((" +
469
+ args
470
+ .map((fname) => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )")
471
+ .join(" || ") +
472
+ ")::text::bytea), 'hex')");
408
473
  return q;
409
- }
474
+ },
410
475
  },
411
476
  {
412
477
  name: "$sha256_multi_agg",
@@ -416,9 +481,13 @@ exports.FUNCTIONS = [
416
481
  numArgs: MAX_COL_NUM,
417
482
  getFields: (args) => args,
418
483
  getQuery: ({ args, tableAlias }) => {
419
- const q = DboBuilder_1.pgp.as.format("encode(sha256(string_agg(" + args.map(fname => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )").join(" || ") + ", ',')::text::bytea), 'hex')");
484
+ const q = DboBuilder_1.pgp.as.format("encode(sha256(string_agg(" +
485
+ args
486
+ .map((fname) => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )")
487
+ .join(" || ") +
488
+ ", ',')::text::bytea), 'hex')");
420
489
  return q;
421
- }
490
+ },
422
491
  },
423
492
  {
424
493
  name: "$sha512_multi",
@@ -428,9 +497,13 @@ exports.FUNCTIONS = [
428
497
  numArgs: MAX_COL_NUM,
429
498
  getFields: (args) => args,
430
499
  getQuery: ({ args, tableAlias }) => {
431
- const q = DboBuilder_1.pgp.as.format("encode(sha512((" + args.map(fname => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )").join(" || ") + ")::text::bytea), 'hex')");
500
+ const q = DboBuilder_1.pgp.as.format("encode(sha512((" +
501
+ args
502
+ .map((fname) => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )")
503
+ .join(" || ") +
504
+ ")::text::bytea), 'hex')");
432
505
  return q;
433
- }
506
+ },
434
507
  },
435
508
  {
436
509
  name: "$sha512_multi_agg",
@@ -440,9 +513,13 @@ exports.FUNCTIONS = [
440
513
  numArgs: MAX_COL_NUM,
441
514
  getFields: (args) => args,
442
515
  getQuery: ({ args, tableAlias }) => {
443
- const q = DboBuilder_1.pgp.as.format("encode(sha512(string_agg(" + args.map(fname => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )").join(" || ") + ", ',')::text::bytea), 'hex')");
516
+ const q = DboBuilder_1.pgp.as.format("encode(sha512(string_agg(" +
517
+ args
518
+ .map((fname) => "COALESCE( " + (0, QueryBuilder_1.asNameAlias)(fname, tableAlias) + ", '' )")
519
+ .join(" || ") +
520
+ ", ',')::text::bytea), 'hex')");
444
521
  return q;
445
- }
522
+ },
446
523
  },
447
524
  ...FTS_Funcs,
448
525
  ...JSON_Funcs,
@@ -456,7 +533,7 @@ exports.FUNCTIONS = [
456
533
  getFields: (args) => [args[0]],
457
534
  getQuery: ({ allowedFields, args, tableAlias }) => {
458
535
  return DboBuilder_1.pgp.as.format("LEFT(" + (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) + ", $1)", [args[1]]);
459
- }
536
+ },
460
537
  },
461
538
  {
462
539
  name: "$unnest_words",
@@ -466,8 +543,10 @@ exports.FUNCTIONS = [
466
543
  singleColArg: true,
467
544
  getFields: (args) => [args[0]],
468
545
  getQuery: ({ allowedFields, args, tableAlias }) => {
469
- return DboBuilder_1.pgp.as.format("unnest(string_to_array(" + (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) + "::TEXT , ' '))"); //, [args[1]]
470
- }
546
+ return DboBuilder_1.pgp.as.format("unnest(string_to_array(" +
547
+ (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) +
548
+ "::TEXT , ' '))"); //, [args[1]]
549
+ },
471
550
  },
472
551
  {
473
552
  name: "$right",
@@ -478,7 +557,7 @@ exports.FUNCTIONS = [
478
557
  getFields: (args) => [args[0]],
479
558
  getQuery: ({ allowedFields, args, tableAlias }) => {
480
559
  return DboBuilder_1.pgp.as.format("RIGHT(" + (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) + ", $1)", [args[1]]);
481
- }
560
+ },
482
561
  },
483
562
  {
484
563
  name: "$to_char",
@@ -492,7 +571,7 @@ exports.FUNCTIONS = [
492
571
  return DboBuilder_1.pgp.as.format("to_char(" + (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) + ", $2, $3)", [args[0], args[1], args[2]]);
493
572
  }
494
573
  return DboBuilder_1.pgp.as.format("to_char(" + (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) + ", $2)", [args[0], args[1]]);
495
- }
574
+ },
496
575
  },
497
576
  /**
498
577
  * Date trunc utils
@@ -510,40 +589,42 @@ exports.FUNCTIONS = [
510
589
  "year",
511
590
  "decade",
512
591
  "century",
513
- "millennium"
514
- ].map(k => ({ val: 0, unit: k }))
592
+ "millennium",
593
+ ]
594
+ .map((k) => ({ val: 0, unit: k }))
515
595
  .concat([
516
- { val: 6, unit: 'month' },
517
- { val: 4, unit: 'month' },
518
- { val: 2, unit: 'month' },
519
- { val: 8, unit: 'hour' },
520
- { val: 4, unit: 'hour' },
521
- { val: 2, unit: 'hour' },
522
- { val: 30, unit: 'minute' },
523
- { val: 15, unit: 'minute' },
524
- { val: 6, unit: 'minute' },
525
- { val: 5, unit: 'minute' },
526
- { val: 4, unit: 'minute' },
527
- { val: 3, unit: 'minute' },
528
- { val: 2, unit: 'minute' },
529
- { val: 30, unit: 'second' },
530
- { val: 15, unit: 'second' },
531
- { val: 10, unit: 'second' },
532
- { val: 8, unit: 'second' },
533
- { val: 6, unit: 'second' },
534
- { val: 5, unit: 'second' },
535
- { val: 4, unit: 'second' },
536
- { val: 3, unit: 'second' },
537
- { val: 2, unit: 'second' },
538
- { val: 500, unit: 'millisecond' },
539
- { val: 250, unit: 'millisecond' },
540
- { val: 100, unit: 'millisecond' },
541
- { val: 50, unit: 'millisecond' },
542
- { val: 25, unit: 'millisecond' },
543
- { val: 10, unit: 'millisecond' },
544
- { val: 5, unit: 'millisecond' },
545
- { val: 2, unit: 'millisecond' },
546
- ]).map(({ val, unit }) => ({
596
+ { val: 6, unit: "month" },
597
+ { val: 4, unit: "month" },
598
+ { val: 2, unit: "month" },
599
+ { val: 8, unit: "hour" },
600
+ { val: 4, unit: "hour" },
601
+ { val: 2, unit: "hour" },
602
+ { val: 30, unit: "minute" },
603
+ { val: 15, unit: "minute" },
604
+ { val: 6, unit: "minute" },
605
+ { val: 5, unit: "minute" },
606
+ { val: 4, unit: "minute" },
607
+ { val: 3, unit: "minute" },
608
+ { val: 2, unit: "minute" },
609
+ { val: 30, unit: "second" },
610
+ { val: 15, unit: "second" },
611
+ { val: 10, unit: "second" },
612
+ { val: 8, unit: "second" },
613
+ { val: 6, unit: "second" },
614
+ { val: 5, unit: "second" },
615
+ { val: 4, unit: "second" },
616
+ { val: 3, unit: "second" },
617
+ { val: 2, unit: "second" },
618
+ { val: 500, unit: "millisecond" },
619
+ { val: 250, unit: "millisecond" },
620
+ { val: 100, unit: "millisecond" },
621
+ { val: 50, unit: "millisecond" },
622
+ { val: 25, unit: "millisecond" },
623
+ { val: 10, unit: "millisecond" },
624
+ { val: 5, unit: "millisecond" },
625
+ { val: 2, unit: "millisecond" },
626
+ ])
627
+ .map(({ val, unit }) => ({
547
628
  name: "$date_trunc_" + (val || "") + unit,
548
629
  type: "function",
549
630
  description: ` :[column_name, opts?: { timeZone: true | 'TZ Name' }] -> round down timestamp to closest ${val || ""} ${unit} `,
@@ -575,19 +656,23 @@ exports.FUNCTIONS = [
575
656
  const res = `(date_trunc(${asValue(prevUnit)}, ${col}) + floor(${extractedUnit} / ${val}) * interval ${asValue(val + " " + unit)})`;
576
657
  // console.log(res);
577
658
  return res;
578
- }
659
+ },
579
660
  })),
580
661
  /* Date funcs date_part */
581
- ...["date_trunc", "date_part"].map(funcName => ({
662
+ ...["date_trunc", "date_part"].map((funcName) => ({
582
663
  name: "$" + funcName,
583
664
  type: "function",
584
665
  numArgs: 3,
585
- description: ` :[unit<string>, column_name, opts?: { timeZone: true | string }] -> ` + (funcName === "date_trunc" ? ` round down timestamp to closest unit value. ` : ` extract date unit as float8. `) + ` E.g. ['hour', col] `,
666
+ description: ` :[unit<string>, column_name, opts?: { timeZone: true | string }] -> ` +
667
+ (funcName === "date_trunc"
668
+ ? ` round down timestamp to closest unit value. `
669
+ : ` extract date unit as float8. `) +
670
+ ` E.g. ['hour', col] `,
586
671
  singleColArg: false,
587
672
  getFields: (args) => [args[1]],
588
673
  getQuery: ({ allColumns, args, tableAlias }) => {
589
674
  return `${funcName}(${asValue(args[0])}, ${parseUnix(args[1], tableAlias, allColumns, args[2])})`;
590
- }
675
+ },
591
676
  })),
592
677
  /* Handy date funcs */
593
678
  ...[
@@ -621,22 +706,24 @@ exports.FUNCTIONS = [
621
706
  ].map(([funcName, txt]) => ({
622
707
  name: "$" + funcName,
623
708
  type: "function",
624
- description: ` :[column_name, opts?: { timeZone: true | string }] -> get timestamp formated as ` + txt,
709
+ description: ` :[column_name, opts?: { timeZone: true | string }] -> get timestamp formated as ` +
710
+ txt,
625
711
  singleColArg: true,
626
712
  numArgs: 1,
627
713
  getFields: (args) => [args[0]],
628
714
  getQuery: ({ allColumns, args, tableAlias }) => {
629
- return DboBuilder_1.pgp.as.format("trim(to_char(" + parseUnix(args[0], tableAlias, allColumns, args[1]) + ", $2))", [args[0], txt]);
630
- }
715
+ return DboBuilder_1.pgp.as.format("trim(to_char(" +
716
+ parseUnix(args[0], tableAlias, allColumns, args[1]) +
717
+ ", $2))", [args[0], txt]);
718
+ },
631
719
  })),
632
720
  /* Basic 1 arg col funcs */
633
721
  ...[
634
- ...["TEXT"].flatMap(cast => [
635
- "upper", "lower", "length", "reverse", "trim", "initcap"
636
- ].map(funcName => ({ cast, funcName }))),
637
- ...[""].flatMap(cast => [
638
- "round", "ceil", "floor", "sign", "md5"
639
- ].map(funcName => ({ cast, funcName }))),
722
+ ...["TEXT"].flatMap((cast) => ["upper", "lower", "length", "reverse", "trim", "initcap"].map((funcName) => ({ cast, funcName }))),
723
+ ...[""].flatMap((cast) => ["round", "ceil", "floor", "sign", "md5"].map((funcName) => ({
724
+ cast,
725
+ funcName,
726
+ }))),
640
727
  ].map(({ funcName, cast }) => ({
641
728
  name: "$" + funcName,
642
729
  type: "function",
@@ -645,22 +732,31 @@ exports.FUNCTIONS = [
645
732
  getFields: (args) => [args[0]],
646
733
  getQuery: ({ args, tableAlias }) => {
647
734
  return `${funcName}(${(0, QueryBuilder_1.asNameAlias)(args[0], tableAlias)}${cast ? `::${cast}` : ""})`;
648
- }
735
+ },
649
736
  })),
650
737
  /**
651
738
  * Interval funcs
652
739
  * (col1, col2?, trunc )
653
740
  * */
654
- ...["age", "ageNow", "difference"].map(funcName => ({
741
+ ...["age", "ageNow", "difference"].map((funcName) => ({
655
742
  name: "$" + funcName,
656
743
  type: "function",
657
744
  numArgs: 2,
658
745
  singleColArg: true,
659
- getFields: (args) => args.slice(0, 2).filter(a => typeof a === "string"), // Filtered because the second arg is optional
746
+ getFields: (args) => args.slice(0, 2).filter((a) => typeof a === "string"), // Filtered because the second arg is optional
660
747
  getQuery: ({ allowedFields, args, tableAlias, allColumns }) => {
661
- const validColCount = args.slice(0, 2).filter(a => typeof a === "string").length;
748
+ const validColCount = args
749
+ .slice(0, 2)
750
+ .filter((a) => typeof a === "string").length;
662
751
  const trunc = args[2];
663
- const allowedTruncs = ["second", "minute", "hour", "day", "month", "year"];
752
+ const allowedTruncs = [
753
+ "second",
754
+ "minute",
755
+ "hour",
756
+ "day",
757
+ "month",
758
+ "year",
759
+ ];
664
760
  if (trunc && !allowedTruncs.includes(trunc))
665
761
  throw new Error("Incorrect trunc provided. Allowed values: " + allowedTruncs);
666
762
  if (funcName === "difference" && validColCount !== 2)
@@ -670,7 +766,9 @@ exports.FUNCTIONS = [
670
766
  const [leftField, rightField] = args;
671
767
  const tzOpts = args[2];
672
768
  const leftQ = parseUnix(leftField, tableAlias, allColumns, tzOpts);
673
- let rightQ = rightField ? parseUnix(rightField, tableAlias, allColumns, tzOpts) : "";
769
+ let rightQ = rightField
770
+ ? parseUnix(rightField, tableAlias, allColumns, tzOpts)
771
+ : "";
674
772
  let query = "";
675
773
  if (funcName === "ageNow" && validColCount === 1) {
676
774
  query = `age(now(), ${leftQ})`;
@@ -684,10 +782,10 @@ exports.FUNCTIONS = [
684
782
  query = `${leftQ} - ${rightQ}`;
685
783
  }
686
784
  return trunc ? `date_trunc(${asValue(trunc)}, ${query})` : query;
687
- }
785
+ },
688
786
  })),
689
787
  /* pgcrypto funcs */
690
- ...["crypt"].map(funcName => ({
788
+ ...["crypt"].map((funcName) => ({
691
789
  name: "$" + funcName,
692
790
  type: "function",
693
791
  numArgs: 1,
@@ -696,10 +794,10 @@ exports.FUNCTIONS = [
696
794
  getQuery: ({ allowedFields, args, tableAlias }) => {
697
795
  const value = asValue(args[0]) + "", seedColumnName = (0, QueryBuilder_1.asNameAlias)(args[1], tableAlias);
698
796
  return `crypt(${value}, ${seedColumnName}::text)`;
699
- }
797
+ },
700
798
  })),
701
799
  /* Text col and value funcs */
702
- ...["position", "position_lower"].map(funcName => ({
800
+ ...["position", "position_lower"].map((funcName) => ({
703
801
  name: "$" + funcName,
704
802
  type: "function",
705
803
  numArgs: 1,
@@ -712,9 +810,9 @@ exports.FUNCTIONS = [
712
810
  a2 = `LOWER(${a2}::text)`;
713
811
  }
714
812
  return `position( ${a1} IN ${a2} )`;
715
- }
813
+ },
716
814
  })),
717
- ...["template_string"].map(funcName => ({
815
+ ...["template_string"].map((funcName) => ({
718
816
  name: "$" + funcName,
719
817
  type: "function",
720
818
  numArgs: 1,
@@ -726,16 +824,16 @@ exports.FUNCTIONS = [
726
824
  throw "First argument must be a string. E.g.: '{col1} ..text {col2} ...' ";
727
825
  const rawValue = args[0];
728
826
  let finalValue = rawValue;
729
- const usedColumns = allowedFields.filter(fName => rawValue.includes(`{${fName}}`));
827
+ const usedColumns = allowedFields.filter((fName) => rawValue.includes(`{${fName}}`));
730
828
  usedColumns.forEach((colName, idx) => {
731
829
  finalValue = finalValue.split(`{${colName}}`).join(`%${idx + 1}$s`);
732
830
  });
733
831
  finalValue = asValue(finalValue);
734
832
  if (usedColumns.length) {
735
- return `format(${finalValue}, ${usedColumns.map(c => `${(0, QueryBuilder_1.asNameAlias)(c, tableAlias)}::TEXT`).join(", ")})`;
833
+ return `format(${finalValue}, ${usedColumns.map((c) => `${(0, QueryBuilder_1.asNameAlias)(c, tableAlias)}::TEXT`).join(", ")})`;
736
834
  }
737
835
  return `format(${finalValue})`;
738
- }
836
+ },
739
837
  })),
740
838
  /** Custom highlight -> myterm => ['some text and', ['myterm'], ' and some other text']
741
839
  * (fields: "*" | string[], term: string, { edgeTruncate: number = -1; noFields: boolean = false }) => string | (string | [string])[]
@@ -743,7 +841,7 @@ exports.FUNCTIONS = [
743
841
  * noFields = exclude field names in search
744
842
  * */
745
843
  {
746
- name: "$term_highlight", /* */
844
+ name: "$term_highlight" /* */,
747
845
  description: ` :[column_names<string[] | "*">, search_term<string>, opts?<{ returnIndex?: number; edgeTruncate?: number; noFields?: boolean }>] -> get case-insensitive text match highlight`,
748
846
  type: "function",
749
847
  numArgs: 1,
@@ -754,19 +852,26 @@ exports.FUNCTIONS = [
754
852
  const cols = (0, parseFieldFilter_1.parseFieldFilter)(args[0], false, allowedFields);
755
853
  let term = args[1];
756
854
  const rawTerm = args[1];
757
- const { edgeTruncate, noFields = false, returnType, matchCase = false } = args[2] || {};
855
+ const { edgeTruncate, noFields = false, returnType, matchCase = false, } = args[2] || {};
758
856
  if (!(0, prostgles_types_1.isEmpty)(args[2])) {
759
857
  const keys = Object.keys(args[2]);
760
- const validKeys = ["edgeTruncate", "noFields", "returnType", "matchCase"];
761
- const bad_keys = keys.filter(k => !validKeys.includes(k));
858
+ const validKeys = [
859
+ "edgeTruncate",
860
+ "noFields",
861
+ "returnType",
862
+ "matchCase",
863
+ ];
864
+ const bad_keys = keys.filter((k) => !validKeys.includes(k));
762
865
  if (bad_keys.length)
763
- throw "Invalid options provided for $term_highlight. Expecting one of: " + validKeys.join(", ");
866
+ throw ("Invalid options provided for $term_highlight. Expecting one of: " +
867
+ validKeys.join(", "));
764
868
  }
765
869
  if (!cols.length)
766
870
  throw "Cols are empty/invalid";
767
871
  if (typeof term !== "string")
768
872
  throw "Non string term provided: " + term;
769
- if (edgeTruncate !== undefined && (!Number.isInteger(edgeTruncate) || edgeTruncate < -1))
873
+ if (edgeTruncate !== undefined &&
874
+ (!Number.isInteger(edgeTruncate) || edgeTruncate < -1))
770
875
  throw "Invalid edgeTruncate. expecting a positive integer";
771
876
  if (typeof noFields !== "boolean")
772
877
  throw "Invalid noFields. expecting boolean";
@@ -799,7 +904,11 @@ exports.FUNCTIONS = [
799
904
  END
800
905
  `;
801
906
  };
802
- const colRaw = "( " + cols.map(c => `${noFields ? "" : (asValue(c + ": ") + " || ")} COALESCE(${(0, QueryBuilder_1.asNameAlias)(c, tableAlias)}::TEXT, '')`).join(" || ', ' || ") + " )";
907
+ const colRaw = "( " +
908
+ cols
909
+ .map((c) => `${noFields ? "" : asValue(c + ": ") + " || "} COALESCE(${(0, QueryBuilder_1.asNameAlias)(c, tableAlias)}::TEXT, '')`)
910
+ .join(" || ', ' || ") +
911
+ " )";
803
912
  let col = colRaw;
804
913
  term = asValue(term);
805
914
  if (!matchCase) {
@@ -820,27 +929,27 @@ exports.FUNCTIONS = [
820
929
  }
821
930
  else if (returnType === "object" || returnType === "boolean") {
822
931
  const hasChars = Boolean(rawTerm && /[a-z]/i.test(rawTerm));
823
- const validCols = cols.map(c => {
824
- const colInfo = allColumns.find(ac => ac.name === c);
932
+ const validCols = cols
933
+ .map((c) => {
934
+ const colInfo = allColumns.find((ac) => ac.name === c);
825
935
  return {
826
936
  key: c,
827
- colInfo
937
+ colInfo,
828
938
  };
829
939
  })
830
- .filter(c => c.colInfo && c.colInfo.udt_name !== "bytea");
831
- const _cols = validCols.filter(c =>
940
+ .filter((c) => c.colInfo && c.colInfo.udt_name !== "bytea");
941
+ const _cols = validCols.filter((c) =>
832
942
  /** Exclude numeric columns when the search tern contains a character */
833
- !hasChars ||
834
- (0, DboBuilder_1.postgresToTsType)(c.colInfo.udt_name) !== "number");
943
+ !hasChars || (0, DboBuilder_1.postgresToTsType)(c.colInfo.udt_name) !== "number");
835
944
  /** This will break GROUP BY (non-integer constant in GROUP BY) */
836
945
  if (!_cols.length) {
837
946
  if (validCols.length && hasChars)
838
947
  throw `You're searching the impossible: characters in numeric fields. Use this to prevent making such a request in future: /[a-z]/i.test(your_term) `;
839
- return (returnType === "boolean") ? "FALSE" : "NULL";
948
+ return returnType === "boolean" ? "FALSE" : "NULL";
840
949
  }
841
950
  res = `CASE
842
951
  ${_cols
843
- .map(c => {
952
+ .map((c) => {
844
953
  const colNameEscaped = (0, QueryBuilder_1.asNameAlias)(c.key, tableAlias);
845
954
  let colSelect = `${colNameEscaped}::TEXT`;
846
955
  const isTstamp = c.colInfo?.udt_name.startsWith("timestamp");
@@ -856,19 +965,20 @@ exports.FUNCTIONS = [
856
965
  const colTxt = `COALESCE(${colSelect}, '')`; // position(${term} IN ${colTxt}) > 0
857
966
  if (returnType === "boolean") {
858
967
  return `
859
- WHEN ${colTxt} ${matchCase ? "LIKE" : "ILIKE"} ${asValue('%' + rawTerm + '%')}
968
+ WHEN ${colTxt} ${matchCase ? "LIKE" : "ILIKE"} ${asValue("%" + rawTerm + "%")}
860
969
  THEN TRUE
861
970
  `;
862
971
  }
863
972
  return `
864
- WHEN ${colTxt} ${matchCase ? "LIKE" : "ILIKE"} ${asValue('%' + rawTerm + '%')}
973
+ WHEN ${colTxt} ${matchCase ? "LIKE" : "ILIKE"} ${asValue("%" + rawTerm + "%")}
865
974
  THEN json_build_object(
866
975
  ${asValue(c.key)},
867
976
  ${makeTextMatcherArray(colTxt, term)}
868
977
  )::jsonb
869
978
  `;
870
- }).join(" ")}
871
- ELSE ${(returnType === "boolean") ? "FALSE" : "NULL"}
979
+ })
980
+ .join(" ")}
981
+ ELSE ${returnType === "boolean" ? "FALSE" : "NULL"}
872
982
 
873
983
  END`;
874
984
  // console.log(res)
@@ -884,10 +994,20 @@ exports.FUNCTIONS = [
884
994
  ]) ELSE array_to_json(ARRAY[(${colRaw})::TEXT]) END`;
885
995
  }
886
996
  return res;
887
- }
997
+ },
888
998
  },
889
999
  /* Aggs */
890
- ...["max", "min", "count", "avg", "json_agg", "jsonb_agg", "string_agg", "array_agg", "sum"].map(aggName => ({
1000
+ ...[
1001
+ "max",
1002
+ "min",
1003
+ "count",
1004
+ "avg",
1005
+ "json_agg",
1006
+ "jsonb_agg",
1007
+ "string_agg",
1008
+ "array_agg",
1009
+ "sum",
1010
+ ].map((aggName) => ({
891
1011
  name: "$" + aggName,
892
1012
  type: "aggregation",
893
1013
  numArgs: 1,
@@ -898,8 +1018,8 @@ exports.FUNCTIONS = [
898
1018
  if (args.length > 1) {
899
1019
  extraArgs = DboBuilder_1.pgp.as.format(", $1:csv", args.slice(1));
900
1020
  }
901
- return aggName + "(" + (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) + `${extraArgs})`;
902
- }
1021
+ return (aggName + "(" + (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias) + `${extraArgs})`);
1022
+ },
903
1023
  })),
904
1024
  {
905
1025
  name: "$jsonb_build_object",
@@ -907,10 +1027,10 @@ exports.FUNCTIONS = [
907
1027
  numArgs: 22,
908
1028
  minCols: 1,
909
1029
  singleColArg: false,
910
- getFields: args => args,
1030
+ getFields: (args) => args,
911
1031
  getQuery: ({ args, tableAlias }) => {
912
- return `jsonb_build_object(${args.flatMap(arg => [asValue(arg), (0, QueryBuilder_1.asNameAlias)(arg, tableAlias)]).join(", ")})`;
913
- }
1032
+ return `jsonb_build_object(${args.flatMap((arg) => [asValue(arg), (0, QueryBuilder_1.asNameAlias)(arg, tableAlias)]).join(", ")})`;
1033
+ },
914
1034
  },
915
1035
  /* More aggs */
916
1036
  {
@@ -922,7 +1042,7 @@ exports.FUNCTIONS = [
922
1042
  getFields: (args) => [],
923
1043
  getQuery: ({ allowedFields, args, tableAlias }) => {
924
1044
  return "COUNT(*)";
925
- }
1045
+ },
926
1046
  },
927
1047
  {
928
1048
  name: "$diff_perc",
@@ -933,8 +1053,8 @@ exports.FUNCTIONS = [
933
1053
  getQuery: ({ allowedFields, args, tableAlias }) => {
934
1054
  const col = (0, QueryBuilder_1.asNameAlias)(args[0], tableAlias);
935
1055
  return `round( ( ( MAX(${col}) - MIN(${col}) )::float/MIN(${col}) ) * 100, 2)`;
936
- }
937
- }
1056
+ },
1057
+ },
938
1058
  ];
939
1059
  /* The difference between a function and computed field is that the computed field does not require any arguments */
940
1060
  exports.COMPUTED_FIELDS = [
@@ -946,17 +1066,17 @@ exports.COMPUTED_FIELDS = [
946
1066
  type: "computed",
947
1067
  // description: ` order hash of row content `,
948
1068
  getQuery: ({ allowedFields, tableAlias, ctidField }) => {
949
- return "md5(" +
1069
+ return ("md5(" +
950
1070
  allowedFields
951
1071
  /* CTID not available in AFTER trigger */
952
1072
  // .concat(ctidField? [ctidField] : [])
953
1073
  .sort()
954
- .map(f => (0, QueryBuilder_1.asNameAlias)(f, tableAlias))
955
- .map(f => `md5(coalesce(${f}::text, 'dd'))`)
1074
+ .map((f) => (0, QueryBuilder_1.asNameAlias)(f, tableAlias))
1075
+ .map((f) => `md5(coalesce(${f}::text, 'dd'))`)
956
1076
  .join(" || ") +
957
- `)`;
958
- }
959
- }
1077
+ `)`);
1078
+ },
1079
+ },
960
1080
  // ,{
961
1081
  // name: "ctid",
962
1082
  // type: "computed",
@@ -1007,5 +1127,5 @@ WHERE NOT EXISTS ( --Keep only leaf values
1007
1127
  AND starts_with(t2.path, t1.path)
1008
1128
  );
1009
1129
 
1010
- */
1130
+ */
1011
1131
  //# sourceMappingURL=Functions.js.map