permdock 0.6.0 → 0.8.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 +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- 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-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
- 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-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- 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-CGkP3Z7A.js +40 -0
- 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 +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- 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-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.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-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.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-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- 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-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.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-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- 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 +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- 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-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- 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 +72 -26
- package/dist/next/index.js +110 -6
- 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 +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.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-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- 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 +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/pkce-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- 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-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
- 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 +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- 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-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.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-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- 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-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -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 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- 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-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- 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-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- 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-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.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-BIPIDa6a.d.ts +50 -0
- package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.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-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.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-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +308 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -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,10 +1,11 @@
|
|
|
1
|
-
import { Rt as Instant,
|
|
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 {
|
|
6
|
-
import { a as
|
|
7
|
-
import { n as
|
|
1
|
+
import { Rt as Instant, lr as Subject } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { a as ApprovalDelegationSource, m as ApprovalStore, u as ApprovalRequest } from "../types-B_tiYvk8.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-DicQyqm-.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-ah9NlU6j.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-B1Os_YUu.js";
|
|
8
|
+
import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-hYsPz_yE.js";
|
|
8
9
|
//#region src/supabase/capability.d.ts
|
|
9
10
|
type ExchangeCapabilityOptions = {
|
|
10
11
|
/**
|
|
@@ -15,7 +16,10 @@ type ExchangeCapabilityOptions = {
|
|
|
15
16
|
readonly key: Record<string, unknown> | {
|
|
16
17
|
readonly secret: string;
|
|
17
18
|
};
|
|
18
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Default `ES256`, Supabase's asymmetric signing key; the legacy secret needs
|
|
21
|
+
* `HS256` named.
|
|
22
|
+
*/
|
|
19
23
|
readonly alg?: "ES256" | "RS256" | "HS256";
|
|
20
24
|
readonly kid?: string;
|
|
21
25
|
readonly issuer?: string;
|
|
@@ -40,60 +44,66 @@ type SupabaseApprovalStoreOptions = {
|
|
|
40
44
|
/**
|
|
41
45
|
* Runs once per stored request, after the call that stored it, with the
|
|
42
46
|
* stored request: notify the approvers, or cancel the requests this one
|
|
43
|
-
* replaces. A repeated ask that finds the request still open does not run
|
|
44
|
-
*
|
|
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.
|
|
45
49
|
*/
|
|
46
50
|
readonly onOpen?: (request: ApprovalRequest) => void | Promise<void>;
|
|
47
51
|
};
|
|
48
52
|
/**
|
|
49
53
|
* An `ApprovalStore` over the table and functions `rls.approvals` generates,
|
|
50
|
-
* called through supabase-js (`client.schema(schema).rpc(...)`) with a
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
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.
|
|
55
59
|
*/
|
|
56
60
|
export declare function supabaseApprovalStore(client: SupabaseRpcCaller, options?: SupabaseApprovalStoreOptions): ApprovalStore;
|
|
57
61
|
//#endregion
|
|
58
62
|
//#region src/supabase/approval-delegations.d.ts
|
|
59
63
|
type TableApprovalDelegationSourceOptions = {
|
|
60
64
|
readonly query: SqlQuery;
|
|
61
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Defaults to `permdock.approval_delegations`, the table
|
|
67
|
+
* `rls.approvals.delegations` generates.
|
|
68
|
+
*/
|
|
62
69
|
readonly table?: string;
|
|
63
70
|
};
|
|
64
71
|
/**
|
|
65
72
|
* Approval delegations (out-of-office covers) from the table
|
|
66
73
|
* `rls.approvals.delegations` generates, so `approvalsHandler` and
|
|
67
|
-
* `permdock_is_approver` read the same rows. A cover without a tenant
|
|
68
|
-
*
|
|
74
|
+
* `permdock_is_approver` read the same rows. A cover without a tenant applies
|
|
75
|
+
* everywhere; a malformed row is skipped.
|
|
69
76
|
*/
|
|
70
77
|
export declare function tableApprovalDelegationSource(options: TableApprovalDelegationSourceOptions): ApprovalDelegationSource;
|
|
71
78
|
//#endregion
|
|
72
79
|
//#region src/supabase/rls.d.ts
|
|
73
80
|
export declare function supabaseRls(options?: SupabaseRlsOptions): SupabaseRlsConfig;
|
|
74
81
|
/**
|
|
75
|
-
* `authorize(requested_permission, requested_tenant text default null)` for
|
|
76
|
-
* scaffold, over the `role_permissions (role, permission,
|
|
77
|
-
* `permdock rls generate` seeds.
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
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`)
|
|
83
92
|
* instead. Only `authenticated` may execute it.
|
|
84
93
|
*/
|
|
85
94
|
export declare function authorizeSql(options?: AuthorizeSqlOptions): string;
|
|
86
95
|
//#endregion
|
|
87
96
|
//#region src/supabase/subject.d.ts
|
|
88
97
|
/**
|
|
89
|
-
* Who acts for the user: the outermost `sub` of an RFC 8693 `act` chain (the
|
|
90
|
-
* actor; nested levels are prior actors, kept on `chain` for audit),
|
|
91
|
-
* OAuth `client_id` of a third-party app. The outer level's `kind`
|
|
92
|
-
* none is `oauth-client`, `support` a support session,
|
|
93
|
-
*
|
|
94
|
-
* `
|
|
95
|
-
*
|
|
96
|
-
*
|
|
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.
|
|
97
107
|
*/
|
|
98
108
|
export declare function actorOf(claims: unknown): SupabaseActorResult;
|
|
99
109
|
/**
|
|
@@ -103,9 +113,10 @@ export declare function actorOf(claims: unknown): SupabaseActorResult;
|
|
|
103
113
|
export declare function delegationOf(claims: unknown): SupabaseDelegation | undefined;
|
|
104
114
|
export declare function subjectFromSupabase(claims: unknown, options?: SupabaseSubjectOptions): Subject<SupabasePrincipal>;
|
|
105
115
|
/**
|
|
106
|
-
* A verified session object (`{ kind, claims }`) in, `Subject` out.
|
|
107
|
-
*
|
|
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.
|
|
108
119
|
*/
|
|
109
120
|
export declare function subjectFromSupabaseSession(session: SupabaseSessionLike | null | undefined, options?: SupabaseSubjectOptions): Subject<SupabasePrincipal>;
|
|
110
121
|
//#endregion
|
|
111
|
-
export { AUTHZ_VERSION_TABLE, type AuthorizeSqlOptions, type ExchangeCapabilityOptions, type MembershipHolders, type MembershipJunctionOptions, type MembershipSql, 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 SupabaseDelegation, type SupabaseHookClaim, type SupabaseHookManifest, type SupabaseInclude, 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, 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 {
|
|
6
|
-
export { AUTHZ_VERSION_TABLE, actorOf, authorizeSql, authzVersion, delegationOf, exchangeCapability, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, subjectFromSupabase, subjectFromSupabaseSession, supabaseApprovalStore, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseRls, supabaseTenantClaim, tableApprovalDelegationSource, tableMembershipSource };
|
|
1
|
+
import { a as supabaseClaims, i as supabaseApprovalStore, n as supabaseRls, o as exchangeCapability, r as tableApprovalDelegationSource, t as authorizeSql } from "../supabase-BL1qJzzY.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-D4nuPXIQ.js";
|
|
5
|
+
import { n as parseSupabaseManifest, t as hasTokenHook } from "../manifest-wg8WkkpD.js";
|
|
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 {
|
|
3
|
-
import {
|
|
4
|
-
import { t as InstanceOptions } from "../instance-options-
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, lr as Subject, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock } from "../permdock-B6Sf4T_S.js";
|
|
4
|
+
import { t as InstanceOptions } from "../instance-options-B0KXqTrJ.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-CIlpSA2G.js";
|
|
7
|
+
import { n as ServerAdapterServices } from "../bind-Cp2hBHzP.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 {
|
|
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-L-_I_3zP.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-CNWaYJyr.js";
|
|
7
|
+
import { t as createPermDock$1 } from "../create-_noSrY1T.js";
|
|
8
|
+
import { n as attached } from "../bind-D_sZSVA3.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-
|
|
3
|
-
import { t as canonicalJson } from "./canonical-json-
|
|
4
|
-
import { s as ApprovalError } from "./types-
|
|
5
|
-
import {
|
|
6
|
-
import { a as parseCapability } from "./capability-
|
|
2
|
+
import { d as isoNow, i as dateAt, p as nowSeconds, u as isoAt } from "./time-nR1JesoH.js";
|
|
3
|
+
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
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 "./
|
|
9
|
-
import
|
|
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-D4nuPXIQ.js";
|
|
12
12
|
//#region src/supabase/capability.ts
|
|
13
13
|
const DEFAULT_TTL = 300;
|
|
14
14
|
const MAX_TTL = 3600;
|
|
@@ -61,6 +61,7 @@ const KNOWN = /* @__PURE__ */ new Set([
|
|
|
61
61
|
"roles",
|
|
62
62
|
"memberships",
|
|
63
63
|
"memberships_truncated",
|
|
64
|
+
"team_ids",
|
|
64
65
|
"attrs",
|
|
65
66
|
"authz_ver",
|
|
66
67
|
"client_id",
|
|
@@ -124,11 +125,16 @@ function checkPermDockClaims(record, tenantClaim, path, issues) {
|
|
|
124
125
|
else issue(issues, [...path, "memberships"], "Expected an array");
|
|
125
126
|
}
|
|
126
127
|
optional(record, "memberships_truncated", path, issues, (value) => typeof value === "boolean", "a boolean");
|
|
128
|
+
optional(record, "team_ids", path, issues, isStrings, "an array of strings");
|
|
127
129
|
optional(record, tenantClaim, path, issues, isString, "a string");
|
|
128
130
|
optional(record, "attrs", path, issues, isRecord, "an object");
|
|
129
131
|
optional(record, "authz_ver", path, issues, (value) => Number.isInteger(value), "an integer");
|
|
130
132
|
}
|
|
131
|
-
/**
|
|
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
|
+
*/
|
|
132
138
|
function checkActKind(level, path, issues) {
|
|
133
139
|
const marked = own(level, "kind");
|
|
134
140
|
const kind = marked === void 0 && own(level, "session_id") !== void 0 ? "support" : marked;
|
|
@@ -221,7 +227,9 @@ function schemaOf(validate) {
|
|
|
221
227
|
* Needs no validation library.
|
|
222
228
|
*
|
|
223
229
|
* ```ts
|
|
224
|
-
* sb.claims(
|
|
230
|
+
* sb.claims(
|
|
231
|
+
* supabaseClaims().extend(z.object({ datetime_preferences: Prefs })),
|
|
232
|
+
* );
|
|
225
233
|
* ```
|
|
226
234
|
*/
|
|
227
235
|
function supabaseClaims(options = {}) {
|
|
@@ -234,7 +242,10 @@ function supabaseClaims(options = {}) {
|
|
|
234
242
|
}
|
|
235
243
|
//#endregion
|
|
236
244
|
//#region src/supabase/approval-store.ts
|
|
237
|
-
/**
|
|
245
|
+
/**
|
|
246
|
+
* A stored body as the request it is; the store wrote it from an
|
|
247
|
+
* `ApprovalRequest`.
|
|
248
|
+
*/
|
|
238
249
|
function requestOf(value) {
|
|
239
250
|
if (!isRecord(value) || value["v"] !== 1 || typeof value["token"] !== "string") return null;
|
|
240
251
|
return value;
|
|
@@ -250,11 +261,11 @@ function filterOf(filter) {
|
|
|
250
261
|
}
|
|
251
262
|
/**
|
|
252
263
|
* An `ApprovalStore` over the table and functions `rls.approvals` generates,
|
|
253
|
-
* called through supabase-js (`client.schema(schema).rpc(...)`) with a
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
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.
|
|
258
269
|
*/
|
|
259
270
|
function supabaseApprovalStore(client, options = {}) {
|
|
260
271
|
const schema = options.schema ?? "permdock";
|
|
@@ -370,8 +381,8 @@ function delegationOf(row) {
|
|
|
370
381
|
/**
|
|
371
382
|
* Approval delegations (out-of-office covers) from the table
|
|
372
383
|
* `rls.approvals.delegations` generates, so `approvalsHandler` and
|
|
373
|
-
* `permdock_is_approver` read the same rows. A cover without a tenant
|
|
374
|
-
*
|
|
384
|
+
* `permdock_is_approver` read the same rows. A cover without a tenant applies
|
|
385
|
+
* everywhere; a malformed row is skipped.
|
|
375
386
|
*/
|
|
376
387
|
function tableApprovalDelegationSource(options) {
|
|
377
388
|
const table = quoteQualifiedTable(options.table ?? "permdock.approval_delegations");
|
|
@@ -396,15 +407,42 @@ function tableApprovalDelegationSource(options) {
|
|
|
396
407
|
function isTable(value) {
|
|
397
408
|
return value !== null && typeof value === "object" && "table" in value && typeof value.table === "string";
|
|
398
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
|
+
}
|
|
399
439
|
function supabaseRls(options = {}) {
|
|
400
|
-
const raw = options.memberships;
|
|
401
|
-
const memberships = raw === void 0 ? void 0 : isTable(raw) ? { tenant: raw } : raw;
|
|
402
440
|
return compact({
|
|
403
441
|
dialect: "supabase",
|
|
404
442
|
roleClaim: options.roleClaim ?? "user_role",
|
|
405
443
|
tenantClaim: options.tenantClaim ?? "tenant_id",
|
|
406
|
-
tenantType: options.tenantType,
|
|
407
|
-
memberships,
|
|
444
|
+
scopeTypes: options.tenantType === void 0 ? void 0 : { tenant: options.tenantType },
|
|
445
|
+
memberships: configMemberships(options.memberships),
|
|
408
446
|
suspension: options.suspension,
|
|
409
447
|
realtime: options.realtime,
|
|
410
448
|
storage: options.storage
|
|
@@ -412,7 +450,10 @@ function supabaseRls(options = {}) {
|
|
|
412
450
|
}
|
|
413
451
|
const ident = (name) => quoteSqlIdent(name);
|
|
414
452
|
const literal = quoteSqlLiteral;
|
|
415
|
-
/**
|
|
453
|
+
/**
|
|
454
|
+
* The memberships table's role key over alias `m`, joined to its roles table
|
|
455
|
+
* when it holds a reference.
|
|
456
|
+
*/
|
|
416
457
|
function tenantRole(memberships) {
|
|
417
458
|
return roleColumn(memberships.role, qualifySqlTable(memberships.table), "m", {
|
|
418
459
|
label: "authorizeSql tenant.role",
|
|
@@ -490,9 +531,9 @@ function customDatabaseBranch(q, scope, memberships, declared, levels, suspensio
|
|
|
490
531
|
)`;
|
|
491
532
|
}
|
|
492
533
|
/**
|
|
493
|
-
* The `role_permissions` match for one effect. An allow counts only without
|
|
494
|
-
*
|
|
495
|
-
*
|
|
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.
|
|
496
537
|
*/
|
|
497
538
|
function effectMatch(scope, effect) {
|
|
498
539
|
return `rp.permission = requested_permission::text
|
|
@@ -549,7 +590,10 @@ ${tenantBranch}
|
|
|
549
590
|
and not ${global("deny")};
|
|
550
591
|
end;`;
|
|
551
592
|
}
|
|
552
|
-
/**
|
|
593
|
+
/**
|
|
594
|
+
* A claim membership whose `expires_at` (epoch seconds) has passed no longer
|
|
595
|
+
* holds its roles.
|
|
596
|
+
*/
|
|
553
597
|
const CLAIM_UNEXPIRED = `case jsonb_typeof(m -> 'expires_at')
|
|
554
598
|
when 'number' then (m ->> 'expires_at')::numeric > extract(epoch from now())
|
|
555
599
|
else true
|
|
@@ -615,14 +659,16 @@ begin
|
|
|
615
659
|
end;`;
|
|
616
660
|
}
|
|
617
661
|
/**
|
|
618
|
-
* `authorize(requested_permission, requested_tenant text default null)` for
|
|
619
|
-
* scaffold, over the `role_permissions (role, permission,
|
|
620
|
-
* `permdock rls generate` seeds.
|
|
621
|
-
*
|
|
622
|
-
*
|
|
623
|
-
*
|
|
624
|
-
*
|
|
625
|
-
*
|
|
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`)
|
|
626
672
|
* instead. Only `authenticated` may execute it.
|
|
627
673
|
*/
|
|
628
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-H-MtE9Wd.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-H-MtE9Wd.js");
|
|
80
80
|
return runSupabase({
|
|
81
81
|
cwd: ctx.cwd,
|
|
82
82
|
config: ctx.config,
|