prostgles-server 1.5.119 → 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 +53 -28
  2. package/dist/DboBuilder.d.ts.map +1 -1
  3. package/dist/DboBuilder.js +432 -113
  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 +163 -78
  10. package/dist/Prostgles.d.ts.map +1 -1
  11. package/dist/Prostgles.js +241 -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 +581 -175
  22. package/lib/FileManager.ts +546 -0
  23. package/lib/Prostgles.ts +424 -252
  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 +83 -62
  31. package/tests/client/package.json +3 -3
  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 +43 -1
  416. package/tests/isomorphic_queries.ts +33 -2
  417. package/tests/server/DBoGenerated.d.ts +192 -0
  418. package/tests/server/index.js +64 -26
  419. package/tests/server/index.ts +64 -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 } 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 = {
@@ -307,28 +349,97 @@ type Keywords = {
307
349
  $not: string;
308
350
  };
309
351
 
310
- export type ProstglesInitOptions = {
352
+ export type DeepPartial<T> = {
353
+ [P in keyof T]?: DeepPartial<T[P]>;
354
+ };
355
+ export type I18N_CONFIG<LANG_IDS = { en: 1, fr: 1 }> = {
356
+ fallbackLang: keyof LANG_IDS;
357
+ column_labels?: DeepPartial<{
358
+ [table_name: string]: {
359
+ [column_name: string]: {
360
+ [lang_id in keyof LANG_IDS]: string
361
+ }
362
+ }
363
+ }>;
364
+ }
365
+
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> = {
311
421
  dbConnection: DbConnection;
312
422
  dbOptions?: DbConnectionOpts;
313
423
  tsGeneratedTypesDir?: string;
314
424
  io?: any;
315
- publish?: Publish;
316
- publishMethods?: publishMethods;
317
- 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 | "*")>);
318
428
  joins?: Joins;
319
429
  schema?: string;
320
430
  sqlFilePath?: string;
321
- onReady(dbo: any, db: DB): void;
322
- // auth,
431
+ onReady(dbo: DBO, db: DB): void;
323
432
  transactions?: string | boolean;
324
433
  wsChannelNamePrefix?: string;
325
- onSocketConnect?(socket: Socket, dbo: any, db?: DB);
326
- onSocketDisconnect?(socket: Socket, dbo: any, db?: DB);
327
- auth?: Auth;
434
+ onSocketConnect?(socket: Socket, dbo: DBO, db?: DB);
435
+ onSocketDisconnect?(socket: Socket, dbo: DBO, db?: DB);
436
+ auth?: Auth<DBO>;
328
437
  DEBUG_MODE?: boolean;
329
438
  watchSchema?: boolean | "hotReloadMode" | ((event: { command: string; query: string }) => void);
330
439
  keywords?: Keywords;
331
440
  onNotice?: (msg: any) => void;
441
+ i18n?: I18N_CONFIG<AnyObject>;
442
+ fileTable?: FileTableConfig;
332
443
  }
333
444
 
334
445
  // interface ISocketSetup {
@@ -362,49 +473,69 @@ const DEFAULT_KEYWORDS = {
362
473
  };
363
474
 
364
475
  const fs = require('fs');
365
- export class Prostgles {
366
-
367
- // o: ProstglesInitOptions;
368
-
369
- dbConnection: DbConnection = {
370
- host: "localhost",
371
- port: 5432,
372
- 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,
373
488
  };
374
- dbOptions: DbConnectionOpts;
489
+
490
+ // dbConnection: DbConnection = {
491
+ // host: "localhost",
492
+ // port: 5432,
493
+ // application_name: "prostgles_app"
494
+ // };
495
+ // dbOptions: DbConnectionOpts;
375
496
  db: DB;
376
497
  pgp: PGP;
377
- dbo: DbHandler | DbHandlerTX;
498
+ dbo: DbHandler;
378
499
  dboBuilder: DboBuilder;
379
-
380
- publishMethods?: publishMethods;
381
- io: any;
382
- publish?: Publish;
383
- joins?: Joins;
384
- schema: string = "public";
385
- transactions?: string | boolean;
386
- // auth,
387
- publishRawSQL?: any;
388
- wsChannelNamePrefix: string = "_psqlWS_";
389
- onSocketConnect?(socket: Socket | any, dbo: any, db?: DB);
390
- onSocketDisconnect?(socket: Socket | any, dbo: any, db?: DB);
391
- sqlFilePath?: string;
392
- tsGeneratedTypesDir?: string;
393
500
  publishParser: PublishParser;
394
- auth?: Auth;
395
- DEBUG_MODE?: boolean = false;
396
- watchSchema?: boolean | "hotReloadMode" | ((event: { command: string; query: string }) => void) = false;
397
- private loaded = false;
398
- keywords = DEFAULT_KEYWORDS;
399
- onReady: (dbo: any, db: DB) => void;
400
501
 
401
- /**
402
- * Postgres on notice callback
403
- */
404
- 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;
405
529
 
406
530
  dbEventsManager: DBEventsManager;
407
531
 
532
+
533
+ fileManager?: FileManager;
534
+
535
+ isMedia(tableName: string){
536
+ return this.opts?.fileTable?.tableName === tableName;
537
+ }
538
+
408
539
  constructor(params: ProstglesInitOptions){
409
540
  if(!params) throw "ProstglesInitOptions missing";
410
541
  if(!params.io) console.warn("io missing. WebSockets will not be set up");
@@ -414,14 +545,22 @@ export class Prostgles {
414
545
  "transactions", "joins", "tsGeneratedTypesDir",
415
546
  "onReady", "dbConnection", "dbOptions", "publishMethods", "io",
416
547
  "publish", "schema", "publishRawSQL", "wsChannelNamePrefix", "onSocketConnect",
417
- "onSocketDisconnect", "sqlFilePath", "auth", "DEBUG_MODE", "watchSchema"
548
+ "onSocketDisconnect", "sqlFilePath", "auth", "DEBUG_MODE", "watchSchema",
549
+ "i18n", "fileTable"
418
550
  ];
419
551
  const unknownParams = Object.keys(params).filter((key: string) => !(config as string[]).includes(key))
420
552
  if(unknownParams.length){
421
553
  console.error(`Unrecognised ProstglesInitOptions params: ${unknownParams.join()}`);
422
554
  }
423
555
 
424
- 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
+
425
564
  this.keywords = {
426
565
  ...DEFAULT_KEYWORDS,
427
566
  ...params.keywords,
@@ -431,15 +570,16 @@ export class Prostgles {
431
570
  destroyed = false;
432
571
 
433
572
  async onSchemaChange(event: { command: string; query: string }){
434
- if(this.watchSchema && this.loaded){
573
+ const { watchSchema, onReady, tsGeneratedTypesDir } = this.opts;
574
+ if(watchSchema && this.loaded){
435
575
  console.log("Schema changed");
436
576
 
437
- if(typeof this.watchSchema === "function"){
577
+ if(typeof watchSchema === "function"){
438
578
  /* Only call the provided func */
439
- this.watchSchema(event);
579
+ watchSchema(event);
440
580
 
441
- } else if(this.watchSchema === "hotReloadMode") {
442
- if(this.tsGeneratedTypesDir) {
581
+ } else if(watchSchema === "hotReloadMode") {
582
+ if(tsGeneratedTypesDir) {
443
583
  /* Hot reload integration. Will only touch tsGeneratedTypesDir */
444
584
  console.log("watchSchema: Re-writing TS schema");
445
585
 
@@ -447,10 +587,10 @@ export class Prostgles {
447
587
  this.writeDBSchema(true);
448
588
  }
449
589
 
450
- } else if(this.watchSchema === true){
590
+ } else if(watchSchema === true){
451
591
  /* Full re-init. Sockets must reconnect */
452
592
  console.log("watchSchema: Full re-initialisation")
453
- this.init(this.onReady);
593
+ this.init(onReady);
454
594
  }
455
595
  }
456
596
  }
@@ -461,7 +601,7 @@ export class Prostgles {
461
601
 
462
602
  getTSFileName(){
463
603
  const fileName = "DBoGenerated.d.ts" //`dbo_${this.schema}_types.ts`;
464
- const fullPath = (this.tsGeneratedTypesDir || "") + fileName;
604
+ const fullPath = (this.opts.tsGeneratedTypesDir || "") + fileName;
465
605
  return { fileName, fullPath }
466
606
  }
467
607
 
@@ -476,7 +616,7 @@ export class Prostgles {
476
616
 
477
617
  writeDBSchema(force = false){
478
618
 
479
- if(this.tsGeneratedTypesDir){
619
+ if(this.opts.tsGeneratedTypesDir){
480
620
  const { fullPath, fileName } = this.getTSFileName();
481
621
  const header = `/* This file was generated by Prostgles \n` +
482
622
  // `* ${(new Date).toUTCString()} \n`
@@ -493,13 +633,14 @@ export class Prostgles {
493
633
  }
494
634
  }
495
635
 
496
- async refreshDBO(){
497
- this.dboBuilder = await DboBuilder.create(this);
498
- 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;
499
640
  }
500
641
 
501
- async init(onReady: (dbo: DbHandler | DbHandlerTX, db: DB) => any): Promise<{
502
- db: DbHandlerTX;
642
+ async init(onReady: (dbo: DBO, db: DB) => any): Promise<{
643
+ db: DbHandler;
503
644
  _db: DB;
504
645
  pgp: PGP;
505
646
  io?: any;
@@ -508,14 +649,14 @@ export class Prostgles {
508
649
  this.loaded = false;
509
650
 
510
651
 
511
- if(this.watchSchema === "hotReloadMode" && !this.tsGeneratedTypesDir) {
652
+ if(this.opts.watchSchema === "hotReloadMode" && !this.opts.tsGeneratedTypesDir) {
512
653
  throw "tsGeneratedTypesDir option is needed for watchSchema: hotReloadMode to work ";
513
654
  }
514
655
 
515
656
  /* 1. Connect to db */
516
657
  if(!this.db){
517
- const { db, pgp } = getDbConnection(this.dbConnection, this.dbOptions, this.DEBUG_MODE, notice => {
518
- 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);
519
660
  if(this.dbEventsManager){
520
661
  this.dbEventsManager.onNotice(notice)
521
662
  }
@@ -527,32 +668,46 @@ export class Prostgles {
527
668
  const { db, pgp } = this;
528
669
 
529
670
  /* 2. Execute any SQL file if provided */
530
- if(this.sqlFilePath){
531
- await this.runSQLFile(this.sqlFilePath);
671
+ if(this.opts.sqlFilePath){
672
+ await this.runSQLFile(this.opts.sqlFilePath);
532
673
  }
533
674
 
534
675
  try {
535
676
  /* 3. Make DBO object from all tables and views */
536
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();
537
688
 
538
- this.writeDBSchema();
539
689
 
540
- 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
+
541
694
  /* 3.9 Check auth config */
542
- if(this.auth){
543
- const { sidCookieName, login, getUser, getClientUser } = this.auth;
544
- if(typeof sidCookieName !== "string" && !login){
545
- 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 } ";
546
701
  }
547
702
  if(!getUser || !getClientUser) throw "getUser OR getClientUser missing from auth config";
548
703
  }
549
704
 
550
- 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);
551
706
  this.dboBuilder.publishParser = this.publishParser;
552
707
  /* 4. Set publish and auth listeners */ //makeDBO(db, allTablesViews, pubSubManager, false)
553
708
  await this.setSocketEvents();
554
709
 
555
- } 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";
556
711
 
557
712
  // if(this.watchSchema){
558
713
  // if(!(await isSuperUser(db))) throw "Cannot watchSchema without a super user schema. Set watchSchema=false or provide a super user";
@@ -560,12 +715,15 @@ export class Prostgles {
560
715
 
561
716
  this.dbEventsManager = new DBEventsManager(db, pgp);
562
717
 
718
+
719
+ this.writeDBSchema();
720
+
563
721
  /* 5. Finish init and provide DBO object */
564
722
  try {
565
723
  if(this.destroyed) {
566
724
  console.trace(1)
567
725
  }
568
- onReady(this.dbo, this.db);
726
+ onReady(this.dbo as any, this.db);
569
727
  } catch(err){
570
728
  console.error("Prostgles: Error within onReady: \n", err)
571
729
  }
@@ -575,16 +733,16 @@ export class Prostgles {
575
733
  db: this.dbo,
576
734
  _db: db,
577
735
  pgp,
578
- io: this.io,
736
+ io: this.opts.io,
579
737
  destroy: async () => {
580
738
  console.log("destroying prgl instance")
581
739
  this.destroyed = true;
582
- if(this.io){
583
- this.io.on("connection", (socket) => {
740
+ if(this.opts.io){
741
+ this.opts.io.on("connection", (socket) => {
584
742
  console.log("Socket connected to destroyed instance")
585
743
  });
586
- if(typeof this.io.close === "function"){
587
- this.io.close();
744
+ if(typeof this.opts.io.close === "function"){
745
+ this.opts.io.close();
588
746
  console.log("this.io.close")
589
747
  }
590
748
  }
@@ -610,8 +768,8 @@ export class Prostgles {
610
768
 
611
769
  return this.db.multi(fileContent).then((data)=>{
612
770
  console.log("Prostgles: SQL file executed successfuly \n -> " + filePath);
613
- return true
614
- }).catch((err)=>{
771
+ return data
772
+ }).catch((err) => {
615
773
  const { position, length } = err,
616
774
  lines = fileContent.split("\n");
617
775
  let errMsg = filePath + " error: ";
@@ -629,30 +787,31 @@ export class Prostgles {
629
787
  });
630
788
  }
631
789
 
632
- getSID(socket: any): SessionIDs {
633
- 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;
634
798
 
635
- const { sidCookieName, sidQueryParamName } = this.auth;
799
+ const { sidKeyName } = this.opts.auth;
636
800
 
637
- if(!sidCookieName && !sidQueryParamName) return null;
801
+ if(!sidKeyName || !localParams) return null;
638
802
 
639
- let result = {
640
- sidCookie: null,
641
- sidQuery: null,
642
- sid: null
643
- }
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
+ }
644
810
 
645
- if(sidQueryParamName){
646
- result.sidQuery = get(socket, `handshake.query.${sidQueryParamName}`);
647
- }
811
+ } else if(localParams.httpReq){
812
+ return localParams.httpReq?.cookies?.[sidKeyName];
648
813
 
649
- if(sidCookieName){
650
- const cookie_str = get(socket, "handshake.headers.cookie");
651
- const cookie = parseCookieStr(cookie_str);
652
- if(socket && cookie){
653
- result.sidCookie = cookie[sidCookieName];
654
- }
655
- }
814
+ } else throw "socket OR httpReq missing from localParams";
656
815
 
657
816
  function parseCookieStr(cookie_str: string): any {
658
817
  if(!cookie_str || typeof cookie_str !== "string") return {}
@@ -662,38 +821,23 @@ export class Prostgles {
662
821
  return prev
663
822
  }, {});
664
823
  }
665
-
666
- result.sid = result.sidQuery || result.sidCookie;
667
-
668
- return result;
669
824
  }
670
825
 
671
- async getUser(socket: any){
672
-
673
- if(this.auth){
674
- 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;
675
829
 
676
- if(getUser){
677
- const params = this.getSID(socket);
678
- 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
+ }
679
837
  }
680
838
  }
681
839
 
682
- return null;
683
- }
684
-
685
- async getUserFromCookieSession(socket: any): Promise<null | { user: any, clientUser: any }>{
686
-
687
- // console.log("conn", socket.handshake.query, socket._session)
688
- const params = this.getSID(socket);
689
-
690
- const { getUser, getClientUser } = this.auth;
691
-
692
- const user = await getUser(params, this.dbo, this.db, socket);
693
- const clientUser = await getClientUser(params, this.dbo, this.db, socket);
694
-
695
- if(!user) return undefined;
696
- return { user, clientUser };
840
+ return {};
697
841
  }
698
842
 
699
843
  connectedSockets: any[] = [];
@@ -702,10 +846,10 @@ export class Prostgles {
702
846
 
703
847
  if(!this.dbo) throw "dbo missing";
704
848
 
705
- 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);
706
850
  this.publishParser = publishParser;
707
851
 
708
- if(!this.io) return;
852
+ if(!this.opts.io) return;
709
853
 
710
854
  /* Already initialised. Only reconnect sockets */
711
855
  if(this.connectedSockets.length){
@@ -717,7 +861,7 @@ export class Prostgles {
717
861
  }
718
862
 
719
863
  /* Initialise */
720
- this.io.on('connection', async (socket) => {
864
+ this.opts.io.on('connection', async (socket) => {
721
865
  if(this.destroyed){
722
866
  console.log("Socket connected to destroyed instance");
723
867
  socket.disconnect();
@@ -729,7 +873,7 @@ export class Prostgles {
729
873
  let { dbo, db, pgp } = this;
730
874
 
731
875
  try {
732
- if(this.onSocketConnect) await this.onSocketConnect(socket, dbo, db);
876
+ if(this.opts.onSocketConnect) await this.opts.onSocketConnect(socket, dbo as any, db);
733
877
 
734
878
 
735
879
  /* RUN Client request from Publish.
@@ -744,8 +888,8 @@ export class Prostgles {
744
888
  throw "socket missing??!!";
745
889
  }
746
890
 
747
- const user = await this.getUser(socket);
748
- 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);
749
893
  if(valid_table_command_rules){
750
894
  let res = await this.dbo[tableName][command](param1, param2, param3, valid_table_command_rules, { socket, has_rules: true });
751
895
  cb(null, res);
@@ -765,8 +909,8 @@ export class Prostgles {
765
909
  this.dbEventsManager.removeNotify(socket);
766
910
  this.connectedSockets = this.connectedSockets.filter(s => s.id !== socket.id);
767
911
  // subscriptions = subscriptions.filter(sub => sub.socket.id !== socket.id);
768
- if(this.onSocketDisconnect){
769
- this.onSocketDisconnect(socket, dbo);
912
+ if(this.opts.onSocketDisconnect){
913
+ this.opts.onSocketDisconnect(socket, dbo as any);
770
914
  };
771
915
  });
772
916
 
@@ -801,16 +945,21 @@ export class Prostgles {
801
945
  pushSocketSchema = async (socket: any) => {
802
946
 
803
947
  let auth: any = {};
804
- if(this.auth){
805
- const { register, login, logout, sidQueryParamName } = this.auth;
806
- 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
+
807
956
  let handlers = [
808
957
  { func: register, ch: CHANNELS.REGISTER, name: "register" },
809
958
  { func: login, ch: CHANNELS.LOGIN, name: "login" },
810
959
  { func: logout, ch: CHANNELS.LOGOUT, name: "logout" }
811
960
  ].filter(h => h.func);
812
961
 
813
- const usrData = await this.getUserFromCookieSession(socket);
962
+ const usrData = await this.getClientInfo({ socket });
814
963
  if(usrData){
815
964
  auth.user = usrData.clientUser;
816
965
  handlers = handlers.filter(h => h.name === "logout");
@@ -825,7 +974,7 @@ export class Prostgles {
825
974
  try {
826
975
  if(!socket) throw "socket missing??!!";
827
976
 
828
- const res = await func(params, dbo, db, socket);
977
+ const res = await func(params, dbo as any, db);
829
978
  if(name === "login" && res && res.sid){
830
979
  /* TODO: Re-send schema to client */
831
980
  }
@@ -841,9 +990,9 @@ export class Prostgles {
841
990
 
842
991
  }
843
992
 
844
- let needType = this.publishRawSQL && typeof this.publishRawSQL === "function";
845
- let DATA_TYPES = !needType? [] : await this.db.any("SELECT oid, typname FROM pg_type");
846
- 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");
847
996
 
848
997
  let schema: any = {};
849
998
  let publishValidationError;
@@ -852,7 +1001,6 @@ export class Prostgles {
852
1001
  const { dbo, db, pgp, publishParser } = this;
853
1002
  try {
854
1003
  schema = await publishParser.getSchemaFromPublish(socket);
855
- // console.log("getSchemaFromPublish", Object.keys(schema), this.dboBuilder.tablesOrViews.map(t => `${t.name} (${t.columns.map(c => c.name).join(", ")})`))
856
1004
  } catch(e){
857
1005
  publishValidationError = "Server Error: PUBLISH VALIDATION ERROR";
858
1006
  console.error(`\nProstgles PUBLISH VALIDATION ERROR (after socket connected):\n ->`, e);
@@ -863,73 +1011,88 @@ export class Prostgles {
863
1011
  */
864
1012
  let fullSchema = [];
865
1013
  let allTablesViews = this.dboBuilder.tablesOrViews;
866
- if(this.publishRawSQL && typeof this.publishRawSQL === "function"){
1014
+ if(this.opts.publishRawSQL && typeof this.opts.publishRawSQL === "function"){
867
1015
  const canRunSQL = async () => {
868
- 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);
869
1018
  return Boolean(res && typeof res === "boolean" || res === "*");
870
1019
  }
871
1020
 
872
- // console.log("canRunSQL", canRunSQL, socket.handshake.headers["x-real-ip"]);//, allTablesViews);
873
-
874
1021
  if(await canRunSQL()){
875
1022
  socket.removeAllListeners(CHANNELS.SQL)
876
1023
  socket.on(CHANNELS.SQL, async ({ query, params, options }: SQLRequest, cb = (...callback) => {}) => {
877
1024
 
878
- if(!(await canRunSQL())) {
879
- cb("Dissallowed", null);
880
- return;
881
- }
1025
+ if(!this.dbo.sql) throw "Internal error: sql handler missing";
882
1026
 
883
- const { returnType }: SQLOptions = options || ({} as any);
884
- 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
+ })
885
1032
 
886
- const sub = await this.dbEventsManager.addNotice(socket);
1033
+ // if(!(await canRunSQL())) {
1034
+ // cb("Dissallowed", null);
1035
+ // return;
1036
+ // }
887
1037
 
888
- cb(null, sub);
889
- } else if(returnType === "statement"){
890
- try {
891
- cb(null, pgp.as.format(query, params));
892
- } catch (err){
893
- cb(err.toString());
894
- }
895
- } else if(db) {
1038
+ // const { returnType }: SQLOptions = options || ({} as any);
1039
+ // if(returnType === "noticeSubscription"){
1040
+
1041
+ // const sub = await this.dbEventsManager.addNotice(socket);
1042
+
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) {
896
1051
 
897
- db.result(query, params)
898
- .then(async (qres: any) => {
899
- const { duration, fields, rows, command } = qres;
1052
+ // db.result(query, params)
1053
+ // .then(async (qres: any) => {
1054
+ // const { duration, fields, rows, command } = qres;
900
1055
 
901
- if(command === "LISTEN"){
902
- const sub = await this.dbEventsManager.addNotify(query, socket);
1056
+ // if(command === "LISTEN"){
1057
+ // const sub = await this.dbEventsManager.addNotify(query, socket);
903
1058
 
904
- cb(null, sub);
1059
+ // cb(null, sub);
905
1060
 
906
- } else if(returnType === "rows") {
907
- cb(null, rows);
1061
+ // } else if(returnType === "rows") {
1062
+ // cb(null, rows);
908
1063
 
909
- } else {
910
- if(fields && DATA_TYPES.length){
911
- qres.fields = fields.map(f => {
912
- const dataType = DATA_TYPES.find(dt => +dt.oid === +f.dataTypeID),
913
- tableName = USER_TABLES.find(t => +t.relid === +f.tableID),
914
- { 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);
915
1078
 
916
- return {
917
- ...f,
918
- ...(dataType? { dataType: dataType.typname } : {}),
919
- ...(tableName? { tableName: tableName.relname } : {}),
920
- }
921
- });
922
- }
923
- cb(null, qres)
924
- }
1079
+ // return {
1080
+ // ...f,
1081
+ // ...(dataType? { dataType: dataType.typname } : {}),
1082
+ // ...(tableName? { tableName: tableName.relname } : {}),
1083
+ // }
1084
+ // });
1085
+ // }
1086
+ // cb(null, qres)
1087
+ // }
925
1088
 
926
- })
927
- .catch(err => {
928
- makeSocketError(cb, err);
929
- // Promise.reject(err.toString());
930
- });
1089
+ // })
1090
+ // .catch(err => {
1091
+ // makeSocketError(cb, err);
1092
+ // // Promise.reject(err.toString());
1093
+ // });
931
1094
 
932
- } else console.error("db missing");
1095
+ // } else console.error("db missing");
933
1096
  });
934
1097
  if(db){
935
1098
  // let allTablesViews = await db.any(STEP2_GET_ALL_TABLES_AND_COLUMNS);
@@ -941,7 +1104,7 @@ export class Prostgles {
941
1104
 
942
1105
  // let joinTables = [];
943
1106
  let joinTables2 = [];
944
- if(this.joins){
1107
+ if(this.opts.joins){
945
1108
  // joinTables = Array.from(new Set(flat(this.dboBuilder.getJoins().map(j => j.tables)).filter(t => schema[t])));
946
1109
  let _joinTables2 = this.dboBuilder.getJoinPaths()
947
1110
  .filter(jp =>
@@ -997,14 +1160,17 @@ type callback = {
997
1160
 
998
1161
 
999
1162
  type Request = {
1000
- socket: any;
1163
+ socket?: any;
1164
+ httpReq?: any;
1001
1165
  }
1002
1166
 
1003
1167
  type DboTable = Request & {
1004
1168
  tableName: string;
1169
+ localParams: LocalParams;
1005
1170
  }
1006
1171
  type DboTableCommand = Request & DboTable & {
1007
1172
  command: string;
1173
+ localParams: LocalParams;
1008
1174
  }
1009
1175
 
1010
1176
  // const insertParams: Array<keyof InsertRule> = ["fields", "forcedData", "returningFields", "validate"];
@@ -1064,7 +1230,7 @@ export function flat(arr){
1064
1230
  let res = arr.reduce(function (farr, toFlatten) {
1065
1231
  return farr.concat(Array.isArray(toFlatten) ? flat(toFlatten) : toFlatten);
1066
1232
  }, []);
1067
- // console.log(arr, res)
1233
+
1068
1234
  return res;
1069
1235
  }
1070
1236
 
@@ -1072,11 +1238,11 @@ export class PublishParser {
1072
1238
  publish: any;
1073
1239
  publishMethods?: any;
1074
1240
  publishRawSQL?: any;
1075
- dbo: DbHandler | DbHandlerTX;
1241
+ dbo: DbHandler;
1076
1242
  db: DB
1077
1243
  prostgles: Prostgles;
1078
1244
 
1079
- 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){
1080
1246
  this.publish = publish;
1081
1247
  this.publishMethods = publishMethods;
1082
1248
  this.publishRawSQL = publishRawSQL;
@@ -1087,11 +1253,19 @@ export class PublishParser {
1087
1253
  if(!this.dbo || !this.publish) throw "INTERNAL ERROR: dbo and/or publish missing";
1088
1254
  }
1089
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
+
1090
1264
  async getMethods(socket: any){
1091
1265
  let methods = {};
1092
1266
 
1093
- const user = await this.prostgles.getUser(socket);
1094
- 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);
1095
1269
 
1096
1270
  if(_methods && Object.keys(_methods).length){
1097
1271
  Object.keys(_methods).map(key => {
@@ -1111,8 +1285,9 @@ export class PublishParser {
1111
1285
  * @param socket
1112
1286
  * @param user
1113
1287
  */
1114
- async getPublish(socket, user){
1115
- 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 );
1116
1291
 
1117
1292
  if(_publish === "*"){
1118
1293
  let publish = {}
@@ -1124,12 +1299,12 @@ export class PublishParser {
1124
1299
 
1125
1300
  return _publish;
1126
1301
  }
1127
- async getValidatedRequestRuleWusr({ tableName, command, socket }: DboTableCommand): Promise<TableRule>{
1128
- const user = await this.prostgles.getUser(socket);
1129
- 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);
1130
1305
  }
1131
1306
 
1132
- async getValidatedRequestRule({ tableName, command, socket }: DboTableCommand, user): Promise<TableRule>{
1307
+ async getValidatedRequestRule({ tableName, command, localParams }: DboTableCommand, clientInfo: ClientInfo): Promise<TableRule>{
1133
1308
  if(!this.dbo) throw "INTERNAL ERROR: dbo is missing";
1134
1309
 
1135
1310
  if(!command || !tableName) throw "command OR tableName are missing";
@@ -1140,18 +1315,17 @@ export class PublishParser {
1140
1315
  }
1141
1316
 
1142
1317
  /* Must be local request -> allow everything */
1143
- if(!socket) return undefined;
1318
+ if(!localParams || (!localParams.socket && !localParams.httpReq)) return undefined;
1144
1319
 
1145
1320
  /* Must be from socket. Must have a publish */
1146
1321
  if(!this.publish) throw "publish is missing";
1147
1322
 
1148
1323
  /* Get any publish errors for socket */
1149
- const schm = get(socket, `prostgles.schema.${tableName}.${command}`);
1324
+ const schm = localParams?.socket?.prostgles?.schema?.[tableName]?.[command];
1150
1325
 
1151
- // console.log(schm, get(socket, `prostgles.schema`));
1152
1326
  if(schm && schm.err) throw schm.err;
1153
1327
 
1154
- let table_rule = await this.getTableRules({ tableName, socket }, user);
1328
+ let table_rule = await this.getTableRules({ tableName, localParams }, clientInfo);
1155
1329
  if(!table_rule) throw "Invalid or disallowed table: " + tableName;
1156
1330
 
1157
1331
  if(command === "upsert"){
@@ -1165,14 +1339,14 @@ export class PublishParser {
1165
1339
  } else throw `Invalid or disallowed command: ${command}`;
1166
1340
  }
1167
1341
 
1168
- async getTableRules({ tableName, socket }: DboTable, user){
1342
+ async getTableRules({ tableName, localParams }: DboTable, clientInfo: ClientInfo): Promise<PublishTable> {
1169
1343
 
1170
1344
  try {
1171
- 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";
1172
1346
 
1173
- let _publish = await this.getPublish(socket, user);
1347
+ let _publish = await this.getPublish(localParams, clientInfo);
1174
1348
 
1175
- 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);
1176
1350
 
1177
1351
  /* Get view or table specific rules */
1178
1352
  const is_view = (this.dbo[tableName] as TableHandler | ViewHandler).is_view,
@@ -1182,7 +1356,7 @@ export class PublishParser {
1182
1356
  if(table_rules){
1183
1357
 
1184
1358
  /* All methods allowed. Add no limits for table rules */
1185
- if([true, "*"].includes(table_rules)){
1359
+ if([true, "*"].includes(table_rules as any)){
1186
1360
  table_rules = {};
1187
1361
  MY_RULES.map(r => {
1188
1362
  table_rules[r.rule] = { ...r.no_limits };
@@ -1199,10 +1373,10 @@ export class PublishParser {
1199
1373
  if(table_rules[r.rule]){
1200
1374
  r.methods.map(method => {
1201
1375
  if(table_rules[method] === undefined){
1376
+ const publishedTable = (table_rules as PublishTable);
1377
+ if(method === "updateBatch" && !publishedTable.update){
1202
1378
 
1203
- if(method === "updateBatch" && !table_rules.update){
1204
-
1205
- } else if(method === "upsert" && (!table_rules.update || !table_rules.insert)){
1379
+ } else if(method === "upsert" && (!publishedTable.update || !publishedTable.insert)){
1206
1380
  // return;
1207
1381
  } else {
1208
1382
  table_rules[method] = {};
@@ -1256,14 +1430,14 @@ export class PublishParser {
1256
1430
  const sr = MY_RULES.find(r => r.rule === "subscribe");
1257
1431
  if(sr){
1258
1432
  table_rules[sr.rule] = { ...sr.no_limits };
1259
- table_rules.subscribeOne = { ...sr.no_limits };
1433
+ (table_rules as PublishTable).subscribeOne = { ...sr.no_limits };
1260
1434
  }
1261
1435
  }
1262
1436
  });
1263
1437
  }
1264
1438
  }
1265
1439
 
1266
- return table_rules;
1440
+ return table_rules as PublishTable;
1267
1441
  } catch (e) {
1268
1442
  throw e;
1269
1443
  }
@@ -1277,14 +1451,14 @@ export class PublishParser {
1277
1451
 
1278
1452
  try {
1279
1453
  /* Publish tables and views based on socket */
1280
- const user = await this.prostgles.getUser(socket);
1281
- let _publish = await this.getPublish(socket, user);
1454
+ const clientInfo = await this.prostgles.getClientInfo({ socket });
1455
+ let _publish = await this.getPublish(socket, clientInfo);
1282
1456
 
1283
1457
 
1284
1458
  if(_publish && Object.keys(_publish).length){
1285
1459
  let txKey = "tx";
1286
- if(!this.prostgles.transactions) txKey = "";
1287
- 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;
1288
1462
 
1289
1463
  const tableNames = Object.keys(_publish).filter(k => !txKey || txKey !== k);
1290
1464
 
@@ -1297,7 +1471,7 @@ export class PublishParser {
1297
1471
  `;
1298
1472
  }
1299
1473
 
1300
- const table_rules = await this.getTableRules({ socket, tableName }, user);
1474
+ const table_rules = await this.getTableRules({ localParams: {socket}, tableName }, clientInfo);
1301
1475
 
1302
1476
  if(table_rules && Object.keys(table_rules).length){
1303
1477
  schema[tableName] = {};
@@ -1321,7 +1495,7 @@ export class PublishParser {
1321
1495
 
1322
1496
  let err = null;
1323
1497
  try {
1324
- 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);
1325
1499
  await this.dbo[tableName][method]({}, {}, {}, valid_table_command_rules, { socket, has_rules: true, testRule: true });
1326
1500
 
1327
1501
  } catch(e) {
@@ -1346,8 +1520,6 @@ export class PublishParser {
1346
1520
  throw e;
1347
1521
  }
1348
1522
 
1349
- // console.log(schema)
1350
-
1351
1523
  return schema;
1352
1524
  }
1353
1525