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