prostgles-server 1.5.122 → 2.0.3

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 (426) hide show
  1. package/dist/DboBuilder.d.ts +52 -27
  2. package/dist/DboBuilder.d.ts.map +1 -1
  3. package/dist/DboBuilder.js +404 -85
  4. package/dist/DboBuilder.js.map +1 -1
  5. package/dist/FileManager.d.ts +160 -0
  6. package/dist/FileManager.d.ts.map +1 -0
  7. package/dist/FileManager.js +419 -0
  8. package/dist/FileManager.js.map +1 -0
  9. package/dist/Prostgles.d.ts +145 -79
  10. package/dist/Prostgles.d.ts.map +1 -1
  11. package/dist/Prostgles.js +240 -180
  12. package/dist/Prostgles.js.map +1 -1
  13. package/dist/PubSubManager.js +1 -1
  14. package/dist/PubSubManager.js.map +1 -1
  15. package/dist/QueryBuilder.d.ts.map +1 -1
  16. package/dist/QueryBuilder.js +8 -5
  17. package/dist/QueryBuilder.js.map +1 -1
  18. package/dist/index.d.ts +3 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/lib/DboBuilder.ts +541 -136
  22. package/lib/FileManager.ts +546 -0
  23. package/lib/Prostgles.ts +407 -253
  24. package/lib/PubSubManager.ts +1 -1
  25. package/lib/QueryBuilder.ts +10 -6
  26. package/lib/index.ts +3 -3
  27. package/package.json +8 -2
  28. package/tests/client/index.js +18 -6
  29. package/tests/client/index.ts +16 -4
  30. package/tests/client/package-lock.json +27 -26
  31. package/tests/client/package.json +1 -1
  32. package/tests/client_only_queries.js +4 -4
  33. package/tests/config_test/DBoGenerated.d.ts +231 -8
  34. package/tests/config_test/index.html +35 -9
  35. package/tests/config_test/index.js +55 -97
  36. package/tests/config_test/index.js.map +1 -0
  37. package/tests/config_test/index.ts +67 -113
  38. package/tests/config_test/init.sql +50 -24
  39. package/tests/config_test/media/002d5f12-63c3-41f3-9007-cd33009104f4.txt +1 -0
  40. package/tests/config_test/media/003f0136-d231-4dd1-8937-08fa9a7c3d2e.txt +1 -0
  41. package/tests/config_test/media/01bd39a0-083b-4bfa-91fc-f4d1d9b7b204.txt +1 -0
  42. package/tests/config_test/media/0224513a-62de-4f0a-92bb-dcb3f700da7f.txt +1 -0
  43. package/tests/config_test/media/03005346-d6d5-4824-96ae-5ad7ca762730.txt +1 -0
  44. package/tests/config_test/media/0342d065-9bd2-443f-9058-f8058ab52de0.txt +1 -0
  45. package/tests/config_test/media/0350d1cf-b3b3-4c58-aef2-ad1dc3f80c6c.txt +1 -0
  46. package/tests/config_test/media/036833d7-d166-43a1-bda3-b801938c614d.txt +1 -0
  47. package/tests/config_test/media/03b5324d-0913-408f-a78a-252ff8fe8126.txt +1 -0
  48. package/tests/config_test/media/0540b670-bf42-4a83-82b2-67164630a24a.txt +1 -0
  49. package/tests/config_test/media/05900f5f-3b67-4ee9-8e1d-b511fd79d878.txt +1 -0
  50. package/tests/config_test/media/05969252-3f9e-41a0-88ce-aa23ba8b42eb.txt +1 -0
  51. package/tests/config_test/media/05a8a60c-cc75-4469-8e06-55d88c26e97a.txt +1 -0
  52. package/tests/config_test/media/05e662fc-7a03-4303-ae42-27a28d9affb9.txt +1 -0
  53. package/tests/config_test/media/061f86e6-0ddd-49b0-b243-4c063c6db5e4.txt +1 -0
  54. package/tests/config_test/media/062cf311-3976-471e-88ec-d618bd8ceeaa.txt +1 -0
  55. package/tests/config_test/media/0693b073-77b9-446a-9606-5453bcafd200.txt +1 -0
  56. package/tests/config_test/media/07a09b79-b1ed-45a3-bb42-42cd1a00757b.txt +1 -0
  57. package/tests/config_test/media/07e48303-0520-4a80-921e-130417488baa.txt +1 -0
  58. package/tests/config_test/media/09ab90a6-8461-4f39-89fb-8e2277974771.txt +1 -0
  59. package/tests/config_test/media/09c1194a-5d09-417c-a0c4-26dcf1e65bdb.txt +1 -0
  60. package/tests/config_test/media/09dc662f-6a9d-4a0b-95ba-8d24ceae9721.txt +1 -0
  61. package/tests/config_test/media/09ebb492-6146-4ff8-ac83-ac9970f5844c.txt +1 -0
  62. package/tests/config_test/media/0a198d6f-c629-42bd-9aa8-3c0ff62e1f1d.txt +1 -0
  63. package/tests/config_test/media/0a6d3ced-a16f-4491-b25b-679e9323ad79.txt +1 -0
  64. package/tests/config_test/media/0a817a27-6888-4ac4-b07b-4d1275e035ff.txt +1 -0
  65. package/tests/config_test/media/0aadc4f7-bf87-49da-8ef6-0857bf1789b4.txt +1 -0
  66. package/tests/config_test/media/0abe4a2e-fd75-428b-9757-2535d4112862.txt +1 -0
  67. package/tests/config_test/media/0ad9deca-6362-41dd-b0b3-8f8a71e2e1e2.txt +1 -0
  68. package/tests/config_test/media/0bdb19df-b82c-4a07-8d9b-a6e3a2af8a94.txt +1 -0
  69. package/tests/config_test/media/0c1e4575-223d-4d0c-b2c3-6ab6bb9844e6.txt +1 -0
  70. package/tests/config_test/media/0c4e3d55-432f-42e9-aa53-48e816ff6d15.txt +1 -0
  71. package/tests/config_test/media/0c5b47a4-884a-4207-b106-fa2557fc5600.txt +1 -0
  72. package/tests/config_test/media/0d8fbe62-22bc-47e8-b4ca-b77d8fd02798.txt +1 -0
  73. package/tests/config_test/media/0d95a140-3ae1-4faa-a34b-ed5b6cc524ac.txt +1 -0
  74. package/tests/config_test/media/0e0907c7-bd10-4ce2-ac36-066916a8a793.txt +1 -0
  75. package/tests/config_test/media/0e192b00-2676-4130-8819-90ee34a50932.txt +1 -0
  76. package/tests/config_test/media/0f9e3861-0e59-4ae4-a606-1fdd2c890c5b.txt +1 -0
  77. package/tests/config_test/media/1039afe1-24e9-4ea6-bfd0-6871b5f06f8f.txt +1 -0
  78. package/tests/config_test/media/1052e479-295e-46e9-88ec-d8f20efa75ea.txt +1 -0
  79. package/tests/config_test/media/11973be6-a675-4e0d-a54e-1eccbcdb3f2a.txt +1 -0
  80. package/tests/config_test/media/121656f5-1ef9-4181-9ee0-e3ae1433fed1.txt +1 -0
  81. package/tests/config_test/media/121a16b4-a925-406b-9ba9-0e4b4d413402.txt +1 -0
  82. package/tests/config_test/media/122cdf36-5b17-4b81-aa9d-c6725d1e8c8a.txt +1 -0
  83. package/tests/config_test/media/12435236-4735-4978-a234-52100181ee72.txt +1 -0
  84. package/tests/config_test/media/130eea28-64d0-40c4-8fa4-0cfba493e321.txt +1 -0
  85. package/tests/config_test/media/1435b6fd-4b86-4f7e-8e68-b607c5e5f2ad.txt +1 -0
  86. package/tests/config_test/media/14d78bf0-fd3e-4686-863d-b18d2c69b181.txt +1 -0
  87. package/tests/config_test/media/14dffd0e-23ae-4659-b8b3-25c89593643e.txt +1 -0
  88. package/tests/config_test/media/14e32028-fb4d-4743-a34d-c325be47b25e.txt +1 -0
  89. package/tests/config_test/media/14fb2139-eb53-4246-8dcb-c1e568572306.txt +1 -0
  90. package/tests/config_test/media/1644d880-c61f-4e9c-9c5c-892623ff5689.txt +1 -0
  91. package/tests/config_test/media/16818bb0-a022-4fd9-acac-e5a448b58eaf.txt +1 -0
  92. package/tests/config_test/media/16a47db5-262f-490b-850f-0f82019a58b4.txt +1 -0
  93. package/tests/config_test/media/16c2ffcc-8632-4935-b12d-be1313b74ddc.txt +1 -0
  94. package/tests/config_test/media/16fe3928-25c7-4e3a-9f68-51520712a4f6.txt +1 -0
  95. package/tests/config_test/media/172a7736-d3cf-431c-92a5-1a4aa6e89c7e.txt +1 -0
  96. package/tests/config_test/media/1784e75f-d063-43e2-accb-364ed36ae7d0.txt +1 -0
  97. package/tests/config_test/media/182e9dcc-0443-4cc5-aff1-9cf954dab771.txt +1 -0
  98. package/tests/config_test/media/19158860-e0c0-4ac7-afee-5428f9060b36.txt +1 -0
  99. package/tests/config_test/media/1998f271-5d71-4bc0-9f92-376a8a98f7da.txt +1 -0
  100. package/tests/config_test/media/19d2b383-4b1b-41a5-a7ef-ceaf1e691e0f.txt +1 -0
  101. package/tests/config_test/media/1c33fac7-470b-47e0-8aba-7c7394406aad.txt +1 -0
  102. package/tests/config_test/media/1d8a6c9c-0539-4c08-8ea5-4bd0bbe8fa18.txt +1 -0
  103. package/tests/config_test/media/1de86105-97ce-49c0-8137-030f3af37fb5.txt +1 -0
  104. package/tests/config_test/media/1f1393d1-e2f2-445e-806e-05c9a6135437.txt +1 -0
  105. package/tests/config_test/media/1fc303e7-943c-42cd-87f0-d14b361e5564.txt +1 -0
  106. package/tests/config_test/media/1fd79260-4246-4230-b4ab-c42baad3de44.txt +1 -0
  107. package/tests/config_test/media/209085fb-8441-4039-bb01-32171248c7f7.txt +1 -0
  108. package/tests/config_test/media/20ab3e07-77d6-4fbc-9532-b47e16c38e68.txt +1 -0
  109. package/tests/config_test/media/20d43c00-35b4-43da-b79f-cb59888ac41b.txt +1 -0
  110. package/tests/config_test/media/20f7f651-06de-4d5f-aa39-2c261c662cd3.txt +1 -0
  111. package/tests/config_test/media/214af93c-f973-4809-a440-87a5a3b28e83.txt +1 -0
  112. package/tests/config_test/media/22bffc7f-c942-4163-bbf6-141f585f3671.txt +1 -0
  113. package/tests/config_test/media/23d09f4f-db2a-44cb-9d1b-552eb0568acf.txt +1 -0
  114. package/tests/config_test/media/24a256f7-fe83-4a6d-ace8-a2c2ded37341.txt +1 -0
  115. package/tests/config_test/media/25522aa0-9c30-413b-b0df-f9f2c2562769.txt +1 -0
  116. package/tests/config_test/media/25806b78-52cd-40f2-907a-d4fba3821435.txt +1 -0
  117. package/tests/config_test/media/259920a6-0c5a-4193-8940-91fc0183204c.txt +1 -0
  118. package/tests/config_test/media/28ca6b02-f58e-4204-a87a-28347d8f5884.txt +1 -0
  119. package/tests/config_test/media/2a3f8e6e-3bc4-44b3-ac43-17851b1f53e4.txt +1 -0
  120. package/tests/config_test/media/2afe6eb3-64ca-4aae-b002-676ab3862c96.txt +1 -0
  121. package/tests/config_test/media/2bd913c1-408a-4451-b465-e48452ca46cb.txt +1 -0
  122. package/tests/config_test/media/2bfe0f21-70b6-45a7-9bc0-f60dee9b0786.txt +1 -0
  123. package/tests/config_test/media/2c37bb2d-412e-44be-8f91-58bf1adae554.txt +1 -0
  124. package/tests/config_test/media/2c6ffa05-479f-4d8f-bc98-0c050567ef28.txt +1 -0
  125. package/tests/config_test/media/2ce666cb-e1e7-411f-9727-ce47be9365f5.txt +1 -0
  126. package/tests/config_test/media/2d737158-559b-4fca-b35c-3a832e21a0bf.txt +1 -0
  127. package/tests/config_test/media/2d7cae40-8fa9-4715-8834-b105a5815efc.txt +1 -0
  128. package/tests/config_test/media/2ea6b55b-eb9e-4b72-9510-4d5b00490076.txt +1 -0
  129. package/tests/config_test/media/2f0f8b73-7a21-48e5-b0d8-6e733de5eef8.txt +1 -0
  130. package/tests/config_test/media/2f37ed63-4a76-49e8-9df0-b586e2318b54.txt +1 -0
  131. package/tests/config_test/media/2f4e2797-63dd-43cb-8edf-b6e4a5f6d85b.txt +1 -0
  132. package/tests/config_test/media/2fc8b254-571c-49da-b8d8-af12bead2b6e.txt +1 -0
  133. package/tests/config_test/media/31887ce4-a69d-429e-bd32-e3fcf1b6ec3c.txt +1 -0
  134. package/tests/config_test/media/31ab5780-f38f-4614-b11e-1399a5d19e88.txt +1 -0
  135. package/tests/config_test/media/330b1369-abf8-4a0d-aac3-15185409347b.txt +1 -0
  136. package/tests/config_test/media/332306f0-16a4-46f1-b312-42d5b1739561.txt +1 -0
  137. package/tests/config_test/media/33729cd7-ef5a-461d-860c-188b12c3c0e1.txt +1 -0
  138. package/tests/config_test/media/34f797b8-98c7-47ff-ac4f-da792d3e59ec.txt +1 -0
  139. package/tests/config_test/media/35753dc2-4a87-4fdb-b547-8ba587ab7cca.txt +1 -0
  140. package/tests/config_test/media/35cf2e07-f087-410d-898b-326b16617631.txt +1 -0
  141. package/tests/config_test/media/3704c54c-08b7-429c-98fa-0656dca539ca.txt +1 -0
  142. package/tests/config_test/media/3823f728-c199-416b-aeb3-223bc0dc006a.txt +1 -0
  143. package/tests/config_test/media/38d31ef9-7e41-47f9-8e05-e826f9d1a378.txt +1 -0
  144. package/tests/config_test/media/39504f22-47a7-428a-8793-7cb9cc79b23d.txt +1 -0
  145. package/tests/config_test/media/39baaddd-7764-48b4-9dc3-e77f91b04ff0.txt +1 -0
  146. package/tests/config_test/media/39c91ceb-928d-4279-a8a7-00f363b18384.txt +1 -0
  147. package/tests/config_test/media/3a58c511-78de-425f-a857-63a43e3b4c51.txt +1 -0
  148. package/tests/config_test/media/3c3fd2ca-8a72-4d38-899b-776f4ff690fc.txt +1 -0
  149. package/tests/config_test/media/3c592436-14fa-49f5-be05-1d8aff250d0d.txt +1 -0
  150. package/tests/config_test/media/3db275e8-327d-45d4-a755-3df103967b04.txt +1 -0
  151. package/tests/config_test/media/3de350d2-a26d-40ef-ad11-fa1454a0f50a.txt +1 -0
  152. package/tests/config_test/media/3e4f08ac-8b0a-4ec6-b3be-ff6ce140af6a.txt +1 -0
  153. package/tests/config_test/media/3fa40e56-cb30-4722-ba36-583e7c064d16.txt +1 -0
  154. package/tests/config_test/media/3fe9495c-6fa5-49ca-a16f-e3cf1808d619.txt +1 -0
  155. package/tests/config_test/media/3fed5003-1a13-433d-a82f-325dbd57ff55.txt +1 -0
  156. package/tests/config_test/media/40dfa3df-237e-4e0d-99ff-c90000c5f7ed.txt +1 -0
  157. package/tests/config_test/media/40ea2d40-3f28-46e5-a41d-5aae1721de21.txt +1 -0
  158. package/tests/config_test/media/410c564d-860e-4693-9112-efb2304bf940.txt +1 -0
  159. package/tests/config_test/media/424c9239-aa07-48f3-9a64-c99261387fec.txt +1 -0
  160. package/tests/config_test/media/4260eab4-3e7d-420a-bc8f-b9cc945f3c80.txt +1 -0
  161. package/tests/config_test/media/42886a01-8047-4a49-beab-97f5a3a7c128.txt +1 -0
  162. package/tests/config_test/media/44e2e069-a213-4632-b13b-153461000c5e.txt +1 -0
  163. package/tests/config_test/media/46520b9c-f878-41e9-9840-0d0babb9b63d.txt +1 -0
  164. package/tests/config_test/media/46f010a8-66b2-48d8-b4a6-62cc23e26008.txt +1 -0
  165. package/tests/config_test/media/48c9f649-f776-4cd9-8df5-56b5312f51c2.txt +1 -0
  166. package/tests/config_test/media/49f5836b-4fb0-4ee1-831b-91ddfcaac0bf.txt +1 -0
  167. package/tests/config_test/media/4a2d3bae-040e-44fe-bb36-301af65302fd.txt +1 -0
  168. package/tests/config_test/media/4ab15a14-36c7-4a4e-8179-be60c56368c5.txt +1 -0
  169. package/tests/config_test/media/4b98c009-458a-4e35-96e2-ccd465673234.txt +1 -0
  170. package/tests/config_test/media/4bf86749-685c-423c-9997-eb73cb0bc254.txt +1 -0
  171. package/tests/config_test/media/4db9d5ad-c703-4fb5-9b15-9c48ee3edca1.txt +1 -0
  172. package/tests/config_test/media/4dd147f7-59ef-4b8f-963b-1dbedb0d10a2.txt +1 -0
  173. package/tests/config_test/media/4e61da19-25e1-44a0-b901-2cefc3461619.txt +1 -0
  174. package/tests/config_test/media/4e66c64c-72e3-4458-8ac9-490774193a50.txt +1 -0
  175. package/tests/config_test/media/4e98ba50-1583-4d7b-9e0d-7c577af28182.txt +1 -0
  176. package/tests/config_test/media/4e9cb872-dd5f-404a-ae9f-97ec69606d36.txt +1 -0
  177. package/tests/config_test/media/4fbb89d3-e922-42f2-81ed-6c1370199c94.txt +1 -0
  178. package/tests/config_test/media/4fdf0b1d-1718-4f53-8a9c-6d44bdef0c60.txt +1 -0
  179. package/tests/config_test/media/503c6659-ff3f-4df4-ac88-628e809b2e72.txt +1 -0
  180. package/tests/config_test/media/51010c69-5b30-4ac7-8ed9-12f1866ef145.txt +1 -0
  181. package/tests/config_test/media/51b2d38d-230e-4eb0-9b1f-dab8fa8b415d.txt +1 -0
  182. package/tests/config_test/media/51cc7a7b-a764-4ebd-ac31-ba881fa1404e.txt +1 -0
  183. package/tests/config_test/media/52f0dbb6-2179-4472-871d-dd80c6341c58.txt +1 -0
  184. package/tests/config_test/media/54aff9eb-0202-447d-9c95-c74560cabcd7.txt +1 -0
  185. package/tests/config_test/media/55551c8d-4305-48ca-a752-ade3a9efb538.txt +1 -0
  186. package/tests/config_test/media/555b772b-6c78-4667-80d6-bbe2f290611c.txt +1 -0
  187. package/tests/config_test/media/555fbb0b-febc-4611-9efa-16ddbf8e988c.txt +1 -0
  188. package/tests/config_test/media/55a84883-9a15-4368-b8fe-05bd848de6ba.txt +1 -0
  189. package/tests/config_test/media/56523343-de4a-49de-94ae-8205cc92eeb6.txt +1 -0
  190. package/tests/config_test/media/567d431e-813f-47d7-a3d2-e2371c0f32e2.txt +1 -0
  191. package/tests/config_test/media/56fa54a9-10a4-42a3-9a29-ea132adf09bc.txt +1 -0
  192. package/tests/config_test/media/57734e9e-d5b8-4942-a76c-db1d0cb72aea.txt +1 -0
  193. package/tests/config_test/media/5777d7a2-cd26-494e-92ba-fa681c2445ef.txt +1 -0
  194. package/tests/config_test/media/582f6e3f-1b06-4f97-bb81-4355cc139e41.txt +1 -0
  195. package/tests/config_test/media/584ef61c-974e-4882-aaff-8089029b7a66.txt +1 -0
  196. package/tests/config_test/media/58987f15-0627-4c3c-a8ba-33e0315548f9.txt +1 -0
  197. package/tests/config_test/media/58eb23e6-6110-489f-81d3-37d48bcd3bf7.txt +1 -0
  198. package/tests/config_test/media/5c5e5543-491c-49d2-b762-162faa75019a.txt +1 -0
  199. package/tests/config_test/media/5e688b4a-afba-4d47-bdc8-dd108d673619.txt +1 -0
  200. package/tests/config_test/media/5f42b54e-6020-4552-8872-17dc7d57b110.txt +1 -0
  201. package/tests/config_test/media/5f5ae0f6-816d-4425-8403-5d07284db0aa.txt +1 -0
  202. package/tests/config_test/media/5ffa2969-2d65-430e-a621-420c07f18f41.txt +1 -0
  203. package/tests/config_test/media/62a62671-e4bc-4312-8dfd-a06168c22aee.txt +1 -0
  204. package/tests/config_test/media/63732c16-1f11-4635-b2bc-62a6459e651e.txt +1 -0
  205. package/tests/config_test/media/64b8c889-5423-4cbb-9816-a05e72771b52.txt +1 -0
  206. package/tests/config_test/media/653d8bcd-4e60-4fda-9676-2e0054d966c1.txt +1 -0
  207. package/tests/config_test/media/6602e1e0-07e9-4dd1-b3c8-276f24e2a41f.txt +1 -0
  208. package/tests/config_test/media/67868636-99cc-441b-991d-7fe781b67745.txt +1 -0
  209. package/tests/config_test/media/67b4eede-7118-4e25-8801-ca53d0fd9d7f.txt +1 -0
  210. package/tests/config_test/media/67b817df-8c2f-4fe5-ba38-6090b5658943.txt +1 -0
  211. package/tests/config_test/media/67f8c8a6-8aa3-4d0f-bcf6-bec8c5a6726a.txt +1 -0
  212. package/tests/config_test/media/6808c09c-a1a9-4eea-92d6-327957c599be.txt +1 -0
  213. package/tests/config_test/media/681f8ee3-0d7f-4d85-a593-0c1f5ceea9be.txt +1 -0
  214. package/tests/config_test/media/68ae942b-c728-4127-a057-dfd08edc1aee.txt +1 -0
  215. package/tests/config_test/media/6a405178-234d-4562-ab34-c554826476fc.txt +1 -0
  216. package/tests/config_test/media/6b801410-b1fb-43f6-935e-c7cb09fb0f5a.txt +1 -0
  217. package/tests/config_test/media/6bd41073-fa62-4c20-a896-8b1e5d2b8381.txt +1 -0
  218. package/tests/config_test/media/6ea9bf1d-780e-4fc2-987e-841038b791cd.txt +1 -0
  219. package/tests/config_test/media/6fa62bcc-859a-44eb-a85b-ed12b3aec3ae.txt +1 -0
  220. package/tests/config_test/media/70118801-66f3-4165-a0b2-8918e4d4bd15.txt +1 -0
  221. package/tests/config_test/media/70640e73-56dc-4880-af62-ad7530a1185d.txt +1 -0
  222. package/tests/config_test/media/7114e6d7-f285-48b3-80c9-ec3fb1c3233e.txt +1 -0
  223. package/tests/config_test/media/71997029-9398-4efb-9868-3025b6de861a.txt +1 -0
  224. package/tests/config_test/media/725cb5f7-8410-4b7a-8427-90b213cea9d6.txt +1 -0
  225. package/tests/config_test/media/727960af-4454-4aa2-b479-c88398ca2c01.txt +1 -0
  226. package/tests/config_test/media/763e2702-7677-48b0-89be-30f8caf56667.txt +1 -0
  227. package/tests/config_test/media/7682d7aa-6622-4ae1-bdfc-bb5134cf92d9.txt +1 -0
  228. package/tests/config_test/media/773d6a45-2316-41da-9973-1395727ffc1f.txt +1 -0
  229. package/tests/config_test/media/783cdda1-9913-4ab0-aba6-56a4c22e2b61.txt +1 -0
  230. package/tests/config_test/media/78becb97-76f6-4fd1-976d-ab3d5e4b21c2.txt +1 -0
  231. package/tests/config_test/media/78cb1409-965a-44ea-b42b-0363db4d2ebd.txt +1 -0
  232. package/tests/config_test/media/79f9864e-b5d5-4c8d-bb66-749f5b49877f.txt +1 -0
  233. package/tests/config_test/media/7b2928b9-4fd3-46c7-8b78-f8d1118c605b.txt +1 -0
  234. package/tests/config_test/media/7b5aead0-b20b-4719-88aa-3dd070d53e4d.txt +1 -0
  235. package/tests/config_test/media/7c1a82c9-391d-40fb-a6f3-d79468fcd45f.txt +1 -0
  236. package/tests/config_test/media/7f1aefd7-7c6b-4b29-9f71-a85d800d63eb.txt +1 -0
  237. package/tests/config_test/media/7fe1aa1b-3e92-4f1b-a77d-bf69601ba162.txt +1 -0
  238. package/tests/config_test/media/802ca8c0-8898-446d-aeca-59d0cce3eea5.txt +1 -0
  239. package/tests/config_test/media/8034e1cc-a82a-4e65-9019-ecf53a212c9e.txt +1 -0
  240. package/tests/config_test/media/80828d5a-916c-412b-aa23-eccdf3ce4078.txt +1 -0
  241. package/tests/config_test/media/81a6ec1c-49c5-490b-afe8-bd47a3c3b1e7.txt +1 -0
  242. package/tests/config_test/media/82827b46-f1f4-4b2a-bd5a-4a83e6b5cc12.txt +1 -0
  243. package/tests/config_test/media/82f7163d-c5a6-44fe-b06a-b1863c553af4.txt +1 -0
  244. package/tests/config_test/media/83141a3e-3f8b-456a-83f1-b9b4ada167f0.txt +1 -0
  245. package/tests/config_test/media/837397e7-63f9-4cba-8b10-51d565e00341.txt +1 -0
  246. package/tests/config_test/media/8440b86e-2036-46ef-affe-e052ae1e232f.txt +1 -0
  247. package/tests/config_test/media/8729c33a-8f9d-496c-8090-42947d3bd4c7.txt +1 -0
  248. package/tests/config_test/media/874e1047-3429-443a-868d-4ce453c3a525.txt +1 -0
  249. package/tests/config_test/media/8770cffa-58f5-4c15-869a-687c77529f81.txt +1 -0
  250. package/tests/config_test/media/87c977c0-4375-4527-abc1-6223c71e8756.txt +1 -0
  251. package/tests/config_test/media/889e72cc-7e19-40ef-9d5b-1e501f3b48c7.txt +1 -0
  252. package/tests/config_test/media/88c89c9b-755e-43f9-9ac6-c01df1e83dfb.txt +1 -0
  253. package/tests/config_test/media/894ee8b5-d527-40e2-a7e1-475d9f07c2aa.txt +1 -0
  254. package/tests/config_test/media/89ec8a46-a4bf-4462-8f6d-c132016af9e1.txt +1 -0
  255. package/tests/config_test/media/8b2bee47-1673-4cd9-a8d5-033ef092b93e.txt +1 -0
  256. package/tests/config_test/media/8c362262-34ff-4707-ab5f-c334034083ee.txt +1 -0
  257. package/tests/config_test/media/8c458967-085b-4750-91e6-3ea391147bc7.txt +1 -0
  258. package/tests/config_test/media/8c5b0560-fc62-47a5-b480-a93120ca7bc4.txt +1 -0
  259. package/tests/config_test/media/8ce076d6-e809-4355-97ab-96104b51b939.txt +1 -0
  260. package/tests/config_test/media/8d60f276-8a2d-48e2-934b-63ef82f03d0f.txt +1 -0
  261. package/tests/config_test/media/8d889db9-f6b8-4ccb-864c-d10d1a54f7e9.txt +1 -0
  262. package/tests/config_test/media/8df0284b-c43f-4c32-a4e1-7dbe2c8c80f0.txt +1 -0
  263. package/tests/config_test/media/8e583c0b-1e2e-4b51-b104-1382e81f69d9.txt +1 -0
  264. package/tests/config_test/media/8f57d7e8-0f26-4719-b4d1-37896da3f579.txt +1 -0
  265. package/tests/config_test/media/9070fc55-481f-44c9-96f2-62f7c0a08814.txt +1 -0
  266. package/tests/config_test/media/93743c64-b60e-4521-9774-4d3beffd4465.txt +1 -0
  267. package/tests/config_test/media/939c6b06-b95d-4de6-bdaa-6f33cbe1fc1e.txt +1 -0
  268. package/tests/config_test/media/94ac4fc1-ba54-43de-b283-a7fa05eb3921.txt +1 -0
  269. package/tests/config_test/media/95093a2d-81d2-46d7-a817-7ab507cc2454.txt +1 -0
  270. package/tests/config_test/media/9628850e-c8d3-44da-b3b4-b27e00ba0e05.txt +1 -0
  271. package/tests/config_test/media/965e4782-3120-41c1-a398-23b38a342d95.txt +1 -0
  272. package/tests/config_test/media/97216f64-db92-4fa8-a239-5a115e3293a0.txt +1 -0
  273. package/tests/config_test/media/97b54a41-ec05-498e-9c61-6ec20f34a331.txt +1 -0
  274. package/tests/config_test/media/97c15c9a-13b4-49f1-b9ea-708c92756b95.txt +1 -0
  275. package/tests/config_test/media/97e45e1c-d03b-4a17-bb6f-ea8601e7fdf4.txt +1 -0
  276. package/tests/config_test/media/98faca9f-2686-4338-a1c2-d1920cce2fc0.txt +1 -0
  277. package/tests/config_test/media/997016d6-6832-4c09-9f8d-949dba5f4f8e.txt +1 -0
  278. package/tests/config_test/media/99ce7c2e-d4a3-49d0-9251-9c62d28288f5.txt +1 -0
  279. package/tests/config_test/media/9a9940a6-78b9-4978-98a6-914a171406c3.txt +1 -0
  280. package/tests/config_test/media/9ade4d45-452f-4a3f-ba4f-d9a08da80dab.txt +1 -0
  281. package/tests/config_test/media/9aff7e30-1809-4021-8ab1-e9a04068ad15.txt +1 -0
  282. package/tests/config_test/media/9b6b83df-1ee4-48f2-a3b0-aee0723378fc.txt +1 -0
  283. package/tests/config_test/media/9bbf50e1-c19d-4cc4-a366-0dcc234f003f.txt +1 -0
  284. package/tests/config_test/media/9ce9bc18-89eb-4a6f-832d-a4380111ebfa.txt +1 -0
  285. package/tests/config_test/media/9d7e647b-f1a9-44a7-bb9d-5ad7ac545ed9.txt +1 -0
  286. package/tests/config_test/media/9e141207-cb69-47c7-a80a-9096886b0f4e.txt +1 -0
  287. package/tests/config_test/media/9e58e7cc-04bb-48d0-9af1-9fd7c80d46be.txt +1 -0
  288. package/tests/config_test/media/9f1f6f42-70f0-404e-89e4-31588f235108.txt +1 -0
  289. package/tests/config_test/media/9f3e0022-deb0-44a2-b47c-fd4880fb2fa6.txt +1 -0
  290. package/tests/config_test/media/a07a6a4e-25c7-4f91-acdc-411e676bae99.txt +1 -0
  291. package/tests/config_test/media/a08ef99a-7cff-4224-985f-aa7cf292c6c3.txt +1 -0
  292. package/tests/config_test/media/a0c4ef94-eb1d-4b7f-b636-62ad6914a69c.txt +1 -0
  293. package/tests/config_test/media/a170f562-2b00-4662-85d7-7c43f9f67e0c.txt +1 -0
  294. package/tests/config_test/media/a32bb27b-7772-4373-ada7-890d9315256f.txt +1 -0
  295. package/tests/config_test/media/a36c31b9-f5c1-43a9-b448-34a380990d3f.txt +1 -0
  296. package/tests/config_test/media/a3831984-3f77-4bac-af70-5a7de6ce5424.txt +1 -0
  297. package/tests/config_test/media/a4f1f023-6135-44da-b580-c1d024cd3f47.txt +1 -0
  298. package/tests/config_test/media/a6227af7-2710-47be-ab45-25f497cec39f.txt +1 -0
  299. package/tests/config_test/media/a64baf32-bd1e-4353-bdf8-74cc3672639f.txt +1 -0
  300. package/tests/config_test/media/a67f5ac1-9645-4f28-a221-c3466b6ba865.txt +1 -0
  301. package/tests/config_test/media/a7f8e5a7-0c0e-48fb-b323-743b121fc091.txt +1 -0
  302. package/tests/config_test/media/a969343e-857b-49b1-a311-0030e0cc57cd.txt +1 -0
  303. package/tests/config_test/media/a9bc7241-7413-4113-8baf-784af73b110d.txt +1 -0
  304. package/tests/config_test/media/aa5b6ba2-76cf-4ca2-90b8-8f83cb23687e.txt +1 -0
  305. package/tests/config_test/media/aa5f29d2-3c13-4a15-ac68-b28964f80a1d.txt +1 -0
  306. package/tests/config_test/media/aaa97926-1d6f-4f5a-9af8-e68584797d23.txt +1 -0
  307. package/tests/config_test/media/ac98c0da-b830-4ec8-9ab6-d8e72a6d0bf2.txt +1 -0
  308. package/tests/config_test/media/af2dda92-1ed0-4b00-a786-f0f7516d4b2b.txt +1 -0
  309. package/tests/config_test/media/b0327e27-0733-4f08-b728-8dca3eae7526.txt +1 -0
  310. package/tests/config_test/media/b23fc74b-403b-49d6-810b-5c3dc71f48de.txt +1 -0
  311. package/tests/config_test/media/b2aa3fbb-ef3f-423b-b7a9-1863aba35bdd.txt +1 -0
  312. package/tests/config_test/media/b38675e5-1ecf-4967-88ef-9f60cce1bb89.txt +1 -0
  313. package/tests/config_test/media/b45c1951-b045-4762-a9fa-8d346617c1b5.txt +1 -0
  314. package/tests/config_test/media/b5359b92-46ea-4ebc-b6bc-102ef03ac5f5.txt +1 -0
  315. package/tests/config_test/media/b5d5aa47-fb92-48a6-9bd5-e394dc7b5212.txt +1 -0
  316. package/tests/config_test/media/b6bba0b4-d9fe-431b-8836-ef41bcd890fe.txt +1 -0
  317. package/tests/config_test/media/b72f4de8-5071-4314-a8e9-0adc7ce98fb8.txt +1 -0
  318. package/tests/config_test/media/b792506c-a05f-4b33-8934-83a7f2b1ebdd.txt +1 -0
  319. package/tests/config_test/media/b7e0e1bd-5e0f-44cc-89b9-55e67c368dce.txt +1 -0
  320. package/tests/config_test/media/b7ec24ac-6967-441e-9cb9-533daa7b443e.txt +1 -0
  321. package/tests/config_test/media/b86f2242-9e7c-4434-ac3d-e8fe868ab758.txt +1 -0
  322. package/tests/config_test/media/b8aa1cbb-05fe-4564-bfad-96a5243eec54.txt +1 -0
  323. package/tests/config_test/media/b8c54323-7977-4626-9412-66116a40fe42.txt +1 -0
  324. package/tests/config_test/media/ba3387a6-c5cd-4677-bddd-a399c6f648a3.txt +1 -0
  325. package/tests/config_test/media/ba70f293-7a40-4a5d-9e60-9d9c3d1fd2c0.txt +1 -0
  326. package/tests/config_test/media/ba7cad62-385b-494c-9688-b008fbae10c9.txt +1 -0
  327. package/tests/config_test/media/bb07c0ca-4b9f-4888-9109-95087951d2a6.txt +1 -0
  328. package/tests/config_test/media/bcf860eb-13b6-44b7-9a58-f2b6422a4fb0.txt +1 -0
  329. package/tests/config_test/media/bd8a019f-c9fd-4289-bc38-cc222a247ba8.txt +1 -0
  330. package/tests/config_test/media/bda18b4f-b4f3-4095-8b9b-8d715945ded1.txt +1 -0
  331. package/tests/config_test/media/bf3e4228-17f4-40d6-9d23-7ba79a333be5.txt +1 -0
  332. package/tests/config_test/media/bfa2fe67-34fe-466c-b807-bea2ddfb0141.txt +1 -0
  333. package/tests/config_test/media/c15ecf6e-6167-42ad-ba24-161216dbabfb.txt +1 -0
  334. package/tests/config_test/media/c17436fb-113d-425e-b59b-cafe93e3418e.txt +1 -0
  335. package/tests/config_test/media/c22154ee-3f66-4996-8ed7-df6120806040.txt +1 -0
  336. package/tests/config_test/media/c2c47ffe-50a1-46f4-bace-d66008c3ce7b.txt +1 -0
  337. package/tests/config_test/media/c4e0c0bf-f9b0-4fec-8fbf-292d8d2fe254.txt +1 -0
  338. package/tests/config_test/media/c56803d2-29bc-4359-8cb4-ea9574a47b2d.txt +1 -0
  339. package/tests/config_test/media/c607d0ee-1641-47e1-83d5-66e9e4bed857.txt +1 -0
  340. package/tests/config_test/media/c62769c5-d469-4499-bf09-97f752a65397.txt +1 -0
  341. package/tests/config_test/media/c667bac7-c161-4f89-b311-9975dcac5865.txt +1 -0
  342. package/tests/config_test/media/c7485a24-95f6-45e7-90f2-6a4716e8971e.txt +1 -0
  343. package/tests/config_test/media/c80b124d-579a-4f7b-9743-5428be624edf.txt +1 -0
  344. package/tests/config_test/media/c8f6e757-0252-4ac6-a439-14a5cd406e16.txt +1 -0
  345. package/tests/config_test/media/c94c9c39-24e1-4ce3-94bd-e32db7052a9d.txt +1 -0
  346. package/tests/config_test/media/ca950ac2-312d-472f-ae0f-7604edd6eae8.txt +1 -0
  347. package/tests/config_test/media/cc1ffb29-8d6f-47cd-9efd-f38832045570.txt +1 -0
  348. package/tests/config_test/media/cf42859e-23b6-4f7b-9b00-4928b0fc33fd.txt +1 -0
  349. package/tests/config_test/media/d000b20e-fd2c-4d07-bb8c-fc48541fe420.txt +1 -0
  350. package/tests/config_test/media/d191b4ba-365d-4346-96c6-7ab4f27a163d.txt +1 -0
  351. package/tests/config_test/media/d2739585-5101-44b5-8dd1-bbb09a104978.txt +1 -0
  352. package/tests/config_test/media/d31d2bf6-bdb1-4de2-9942-3ab83e857a52.txt +1 -0
  353. package/tests/config_test/media/d4027635-8e25-4cf5-a3dc-73a826c5045c.txt +1 -0
  354. package/tests/config_test/media/d476077e-d4e9-42e8-a7db-ded7f075d88d.txt +1 -0
  355. package/tests/config_test/media/d4fe0fae-942f-4966-ab76-64ba34352269.txt +1 -0
  356. package/tests/config_test/media/d551ace3-b4bb-4306-ad17-4873cdbfa5f5.txt +1 -0
  357. package/tests/config_test/media/d5aabdf7-472d-4268-b542-ddce2b25c70e.txt +1 -0
  358. package/tests/config_test/media/d6279202-c868-4058-947d-d9e44acd26cc.txt +1 -0
  359. package/tests/config_test/media/d62ecbb0-df04-449c-91fa-5d60f96c717f.txt +1 -0
  360. package/tests/config_test/media/d6309af6-add5-4d3d-9596-92a3c1b785b8.txt +1 -0
  361. package/tests/config_test/media/d6f419fc-2441-4170-8967-1d3f2a232869.txt +1 -0
  362. package/tests/config_test/media/d78e034e-51e4-47e7-802b-2fb9ca7aeeb0.txt +1 -0
  363. package/tests/config_test/media/d7a5dea2-b545-4b1f-9f25-0ca31bfa9ba9.txt +1 -0
  364. package/tests/config_test/media/d7eff0e2-7e17-4364-995a-13608df42af3.txt +1 -0
  365. package/tests/config_test/media/d89b187c-f4e0-45c2-8622-8f6c05b3f8f8.txt +1 -0
  366. package/tests/config_test/media/d8e4f769-79a3-4577-ae6f-e21b6c373661.txt +1 -0
  367. package/tests/config_test/media/d9266efc-e275-4daf-bb58-a7d224649ac5.txt +1 -0
  368. package/tests/config_test/media/db04add1-1f89-4657-a897-4779001bd6cc.txt +1 -0
  369. package/tests/config_test/media/dc709e83-06c7-4371-95f4-c4982d094c7b.txt +1 -0
  370. package/tests/config_test/media/de3812df-b579-4203-98b1-7ee8821680a4.txt +1 -0
  371. package/tests/config_test/media/df1a21db-e3e1-4670-b909-da77c591486e.txt +1 -0
  372. package/tests/config_test/media/e033a02b-3a38-4b6f-8873-b121cc0cbcad.txt +1 -0
  373. package/tests/config_test/media/e13e2632-4aaf-4a79-b6b4-ef1f81028346.txt +1 -0
  374. package/tests/config_test/media/e19633b3-1ab1-4f18-86cd-e421633e96af.txt +1 -0
  375. package/tests/config_test/media/e1dc9b89-9563-4937-b529-43cd55f82a98.txt +1 -0
  376. package/tests/config_test/media/e37f9c75-0571-4336-b7a6-d431e295ba92.txt +1 -0
  377. package/tests/config_test/media/e3fb83b1-53ed-470d-b9f4-015f98c6a128.txt +1 -0
  378. package/tests/config_test/media/e6c964da-ab48-4779-9706-0ae9ab5f22bb.txt +1 -0
  379. package/tests/config_test/media/e732131f-d7e2-4969-9f0f-10672281405b.txt +1 -0
  380. package/tests/config_test/media/e73f5320-f030-43ae-9efe-002aeb6e0522.txt +1 -0
  381. package/tests/config_test/media/e98267b9-553f-4cd2-9277-2bee037b7003.txt +1 -0
  382. package/tests/config_test/media/ea3c4ac0-f63d-4a91-b015-345851856564.txt +1 -0
  383. package/tests/config_test/media/eacee16f-a2db-4d60-a36b-9b60ea2be330.txt +1 -0
  384. package/tests/config_test/media/eba1b05a-52aa-4f00-92f6-3d556ca2f366.txt +1 -0
  385. package/tests/config_test/media/ebf6e54b-0d1e-4d87-b206-34fa81c66dbb.txt +1 -0
  386. package/tests/config_test/media/ecbf0894-6d76-4141-875d-7691de63a8f7.txt +1 -0
  387. package/tests/config_test/media/ece7a87a-3490-4ac6-adaf-289b1e427325.txt +1 -0
  388. package/tests/config_test/media/ed59c963-3449-4431-8440-2cba7defdcae.txt +1 -0
  389. package/tests/config_test/media/eda09368-348b-4531-a062-a8aafbf9cb8a.txt +1 -0
  390. package/tests/config_test/media/edd1c2b2-179f-4d44-9ac0-72b4fe16c6f2.txt +1 -0
  391. package/tests/config_test/media/ee4e9f39-779e-4084-b696-f39abe74f545.txt +1 -0
  392. package/tests/config_test/media/ef08a195-fcc6-452f-b81e-9d4e97231327.txt +1 -0
  393. package/tests/config_test/media/ef518fee-57a4-47d3-bbb5-aef9b166ca49.txt +1 -0
  394. package/tests/config_test/media/efd77ad3-0e00-448f-a01d-4f363ad5c0b1.txt +1 -0
  395. package/tests/config_test/media/f0c18f54-1095-4787-891b-63c82ba6c153.txt +1 -0
  396. package/tests/config_test/media/f18dca67-521a-4e7f-8064-e6daa08ea3bc.txt +1 -0
  397. package/tests/config_test/media/f19a32ab-f345-4bcb-be01-58e62ade0285.txt +1 -0
  398. package/tests/config_test/media/f29ef9e1-4f84-4bb7-93ce-3693d7cd01f7.txt +1 -0
  399. package/tests/config_test/media/f2cd3857-386e-4d43-b5ee-cb54d1e7fa3c.txt +1 -0
  400. package/tests/config_test/media/f3c8b431-4b3a-43b9-a277-233daea240bb.txt +1 -0
  401. package/tests/config_test/media/f7344305-dde1-4b33-989e-b64b18447e2a.txt +1 -0
  402. package/tests/config_test/media/f829cdfe-a118-4751-a49f-565a617c2b99.txt +1 -0
  403. package/tests/config_test/media/f89206aa-0728-4215-a1df-c1f4315079b5.txt +1 -0
  404. package/tests/config_test/media/f89bb977-c022-471d-9972-d9417484f025.txt +1 -0
  405. package/tests/config_test/media/f960f026-724a-4630-b3ea-48d7ad60b022.txt +1 -0
  406. package/tests/config_test/media/fa343cd4-aca6-482b-9395-f221148fd0d8.txt +1 -0
  407. package/tests/config_test/media/fa802dcc-614e-4027-95fe-ce4f0da61bc9.txt +1 -0
  408. package/tests/config_test/media/ff1a47f0-9c4b-4c88-b0dc-b28d20a83509.txt +1 -0
  409. package/tests/config_test/media/ff8aa3b0-5c4d-4d39-be53-4e28e9ee02e7.txt +1 -0
  410. package/tests/config_test/media/ffb998c5-c98b-4442-b8ef-187bdc7e4c73.txt +1 -0
  411. package/tests/config_test/media/ffc43791-7d7b-4e13-a2ea-3bb952457e7f.txt +1 -0
  412. package/tests/config_test/package-lock.json +727 -688
  413. package/tests/config_test/package.json +2 -2
  414. package/tests/config_test/tsconfig.json +1 -1
  415. package/tests/isomorphic_queries.js +38 -0
  416. package/tests/isomorphic_queries.ts +28 -1
  417. package/tests/server/DBoGenerated.d.ts +135 -1
  418. package/tests/server/index.js +51 -27
  419. package/tests/server/index.ts +49 -26
  420. package/tests/server/init.sql +22 -7
  421. package/tests/server/media/35d7e3d7-64d3-4d4b-b564-5e810ca3671f.txt +1 -0
  422. package/tests/server/media/70ca7114-d6bc-4551-8170-cd7dcdff11dd.txt +1 -0
  423. package/tests/server/media/9e19f591-edc8-4ad7-ac4f-96c3078cb8ed.txt +1 -0
  424. package/tests/server/package-lock.json +166 -535
  425. package/tests/server/package.json +2 -2
  426. package/tests/config_test2/package-lock.json +0 -1999
package/lib/Prostgles.ts CHANGED
@@ -6,19 +6,20 @@
6
6
  import * as promise from "bluebird";
7
7
  import * as pgPromise from 'pg-promise';
8
8
  import pg = require('pg-promise/typescript/pg-subset');
9
+ import FileManager, { ImageOptions, LocalConfig, S3Config } from "./FileManager";
9
10
 
10
11
  const pkgj = require('../package.json');
11
12
  const version = pkgj.version;
12
13
 
14
+ console.log("Add a basic auth mode where user and sessions table are created");
15
+
13
16
  import { get } from "./utils";
14
- import { DboBuilder, DbHandler, DbHandlerTX, TableHandler, ViewHandler, isPlainObject } from "./DboBuilder";
17
+ import { DboBuilder, DbHandler, TableHandler, ViewHandler, isPlainObject, LocalParams } from "./DboBuilder";
15
18
  import { PubSubManager, DEFAULT_SYNC_BATCH_SIZE, asValue } from "./PubSubManager";
16
-
19
+ export { DbHandler }
17
20
  export type PGP = pgPromise.IMain<{}, pg.IClient>;
18
21
 
19
-
20
- export { DbHandler, DbHandlerTX } from "./DboBuilder";
21
- import { SQLRequest, SQLOptions, CHANNELS, asName, DBHandler, AnyObject } from "prostgles-types";
22
+ import { SQLRequest, SQLOptions, CHANNELS, AnyObject } from "prostgles-types";
22
23
 
23
24
  import { DBEventsManager } from "./DBEventsManager";
24
25
 
@@ -66,9 +67,6 @@ function getDbConnection(dbConnection: DbConnection, options: DbConnectionOpts,
66
67
  }
67
68
 
68
69
 
69
- const QueryFile = require('pg-promise').QueryFile;
70
-
71
-
72
70
  import { Socket } from "dgram";
73
71
  import { FieldFilter, SelectParamsBasic as SelectParams } from "prostgles-types";
74
72
 
@@ -98,6 +96,8 @@ export type UpdateRequestDataBatch = {
98
96
  }
99
97
  export type UpdateRequestData = UpdateRequestDataOne | UpdateRequestDataBatch;
100
98
 
99
+ export type ValidateRow = (row: AnyObject) => AnyObject | Promise<AnyObject>;
100
+
101
101
  export type SelectRule = {
102
102
 
103
103
  /**
@@ -153,14 +153,14 @@ export type InsertRule = {
153
153
  returningFields?: FieldFilter;
154
154
 
155
155
  /**
156
- * Validation logic to check/update data for each request. Happens before field check
156
+ * Validation logic to check/update data for each request. Happens before publish rule checks (for fields, forcedData/forcedFilter)
157
157
  */
158
- preValidate?: (row: object) => object | Promise<object>
158
+ preValidate?: ValidateRow
159
159
 
160
160
  /**
161
- * Validation logic to check/update data for each request. Happens after field check
161
+ * Validation logic to check/update data for each request. Happens after publish rule checks (for fields, forcedData/forcedFilter)
162
162
  */
163
- validate?: (row: object) => object | Promise<object>
163
+ validate?: ValidateRow
164
164
  }
165
165
  export type UpdateRule = {
166
166
 
@@ -193,7 +193,7 @@ export type UpdateRule = {
193
193
  /**
194
194
  * Validation logic to check/update data for each request
195
195
  */
196
- validate?: (row: object) => object | Promise<object>
196
+ validate?: ValidateRow
197
197
  }
198
198
  export type DeleteRule = {
199
199
 
@@ -215,7 +215,7 @@ export type DeleteRule = {
215
215
  /**
216
216
  * Validation logic to check/update data for each request
217
217
  */
218
- validate?(...UpdateRequestData): UpdateRequestData
218
+ validate?(...args): UpdateRequestData
219
219
  }
220
220
  export type SyncRule = {
221
221
 
@@ -274,9 +274,21 @@ export type PublishViewRule = {
274
274
  // tablesOrViews: {[key:string]: TableRule | ViewRule | "*" }
275
275
  // }
276
276
  export type RequestParams = { dbo?: DbHandler, socket?: any };
277
- export type PublishAllOrNothing = string | "*" | false | null;
278
- export type PublishedTablesAndViews = PublishAllOrNothing | { [key: string]: (PublishTableRule | PublishViewRule | PublishAllOrNothing ) } ;
279
- export type Publish = PublishedTablesAndViews | ((socket?: any, dbo?: DbHandler | DbHandlerTX | any, db?: DB, user?: any) => (PublishedTablesAndViews | Promise<PublishedTablesAndViews>));
277
+ export type PublishAllOrNothing = "*" | false | null;
278
+ export type PublishObject = {
279
+ [table_name: string]: (PublishTableRule | PublishViewRule | PublishAllOrNothing )
280
+ };
281
+ export type PublishTable = {
282
+ [table_name: string]: (PublishTableRule | PublishViewRule)
283
+ };
284
+ export type PublishedResult = PublishAllOrNothing | PublishObject ;
285
+ export type PublishParams<DBO = DbHandler> = {
286
+ sid?: string;
287
+ dbo?: DBO;
288
+ db?: DB;
289
+ user?: AnyObject;
290
+ }
291
+ export type Publish<DBO> =(params: PublishParams<DBO>) => (PublishedResult | Promise<PublishedResult>);
280
292
 
281
293
  export type Method = (...args: any) => ( any | Promise<any> );
282
294
  export const JOIN_TYPES = ["one-many", "many-one", "one-one", "many-many"] as const;
@@ -287,18 +299,48 @@ export type Join = {
287
299
  };
288
300
  export type Joins = Join[] | "inferred";
289
301
 
290
- export type publishMethods = (socket?: any, dbo?: DbHandler | DbHandlerTX | any, db?: DB, user?: any) => { [key:string]: Method } | Promise<{ [key:string]: Method }>;
302
+ export type PublishMethods<DBO> = (params: PublishParams<DBO>) => { [key:string]: Method } | Promise<{ [key:string]: Method }>;
291
303
 
292
304
  export type BasicSession = { sid: string, expires: number };
293
- export type SessionIDs = { sidCookie?: string; sidQuery?: string; sid: string; };
294
- export type Auth = {
295
- sidQueryParamName?: string; /* Name of the websocket handshake query parameter that represents the session id. Takes precedence over cookie. If provided, Prostgles will attempt to get the user on socket connection */
296
- sidCookieName?: string; /* Name of the cookie that represents the session id. If provided, Prostgles will attempt to get the user on socket connection */
297
- getUser: (params: SessionIDs, dbo: any, db: DB, socket: any) => Promise<object | null | undefined>; /* User data used on server */
298
- getClientUser: (params: SessionIDs, dbo: any, db: DB, socket: any) => Promise<object>; /* User data sent to client */
299
- register?: (params, dbo: any, db: DB, socket: any) => Promise<BasicSession>;
300
- login?: (params, dbo: any, db: DB, socket: any) => Promise<BasicSession>;
301
- logout?: (params: SessionIDs, dbo: any, db: DB, socket: any) => Promise<any>;
305
+
306
+ export type AuthClientRequest = { socket: any } | { httpReq: any }
307
+ export type Auth<DBO = DbHandler> = {
308
+ /**
309
+ * Name of the cookie or socket hadnshake query param that represents the session id.
310
+ * Defaults to "session_id"
311
+ */
312
+ sidKeyName?: string;
313
+ expressConfig?: {
314
+ /**
315
+ * Express app instance. If provided Prostgles will attempt to set sidKeyName to user cookie
316
+ */
317
+ app: any;
318
+
319
+ /**
320
+ * Used in allowing logging in through express
321
+ */
322
+ loginPostPath: string;
323
+ }
324
+
325
+ /**
326
+ * User data used on server
327
+ */
328
+ getUser: (sid: string, dbo: DBO, db: DB) => Promise<AnyObject | null | undefined>;
329
+
330
+ /**
331
+ * User data sent to client
332
+ */
333
+ getClientUser: (sid: string, dbo: DBO, db: DB) => Promise<AnyObject | null | undefined>;
334
+
335
+ register?: (params: AnyObject, dbo: DBO, db: DB) => Promise<BasicSession>;
336
+ login?: (params: AnyObject, dbo: DBO, db: DB) => Promise<BasicSession>;
337
+ logout?: (sid: string, dbo: DBO, db: DB) => Promise<any>;
338
+ }
339
+
340
+ export type ClientInfo = {
341
+ user?: AnyObject;
342
+ clientUser?: AnyObject;
343
+ sid?: string;
302
344
  }
303
345
 
304
346
  type Keywords = {
@@ -321,29 +363,83 @@ export type I18N_CONFIG<LANG_IDS = { en: 1, fr: 1 }> = {
321
363
  }>;
322
364
  }
323
365
 
324
- export type ProstglesInitOptions = {
366
+ type ExpressApp = {
367
+ get: (
368
+ routePath: string,
369
+ cb: (
370
+ req: {
371
+ params: { name: string },
372
+ cookies: { sid: string }
373
+ },
374
+ res: {
375
+ redirect: (redirectUrl: string) => any;
376
+ contentType: (type: string) => void;
377
+ sendFile: (fileName: string, opts?: { root: string }) => any;
378
+ status: (code: number) => {
379
+ json: (response: AnyObject) => any;
380
+ }
381
+ }
382
+ ) => any
383
+ ) => any
384
+ };
385
+
386
+ /**
387
+ * Allows uploading and downloading files.
388
+ * Currently supports only S3.
389
+ *
390
+ * @description
391
+ * Will create a media table that contains file metadata and urls
392
+ * Inserting a file into this table through prostgles will upload it to S3 and insert the relevant metadata into the media table
393
+ * Requesting a file from HTTP GET {fileUrlPath}/{fileId} will:
394
+ * 1. check auth (if provided)
395
+ * 2. check the permissions in publish (if provided)
396
+ * 3. redirect the request to the signed url (if allowed)
397
+ *
398
+ * Specifying referencedTables will:
399
+ * 1. create a column in that table called media
400
+ * 2. create a lookup table lookup_media_{referencedTable} that joins referencedTable to the media table
401
+ */
402
+ export type FileTableConfig = {
403
+ tableName?: string; /* defaults to 'media' */
404
+ fileUrlPath?: string; // defaults to tableName
405
+ awsS3Config?: S3Config;
406
+ localConfig?: LocalConfig;
407
+ // {
408
+ // region: string;
409
+ // bucket: string;
410
+ // accessKeyId: string;
411
+ // secretAccessKey: string;
412
+ // },
413
+ expressApp: ExpressApp;
414
+ referencedTables?: {
415
+ [tableName: string]: "one" | "many"
416
+ },
417
+ imageOptions?: ImageOptions
418
+ };
419
+
420
+ export type ProstglesInitOptions<DBO = DbHandler> = {
325
421
  dbConnection: DbConnection;
326
422
  dbOptions?: DbConnectionOpts;
327
423
  tsGeneratedTypesDir?: string;
328
424
  io?: any;
329
- publish?: Publish;
330
- publishMethods?: publishMethods;
331
- publishRawSQL?(socket?: any, dbo?: DbHandler | DbHandlerTX | any, db?: DB, user?: any): ( (boolean | "*") | Promise<(boolean | "*")>);
425
+ publish?: Publish<DBO>;
426
+ publishMethods?: PublishMethods<DBO>;
427
+ publishRawSQL?(params: PublishParams<DBO>): ( (boolean | "*") | Promise<(boolean | "*")>);
332
428
  joins?: Joins;
333
429
  schema?: string;
334
430
  sqlFilePath?: string;
335
- onReady(dbo: any, db: DB): void;
336
- // auth,
431
+ onReady(dbo: DBO, db: DB): void;
337
432
  transactions?: string | boolean;
338
433
  wsChannelNamePrefix?: string;
339
- onSocketConnect?(socket: Socket, dbo: any, db?: DB);
340
- onSocketDisconnect?(socket: Socket, dbo: any, db?: DB);
341
- auth?: Auth;
434
+ onSocketConnect?(socket: Socket, dbo: DBO, db?: DB);
435
+ onSocketDisconnect?(socket: Socket, dbo: DBO, db?: DB);
436
+ auth?: Auth<DBO>;
342
437
  DEBUG_MODE?: boolean;
343
438
  watchSchema?: boolean | "hotReloadMode" | ((event: { command: string; query: string }) => void);
344
439
  keywords?: Keywords;
345
440
  onNotice?: (msg: any) => void;
346
441
  i18n?: I18N_CONFIG<AnyObject>;
442
+ fileTable?: FileTableConfig;
347
443
  }
348
444
 
349
445
  // interface ISocketSetup {
@@ -377,50 +473,68 @@ const DEFAULT_KEYWORDS = {
377
473
  };
378
474
 
379
475
  const fs = require('fs');
380
- export class Prostgles {
381
-
382
- // o: ProstglesInitOptions;
383
-
384
- dbConnection: DbConnection = {
385
- host: "localhost",
386
- port: 5432,
387
- application_name: "prostgles_app"
476
+ export class Prostgles<DBO = DbHandler> {
477
+
478
+ opts: ProstglesInitOptions<DBO> = {
479
+ DEBUG_MODE: false,
480
+ dbConnection: {
481
+ host: "localhost",
482
+ port: 5432,
483
+ application_name: "prostgles_app"
484
+ },
485
+ onReady: () => {},
486
+ schema: "public",
487
+ watchSchema: false,
388
488
  };
389
- dbOptions: DbConnectionOpts;
489
+
490
+ // dbConnection: DbConnection = {
491
+ // host: "localhost",
492
+ // port: 5432,
493
+ // application_name: "prostgles_app"
494
+ // };
495
+ // dbOptions: DbConnectionOpts;
390
496
  db: DB;
391
497
  pgp: PGP;
392
- dbo: DbHandler | DbHandlerTX;
498
+ dbo: DbHandler;
393
499
  dboBuilder: DboBuilder;
394
-
395
- publishMethods?: publishMethods;
396
- io: any;
397
- publish?: Publish;
398
- joins?: Joins;
399
- schema: string = "public";
400
- transactions?: string | boolean;
401
- // auth,
402
- publishRawSQL?: any;
403
- wsChannelNamePrefix: string = "_psqlWS_";
404
- onSocketConnect?(socket: Socket | any, dbo: any, db?: DB);
405
- onSocketDisconnect?(socket: Socket | any, dbo: any, db?: DB);
406
- sqlFilePath?: string;
407
- tsGeneratedTypesDir?: string;
408
500
  publishParser: PublishParser;
409
- auth?: Auth;
410
- DEBUG_MODE?: boolean = false;
411
- watchSchema?: boolean | "hotReloadMode" | ((event: { command: string; query: string }) => void) = false;
412
- private loaded = false;
413
- keywords = DEFAULT_KEYWORDS;
414
- onReady: (dbo: any, db: DB) => void;
415
501
 
416
- /**
417
- * Postgres on notice callback
418
- */
419
- onNotice?: ProstglesInitOptions["onNotice"];
502
+ // publishMethods?: ProstglesInitOptions<DBO>["publishMethods"];
503
+ // io: any;
504
+ // publish?: ProstglesInitOptions<DBO>["publish"];
505
+ // joins?: Joins;
506
+ // schema: string = "public";
507
+ // transactions?: string | boolean;
508
+
509
+ // publishRawSQL?: ProstglesInitOptions<DBO>["publishRawSQL"];
510
+ // wsChannelNamePrefix: string = "_psqlWS_";
511
+ // onSocketConnect?(socket: Socket | any, dbo: DBO, db?: DB);
512
+ // onSocketDisconnect?(socket: Socket | any, dbo: DBO, db?: DB);
513
+ // sqlFilePath?: string;
514
+ // tsGeneratedTypesDir?: string;
515
+ // auth?: ProstglesInitOptions["auth"];
516
+ // DEBUG_MODE?: boolean = false;
517
+ // watchSchema?: ProstglesInitOptions["watchSchema"];// boolean | "hotReloadMode" | ((event: { command: string; query: string }) => void) = false;
518
+ // onReady: (dbo: any, db: DB) => void;
519
+ // i18n?: ProstglesInitOptions["i18n"];
520
+ // fileTable?: FileTableConfig;
521
+ // /**
522
+ // * Postgres on notice callback
523
+ // */
524
+ // onNotice?: ProstglesInitOptions["onNotice"];
525
+
526
+
527
+ keywords = DEFAULT_KEYWORDS;
528
+ private loaded = false;
420
529
 
421
530
  dbEventsManager: DBEventsManager;
422
531
 
423
- i18n?: ProstglesInitOptions["i18n"];
532
+
533
+ fileManager?: FileManager;
534
+
535
+ isMedia(tableName: string){
536
+ return this.opts?.fileTable?.tableName === tableName;
537
+ }
424
538
 
425
539
  constructor(params: ProstglesInitOptions){
426
540
  if(!params) throw "ProstglesInitOptions missing";
@@ -432,14 +546,21 @@ export class Prostgles {
432
546
  "onReady", "dbConnection", "dbOptions", "publishMethods", "io",
433
547
  "publish", "schema", "publishRawSQL", "wsChannelNamePrefix", "onSocketConnect",
434
548
  "onSocketDisconnect", "sqlFilePath", "auth", "DEBUG_MODE", "watchSchema",
435
- "i18n"
549
+ "i18n", "fileTable"
436
550
  ];
437
551
  const unknownParams = Object.keys(params).filter((key: string) => !(config as string[]).includes(key))
438
552
  if(unknownParams.length){
439
553
  console.error(`Unrecognised ProstglesInitOptions params: ${unknownParams.join()}`);
440
554
  }
441
555
 
442
- Object.assign(this, params);
556
+ Object.assign(this.opts, params);
557
+
558
+ /* set defaults */
559
+ if(this.opts?.fileTable){
560
+ this.opts.fileTable.tableName = this.opts?.fileTable?.tableName || "media";
561
+ }
562
+ this.opts.schema = this.opts.schema || "public";
563
+
443
564
  this.keywords = {
444
565
  ...DEFAULT_KEYWORDS,
445
566
  ...params.keywords,
@@ -449,15 +570,16 @@ export class Prostgles {
449
570
  destroyed = false;
450
571
 
451
572
  async onSchemaChange(event: { command: string; query: string }){
452
- if(this.watchSchema && this.loaded){
573
+ const { watchSchema, onReady, tsGeneratedTypesDir } = this.opts;
574
+ if(watchSchema && this.loaded){
453
575
  console.log("Schema changed");
454
576
 
455
- if(typeof this.watchSchema === "function"){
577
+ if(typeof watchSchema === "function"){
456
578
  /* Only call the provided func */
457
- this.watchSchema(event);
579
+ watchSchema(event);
458
580
 
459
- } else if(this.watchSchema === "hotReloadMode") {
460
- if(this.tsGeneratedTypesDir) {
581
+ } else if(watchSchema === "hotReloadMode") {
582
+ if(tsGeneratedTypesDir) {
461
583
  /* Hot reload integration. Will only touch tsGeneratedTypesDir */
462
584
  console.log("watchSchema: Re-writing TS schema");
463
585
 
@@ -465,10 +587,10 @@ export class Prostgles {
465
587
  this.writeDBSchema(true);
466
588
  }
467
589
 
468
- } else if(this.watchSchema === true){
590
+ } else if(watchSchema === true){
469
591
  /* Full re-init. Sockets must reconnect */
470
592
  console.log("watchSchema: Full re-initialisation")
471
- this.init(this.onReady);
593
+ this.init(onReady);
472
594
  }
473
595
  }
474
596
  }
@@ -479,7 +601,7 @@ export class Prostgles {
479
601
 
480
602
  getTSFileName(){
481
603
  const fileName = "DBoGenerated.d.ts" //`dbo_${this.schema}_types.ts`;
482
- const fullPath = (this.tsGeneratedTypesDir || "") + fileName;
604
+ const fullPath = (this.opts.tsGeneratedTypesDir || "") + fileName;
483
605
  return { fileName, fullPath }
484
606
  }
485
607
 
@@ -494,7 +616,7 @@ export class Prostgles {
494
616
 
495
617
  writeDBSchema(force = false){
496
618
 
497
- if(this.tsGeneratedTypesDir){
619
+ if(this.opts.tsGeneratedTypesDir){
498
620
  const { fullPath, fileName } = this.getTSFileName();
499
621
  const header = `/* This file was generated by Prostgles \n` +
500
622
  // `* ${(new Date).toUTCString()} \n`
@@ -511,13 +633,14 @@ export class Prostgles {
511
633
  }
512
634
  }
513
635
 
514
- async refreshDBO(){
515
- this.dboBuilder = await DboBuilder.create(this);
516
- this.dbo = this.dboBuilder.dbo;
636
+ refreshDBO = async () => {
637
+ this.dboBuilder = await DboBuilder.create(this as any) as any;
638
+ this.dbo = this.dboBuilder.dbo as any;
639
+ return this.dbo;
517
640
  }
518
641
 
519
- async init(onReady: (dbo: DbHandler | DbHandlerTX, db: DB) => any): Promise<{
520
- db: DbHandlerTX;
642
+ async init(onReady: (dbo: DBO, db: DB) => any): Promise<{
643
+ db: DbHandler;
521
644
  _db: DB;
522
645
  pgp: PGP;
523
646
  io?: any;
@@ -526,14 +649,14 @@ export class Prostgles {
526
649
  this.loaded = false;
527
650
 
528
651
 
529
- if(this.watchSchema === "hotReloadMode" && !this.tsGeneratedTypesDir) {
652
+ if(this.opts.watchSchema === "hotReloadMode" && !this.opts.tsGeneratedTypesDir) {
530
653
  throw "tsGeneratedTypesDir option is needed for watchSchema: hotReloadMode to work ";
531
654
  }
532
655
 
533
656
  /* 1. Connect to db */
534
657
  if(!this.db){
535
- const { db, pgp } = getDbConnection(this.dbConnection, this.dbOptions, this.DEBUG_MODE, notice => {
536
- if(this.onNotice) this.onNotice(notice);
658
+ const { db, pgp } = getDbConnection(this.opts.dbConnection, this.opts.dbOptions, this.opts.DEBUG_MODE, notice => {
659
+ if(this.opts.onNotice) this.opts.onNotice(notice);
537
660
  if(this.dbEventsManager){
538
661
  this.dbEventsManager.onNotice(notice)
539
662
  }
@@ -545,32 +668,46 @@ export class Prostgles {
545
668
  const { db, pgp } = this;
546
669
 
547
670
  /* 2. Execute any SQL file if provided */
548
- if(this.sqlFilePath){
549
- await this.runSQLFile(this.sqlFilePath);
671
+ if(this.opts.sqlFilePath){
672
+ await this.runSQLFile(this.opts.sqlFilePath);
550
673
  }
551
674
 
552
675
  try {
553
676
  /* 3. Make DBO object from all tables and views */
554
677
  await this.refreshDBO();
678
+
679
+ /* Create media table if required */
680
+ if(this.opts.fileTable){
681
+ const { awsS3Config, localConfig, imageOptions } = this.opts.fileTable;
682
+ if(!awsS3Config && !localConfig) throw "fileTable missing param: Must provide awsS3Config OR localConfig";
683
+ await this.refreshDBO();
684
+ this.fileManager = new FileManager(awsS3Config || localConfig, imageOptions);
685
+ await this.fileManager.init(this as any);
686
+ }
687
+ await this.refreshDBO();
555
688
 
556
- this.writeDBSchema();
557
689
 
558
- if(this.publish){
690
+ if(this.opts.publish){
691
+
692
+ if(!this.opts.io) console.warn("IO missing. Publish has no effect without io");
693
+
559
694
  /* 3.9 Check auth config */
560
- if(this.auth){
561
- const { sidCookieName, login, getUser, getClientUser } = this.auth;
562
- if(typeof sidCookieName !== "string" && !login){
563
- throw "Invalid auth: Provide { sidCookieName: string } OR { login: Function } ";
695
+ if(this.opts.auth){
696
+ this.opts.auth.sidKeyName = this.opts.auth.sidKeyName || "session_id";
697
+
698
+ const { sidKeyName, login, getUser, getClientUser } = this.opts.auth;
699
+ if(typeof sidKeyName !== "string" && !login){
700
+ throw "Invalid auth: Provide { sidKeyName: string } ";
564
701
  }
565
702
  if(!getUser || !getClientUser) throw "getUser OR getClientUser missing from auth config";
566
703
  }
567
704
 
568
- this.publishParser = new PublishParser(this.publish, this.publishMethods, this.publishRawSQL, this.dbo, this.db, this);
705
+ this.publishParser = new PublishParser(this.opts.publish, this.opts.publishMethods, this.opts.publishRawSQL, this.dbo, this.db, this as any);
569
706
  this.dboBuilder.publishParser = this.publishParser;
570
707
  /* 4. Set publish and auth listeners */ //makeDBO(db, allTablesViews, pubSubManager, false)
571
708
  await this.setSocketEvents();
572
709
 
573
- } else if(this.auth) throw "Auth config does not work without publish";
710
+ } else if(this.opts.auth) throw "Auth config does not work without publish";
574
711
 
575
712
  // if(this.watchSchema){
576
713
  // if(!(await isSuperUser(db))) throw "Cannot watchSchema without a super user schema. Set watchSchema=false or provide a super user";
@@ -578,12 +715,15 @@ export class Prostgles {
578
715
 
579
716
  this.dbEventsManager = new DBEventsManager(db, pgp);
580
717
 
718
+
719
+ this.writeDBSchema();
720
+
581
721
  /* 5. Finish init and provide DBO object */
582
722
  try {
583
723
  if(this.destroyed) {
584
724
  console.trace(1)
585
725
  }
586
- onReady(this.dbo, this.db);
726
+ onReady(this.dbo as any, this.db);
587
727
  } catch(err){
588
728
  console.error("Prostgles: Error within onReady: \n", err)
589
729
  }
@@ -593,16 +733,16 @@ export class Prostgles {
593
733
  db: this.dbo,
594
734
  _db: db,
595
735
  pgp,
596
- io: this.io,
736
+ io: this.opts.io,
597
737
  destroy: async () => {
598
738
  console.log("destroying prgl instance")
599
739
  this.destroyed = true;
600
- if(this.io){
601
- this.io.on("connection", (socket) => {
740
+ if(this.opts.io){
741
+ this.opts.io.on("connection", (socket) => {
602
742
  console.log("Socket connected to destroyed instance")
603
743
  });
604
- if(typeof this.io.close === "function"){
605
- this.io.close();
744
+ if(typeof this.opts.io.close === "function"){
745
+ this.opts.io.close();
606
746
  console.log("this.io.close")
607
747
  }
608
748
  }
@@ -628,8 +768,8 @@ export class Prostgles {
628
768
 
629
769
  return this.db.multi(fileContent).then((data)=>{
630
770
  console.log("Prostgles: SQL file executed successfuly \n -> " + filePath);
631
- return true
632
- }).catch((err)=>{
771
+ return data
772
+ }).catch((err) => {
633
773
  const { position, length } = err,
634
774
  lines = fileContent.split("\n");
635
775
  let errMsg = filePath + " error: ";
@@ -647,30 +787,31 @@ export class Prostgles {
647
787
  });
648
788
  }
649
789
 
650
- getSID(socket: any): SessionIDs {
651
- if(!this.auth) return null;
790
+ /**
791
+ * Will return first sid value found in : http cookie or query params
792
+ * Based on sid names in auth
793
+ * @param localParams
794
+ * @returns string
795
+ */
796
+ getSID(localParams: LocalParams): string {
797
+ if(!this.opts.auth) return null;
652
798
 
653
- const { sidCookieName, sidQueryParamName } = this.auth;
799
+ const { sidKeyName } = this.opts.auth;
654
800
 
655
- if(!sidCookieName && !sidQueryParamName) return null;
801
+ if(!sidKeyName || !localParams) return null;
656
802
 
657
- let result = {
658
- sidCookie: null,
659
- sidQuery: null,
660
- sid: null
661
- }
803
+ if(localParams.socket){
804
+ const querySid = localParams.socket?.handshake?.query?.[sidKeyName];
805
+ if(!querySid){
806
+ const cookie_str = get(localParams.socket, "handshake.headers.cookie");
807
+ const cookie = parseCookieStr(cookie_str);
808
+ return cookie[sidKeyName];
809
+ }
662
810
 
663
- if(sidQueryParamName){
664
- result.sidQuery = get(socket, `handshake.query.${sidQueryParamName}`);
665
- }
811
+ } else if(localParams.httpReq){
812
+ return localParams.httpReq?.cookies?.[sidKeyName];
666
813
 
667
- if(sidCookieName){
668
- const cookie_str = get(socket, "handshake.headers.cookie");
669
- const cookie = parseCookieStr(cookie_str);
670
- if(socket && cookie){
671
- result.sidCookie = cookie[sidCookieName];
672
- }
673
- }
814
+ } else throw "socket OR httpReq missing from localParams";
674
815
 
675
816
  function parseCookieStr(cookie_str: string): any {
676
817
  if(!cookie_str || typeof cookie_str !== "string") return {}
@@ -680,38 +821,23 @@ export class Prostgles {
680
821
  return prev
681
822
  }, {});
682
823
  }
683
-
684
- result.sid = result.sidQuery || result.sidCookie;
685
-
686
- return result;
687
824
  }
688
825
 
689
- async getUser(socket: any){
690
-
691
- if(this.auth){
692
- const { getUser } = this.auth;
826
+ async getClientInfo(localParams: Pick<LocalParams, "socket" | "httpReq">): Promise<ClientInfo>{
827
+ if(this.opts.auth){
828
+ const { getUser, getClientUser } = this.opts.auth;
693
829
 
694
- if(getUser){
695
- const params = this.getSID(socket);
696
- return await getUser(params, this.dbo, this.db, socket);
830
+ if(getUser && localParams && (localParams.httpReq || localParams.socket)){
831
+ const sid = this.getSID(localParams);
832
+ return {
833
+ sid,
834
+ user: await getUser(sid, this.dbo as any, this.db),
835
+ clientUser: await getClientUser(sid, this.dbo as any, this.db)
836
+ }
697
837
  }
698
838
  }
699
839
 
700
- return null;
701
- }
702
-
703
- async getUserFromCookieSession(socket: any): Promise<null | { user: any, clientUser: any }>{
704
-
705
- // console.log("conn", socket.handshake.query, socket._session)
706
- const params = this.getSID(socket);
707
-
708
- const { getUser, getClientUser } = this.auth;
709
-
710
- const user = await getUser(params, this.dbo, this.db, socket);
711
- const clientUser = await getClientUser(params, this.dbo, this.db, socket);
712
-
713
- if(!user) return undefined;
714
- return { user, clientUser };
840
+ return {};
715
841
  }
716
842
 
717
843
  connectedSockets: any[] = [];
@@ -720,10 +846,10 @@ export class Prostgles {
720
846
 
721
847
  if(!this.dbo) throw "dbo missing";
722
848
 
723
- let publishParser = new PublishParser(this.publish, this.publishMethods, this.publishRawSQL, this.dbo, this.db, this);
849
+ let publishParser = new PublishParser(this.opts.publish, this.opts.publishMethods, this.opts.publishRawSQL, this.dbo, this.db, this as any);
724
850
  this.publishParser = publishParser;
725
851
 
726
- if(!this.io) return;
852
+ if(!this.opts.io) return;
727
853
 
728
854
  /* Already initialised. Only reconnect sockets */
729
855
  if(this.connectedSockets.length){
@@ -735,7 +861,7 @@ export class Prostgles {
735
861
  }
736
862
 
737
863
  /* Initialise */
738
- this.io.on('connection', async (socket) => {
864
+ this.opts.io.on('connection', async (socket) => {
739
865
  if(this.destroyed){
740
866
  console.log("Socket connected to destroyed instance");
741
867
  socket.disconnect();
@@ -747,7 +873,7 @@ export class Prostgles {
747
873
  let { dbo, db, pgp } = this;
748
874
 
749
875
  try {
750
- if(this.onSocketConnect) await this.onSocketConnect(socket, dbo, db);
876
+ if(this.opts.onSocketConnect) await this.opts.onSocketConnect(socket, dbo as any, db);
751
877
 
752
878
 
753
879
  /* RUN Client request from Publish.
@@ -762,8 +888,8 @@ export class Prostgles {
762
888
  throw "socket missing??!!";
763
889
  }
764
890
 
765
- const user = await this.getUser(socket);
766
- let valid_table_command_rules = await this.publishParser.getValidatedRequestRule({ tableName, command, socket }, user);
891
+ const clientInfo = await this.getClientInfo({ socket });
892
+ let valid_table_command_rules = await this.publishParser.getValidatedRequestRule({ tableName, command, localParams: { socket } }, clientInfo);
767
893
  if(valid_table_command_rules){
768
894
  let res = await this.dbo[tableName][command](param1, param2, param3, valid_table_command_rules, { socket, has_rules: true });
769
895
  cb(null, res);
@@ -783,8 +909,8 @@ export class Prostgles {
783
909
  this.dbEventsManager.removeNotify(socket);
784
910
  this.connectedSockets = this.connectedSockets.filter(s => s.id !== socket.id);
785
911
  // subscriptions = subscriptions.filter(sub => sub.socket.id !== socket.id);
786
- if(this.onSocketDisconnect){
787
- this.onSocketDisconnect(socket, dbo);
912
+ if(this.opts.onSocketDisconnect){
913
+ this.opts.onSocketDisconnect(socket, dbo as any);
788
914
  };
789
915
  });
790
916
 
@@ -819,16 +945,21 @@ export class Prostgles {
819
945
  pushSocketSchema = async (socket: any) => {
820
946
 
821
947
  let auth: any = {};
822
- if(this.auth){
823
- const { register, login, logout, sidQueryParamName } = this.auth;
824
- if(sidQueryParamName === "sid") throw "sidQueryParamName cannot be 'sid' please provide another name."
948
+ if(this.opts.auth){
949
+ const { register, login, logout, sidKeyName } = this.opts.auth;
950
+
951
+ /**
952
+ * Why ??? Collision with socket.io ???
953
+ */
954
+ if(sidKeyName === "sid") throw "sidQueryParamName cannot be 'sid' please provide another name.";
955
+
825
956
  let handlers = [
826
957
  { func: register, ch: CHANNELS.REGISTER, name: "register" },
827
958
  { func: login, ch: CHANNELS.LOGIN, name: "login" },
828
959
  { func: logout, ch: CHANNELS.LOGOUT, name: "logout" }
829
960
  ].filter(h => h.func);
830
961
 
831
- const usrData = await this.getUserFromCookieSession(socket);
962
+ const usrData = await this.getClientInfo({ socket });
832
963
  if(usrData){
833
964
  auth.user = usrData.clientUser;
834
965
  handlers = handlers.filter(h => h.name === "logout");
@@ -843,7 +974,7 @@ export class Prostgles {
843
974
  try {
844
975
  if(!socket) throw "socket missing??!!";
845
976
 
846
- const res = await func(params, dbo, db, socket);
977
+ const res = await func(params, dbo as any, db);
847
978
  if(name === "login" && res && res.sid){
848
979
  /* TODO: Re-send schema to client */
849
980
  }
@@ -859,9 +990,9 @@ export class Prostgles {
859
990
 
860
991
  }
861
992
 
862
- let needType = this.publishRawSQL && typeof this.publishRawSQL === "function";
863
- let DATA_TYPES = !needType? [] : await this.db.any("SELECT oid, typname FROM pg_type");
864
- let USER_TABLES = !needType? [] : await this.db.any("SELECT relid, relname FROM pg_catalog.pg_statio_user_tables");
993
+ // let needType = this.publishRawSQL && typeof this.publishRawSQL === "function";
994
+ // let DATA_TYPES = !needType? [] : await this.db.any("SELECT oid, typname FROM pg_type");
995
+ // let USER_TABLES = !needType? [] : await this.db.any("SELECT relid, relname FROM pg_catalog.pg_statio_user_tables");
865
996
 
866
997
  let schema: any = {};
867
998
  let publishValidationError;
@@ -870,7 +1001,6 @@ export class Prostgles {
870
1001
  const { dbo, db, pgp, publishParser } = this;
871
1002
  try {
872
1003
  schema = await publishParser.getSchemaFromPublish(socket);
873
- // console.log("getSchemaFromPublish", Object.keys(schema), this.dboBuilder.tablesOrViews.map(t => `${t.name} (${t.columns.map(c => c.name).join(", ")})`))
874
1004
  } catch(e){
875
1005
  publishValidationError = "Server Error: PUBLISH VALIDATION ERROR";
876
1006
  console.error(`\nProstgles PUBLISH VALIDATION ERROR (after socket connected):\n ->`, e);
@@ -881,73 +1011,88 @@ export class Prostgles {
881
1011
  */
882
1012
  let fullSchema = [];
883
1013
  let allTablesViews = this.dboBuilder.tablesOrViews;
884
- if(this.publishRawSQL && typeof this.publishRawSQL === "function"){
1014
+ if(this.opts.publishRawSQL && typeof this.opts.publishRawSQL === "function"){
885
1015
  const canRunSQL = async () => {
886
- let res = await this.publishRawSQL(socket, dbo, db, await this.getUser(socket));
1016
+ const publishParams = await this.publishParser.getPublishParams({ socket })
1017
+ let res = await this.opts.publishRawSQL(publishParams as any);
887
1018
  return Boolean(res && typeof res === "boolean" || res === "*");
888
1019
  }
889
1020
 
890
- // console.log("canRunSQL", canRunSQL, socket.handshake.headers["x-real-ip"]);//, allTablesViews);
891
-
892
1021
  if(await canRunSQL()){
893
1022
  socket.removeAllListeners(CHANNELS.SQL)
894
1023
  socket.on(CHANNELS.SQL, async ({ query, params, options }: SQLRequest, cb = (...callback) => {}) => {
895
1024
 
896
- if(!(await canRunSQL())) {
897
- cb("Dissallowed", null);
898
- return;
899
- }
1025
+ if(!this.dbo.sql) throw "Internal error: sql handler missing";
900
1026
 
901
- const { returnType }: SQLOptions = options || ({} as any);
902
- if(returnType === "noticeSubscription"){
1027
+ this.dbo.sql(query, params, options, { socket }).then(res => {
1028
+ cb(null, res)
1029
+ }).catch(err => {
1030
+ makeSocketError(cb, err);
1031
+ })
903
1032
 
904
- const sub = await this.dbEventsManager.addNotice(socket);
1033
+ // if(!(await canRunSQL())) {
1034
+ // cb("Dissallowed", null);
1035
+ // return;
1036
+ // }
905
1037
 
906
- cb(null, sub);
907
- } else if(returnType === "statement"){
908
- try {
909
- cb(null, pgp.as.format(query, params));
910
- } catch (err){
911
- cb(err.toString());
912
- }
913
- } else if(db) {
1038
+ // const { returnType }: SQLOptions = options || ({} as any);
1039
+ // if(returnType === "noticeSubscription"){
914
1040
 
915
- db.result(query, params)
916
- .then(async (qres: any) => {
917
- const { duration, fields, rows, command } = qres;
1041
+ // const sub = await this.dbEventsManager.addNotice(socket);
918
1042
 
919
- if(command === "LISTEN"){
920
- const sub = await this.dbEventsManager.addNotify(query, socket);
1043
+ // cb(null, sub);
1044
+ // } else if(returnType === "statement"){
1045
+ // try {
1046
+ // cb(null, pgp.as.format(query, params));
1047
+ // } catch (err){
1048
+ // cb(err.toString());
1049
+ // }
1050
+ // } else if(db) {
1051
+
1052
+ // db.result(query, params)
1053
+ // .then(async (qres: any) => {
1054
+ // const { duration, fields, rows, command } = qres;
1055
+
1056
+ // if(command === "LISTEN"){
1057
+ // const sub = await this.dbEventsManager.addNotify(query, socket);
921
1058
 
922
- cb(null, sub);
1059
+ // cb(null, sub);
923
1060
 
924
- } else if(returnType === "rows") {
925
- cb(null, rows);
1061
+ // } else if(returnType === "rows") {
1062
+ // cb(null, rows);
926
1063
 
927
- } else {
928
- if(fields && DATA_TYPES.length){
929
- qres.fields = fields.map(f => {
930
- const dataType = DATA_TYPES.find(dt => +dt.oid === +f.dataTypeID),
931
- tableName = USER_TABLES.find(t => +t.relid === +f.tableID),
932
- { name } = f;
1064
+ // } else if(returnType === "row") {
1065
+ // cb(null, rows[0]);
1066
+
1067
+ // } else if(returnType === "value") {
1068
+ // cb(null, Object.values(rows[0])[0]);
1069
+
1070
+ // } else if(returnType === "values") {
1071
+ // cb(null, rows.map(r => Object.values(r[0])));
1072
+
1073
+ // } else {
1074
+ // if(fields && DATA_TYPES.length){
1075
+ // qres.fields = fields.map(f => {
1076
+ // const dataType = DATA_TYPES.find(dt => +dt.oid === +f.dataTypeID),
1077
+ // tableName = USER_TABLES.find(t => +t.relid === +f.tableID);
933
1078
 
934
- return {
935
- ...f,
936
- ...(dataType? { dataType: dataType.typname } : {}),
937
- ...(tableName? { tableName: tableName.relname } : {}),
938
- }
939
- });
940
- }
941
- cb(null, qres)
942
- }
1079
+ // return {
1080
+ // ...f,
1081
+ // ...(dataType? { dataType: dataType.typname } : {}),
1082
+ // ...(tableName? { tableName: tableName.relname } : {}),
1083
+ // }
1084
+ // });
1085
+ // }
1086
+ // cb(null, qres)
1087
+ // }
943
1088
 
944
- })
945
- .catch(err => {
946
- makeSocketError(cb, err);
947
- // Promise.reject(err.toString());
948
- });
1089
+ // })
1090
+ // .catch(err => {
1091
+ // makeSocketError(cb, err);
1092
+ // // Promise.reject(err.toString());
1093
+ // });
949
1094
 
950
- } else console.error("db missing");
1095
+ // } else console.error("db missing");
951
1096
  });
952
1097
  if(db){
953
1098
  // let allTablesViews = await db.any(STEP2_GET_ALL_TABLES_AND_COLUMNS);
@@ -959,7 +1104,7 @@ export class Prostgles {
959
1104
 
960
1105
  // let joinTables = [];
961
1106
  let joinTables2 = [];
962
- if(this.joins){
1107
+ if(this.opts.joins){
963
1108
  // joinTables = Array.from(new Set(flat(this.dboBuilder.getJoins().map(j => j.tables)).filter(t => schema[t])));
964
1109
  let _joinTables2 = this.dboBuilder.getJoinPaths()
965
1110
  .filter(jp =>
@@ -1015,14 +1160,17 @@ type callback = {
1015
1160
 
1016
1161
 
1017
1162
  type Request = {
1018
- socket: any;
1163
+ socket?: any;
1164
+ httpReq?: any;
1019
1165
  }
1020
1166
 
1021
1167
  type DboTable = Request & {
1022
1168
  tableName: string;
1169
+ localParams: LocalParams;
1023
1170
  }
1024
1171
  type DboTableCommand = Request & DboTable & {
1025
1172
  command: string;
1173
+ localParams: LocalParams;
1026
1174
  }
1027
1175
 
1028
1176
  // const insertParams: Array<keyof InsertRule> = ["fields", "forcedData", "returningFields", "validate"];
@@ -1082,7 +1230,7 @@ export function flat(arr){
1082
1230
  let res = arr.reduce(function (farr, toFlatten) {
1083
1231
  return farr.concat(Array.isArray(toFlatten) ? flat(toFlatten) : toFlatten);
1084
1232
  }, []);
1085
- // console.log(arr, res)
1233
+
1086
1234
  return res;
1087
1235
  }
1088
1236
 
@@ -1090,11 +1238,11 @@ export class PublishParser {
1090
1238
  publish: any;
1091
1239
  publishMethods?: any;
1092
1240
  publishRawSQL?: any;
1093
- dbo: DbHandler | DbHandlerTX;
1241
+ dbo: DbHandler;
1094
1242
  db: DB
1095
1243
  prostgles: Prostgles;
1096
1244
 
1097
- constructor(publish: any, publishMethods: any, publishRawSQL: any, dbo: DbHandler | DbHandlerTX, db: DB, prostgles: Prostgles){
1245
+ constructor(publish: any, publishMethods: any, publishRawSQL: any, dbo: DbHandler, db: DB, prostgles: Prostgles){
1098
1246
  this.publish = publish;
1099
1247
  this.publishMethods = publishMethods;
1100
1248
  this.publishRawSQL = publishRawSQL;
@@ -1105,11 +1253,19 @@ export class PublishParser {
1105
1253
  if(!this.dbo || !this.publish) throw "INTERNAL ERROR: dbo and/or publish missing";
1106
1254
  }
1107
1255
 
1256
+ async getPublishParams(localParams: LocalParams, clientInfo?: ClientInfo): Promise<PublishParams> {
1257
+ return {
1258
+ ...(clientInfo || await this.prostgles.getClientInfo(localParams)),
1259
+ dbo: this.dbo,
1260
+ db: this.db
1261
+ }
1262
+ }
1263
+
1108
1264
  async getMethods(socket: any){
1109
1265
  let methods = {};
1110
1266
 
1111
- const user = await this.prostgles.getUser(socket);
1112
- const _methods = await applyParamsIfFunc(this.publishMethods, socket, this.dbo, this.db, user);
1267
+ const publishParams = await this.getPublishParams({ socket });
1268
+ const _methods = await applyParamsIfFunc(this.publishMethods, publishParams);
1113
1269
 
1114
1270
  if(_methods && Object.keys(_methods).length){
1115
1271
  Object.keys(_methods).map(key => {
@@ -1129,8 +1285,9 @@ export class PublishParser {
1129
1285
  * @param socket
1130
1286
  * @param user
1131
1287
  */
1132
- async getPublish(socket, user){
1133
- let _publish = await applyParamsIfFunc(this.publish, socket, this.dbo, this.db, user);
1288
+ async getPublish(localParams: LocalParams, clientInfo?: ClientInfo): Promise<PublishObject> {
1289
+ const publishParams: PublishParams = await this.getPublishParams(localParams, clientInfo)
1290
+ let _publish = await applyParamsIfFunc(this.publish, publishParams );
1134
1291
 
1135
1292
  if(_publish === "*"){
1136
1293
  let publish = {}
@@ -1142,12 +1299,12 @@ export class PublishParser {
1142
1299
 
1143
1300
  return _publish;
1144
1301
  }
1145
- async getValidatedRequestRuleWusr({ tableName, command, socket }: DboTableCommand): Promise<TableRule>{
1146
- const user = await this.prostgles.getUser(socket);
1147
- return await this.getValidatedRequestRule({ tableName, command, socket }, user);
1302
+ async getValidatedRequestRuleWusr({ tableName, command, localParams }: DboTableCommand): Promise<TableRule>{
1303
+ const clientInfo = await this.prostgles.getClientInfo(localParams);
1304
+ return await this.getValidatedRequestRule({ tableName, command, localParams }, clientInfo);
1148
1305
  }
1149
1306
 
1150
- async getValidatedRequestRule({ tableName, command, socket }: DboTableCommand, user): Promise<TableRule>{
1307
+ async getValidatedRequestRule({ tableName, command, localParams }: DboTableCommand, clientInfo: ClientInfo): Promise<TableRule>{
1151
1308
  if(!this.dbo) throw "INTERNAL ERROR: dbo is missing";
1152
1309
 
1153
1310
  if(!command || !tableName) throw "command OR tableName are missing";
@@ -1158,18 +1315,17 @@ export class PublishParser {
1158
1315
  }
1159
1316
 
1160
1317
  /* Must be local request -> allow everything */
1161
- if(!socket) return undefined;
1318
+ if(!localParams || (!localParams.socket && !localParams.httpReq)) return undefined;
1162
1319
 
1163
1320
  /* Must be from socket. Must have a publish */
1164
1321
  if(!this.publish) throw "publish is missing";
1165
1322
 
1166
1323
  /* Get any publish errors for socket */
1167
- const schm = get(socket, `prostgles.schema.${tableName}.${command}`);
1324
+ const schm = localParams?.socket?.prostgles?.schema?.[tableName]?.[command];
1168
1325
 
1169
- // console.log(schm, get(socket, `prostgles.schema`));
1170
1326
  if(schm && schm.err) throw schm.err;
1171
1327
 
1172
- let table_rule = await this.getTableRules({ tableName, socket }, user);
1328
+ let table_rule = await this.getTableRules({ tableName, localParams }, clientInfo);
1173
1329
  if(!table_rule) throw "Invalid or disallowed table: " + tableName;
1174
1330
 
1175
1331
  if(command === "upsert"){
@@ -1183,14 +1339,14 @@ export class PublishParser {
1183
1339
  } else throw `Invalid or disallowed command: ${command}`;
1184
1340
  }
1185
1341
 
1186
- async getTableRules({ tableName, socket }: DboTable, user){
1342
+ async getTableRules({ tableName, localParams }: DboTable, clientInfo: ClientInfo): Promise<PublishTable> {
1187
1343
 
1188
1344
  try {
1189
- if(!socket || !tableName) throw "publish OR socket OR dbo OR tableName are missing";
1345
+ if(!localParams || !tableName) throw "publish OR socket OR dbo OR tableName are missing";
1190
1346
 
1191
- let _publish = await this.getPublish(socket, user);
1347
+ let _publish = await this.getPublish(localParams, clientInfo);
1192
1348
 
1193
- let table_rules = applyParamsIfFunc(_publish[tableName], socket, this.dbo, this.db, user);
1349
+ let table_rules = _publish[tableName];// applyParamsIfFunc(_publish[tableName], localParams, this.dbo, this.db, user);
1194
1350
 
1195
1351
  /* Get view or table specific rules */
1196
1352
  const is_view = (this.dbo[tableName] as TableHandler | ViewHandler).is_view,
@@ -1200,7 +1356,7 @@ export class PublishParser {
1200
1356
  if(table_rules){
1201
1357
 
1202
1358
  /* All methods allowed. Add no limits for table rules */
1203
- if([true, "*"].includes(table_rules)){
1359
+ if([true, "*"].includes(table_rules as any)){
1204
1360
  table_rules = {};
1205
1361
  MY_RULES.map(r => {
1206
1362
  table_rules[r.rule] = { ...r.no_limits };
@@ -1217,10 +1373,10 @@ export class PublishParser {
1217
1373
  if(table_rules[r.rule]){
1218
1374
  r.methods.map(method => {
1219
1375
  if(table_rules[method] === undefined){
1376
+ const publishedTable = (table_rules as PublishTable);
1377
+ if(method === "updateBatch" && !publishedTable.update){
1220
1378
 
1221
- if(method === "updateBatch" && !table_rules.update){
1222
-
1223
- } else if(method === "upsert" && (!table_rules.update || !table_rules.insert)){
1379
+ } else if(method === "upsert" && (!publishedTable.update || !publishedTable.insert)){
1224
1380
  // return;
1225
1381
  } else {
1226
1382
  table_rules[method] = {};
@@ -1274,14 +1430,14 @@ export class PublishParser {
1274
1430
  const sr = MY_RULES.find(r => r.rule === "subscribe");
1275
1431
  if(sr){
1276
1432
  table_rules[sr.rule] = { ...sr.no_limits };
1277
- table_rules.subscribeOne = { ...sr.no_limits };
1433
+ (table_rules as PublishTable).subscribeOne = { ...sr.no_limits };
1278
1434
  }
1279
1435
  }
1280
1436
  });
1281
1437
  }
1282
1438
  }
1283
1439
 
1284
- return table_rules;
1440
+ return table_rules as PublishTable;
1285
1441
  } catch (e) {
1286
1442
  throw e;
1287
1443
  }
@@ -1295,14 +1451,14 @@ export class PublishParser {
1295
1451
 
1296
1452
  try {
1297
1453
  /* Publish tables and views based on socket */
1298
- const user = await this.prostgles.getUser(socket);
1299
- let _publish = await this.getPublish(socket, user);
1454
+ const clientInfo = await this.prostgles.getClientInfo({ socket });
1455
+ let _publish = await this.getPublish(socket, clientInfo);
1300
1456
 
1301
1457
 
1302
1458
  if(_publish && Object.keys(_publish).length){
1303
1459
  let txKey = "tx";
1304
- if(!this.prostgles.transactions) txKey = "";
1305
- if(typeof this.prostgles.transactions === "string") txKey = this.prostgles.transactions;
1460
+ if(!this.prostgles.opts.transactions) txKey = "";
1461
+ if(typeof this.prostgles.opts.transactions === "string") txKey = this.prostgles.opts.transactions;
1306
1462
 
1307
1463
  const tableNames = Object.keys(_publish).filter(k => !txKey || txKey !== k);
1308
1464
 
@@ -1315,7 +1471,7 @@ export class PublishParser {
1315
1471
  `;
1316
1472
  }
1317
1473
 
1318
- const table_rules = await this.getTableRules({ socket, tableName }, user);
1474
+ const table_rules = await this.getTableRules({ localParams: {socket}, tableName }, clientInfo);
1319
1475
 
1320
1476
  if(table_rules && Object.keys(table_rules).length){
1321
1477
  schema[tableName] = {};
@@ -1339,7 +1495,7 @@ export class PublishParser {
1339
1495
 
1340
1496
  let err = null;
1341
1497
  try {
1342
- let valid_table_command_rules = await this.getValidatedRequestRule({ tableName, command: method, socket }, user);
1498
+ let valid_table_command_rules = await this.getValidatedRequestRule({ tableName, command: method, localParams: {socket} }, clientInfo);
1343
1499
  await this.dbo[tableName][method]({}, {}, {}, valid_table_command_rules, { socket, has_rules: true, testRule: true });
1344
1500
 
1345
1501
  } catch(e) {
@@ -1364,8 +1520,6 @@ export class PublishParser {
1364
1520
  throw e;
1365
1521
  }
1366
1522
 
1367
- // console.log(schema)
1368
-
1369
1523
  return schema;
1370
1524
  }
1371
1525