permdock 0.7.0 → 0.9.0
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/README.md +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +8 -8
- package/dist/action-result-BcudBQOF.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +19 -13
- package/dist/ai-sdk/index.js +6 -6
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +6 -6
- package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
- package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
- package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
- package/dist/authzen/index.d.ts +34 -28
- package/dist/authzen/index.js +23 -20
- package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
- package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +357 -227
- package/dist/better-supabase/index.js +219 -140
- package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
- package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
- package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
- package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
- package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +51 -30
- package/dist/catalog/index.js +18 -15
- package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
- package/dist/catalog-D3oS2GH3.js +1 -0
- package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
- package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
- package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
- package/dist/catalog-operations-DeHTrJSV.js +60 -0
- package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +84 -52
- package/dist/cloud/index.js +53 -39
- package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
- package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
- package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
- package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
- package/dist/collect-D-eroIfV.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
- package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
- package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
- package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
- package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
- package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
- package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
- package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
- package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
- package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
- package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +4 -4
- package/dist/delivery/index.js +5 -5
- package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-DHldhVUv.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
- package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
- package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
- package/dist/gen-BFfzZSLH.js +58 -0
- package/dist/gen-BtfFWGbz.js +827 -0
- package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
- package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
- package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
- package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
- package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
- package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
- package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
- package/dist/index.d.ts +22 -22
- package/dist/index.js +34 -34
- package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
- package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +57 -27
- package/dist/jwt/index.js +24 -21
- package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
- package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
- package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
- package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
- package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
- package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +114 -61
- package/dist/mcp/index.js +70 -40
- package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +79 -26
- package/dist/next/index.js +121 -10
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +51 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
- package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/{output-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/ownership-DA5YdYTm.js +1059 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
- package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +20 -13
- package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
- package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
- package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
- package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
- package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
- package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
- package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
- package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
- package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
- package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
- package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
- package/dist/powersync-B701tvhE.js +1 -0
- package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
- package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
- package/dist/protected-action-D8x73IGm.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
- package/dist/pull-C3EEGzSw.js +1 -0
- package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
- package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +94 -55
- package/dist/react-native/index.js +200 -61
- package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-ConCSj1y.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
- package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
- package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
- package/dist/run-Ck22anC2.js +1 -0
- package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
- package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
- package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +2 -2
- package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
- package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
- package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +12 -12
- package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
- package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
- package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
- package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -16
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
- package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
- package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
- package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
- package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
- package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-DZJvxFIZ.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -38
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
- package/dist/supabase-hook-C0FyEACZ.js +1 -0
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
- package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
- package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +1 -1
- package/dist/testing/core.js +1 -1
- package/dist/testing/fixtures/index.d.ts +8 -5
- package/dist/testing/fixtures/index.js +78 -17
- package/dist/testing/index.d.ts +225 -141
- package/dist/testing/index.js +352 -234
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
- package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-c7Xo_2Cu.d.ts +50 -0
- package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
- package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
- package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
- package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
- package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
- package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
- package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
- package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
- package/dist/types-tQB2CEnY.d.ts +262 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-0hjZPIRX.js +1 -0
- package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
- package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
- package/dist/vue/index.d.ts +71 -22
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
- package/dist/watch-ClLuO2TL.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
- package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
- package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
- package/package.json +8 -8
- package/schemas/catalog-v1.json +3 -0
- package/schemas/supabase-manifest-v1.json +33 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +2 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
- package/skills/permdock-wire/references/adapters.md +16 -23
- package/dist/catalog-BCCjSAdH.js +0 -1
- package/dist/collect-k_Dulxr5.js +0 -1
- package/dist/config-CoQHDrDi.js +0 -166
- package/dist/denied-text-D4qkEtFz.d.ts +0 -19
- package/dist/fields-ClcQLrVc.js +0 -238
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/load-DrMHXzgN.js +0 -1
- package/dist/output-files-DPAY7-GX.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
- package/dist/policies-B2lZIurj.js +0 -295
- package/dist/powersync-CExtTLyA.js +0 -1
- package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
- package/dist/protected-BwZYL1X_.d.ts +0 -39
- package/dist/pull-Cty6Ovyu.js +0 -1
- package/dist/run-Bz7DXGEv.js +0 -1
- package/dist/stores-BAZwSYZA.d.ts +0 -31
- package/dist/supabase-hook-DJxC4PoP.js +0 -1
- package/dist/types-CKV71kKh.d.ts +0 -172
- package/dist/usage-y-kBNdqs.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch-Bd9mx3rd.js +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { u as Permission } from "./permission-types-
|
|
2
|
-
import { o as ProtectOptions } from "./server-types-
|
|
1
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
2
|
+
import { o as ProtectOptions } from "./server-types-CyRN0-Cd.js";
|
|
3
3
|
//#region src/server/stream.d.ts
|
|
4
4
|
type StreamProtectOptions = ProtectOptions & {
|
|
5
5
|
/**
|
|
6
6
|
* For a procedure that returns an async iterable: each outbound item is
|
|
7
|
-
* checked against this permission and dropped when the subscriber cannot read
|
|
7
|
+
* checked against this permission and dropped when the subscriber cannot read
|
|
8
|
+
* it.
|
|
8
9
|
*/
|
|
9
10
|
readonly items?: Permission<string, unknown, "instance">;
|
|
10
11
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as PermDockRevokedError } from "./errors-
|
|
1
|
+
import { r as PermDockRevokedError } from "./errors-B6R_lg2a.js";
|
|
2
2
|
//#region src/server/stream.ts
|
|
3
3
|
function isAsyncIterable(value) {
|
|
4
4
|
return value !== null && typeof value === "object" && typeof value[Symbol.asyncIterator] === "function";
|
|
@@ -35,8 +35,8 @@ async function* guardIterable(source, connection, options) {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
|
-
* The connection loader for a stream `protect` already admitted: the first
|
|
39
|
-
*
|
|
38
|
+
* The connection loader for a stream `protect` already admitted: the first read
|
|
39
|
+
* returns the row `protect` loaded, and each revalidation reloads it.
|
|
40
40
|
*/
|
|
41
41
|
function reloadAfter(loaded, load) {
|
|
42
42
|
let first = true;
|
|
@@ -51,8 +51,8 @@ function reloadAfter(loaded, load) {
|
|
|
51
51
|
/** WebSocket close code for a policy violation (RFC 6455 section 7.4.1). */
|
|
52
52
|
const POLICY_VIOLATION = 1008;
|
|
53
53
|
/**
|
|
54
|
-
* The close reason for a problem: its PermDock type URI, or its `detail`
|
|
55
|
-
*
|
|
54
|
+
* The close reason for a problem: its PermDock type URI, or its `detail` code
|
|
55
|
+
* for an `about:blank` one. RFC 6455 caps a reason at 123 bytes.
|
|
56
56
|
*/
|
|
57
57
|
function closeReason(problem) {
|
|
58
58
|
return problem.type === "about:blank" ? problem.detail : problem.type;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as createStyle, n as streamHasColors } from "./style-
|
|
1
|
+
export { t as createStyle, n as streamHasColors } from "./style-Ds11Hmk4.js";
|
|
@@ -13,7 +13,8 @@ function createStyle(color) {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Whether a stream takes colour. On a TTY `hasColors()` honours `NO_COLOR`,
|
|
16
|
-
* `FORCE_COLOR` and `TERM`; a pipe colours only under a non-zero
|
|
16
|
+
* `FORCE_COLOR` and `TERM`; a pipe colours only under a non-zero
|
|
17
|
+
* `FORCE_COLOR`.
|
|
17
18
|
*/
|
|
18
19
|
function streamHasColors(stream, env = process.env) {
|
|
19
20
|
if (stream.isTTY === true) return stream.hasColors(env);
|
|
@@ -28,7 +28,10 @@ const DENIED = Object.freeze({
|
|
|
28
28
|
function rowCheckOf(found, granted) {
|
|
29
29
|
return found ? granted ? GRANTED : DENIED : MISSING;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Reads `select <filter> as granted ... where <key> limit 2`; only a boolean
|
|
33
|
+
* `true` or `1` grants.
|
|
34
|
+
*/
|
|
32
35
|
function rowCheckFrom(rows) {
|
|
33
36
|
if (rows.length > 1) throw new Error("PermDock: checkRow key matches more than one row");
|
|
34
37
|
const [row] = rows;
|
|
@@ -88,9 +91,10 @@ function setConfigs(settings) {
|
|
|
88
91
|
}];
|
|
89
92
|
}
|
|
90
93
|
/**
|
|
91
|
-
* The transaction preamble that makes Postgres see `permdock.subject`: one
|
|
92
|
-
* that sets the role, then the claims the generated
|
|
93
|
-
* transaction, so every setting is
|
|
94
|
+
* The transaction preamble that makes Postgres see `permdock.subject`: one
|
|
95
|
+
* `select set_config(…)` that sets the role, then the claims the generated
|
|
96
|
+
* policies read. Runs inside the caller's transaction, so every setting is
|
|
97
|
+
* local to it.
|
|
94
98
|
*/
|
|
95
99
|
function subjectStatements(permdock, options = {}) {
|
|
96
100
|
const principal = permdock.subject.principal;
|
|
@@ -1,24 +1,45 @@
|
|
|
1
|
+
//#region src/conditions/row-check.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Whether the row a unique key names exists, and if so whether the filter keeps
|
|
4
|
+
* it.
|
|
5
|
+
*/
|
|
6
|
+
type RowCheck = {
|
|
7
|
+
readonly found: false;
|
|
8
|
+
} | {
|
|
9
|
+
readonly found: true;
|
|
10
|
+
readonly granted: boolean;
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
1
13
|
//#region src/conditions/subject-settings.d.ts
|
|
2
14
|
type WithSubjectOptions = {
|
|
3
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Which settings the generated policies read; match `rls.dialect`. Default
|
|
17
|
+
* `supabase`.
|
|
18
|
+
*/
|
|
4
19
|
readonly dialect?: "supabase" | "guc" | "neon";
|
|
5
20
|
/**
|
|
6
|
-
* The local `role` setting before the claims: `authenticated` with a
|
|
7
|
-
* `false` keeps the connection's role, for a login
|
|
21
|
+
* The local `role` setting before the claims: `authenticated` with a
|
|
22
|
+
* principal, `anon` without. `false` keeps the connection's role, for a login
|
|
23
|
+
* role that RLS already applies to.
|
|
8
24
|
*/
|
|
9
25
|
readonly role?: "authenticated" | "anon" | false;
|
|
10
26
|
/** Prefix of the `guc` dialect's settings (`rls.gucPrefix`). Default `app`. */
|
|
11
27
|
readonly gucPrefix?: string;
|
|
12
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Claim holding the principal's tenant (`rls.tenantClaim`). Default
|
|
30
|
+
* `tenant_id`.
|
|
31
|
+
*/
|
|
13
32
|
readonly tenantClaim?: string;
|
|
14
33
|
/**
|
|
15
|
-
* Further claims from the verified token, such as `user_role` or
|
|
16
|
-
* helpers. `sub`, `role` and the tenant claim
|
|
34
|
+
* Further claims from the verified token, such as `user_role` or
|
|
35
|
+
* `memberships` for `jwt`-mode helpers. `sub`, `role` and the tenant claim
|
|
36
|
+
* always come from the subject.
|
|
17
37
|
*/
|
|
18
38
|
readonly claims?: Readonly<Record<string, unknown>>;
|
|
19
39
|
/**
|
|
20
|
-
* Field names of the API-key claim written for a principal that acts through
|
|
21
|
-
* (`rls.apiKeys`). Default `{ claim: 'api_key', scopes:
|
|
40
|
+
* Field names of the API-key claim written for a principal that acts through
|
|
41
|
+
* a credential (`rls.apiKeys`). Default `{ claim: 'api_key', scopes:
|
|
42
|
+
* 'scopes', tenant: 'tenant', roles: 'roles' }`.
|
|
22
43
|
*/
|
|
23
44
|
readonly apiKeys?: {
|
|
24
45
|
readonly claim?: string;
|
|
@@ -28,13 +49,4 @@ type WithSubjectOptions = {
|
|
|
28
49
|
};
|
|
29
50
|
};
|
|
30
51
|
//#endregion
|
|
31
|
-
|
|
32
|
-
/** Whether the row a unique key names exists, and if so whether the filter keeps it. */
|
|
33
|
-
type RowCheck = {
|
|
34
|
-
readonly found: false;
|
|
35
|
-
} | {
|
|
36
|
-
readonly found: true;
|
|
37
|
-
readonly granted: boolean;
|
|
38
|
-
};
|
|
39
|
-
//#endregion
|
|
40
|
-
export { WithSubjectOptions as n, RowCheck as t };
|
|
52
|
+
export { RowCheck as n, WithSubjectOptions as t };
|
package/dist/supabase/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as ApprovalDelegationSource, m as ApprovalStore, u as ApprovalRequest } from "../types-
|
|
3
|
-
import { a as SupabaseRpcClient, c as readSubjectRecord, i as SupabaseRpcCaller, n as PostgrestSourcesOptions, o as SupabaseRpcResult, r as SubjectRecord, s as postgrestSources, t as PostgrestSources } from "../postgrest-
|
|
4
|
-
import { C as
|
|
5
|
-
import { t as SqlQuery } from "../sql-
|
|
6
|
-
import { a as SupabaseManifestActiveRow, c as SupabaseManifestMembership, d as
|
|
7
|
-
import { a as MembershipStream, c as SupabasePostgres, d as supabasePostgresQuery, f as tableMembershipSource, i as MembershipSql, l as authzVersion, n as MembershipHolders, o as MembershipTableOptions, r as MembershipJunctionOptions, s as SqlMembershipSource, t as AUTHZ_VERSION_TABLE, u as junctionMembershipSource } from "../sources-
|
|
8
|
-
import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-
|
|
1
|
+
import { Wt as Instant, hr as Subject } from "../policy-types-DGIO_gxq.js";
|
|
2
|
+
import { a as ApprovalDelegationSource, m as ApprovalStore, u as ApprovalRequest } from "../types-DLvhVm1r.js";
|
|
3
|
+
import { a as SupabaseRpcClient, c as readSubjectRecord, i as SupabaseRpcCaller, n as PostgrestSourcesOptions, o as SupabaseRpcResult, r as SubjectRecord, s as postgrestSources, t as PostgrestSources } from "../postgrest-D5nUGm-c.js";
|
|
4
|
+
import { C as SupabaseClaims, D as SupabasePermDockClaims, E as SupabaseMembershipClaim, O as supabaseClaims, S as SupabaseActClaim, T as SupabaseClaimsSchema, _ as SupabaseStorage, a as SupabaseActor, b as SupabaseSuspendedScope, c as SupabaseInclude, d as SupabasePrincipal, f as SupabaseRealtime, g as SupabaseSessionLike, h as SupabaseRlsOptions, i as SupabaseActiveRow, l as SupabaseMembershipTable, m as SupabaseRlsMembershipTable, o as SupabaseActorResult, p as SupabaseRlsConfig, r as RoleThrough, s as SupabaseDelegation, t as AuthorizeSqlOptions, u as SupabasePermissionRef, v as SupabaseSubjectOptions, w as SupabaseClaimsOptions, x as SupabaseSuspension, y as SupabaseSuspendedMembership } from "../types-BMVDHvI0.js";
|
|
5
|
+
import { t as SqlQuery } from "../sql-B80DFdpG.js";
|
|
6
|
+
import { _ as hasTokenHook, a as SupabaseManifestActiveRow, c as SupabaseManifestMembership, d as SupabaseManifestResourceNames, f as SupabaseManifestRls, g as SupabaseManifestValue, h as SupabaseManifestThrough, i as SupabaseManifest, l as SupabaseManifestNames, m as SupabaseManifestScopeNames, n as SupabaseHookClaim, o as SupabaseManifestColumn, p as SupabaseManifestRole, r as SupabaseHookManifest, s as SupabaseManifestHelper, t as SupabaseDatabaseManifest, u as SupabaseManifestRequires, v as parseSupabaseManifest } from "../manifest-CzzWtnAb.js";
|
|
7
|
+
import { a as MembershipStream, c as SupabasePostgres, d as supabasePostgresQuery, f as tableMembershipSource, i as MembershipSql, l as authzVersion, n as MembershipHolders, o as MembershipTableOptions, r as MembershipJunctionOptions, s as SqlMembershipSource, t as AUTHZ_VERSION_TABLE, u as junctionMembershipSource } from "../sources-CWG32C0G.js";
|
|
8
|
+
import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-hYsPz_yE.js";
|
|
9
9
|
//#region src/supabase/capability.d.ts
|
|
10
10
|
type ExchangeCapabilityOptions = {
|
|
11
11
|
/**
|
|
@@ -16,7 +16,10 @@ type ExchangeCapabilityOptions = {
|
|
|
16
16
|
readonly key: Record<string, unknown> | {
|
|
17
17
|
readonly secret: string;
|
|
18
18
|
};
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Default `ES256`, Supabase's asymmetric signing key; the legacy secret needs
|
|
21
|
+
* `HS256` named.
|
|
22
|
+
*/
|
|
20
23
|
readonly alg?: "ES256" | "RS256" | "HS256";
|
|
21
24
|
readonly kid?: string;
|
|
22
25
|
readonly issuer?: string;
|
|
@@ -41,60 +44,66 @@ type SupabaseApprovalStoreOptions = {
|
|
|
41
44
|
/**
|
|
42
45
|
* Runs once per stored request, after the call that stored it, with the
|
|
43
46
|
* stored request: notify the approvers, or cancel the requests this one
|
|
44
|
-
* replaces. A repeated ask that finds the request still open does not run
|
|
45
|
-
*
|
|
47
|
+
* replaces. A repeated ask that finds the request still open does not run it
|
|
48
|
+
* again. A throw fails the open, so the caller does not run the action.
|
|
46
49
|
*/
|
|
47
50
|
readonly onOpen?: (request: ApprovalRequest) => void | Promise<void>;
|
|
48
51
|
};
|
|
49
52
|
/**
|
|
50
53
|
* An `ApprovalStore` over the table and functions `rls.approvals` generates,
|
|
51
|
-
* called through supabase-js (`client.schema(schema).rpc(...)`) with a
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
54
|
+
* called through supabase-js (`client.schema(schema).rpc(...)`) with a client
|
|
55
|
+
* that may execute them, such as a `service_role` client. Each method is one
|
|
56
|
+
* atomic statement in the database: a repeated ask keeps the open request, two
|
|
57
|
+
* racing approvers both count towards a quorum, and two racing resumes never
|
|
58
|
+
* both consume an approval.
|
|
56
59
|
*/
|
|
57
60
|
export declare function supabaseApprovalStore(client: SupabaseRpcCaller, options?: SupabaseApprovalStoreOptions): ApprovalStore;
|
|
58
61
|
//#endregion
|
|
59
62
|
//#region src/supabase/approval-delegations.d.ts
|
|
60
63
|
type TableApprovalDelegationSourceOptions = {
|
|
61
64
|
readonly query: SqlQuery;
|
|
62
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Defaults to `permdock.approval_delegations`, the table
|
|
67
|
+
* `rls.approvals.delegations` generates.
|
|
68
|
+
*/
|
|
63
69
|
readonly table?: string;
|
|
64
70
|
};
|
|
65
71
|
/**
|
|
66
72
|
* Approval delegations (out-of-office covers) from the table
|
|
67
73
|
* `rls.approvals.delegations` generates, so `approvalsHandler` and
|
|
68
|
-
* `permdock_is_approver` read the same rows. A cover without a tenant
|
|
69
|
-
*
|
|
74
|
+
* `permdock_is_approver` read the same rows. A cover without a tenant applies
|
|
75
|
+
* everywhere; a malformed row is skipped.
|
|
70
76
|
*/
|
|
71
77
|
export declare function tableApprovalDelegationSource(options: TableApprovalDelegationSourceOptions): ApprovalDelegationSource;
|
|
72
78
|
//#endregion
|
|
73
79
|
//#region src/supabase/rls.d.ts
|
|
74
80
|
export declare function supabaseRls(options?: SupabaseRlsOptions): SupabaseRlsConfig;
|
|
75
81
|
/**
|
|
76
|
-
* `authorize(requested_permission, requested_tenant text default null)` for
|
|
77
|
-
* scaffold, over the `role_permissions (role, permission,
|
|
78
|
-
* `permdock rls generate` seeds.
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
82
|
+
* `authorize(requested_permission, requested_tenant text default null)` for
|
|
83
|
+
* Supabase's RBAC scaffold, over the `role_permissions (role, permission,
|
|
84
|
+
* grant_key, scope, effect)` table that `permdock rls generate` seeds.
|
|
85
|
+
* `database` reads `user_roles` (and the memberships table for a tenant) on
|
|
86
|
+
* every call; `jwt` reads the hook-injected `user_role` and `memberships`
|
|
87
|
+
* claims. A tenant request with no memberships source is denied, never answered
|
|
88
|
+
* from global roles. It answers "does a role hold this permission" without
|
|
89
|
+
* seeing a row: an allow with row conditions does not count, and a deny the
|
|
90
|
+
* user's tenant or global roles hold overrides every allow. Generated policies
|
|
91
|
+
* call the per-statement RLS helpers (`permdock_has`, `permitted_<scope>_ids`)
|
|
84
92
|
* instead. Only `authenticated` may execute it.
|
|
85
93
|
*/
|
|
86
94
|
export declare function authorizeSql(options?: AuthorizeSqlOptions): string;
|
|
87
95
|
//#endregion
|
|
88
96
|
//#region src/supabase/subject.d.ts
|
|
89
97
|
/**
|
|
90
|
-
* Who acts for the user: the outermost `sub` of an RFC 8693 `act` chain (the
|
|
91
|
-
* actor; nested levels are prior actors, kept on `chain` for audit),
|
|
92
|
-
* OAuth `client_id` of a third-party app. The outer level's `kind`
|
|
93
|
-
* none is `oauth-client`, `support` a support session,
|
|
94
|
-
*
|
|
95
|
-
* `
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
+
* Who acts for the user: the outermost `sub` of an RFC 8693 `act` chain (the
|
|
99
|
+
* current actor; nested levels are prior actors, kept on `chain` for audit),
|
|
100
|
+
* else the OAuth `client_id` of a third-party app. The outer level's `kind`
|
|
101
|
+
* names the actor: none is `oauth-client`, `support` a support session,
|
|
102
|
+
* `impersonation` an admin acting as the user. Reads only `act` and
|
|
103
|
+
* `client_id`; the caller applies the role rule first (`anon` and
|
|
104
|
+
* `service_role` are anonymous and carry no actor). An `act` that is not a
|
|
105
|
+
* chain of objects each with a non-empty `sub`, that names another `kind`, or a
|
|
106
|
+
* support level without `session_id`, is `{ ok: false }` and must deny.
|
|
98
107
|
*/
|
|
99
108
|
export declare function actorOf(claims: unknown): SupabaseActorResult;
|
|
100
109
|
/**
|
|
@@ -104,9 +113,10 @@ export declare function actorOf(claims: unknown): SupabaseActorResult;
|
|
|
104
113
|
export declare function delegationOf(claims: unknown): SupabaseDelegation | undefined;
|
|
105
114
|
export declare function subjectFromSupabase(claims: unknown, options?: SupabaseSubjectOptions): Subject<SupabasePrincipal>;
|
|
106
115
|
/**
|
|
107
|
-
* A verified session object (`{ kind, claims }`) in, `Subject` out.
|
|
108
|
-
*
|
|
116
|
+
* A verified session object (`{ kind, claims }`) in, `Subject` out. Only `kind:
|
|
117
|
+
* 'user'` sessions map; `anon`, `service`, `invalid` and anything else are
|
|
118
|
+
* anonymous.
|
|
109
119
|
*/
|
|
110
120
|
export declare function subjectFromSupabaseSession(session: SupabaseSessionLike | null | undefined, options?: SupabaseSubjectOptions): Subject<SupabasePrincipal>;
|
|
111
121
|
//#endregion
|
|
112
|
-
export { AUTHZ_VERSION_TABLE, type AuthorizeSqlOptions, type ExchangeCapabilityOptions, type MembershipHolders, type MembershipJunctionOptions, type MembershipSql, type MembershipStream, type MembershipTableOptions, type PostgrestSources, type PostgrestSourcesOptions, type RoleThrough, type SqlMembershipSource, type SqlQuery, type SubjectRecord, type SupabaseActClaim, type SupabaseActiveRow, type SupabaseActor, type SupabaseActorResult, type SupabaseApprovalStoreOptions, type SupabaseClaims, type SupabaseClaimsOptions, type SupabaseClaimsSchema, type SupabaseDatabaseManifest, type SupabaseDelegation, type SupabaseHookClaim, type SupabaseHookManifest, type SupabaseInclude, type SupabaseManifest, type SupabaseManifestActiveRow, type SupabaseManifestColumn, type SupabaseManifestHelper, type SupabaseManifestMembership, type SupabaseManifestRequires, type SupabaseManifestRls, type SupabaseManifestRole, type SupabaseManifestThrough, type SupabaseManifestValue, type SupabaseMembershipClaim, type SupabaseMembershipTable, type SupabasePermDockClaims, type SupabasePermissionRef, type SupabasePostgres, type SupabasePrincipal, type SupabaseRealtime, type SupabaseRlsConfig, type SupabaseRlsOptions, type SupabaseRpcCaller, type SupabaseRpcClient, type SupabaseRpcResult, type SupabaseSessionLike, type SupabaseStorage, type SupabaseSubjectOptions, type SupabaseSuspendedMembership, type SupabaseSuspendedScope, type SupabaseSuspension, type TableApprovalDelegationSourceOptions, authzVersion, hasTokenHook, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseTenantClaim, tableMembershipSource };
|
|
122
|
+
export { AUTHZ_VERSION_TABLE, type AuthorizeSqlOptions, type ExchangeCapabilityOptions, type MembershipHolders, type MembershipJunctionOptions, type MembershipSql, type MembershipStream, type MembershipTableOptions, type PostgrestSources, type PostgrestSourcesOptions, type RoleThrough, type SqlMembershipSource, type SqlQuery, type SubjectRecord, type SupabaseActClaim, type SupabaseActiveRow, type SupabaseActor, type SupabaseActorResult, type SupabaseApprovalStoreOptions, type SupabaseClaims, type SupabaseClaimsOptions, type SupabaseClaimsSchema, type SupabaseDatabaseManifest, type SupabaseDelegation, type SupabaseHookClaim, type SupabaseHookManifest, type SupabaseInclude, type SupabaseManifest, type SupabaseManifestActiveRow, type SupabaseManifestColumn, type SupabaseManifestHelper, type SupabaseManifestMembership, type SupabaseManifestNames, type SupabaseManifestRequires, type SupabaseManifestResourceNames, type SupabaseManifestRls, type SupabaseManifestRole, type SupabaseManifestScopeNames, type SupabaseManifestThrough, type SupabaseManifestValue, type SupabaseMembershipClaim, type SupabaseMembershipTable, type SupabasePermDockClaims, type SupabasePermissionRef, type SupabasePostgres, type SupabasePrincipal, type SupabaseRealtime, type SupabaseRlsConfig, type SupabaseRlsMembershipTable, type SupabaseRlsOptions, type SupabaseRpcCaller, type SupabaseRpcClient, type SupabaseRpcResult, type SupabaseSessionLike, type SupabaseStorage, type SupabaseSubjectOptions, type SupabaseSuspendedMembership, type SupabaseSuspendedScope, type SupabaseSuspension, type TableApprovalDelegationSourceOptions, authzVersion, hasTokenHook, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseTenantClaim, tableMembershipSource };
|
package/dist/supabase/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as supabaseClaims, i as supabaseApprovalStore, n as supabaseRls, o as exchangeCapability, r as tableApprovalDelegationSource, t as authorizeSql } from "../supabase
|
|
2
|
-
import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-
|
|
3
|
-
import { c as tableMembershipSource, i as authzVersion, o as junctionMembershipSource, s as supabasePostgresQuery, t as AUTHZ_VERSION_TABLE } from "../sources-
|
|
4
|
-
import { a as delegationOf, c as subjectFromSupabaseSession, i as actorOf, n as postgrestSources, r as readSubjectRecord, s as subjectFromSupabase } from "../postgrest-
|
|
5
|
-
import { n as parseSupabaseManifest, t as hasTokenHook } from "../manifest-
|
|
1
|
+
import { a as supabaseClaims, i as supabaseApprovalStore, n as supabaseRls, o as exchangeCapability, r as tableApprovalDelegationSource, t as authorizeSql } from "../supabase-DnMMg5Fn.js";
|
|
2
|
+
import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-BELja5A9.js";
|
|
3
|
+
import { c as tableMembershipSource, i as authzVersion, o as junctionMembershipSource, s as supabasePostgresQuery, t as AUTHZ_VERSION_TABLE } from "../sources-CMAM-2A3.js";
|
|
4
|
+
import { a as delegationOf, c as subjectFromSupabaseSession, i as actorOf, n as postgrestSources, r as readSubjectRecord, s as subjectFromSupabase } from "../postgrest-5Dr3W64L.js";
|
|
5
|
+
import { n as parseSupabaseManifest, t as hasTokenHook } from "../manifest-wg8WkkpD.js";
|
|
6
6
|
export { AUTHZ_VERSION_TABLE, actorOf, authorizeSql, authzVersion, delegationOf, exchangeCapability, hasTokenHook, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, subjectFromSupabase, subjectFromSupabaseSession, supabaseApprovalStore, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseRls, supabaseTenantClaim, tableApprovalDelegationSource, tableMembershipSource };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { T as Policy,
|
|
2
|
-
import { u as Permission } from "../permission-types-
|
|
3
|
-
import { a as PermDock } from "../permdock-
|
|
4
|
-
import { t as InstanceOptions } from "../instance-options-
|
|
1
|
+
import { T as Policy, hr as Subject, j as PolicyVocabulary, pr as Principal } from "../policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock } from "../permdock-CprAPN3w.js";
|
|
4
|
+
import { t as InstanceOptions } from "../instance-options-CoHn-0e8.js";
|
|
5
5
|
import { t as RequestContext } from "../request-context-C2_1lchh.js";
|
|
6
|
-
import { i as OpenApiHooks } from "../server-types-
|
|
7
|
-
import { n as ServerAdapterServices } from "../bind-
|
|
6
|
+
import { i as OpenApiHooks } from "../server-types-CyRN0-Cd.js";
|
|
7
|
+
import { n as ServerAdapterServices } from "../bind-YYjvfpB9.js";
|
|
8
8
|
import { Middleware } from "@supabase/middleware";
|
|
9
9
|
//#region src/supabase/middleware.d.ts
|
|
10
10
|
/**
|
|
@@ -35,8 +35,8 @@ export type SupabaseMiddlewareContext = {
|
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
37
37
|
* A Supabase secret key that acts as a tenant service principal. `id` is the
|
|
38
|
-
* principal id, `roles` are held in `tenant` only, and `permissions` caps
|
|
39
|
-
*
|
|
38
|
+
* principal id, `roles` are held in `tenant` only, and `permissions` caps what
|
|
39
|
+
* the key may do, as a `service` credential does.
|
|
40
40
|
*/
|
|
41
41
|
export type SupabaseSecretKey = {
|
|
42
42
|
readonly id: string;
|
|
@@ -61,17 +61,23 @@ export type SupabaseMiddlewarePermDockOptions<TUser = unknown> = InstanceOptions
|
|
|
61
61
|
readonly context?: (ctx: SupabaseMiddlewareContext, request: Request) => RequestContext | undefined | Promise<RequestContext | undefined>;
|
|
62
62
|
};
|
|
63
63
|
export type WithPermDockConfig = {
|
|
64
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Run `protect` before the handler; a denial short-circuits with Problem
|
|
66
|
+
* Details.
|
|
67
|
+
*/
|
|
65
68
|
readonly protect?: Permission;
|
|
66
69
|
/**
|
|
67
|
-
* The OAuth scopes that reach the handler: a delegated token holding none
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
+
* The OAuth scopes that reach the handler: a delegated token holding none of
|
|
71
|
+
* them is refused with `insufficient_scope`. Without `protect`, the handler
|
|
72
|
+
* needs a signed-in principal and checks no permission.
|
|
70
73
|
*/
|
|
71
74
|
readonly oauthScopes?: readonly string[];
|
|
72
75
|
/** Load the row `protect` decides on; `null` or `undefined` yields 404. */
|
|
73
76
|
readonly data?: (ctx: SupabaseMiddlewareContext, request: Request) => unknown;
|
|
74
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* `true` when `data` returns a row the server loaded; anything else is
|
|
79
|
+
* validated before the check.
|
|
80
|
+
*/
|
|
75
81
|
readonly trusted?: boolean;
|
|
76
82
|
};
|
|
77
83
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { l as withApp } from "../permdock-
|
|
3
|
-
import { t as composeWraps } from "../wrap-
|
|
4
|
-
import { r as credentialSubject } from "../credential-
|
|
5
|
-
import {
|
|
6
|
-
import { r as instanceOptions } from "../build-instance-
|
|
7
|
-
import { t as createPermDock$1 } from "../create-
|
|
8
|
-
import { n as attached } from "../bind-
|
|
2
|
+
import { l as withApp } from "../permdock-BvjivVb9.js";
|
|
3
|
+
import { t as composeWraps } from "../wrap-B2wziJI_.js";
|
|
4
|
+
import { r as credentialSubject } from "../credential-CyyyvCsL.js";
|
|
5
|
+
import { o as methodNotAllowed } from "../problem-BVLHFK33.js";
|
|
6
|
+
import { r as instanceOptions } from "../build-instance-BWXqwQYU.js";
|
|
7
|
+
import { t as createPermDock$1 } from "../create-BLPKnJKa.js";
|
|
8
|
+
import { n as attached } from "../bind-BNQA9JK9.js";
|
|
9
9
|
import { defineMiddleware } from "@supabase/middleware";
|
|
10
10
|
//#region src/supabase/middleware.ts
|
|
11
11
|
const SECRET_KEY_NAME = /^[A-Za-z0-9_-]+$/u;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { d as isoNow, i as dateAt, p as nowSeconds, u as isoAt } from "./time-
|
|
2
|
+
import { d as isoNow, i as dateAt, p as nowSeconds, u as isoAt } from "./time-nR1JesoH.js";
|
|
3
3
|
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
4
|
-
import { s as ApprovalError } from "./types-
|
|
5
|
-
import { c as decodeApprovalCursor, l as encodeApprovalCursor, s as approvalPageSize, t as applyApprovalVerdict } from "./store-
|
|
6
|
-
import { a as parseCapability } from "./capability-
|
|
4
|
+
import { s as ApprovalError } from "./types-CcUXciSj.js";
|
|
5
|
+
import { c as decodeApprovalCursor, l as encodeApprovalCursor, s as approvalPageSize, t as applyApprovalVerdict } from "./store-RNFvaJJv.js";
|
|
6
|
+
import { a as parseCapability } from "./capability-BqX94r07.js";
|
|
7
7
|
import { t as loadJose } from "./load-jose-DZ4dnjri.js";
|
|
8
|
-
import { a as quoteQualifiedTable, c as quoteSqlTable, d as sqlTextArray, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral } from "./sql-
|
|
9
|
-
import "./budget-
|
|
10
|
-
import { d as keptKeys, l as roleColumn } from "./sources-
|
|
11
|
-
import { t as callRpc } from "./postgrest-
|
|
8
|
+
import { a as quoteQualifiedTable, c as quoteSqlTable, d as sqlTextArray, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral } from "./sql-0WjxIp9g.js";
|
|
9
|
+
import "./budget-BELja5A9.js";
|
|
10
|
+
import { d as keptKeys, l as roleColumn } from "./sources-CMAM-2A3.js";
|
|
11
|
+
import { t as callRpc } from "./postgrest-5Dr3W64L.js";
|
|
12
12
|
//#region src/supabase/capability.ts
|
|
13
13
|
const DEFAULT_TTL = 300;
|
|
14
14
|
const MAX_TTL = 3600;
|
|
@@ -130,7 +130,11 @@ function checkPermDockClaims(record, tenantClaim, path, issues) {
|
|
|
130
130
|
optional(record, "attrs", path, issues, isRecord, "an object");
|
|
131
131
|
optional(record, "authz_ver", path, issues, (value) => Number.isInteger(value), "an integer");
|
|
132
132
|
}
|
|
133
|
-
/**
|
|
133
|
+
/**
|
|
134
|
+
* The outer level's `kind`: none, `support` with a `session_id`,
|
|
135
|
+
* `impersonation`, or `agent` with optional `tools` and `read_only` and no
|
|
136
|
+
* `session_id`.
|
|
137
|
+
*/
|
|
134
138
|
function checkActKind(level, path, issues) {
|
|
135
139
|
const marked = own(level, "kind");
|
|
136
140
|
const kind = marked === void 0 && own(level, "session_id") !== void 0 ? "support" : marked;
|
|
@@ -223,7 +227,9 @@ function schemaOf(validate) {
|
|
|
223
227
|
* Needs no validation library.
|
|
224
228
|
*
|
|
225
229
|
* ```ts
|
|
226
|
-
* sb.claims(
|
|
230
|
+
* sb.claims(
|
|
231
|
+
* supabaseClaims().extend(z.object({ datetime_preferences: Prefs })),
|
|
232
|
+
* );
|
|
227
233
|
* ```
|
|
228
234
|
*/
|
|
229
235
|
function supabaseClaims(options = {}) {
|
|
@@ -236,7 +242,10 @@ function supabaseClaims(options = {}) {
|
|
|
236
242
|
}
|
|
237
243
|
//#endregion
|
|
238
244
|
//#region src/supabase/approval-store.ts
|
|
239
|
-
/**
|
|
245
|
+
/**
|
|
246
|
+
* A stored body as the request it is; the store wrote it from an
|
|
247
|
+
* `ApprovalRequest`.
|
|
248
|
+
*/
|
|
240
249
|
function requestOf(value) {
|
|
241
250
|
if (!isRecord(value) || value["v"] !== 1 || typeof value["token"] !== "string") return null;
|
|
242
251
|
return value;
|
|
@@ -252,11 +261,11 @@ function filterOf(filter) {
|
|
|
252
261
|
}
|
|
253
262
|
/**
|
|
254
263
|
* An `ApprovalStore` over the table and functions `rls.approvals` generates,
|
|
255
|
-
* called through supabase-js (`client.schema(schema).rpc(...)`) with a
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
259
|
-
*
|
|
264
|
+
* called through supabase-js (`client.schema(schema).rpc(...)`) with a client
|
|
265
|
+
* that may execute them, such as a `service_role` client. Each method is one
|
|
266
|
+
* atomic statement in the database: a repeated ask keeps the open request, two
|
|
267
|
+
* racing approvers both count towards a quorum, and two racing resumes never
|
|
268
|
+
* both consume an approval.
|
|
260
269
|
*/
|
|
261
270
|
function supabaseApprovalStore(client, options = {}) {
|
|
262
271
|
const schema = options.schema ?? "permdock";
|
|
@@ -372,8 +381,8 @@ function delegationOf(row) {
|
|
|
372
381
|
/**
|
|
373
382
|
* Approval delegations (out-of-office covers) from the table
|
|
374
383
|
* `rls.approvals.delegations` generates, so `approvalsHandler` and
|
|
375
|
-
* `permdock_is_approver` read the same rows. A cover without a tenant
|
|
376
|
-
*
|
|
384
|
+
* `permdock_is_approver` read the same rows. A cover without a tenant applies
|
|
385
|
+
* everywhere; a malformed row is skipped.
|
|
377
386
|
*/
|
|
378
387
|
function tableApprovalDelegationSource(options) {
|
|
379
388
|
const table = quoteQualifiedTable(options.table ?? "permdock.approval_delegations");
|
|
@@ -398,15 +407,42 @@ function tableApprovalDelegationSource(options) {
|
|
|
398
407
|
function isTable(value) {
|
|
399
408
|
return value !== null && typeof value === "object" && "table" in value && typeof value.table === "string";
|
|
400
409
|
}
|
|
410
|
+
/** A table with its `tenant` / `team` columns moved under `columns`. */
|
|
411
|
+
function configTable(table) {
|
|
412
|
+
const { tenant, team, ...rest } = table;
|
|
413
|
+
const columns = compact({
|
|
414
|
+
tenant,
|
|
415
|
+
team,
|
|
416
|
+
...table.columns
|
|
417
|
+
});
|
|
418
|
+
return Object.keys(columns).length === 0 ? rest : {
|
|
419
|
+
...rest,
|
|
420
|
+
columns
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
function configTables(tables) {
|
|
424
|
+
return tables === void 0 ? void 0 : Object.fromEntries(Object.entries(tables).map(([name, table]) => [name, configTable(table)]));
|
|
425
|
+
}
|
|
426
|
+
function configMemberships(raw) {
|
|
427
|
+
if (raw === void 0) return;
|
|
428
|
+
if (isTable(raw)) return { scopes: { tenant: configTable(raw) } };
|
|
429
|
+
const scopes = configTables(compact({
|
|
430
|
+
tenant: raw.tenant,
|
|
431
|
+
team: raw.team,
|
|
432
|
+
...raw.scopes
|
|
433
|
+
}));
|
|
434
|
+
return compact({
|
|
435
|
+
scopes: scopes === void 0 || Object.keys(scopes).length === 0 ? void 0 : scopes,
|
|
436
|
+
resource: configTables(raw.resource)
|
|
437
|
+
});
|
|
438
|
+
}
|
|
401
439
|
function supabaseRls(options = {}) {
|
|
402
|
-
const raw = options.memberships;
|
|
403
|
-
const memberships = raw === void 0 ? void 0 : isTable(raw) ? { tenant: raw } : raw;
|
|
404
440
|
return compact({
|
|
405
441
|
dialect: "supabase",
|
|
406
442
|
roleClaim: options.roleClaim ?? "user_role",
|
|
407
443
|
tenantClaim: options.tenantClaim ?? "tenant_id",
|
|
408
|
-
tenantType: options.tenantType,
|
|
409
|
-
memberships,
|
|
444
|
+
scopeTypes: options.tenantType === void 0 ? void 0 : { tenant: options.tenantType },
|
|
445
|
+
memberships: configMemberships(options.memberships),
|
|
410
446
|
suspension: options.suspension,
|
|
411
447
|
realtime: options.realtime,
|
|
412
448
|
storage: options.storage
|
|
@@ -414,7 +450,10 @@ function supabaseRls(options = {}) {
|
|
|
414
450
|
}
|
|
415
451
|
const ident = (name) => quoteSqlIdent(name);
|
|
416
452
|
const literal = quoteSqlLiteral;
|
|
417
|
-
/**
|
|
453
|
+
/**
|
|
454
|
+
* The memberships table's role key over alias `m`, joined to its roles table
|
|
455
|
+
* when it holds a reference.
|
|
456
|
+
*/
|
|
418
457
|
function tenantRole(memberships) {
|
|
419
458
|
return roleColumn(memberships.role, qualifySqlTable(memberships.table), "m", {
|
|
420
459
|
label: "authorizeSql tenant.role",
|
|
@@ -492,9 +531,9 @@ function customDatabaseBranch(q, scope, memberships, declared, levels, suspensio
|
|
|
492
531
|
)`;
|
|
493
532
|
}
|
|
494
533
|
/**
|
|
495
|
-
* The `role_permissions` match for one effect. An allow counts only without
|
|
496
|
-
*
|
|
497
|
-
*
|
|
534
|
+
* The `role_permissions` match for one effect. An allow counts only without row
|
|
535
|
+
* conditions (`grant_key = permission`): `authorize()` never sees the row. A
|
|
536
|
+
* deny counts with or without them, so a conditional deny still denies.
|
|
498
537
|
*/
|
|
499
538
|
function effectMatch(scope, effect) {
|
|
500
539
|
return `rp.permission = requested_permission::text
|
|
@@ -551,7 +590,10 @@ ${tenantBranch}
|
|
|
551
590
|
and not ${global("deny")};
|
|
552
591
|
end;`;
|
|
553
592
|
}
|
|
554
|
-
/**
|
|
593
|
+
/**
|
|
594
|
+
* A claim membership whose `expires_at` (epoch seconds) has passed no longer
|
|
595
|
+
* holds its roles.
|
|
596
|
+
*/
|
|
555
597
|
const CLAIM_UNEXPIRED = `case jsonb_typeof(m -> 'expires_at')
|
|
556
598
|
when 'number' then (m ->> 'expires_at')::numeric > extract(epoch from now())
|
|
557
599
|
else true
|
|
@@ -617,14 +659,16 @@ begin
|
|
|
617
659
|
end;`;
|
|
618
660
|
}
|
|
619
661
|
/**
|
|
620
|
-
* `authorize(requested_permission, requested_tenant text default null)` for
|
|
621
|
-
* scaffold, over the `role_permissions (role, permission,
|
|
622
|
-
* `permdock rls generate` seeds.
|
|
623
|
-
*
|
|
624
|
-
*
|
|
625
|
-
*
|
|
626
|
-
*
|
|
627
|
-
*
|
|
662
|
+
* `authorize(requested_permission, requested_tenant text default null)` for
|
|
663
|
+
* Supabase's RBAC scaffold, over the `role_permissions (role, permission,
|
|
664
|
+
* grant_key, scope, effect)` table that `permdock rls generate` seeds.
|
|
665
|
+
* `database` reads `user_roles` (and the memberships table for a tenant) on
|
|
666
|
+
* every call; `jwt` reads the hook-injected `user_role` and `memberships`
|
|
667
|
+
* claims. A tenant request with no memberships source is denied, never answered
|
|
668
|
+
* from global roles. It answers "does a role hold this permission" without
|
|
669
|
+
* seeing a row: an allow with row conditions does not count, and a deny the
|
|
670
|
+
* user's tenant or global roles hold overrides every allow. Generated policies
|
|
671
|
+
* call the per-statement RLS helpers (`permdock_has`, `permitted_<scope>_ids`)
|
|
628
672
|
* instead. Only `authenticated` may execute it.
|
|
629
673
|
*/
|
|
630
674
|
function authorizeSql(options = {}) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { c as given, n as dbUrl, o as fileOut, r as dbUrlFlags, t as checkFlag } from "./flags-
|
|
2
|
+
import { c as given, n as dbUrl, o as fileOut, r as dbUrlFlags, t as checkFlag } from "./flags-DXjoTVbS.js";
|
|
3
3
|
//#region src/cli/commands/supabase.ts
|
|
4
4
|
const hookGenerate = defineLeaf({
|
|
5
5
|
flags: {
|
|
@@ -47,7 +47,7 @@ const hookGenerate = defineLeaf({
|
|
|
47
47
|
const budget = given(flags.budget);
|
|
48
48
|
const schema = given(flags.schema);
|
|
49
49
|
const grantsOut = given(flags["grants-out"]);
|
|
50
|
-
const { runSupabase } = await import("./supabase-hook-
|
|
50
|
+
const { runSupabase } = await import("./supabase-hook-C0FyEACZ.js");
|
|
51
51
|
return runSupabase({
|
|
52
52
|
cwd: ctx.cwd,
|
|
53
53
|
config: ctx.config,
|
|
@@ -76,7 +76,7 @@ const inspect = defineLeaf({
|
|
|
76
76
|
},
|
|
77
77
|
async run(ctx, { flags }) {
|
|
78
78
|
const out = flags.out === "" ? true : flags.out === "-" ? void 0 : flags.out;
|
|
79
|
-
const { runSupabase } = await import("./supabase-hook-
|
|
79
|
+
const { runSupabase } = await import("./supabase-hook-C0FyEACZ.js");
|
|
80
80
|
return runSupabase({
|
|
81
81
|
cwd: ctx.cwd,
|
|
82
82
|
config: ctx.config,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { i as runSupabase } from "./supabase-hook-CrgU06WH.js";
|