permdock 0.7.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 +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +8 -8
- 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-D-feE7BE.js → adoption-scan-BLs67P1l.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-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- 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-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.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-BAkBDMqn.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-DqEoWHBc.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-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-D1nO6fiC.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-DxE7czo9.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
- 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-BFpz2EmT.js} +20 -19
- package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.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-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.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-BFlGMaak.js} +4 -5
- package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
- package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
- 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-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-Cm7UITNA.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-_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-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
- package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
- package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
- package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
- 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-CHNlVInN.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
- package/dist/{doctor-BoK_y0KO.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-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
- package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
- 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-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.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-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.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-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
- package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -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-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
- package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
- package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
- package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
- package/dist/index.d.ts +22 -22
- package/dist/index.js +33 -33
- package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
- 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-C-fYydV2.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-D-8tMqzo.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.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-BNWCJtmP.js} +14 -8
- 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 +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 +51 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
- 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-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-BQhTlLQS.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-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
- package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
- 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-mDcTWoBs.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-Ba4bDhaj.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-CJgOm6aq.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-CCiDRZBH.d.ts} +738 -349
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
- package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
- package/dist/{powersync-13odBwiM.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-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-BE7N_Luo.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-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CmYeSQqq.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 +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-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.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-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
- package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
- 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-fNqAIqQk.js} +8 -5
- package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.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-iWnUdwCt.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.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-CIlpSA2G.d.ts} +81 -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-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
- package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.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-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
- package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- 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-DZ0l9UAg.js} +190 -100
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-B_qRg0ws.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-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
- package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- 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-BL1qJzzY.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
- 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-DeMNEy6V.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 +224 -141
- package/dist/testing/index.js +299 -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-BIPIDa6a.d.ts +50 -0
- package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
- package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
- package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
- package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.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-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.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-pe8rL_Qw.js → verify-DZeqoWu5.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-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.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-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
- package/dist/{who-can-BwNsI_Js.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-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
- package/dist/{wrap-B6R0cMRL.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +7 -7
- 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 +14 -22
- 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,7 +1,7 @@
|
|
|
1
|
-
import { et as MembershipSource } from "./policy-types-
|
|
2
|
-
import {
|
|
3
|
-
import { t as SqlQuery } from "./sql-
|
|
4
|
-
import { c as SupabaseManifestMembership } from "./manifest-
|
|
1
|
+
import { et as MembershipSource } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { n as RoleMap, r as RoleThrough, x as SupabaseSuspension } from "./types-ah9NlU6j.js";
|
|
3
|
+
import { t as SqlQuery } from "./sql-B80DFdpG.js";
|
|
4
|
+
import { c as SupabaseManifestMembership } from "./manifest-CzzWtnAb.js";
|
|
5
5
|
//#region src/supabase/roles.d.ts
|
|
6
6
|
/** A roles table a role column references, by `schema.table`. */
|
|
7
7
|
type RoleKeys = {
|
|
@@ -13,7 +13,10 @@ type RoleKeys = {
|
|
|
13
13
|
/** The referencing table's column. */
|
|
14
14
|
readonly ref: string;
|
|
15
15
|
};
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* One role source of a membership row: a key column, or a reference to a roles
|
|
18
|
+
* table.
|
|
19
|
+
*/
|
|
17
20
|
type RoleSource = string | RoleThrough | RoleMap;
|
|
18
21
|
/** A role source, or several the row holds at once. */
|
|
19
22
|
type RoleSpec = RoleSource | readonly RoleSource[];
|
|
@@ -27,7 +30,10 @@ type RoleGuard = {
|
|
|
27
30
|
readonly table: string;
|
|
28
31
|
/** The tenant column of the roles table. */
|
|
29
32
|
readonly tenant: string;
|
|
30
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* A tenant row with this column true is the application's own copy of a
|
|
35
|
+
* declared role.
|
|
36
|
+
*/
|
|
31
37
|
readonly skip?: string | undefined;
|
|
32
38
|
readonly declared: readonly string[];
|
|
33
39
|
};
|
|
@@ -35,13 +41,22 @@ type RoleGuard = {
|
|
|
35
41
|
//#region src/supabase/sources.d.ts
|
|
36
42
|
type Common = {
|
|
37
43
|
readonly table: string;
|
|
38
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Runs the lookups; without it the source only describes SQL (for `permdock
|
|
46
|
+
* supabase hook generate`).
|
|
47
|
+
*/
|
|
39
48
|
readonly query?: SqlQuery;
|
|
40
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Drop suspended users and memberships under suspended instances, like
|
|
51
|
+
* `rls.suspension`.
|
|
52
|
+
*/
|
|
41
53
|
readonly suspension?: SupabaseSuspension;
|
|
42
54
|
};
|
|
43
55
|
type MembershipTableOptions = Common & {
|
|
44
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Column names; `user`, `scope`, `id` and `role` default to `user_id`,
|
|
58
|
+
* `scope`, `scope_id`, `role`.
|
|
59
|
+
*/
|
|
45
60
|
readonly columns?: {
|
|
46
61
|
/** The user id column, or a reference to a table that holds the user id. */
|
|
47
62
|
readonly user?: string | RoleThrough;
|
|
@@ -50,8 +65,8 @@ type MembershipTableOptions = Common & {
|
|
|
50
65
|
/** A `jsonb` column of ancestor ids keyed by scope name. */
|
|
51
66
|
readonly within?: string;
|
|
52
67
|
/**
|
|
53
|
-
* The role key column, a reference to a roles table that holds the key,
|
|
54
|
-
*
|
|
68
|
+
* The role key column, a reference to a roles table that holds the key, or
|
|
69
|
+
* several of them: the row holds every non-null key.
|
|
55
70
|
*/
|
|
56
71
|
readonly role?: RoleSpec;
|
|
57
72
|
readonly via?: string;
|
|
@@ -63,7 +78,10 @@ type MembershipTableOptions = Common & {
|
|
|
63
78
|
readonly reason?: string;
|
|
64
79
|
/** A subgroup column filling `member.group`. */
|
|
65
80
|
readonly group?: string;
|
|
66
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* A text column; the value `idp` marks the row as owned by the identity
|
|
83
|
+
* provider.
|
|
84
|
+
*/
|
|
67
85
|
readonly managedBy?: string;
|
|
68
86
|
/** A `text[]` column of seats. */
|
|
69
87
|
readonly seats?: string;
|
|
@@ -74,16 +92,19 @@ type MembershipTableOptions = Common & {
|
|
|
74
92
|
type MembershipJunctionOptions = Common & {
|
|
75
93
|
/** The declared scope every row is a membership of. */
|
|
76
94
|
readonly scope: string;
|
|
77
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* The user id column (default `user_id`), or a reference to a table that
|
|
97
|
+
* holds the user id.
|
|
98
|
+
*/
|
|
78
99
|
readonly user?: string | RoleThrough;
|
|
79
100
|
/** The column holding the scope instance id. Default `<scope>_id`. */
|
|
80
101
|
readonly id?: string;
|
|
81
102
|
/** Ancestor id columns keyed by scope name. */
|
|
82
103
|
readonly within?: Readonly<Record<string, string>>;
|
|
83
104
|
/**
|
|
84
|
-
* A role column, a reference to a roles table that holds the key, fixed
|
|
85
|
-
*
|
|
86
|
-
*
|
|
105
|
+
* A role column, a reference to a roles table that holds the key, fixed roles
|
|
106
|
+
* every row holds (a contact table with no role column), or `{ sources }`:
|
|
107
|
+
* several role columns whose non-null keys the row holds.
|
|
87
108
|
*/
|
|
88
109
|
readonly roles: string | RoleThrough | RoleMap | readonly string[] | {
|
|
89
110
|
readonly sources: readonly RoleSource[];
|
|
@@ -100,7 +121,10 @@ type MembershipJunctionOptions = Common & {
|
|
|
100
121
|
readonly group?: string | {
|
|
101
122
|
readonly column: string;
|
|
102
123
|
};
|
|
103
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* `idp` when the identity provider owns every row, or a text column holding
|
|
126
|
+
* `idp` per row.
|
|
127
|
+
*/
|
|
104
128
|
readonly managedBy?: "idp" | {
|
|
105
129
|
readonly column: string;
|
|
106
130
|
};
|
|
@@ -109,51 +133,81 @@ type MembershipJunctionOptions = Common & {
|
|
|
109
133
|
/** A `jsonb` column of app data (`Membership.x`); never written into claims. */
|
|
110
134
|
readonly x?: string;
|
|
111
135
|
};
|
|
112
|
-
/**
|
|
136
|
+
/**
|
|
137
|
+
* What `permdock supabase hook generate` compiles; the same SQL the source
|
|
138
|
+
* runs.
|
|
139
|
+
*/
|
|
113
140
|
type MembershipSql = {
|
|
114
141
|
readonly table: string;
|
|
115
|
-
/**
|
|
142
|
+
/**
|
|
143
|
+
* The table's user column: the user id, or with `userThrough` the reference
|
|
144
|
+
* to the row holding it.
|
|
145
|
+
*/
|
|
116
146
|
readonly user: string;
|
|
117
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* The table that holds the user id when `user` references it; a change of
|
|
149
|
+
* that id bumps the old and the new user.
|
|
150
|
+
*/
|
|
118
151
|
readonly userThrough?: RoleKeys;
|
|
119
|
-
/**
|
|
152
|
+
/**
|
|
153
|
+
* `<table>.<user>%type`: the PL/pgSQL type of the user id column, for a
|
|
154
|
+
* variable `select` compares with.
|
|
155
|
+
*/
|
|
120
156
|
readonly userType: string;
|
|
121
157
|
/**
|
|
122
|
-
* The `select` of claim rows for one user, with every filter applied.
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* `keep` adds the `keep` column; it defaults to `keeps`, and a `union`
|
|
126
|
-
*
|
|
158
|
+
* The `select` of claim rows for one user, with every filter applied. `user`
|
|
159
|
+
* must have the column's type (a `userType` variable, or an untyped `$1`
|
|
160
|
+
* Postgres infers): the column is compared uncast so its index applies.
|
|
161
|
+
* `keep` adds the `keep` column; it defaults to `keeps`, and a `union` with a
|
|
162
|
+
* source that keeps passes `true`.
|
|
127
163
|
*/
|
|
128
|
-
select(user: string, keep?: boolean)
|
|
164
|
+
select: (user: string, keep?: boolean) => string;
|
|
129
165
|
/** The `select` of member rows for one scope instance (`$1` scope, `$2` id). */
|
|
130
|
-
list(keep?: boolean)
|
|
131
|
-
/**
|
|
166
|
+
list: (keep?: boolean) => string;
|
|
167
|
+
/**
|
|
168
|
+
* A suspended scope on the source keeps permissions: rows of its suspended
|
|
169
|
+
* instances stay, with a `keep` column.
|
|
170
|
+
*/
|
|
132
171
|
readonly keeps: boolean;
|
|
133
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* A text column holding `idp` for rows the identity provider owns; `''` when
|
|
174
|
+
* every row is owned.
|
|
175
|
+
*/
|
|
134
176
|
readonly managed?: string;
|
|
135
177
|
/** Other tables the `select` reads (suspension tables). */
|
|
136
178
|
readonly reads: readonly string[];
|
|
137
|
-
/**
|
|
179
|
+
/**
|
|
180
|
+
* The roles table the role column references; a key change bumps every
|
|
181
|
+
* holder's authorization version.
|
|
182
|
+
*/
|
|
138
183
|
readonly through?: RoleKeys;
|
|
139
184
|
/** Every roles table the role columns reference, `through` first. */
|
|
140
185
|
readonly throughs: readonly RoleKeys[];
|
|
141
|
-
/**
|
|
186
|
+
/**
|
|
187
|
+
* Every column that decides who holds which membership: user, scope, id,
|
|
188
|
+
* `within`, role, `via` and expiry.
|
|
189
|
+
*/
|
|
142
190
|
readonly columns: readonly string[];
|
|
143
|
-
/**
|
|
191
|
+
/**
|
|
192
|
+
* For a single-scope source: its scope and the scopes whose ids each row
|
|
193
|
+
* carries.
|
|
194
|
+
*/
|
|
144
195
|
readonly scope?: string;
|
|
145
196
|
readonly holds?: readonly string[];
|
|
146
197
|
/** The source's entry in the hook manifest's `memberships`. */
|
|
147
198
|
readonly manifest: SupabaseManifestMembership;
|
|
148
199
|
/** What the ownership triggers count; absent on a source that is not a table. */
|
|
149
200
|
readonly holders?: MembershipHolders;
|
|
150
|
-
/**
|
|
201
|
+
/**
|
|
202
|
+
* The rows as plain columns, for Sync Streams and `powerSyncSource`; a source
|
|
203
|
+
* without it does not sync.
|
|
204
|
+
*/
|
|
151
205
|
readonly stream?: MembershipStream;
|
|
152
206
|
};
|
|
153
207
|
/**
|
|
154
|
-
* One membership source as columns a Sync Streams query can filter on.
|
|
155
|
-
*
|
|
156
|
-
*
|
|
208
|
+
* One membership source as columns a Sync Streams query can filter on. Tables
|
|
209
|
+
* are `schema.table`; a `through` table is qualified in the source's schema
|
|
210
|
+
* when it names none.
|
|
157
211
|
*/
|
|
158
212
|
type MembershipStream = {
|
|
159
213
|
readonly table: string;
|
|
@@ -166,7 +220,10 @@ type MembershipStream = {
|
|
|
166
220
|
readonly value: string;
|
|
167
221
|
};
|
|
168
222
|
readonly id: string;
|
|
169
|
-
/**
|
|
223
|
+
/**
|
|
224
|
+
* The role sources (the row holds every non-null key), or the fixed roles
|
|
225
|
+
* every row holds.
|
|
226
|
+
*/
|
|
170
227
|
readonly roles: RoleSpec | {
|
|
171
228
|
readonly value: readonly string[];
|
|
172
229
|
};
|
|
@@ -178,9 +235,15 @@ type MembershipStream = {
|
|
|
178
235
|
};
|
|
179
236
|
readonly expiresAt?: string;
|
|
180
237
|
readonly disabledAt?: string;
|
|
181
|
-
/**
|
|
238
|
+
/**
|
|
239
|
+
* A row may hold no role key: such a row is no membership, and a reader drops
|
|
240
|
+
* it.
|
|
241
|
+
*/
|
|
182
242
|
readonly nullableRoles: boolean;
|
|
183
|
-
/**
|
|
243
|
+
/**
|
|
244
|
+
* The guard the source reads its roles table with: a tenant row named like a
|
|
245
|
+
* declared role is no role.
|
|
246
|
+
*/
|
|
184
247
|
readonly guard?: RoleGuard;
|
|
185
248
|
};
|
|
186
249
|
/**
|
|
@@ -189,23 +252,32 @@ type MembershipStream = {
|
|
|
189
252
|
* suspended holder still holds the role.
|
|
190
253
|
*/
|
|
191
254
|
type MembershipHolders = {
|
|
192
|
-
/**
|
|
255
|
+
/**
|
|
256
|
+
* `<table>.<id column>%type`: the type of a variable `rows` compares the id
|
|
257
|
+
* column with.
|
|
258
|
+
*/
|
|
193
259
|
readonly idType: string;
|
|
194
|
-
/** The instance id of scope `scope` the PL/pgSQL record `row` holds, as text; null on a row of another scope. */
|
|
195
|
-
id(scope: string, row: string): string;
|
|
196
260
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
|
|
261
|
+
* The instance id of scope `scope` the PL/pgSQL record `row` holds, as text;
|
|
262
|
+
* null on a row of another scope.
|
|
263
|
+
*/
|
|
264
|
+
id: (scope: string, row: string) => string;
|
|
265
|
+
/**
|
|
266
|
+
* `select id, user_id, role, via, live` over the rows of scope `scope` in
|
|
267
|
+
* `from` (default the table): one row per held role key, `live` false once
|
|
268
|
+
* expired. `id` is an expression of `idType` the id column must equal.
|
|
200
269
|
*/
|
|
201
|
-
rows(scope: string, options?: {
|
|
270
|
+
rows: (scope: string, options?: {
|
|
202
271
|
readonly id?: string;
|
|
203
272
|
readonly from?: string;
|
|
204
|
-
})
|
|
273
|
+
}) => string;
|
|
205
274
|
};
|
|
206
275
|
type SqlMembershipSource = MembershipSource & {
|
|
207
276
|
readonly sql: MembershipSql;
|
|
208
|
-
/**
|
|
277
|
+
/**
|
|
278
|
+
* The same source with the role keys of tenant rows of `guard.table` named
|
|
279
|
+
* like a declared role read as null.
|
|
280
|
+
*/
|
|
209
281
|
readonly guarded?: (guard: RoleGuard) => SqlMembershipSource;
|
|
210
282
|
};
|
|
211
283
|
/** The part of `@supabase/server`'s `PostgresApi` a `SqlQuery` needs. */
|
|
@@ -215,9 +287,9 @@ type SupabasePostgres = {
|
|
|
215
287
|
declare function supabasePostgresQuery(postgres: SupabasePostgres): SqlQuery;
|
|
216
288
|
/**
|
|
217
289
|
* Memberships from one table holding every scope: a row per user, scope,
|
|
218
|
-
* instance and role (`user_id, scope, scope_id, role`), with optional
|
|
219
|
-
* `
|
|
220
|
-
*
|
|
290
|
+
* instance and role (`user_id, scope, scope_id, role`), with optional `within`,
|
|
291
|
+
* `via`, expiry, owner and seat columns. Rows of the same instance merge into
|
|
292
|
+
* one membership.
|
|
221
293
|
*/
|
|
222
294
|
declare function tableMembershipSource(options: MembershipTableOptions): SqlMembershipSource;
|
|
223
295
|
/**
|
|
@@ -229,7 +301,8 @@ declare function junctionMembershipSource(options: MembershipJunctionOptions): S
|
|
|
229
301
|
declare const AUTHZ_VERSION_TABLE = "permdock_authz_version";
|
|
230
302
|
/**
|
|
231
303
|
* Reads the authorization version `permdock supabase hook generate` keeps in
|
|
232
|
-
* `<schema>.permdock_authz_version`: pass it to `claimsFirst(sources, { version
|
|
304
|
+
* `<schema>.permdock_authz_version`: pass it to `claimsFirst(sources, { version
|
|
305
|
+
* })`.
|
|
233
306
|
*/
|
|
234
307
|
declare function authzVersion(options: {
|
|
235
308
|
readonly query: SqlQuery;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { i as readAppData } from "./app-data-
|
|
3
|
-
import { a as quoteQualifiedTable, c as quoteSqlTable, d as sqlTextArray, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, u as sqlRows } from "./sql-
|
|
2
|
+
import { i as readAppData } from "./app-data-UNNm07jV.js";
|
|
3
|
+
import { a as quoteQualifiedTable, c as quoteSqlTable, d as sqlTextArray, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, u as sqlRows } from "./sql-0WjxIp9g.js";
|
|
4
4
|
//#region src/supabase/keep.ts
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* The permission keys of a suspended scope's `keep`, references read by `key`,
|
|
7
|
+
* sorted and unique.
|
|
8
|
+
*/
|
|
6
9
|
function keptKeys(row) {
|
|
7
10
|
const keep = row?.keep;
|
|
8
11
|
if (keep === void 0) return [];
|
|
@@ -30,8 +33,8 @@ function activeRow(row, id) {
|
|
|
30
33
|
return `exists (select 1 from ${quoteQualifiedTable(row.table)} s where ${parts.join(" and ")})`;
|
|
31
34
|
}
|
|
32
35
|
/**
|
|
33
|
-
* The suspendable instances on the row's chain whose scope keeps
|
|
34
|
-
*
|
|
36
|
+
* The suspendable instances on the row's chain whose scope keeps permissions:
|
|
37
|
+
* each one's active check and its kept keys.
|
|
35
38
|
*/
|
|
36
39
|
function keeping(shape) {
|
|
37
40
|
const scopes = Object.entries(shape.suspension?.scopes ?? {}).flatMap(([name, row]) => {
|
|
@@ -55,9 +58,8 @@ function keepsDisabled(shape) {
|
|
|
55
58
|
return shape.disabledAt !== void 0 && keptKeys(shape.suspension?.memberships).length > 0;
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
58
|
-
* The keys a row on a suspended chain still grants, as a sorted `jsonb`
|
|
59
|
-
*
|
|
60
|
-
* is kept.
|
|
61
|
+
* The keys a row on a suspended chain still grants, as a sorted `jsonb` array:
|
|
62
|
+
* the keys every suspended instance on it keeps. `null` when nothing is kept.
|
|
61
63
|
*/
|
|
62
64
|
function keptSql(shape) {
|
|
63
65
|
const list = keeping(shape);
|
|
@@ -167,10 +169,10 @@ function isRoleList(role) {
|
|
|
167
169
|
}
|
|
168
170
|
/**
|
|
169
171
|
* Resolves the role sources of `table` (`schema.table`, or `public`). An
|
|
170
|
-
* unqualified `through` table is in `table`'s schema. `label` names the
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
172
|
+
* unqualified `through` table is in `table`'s schema. `label` names the option
|
|
173
|
+
* in the error for an `on` that is not exactly one column; `prefix` starts
|
|
174
|
+
* every error. A row with several sources holds the union of their non-null
|
|
175
|
+
* keys.
|
|
174
176
|
*/
|
|
175
177
|
function roleColumn(role, table, alias, options) {
|
|
176
178
|
if (!isRoleList(role)) return singleRole(role, table, alias, options);
|
|
@@ -253,7 +255,10 @@ function singleRole(role, table, alias, options) {
|
|
|
253
255
|
nullable: false
|
|
254
256
|
};
|
|
255
257
|
}
|
|
256
|
-
/**
|
|
258
|
+
/**
|
|
259
|
+
* The manifest entry of one role source: the column, and the roles table it
|
|
260
|
+
* references.
|
|
261
|
+
*/
|
|
257
262
|
function sourceManifest(column, through, map) {
|
|
258
263
|
if (map !== void 0) return {
|
|
259
264
|
column,
|
|
@@ -272,7 +277,10 @@ function sourceManifest(column, through, map) {
|
|
|
272
277
|
function columnManifest(role) {
|
|
273
278
|
return sourceManifest(role.column, role.through);
|
|
274
279
|
}
|
|
275
|
-
/**
|
|
280
|
+
/**
|
|
281
|
+
* The manifest entry of a role column, or one entry per source of a row with
|
|
282
|
+
* several.
|
|
283
|
+
*/
|
|
276
284
|
function roleManifest(role) {
|
|
277
285
|
if (!role.lateral) return sourceManifest(role.column, role.through, role.map);
|
|
278
286
|
return role.columns.map((column) => sourceManifest(column, role.throughs.find((through) => through.ref === column)));
|
|
@@ -284,7 +292,10 @@ const literal = quoteSqlLiteral;
|
|
|
284
292
|
function isFixed(roles) {
|
|
285
293
|
return Array.isArray(roles);
|
|
286
294
|
}
|
|
287
|
-
/**
|
|
295
|
+
/**
|
|
296
|
+
* A role column of the membership table, aliased `m`; a `through` column joins
|
|
297
|
+
* its roles table as `mk`.
|
|
298
|
+
*/
|
|
288
299
|
function memberRole(role, table, label, guard) {
|
|
289
300
|
return roleColumn(role, qualifySqlTable(table), "m", {
|
|
290
301
|
label,
|
|
@@ -292,7 +303,10 @@ function memberRole(role, table, label, guard) {
|
|
|
292
303
|
...guard === void 0 ? {} : { guard }
|
|
293
304
|
});
|
|
294
305
|
}
|
|
295
|
-
/**
|
|
306
|
+
/**
|
|
307
|
+
* The user of the membership table, aliased `m`; a `through` user joins its
|
|
308
|
+
* table as `mu`.
|
|
309
|
+
*/
|
|
296
310
|
function memberUser(user, table, label) {
|
|
297
311
|
const column = roleColumn(user, qualifySqlTable(table), "m", {
|
|
298
312
|
label,
|
|
@@ -384,9 +398,10 @@ function sourceOf(sql, query) {
|
|
|
384
398
|
}
|
|
385
399
|
/**
|
|
386
400
|
* `ctx.postgres` (from `withPostgresClient`) or `ctx.postgresAdmin` as a
|
|
387
|
-
* `SqlQuery` for `tableMembershipSource`, `junctionMembershipSource` and
|
|
388
|
-
* `ctx.postgres` runs as the caller under RLS, so the
|
|
389
|
-
* be readable by `authenticated`; `ctx.postgresAdmin`
|
|
401
|
+
* `SqlQuery` for `tableMembershipSource`, `junctionMembershipSource` and
|
|
402
|
+
* `supabaseApprovalStore`. `ctx.postgres` runs as the caller under RLS, so the
|
|
403
|
+
* membership tables must be readable by `authenticated`; `ctx.postgresAdmin`
|
|
404
|
+
* bypasses RLS.
|
|
390
405
|
*/
|
|
391
406
|
function optionalColumn(name, cast) {
|
|
392
407
|
return name === void 0 ? `null::${cast}` : `${col(name)}::${cast}`;
|
|
@@ -396,9 +411,9 @@ function supabasePostgresQuery(postgres) {
|
|
|
396
411
|
}
|
|
397
412
|
/**
|
|
398
413
|
* Memberships from one table holding every scope: a row per user, scope,
|
|
399
|
-
* instance and role (`user_id, scope, scope_id, role`), with optional
|
|
400
|
-
* `
|
|
401
|
-
*
|
|
414
|
+
* instance and role (`user_id, scope, scope_id, role`), with optional `within`,
|
|
415
|
+
* `via`, expiry, owner and seat columns. Rows of the same instance merge into
|
|
416
|
+
* one membership.
|
|
402
417
|
*/
|
|
403
418
|
function tableMembershipSource(options) {
|
|
404
419
|
return tableSource(options, void 0);
|
|
@@ -604,12 +619,15 @@ function junctionSource(options, guard) {
|
|
|
604
619
|
}
|
|
605
620
|
const AUTHZ_VERSION_TABLE = "permdock_authz_version";
|
|
606
621
|
/**
|
|
607
|
-
* The default schema of everything PermDock generates: helpers, seeds, the
|
|
608
|
-
*
|
|
609
|
-
*
|
|
622
|
+
* The default schema of everything PermDock generates: helpers, seeds, the RBAC
|
|
623
|
+
* scaffold, the hook and the version table. Keep it out of the Data API's
|
|
624
|
+
* exposed schemas, so the `security definer` functions are not RPCs.
|
|
610
625
|
*/
|
|
611
626
|
const PERMDOCK_SCHEMA = "permdock";
|
|
612
|
-
/**
|
|
627
|
+
/**
|
|
628
|
+
* Where `supabase.hook.api` puts the PostgREST wrappers, and the prefix of
|
|
629
|
+
* their names.
|
|
630
|
+
*/
|
|
613
631
|
const HOOK_API_SCHEMA = "public";
|
|
614
632
|
const HOOK_API_PREFIX = "permdock_";
|
|
615
633
|
/** The wrapper function names of `supabase.hook.api` for `prefix`. */
|
|
@@ -622,7 +640,8 @@ function hookApiNames(prefix = HOOK_API_PREFIX) {
|
|
|
622
640
|
}
|
|
623
641
|
/**
|
|
624
642
|
* Reads the authorization version `permdock supabase hook generate` keeps in
|
|
625
|
-
* `<schema>.permdock_authz_version`: pass it to `claimsFirst(sources, { version
|
|
643
|
+
* `<schema>.permdock_authz_version`: pass it to `claimsFirst(sources, { version
|
|
644
|
+
* })`.
|
|
626
645
|
*/
|
|
627
646
|
function authzVersion(options) {
|
|
628
647
|
const table = quoteQualifiedTable(`${options.schema ?? "permdock"}.${AUTHZ_VERSION_TABLE}`);
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
//#region src/core/sql.ts
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The rows of a `SqlQuery` result, whichever of its two shapes the driver
|
|
4
|
+
* resolved.
|
|
5
|
+
*/
|
|
3
6
|
function sqlRows(result) {
|
|
4
7
|
return Array.isArray(result) ? result : result.rows;
|
|
5
8
|
}
|
|
6
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* A bare Postgres identifier PermDock emits unquoted-safe: letters, digits and
|
|
11
|
+
* `_`, not starting with a digit.
|
|
12
|
+
*/
|
|
7
13
|
const SQL_IDENT = /^[A-Za-z_][A-Za-z0-9_]*$/u;
|
|
8
14
|
/** A validated, double-quoted identifier; anything outside `SQL_IDENT` throws. */
|
|
9
15
|
function quoteSqlIdent(name, prefix = "PermDock") {
|
|
@@ -17,21 +23,33 @@ function quoteSqlTable(name, prefix = "PermDock") {
|
|
|
17
23
|
function quoteSqlLiteral(value) {
|
|
18
24
|
return `'${value.replaceAll("'", "''")}'`;
|
|
19
25
|
}
|
|
20
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* A double-quoted identifier read back from a database, embedded quotes doubled
|
|
28
|
+
* rather than refused.
|
|
29
|
+
*/
|
|
21
30
|
function escapeSqlIdent(name) {
|
|
22
31
|
return `"${name.replaceAll("\"", "\"\"")}"`;
|
|
23
32
|
}
|
|
24
33
|
const PLAIN_IDENT = /^[a-z_][a-z0-9_]*$/u;
|
|
25
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* An identifier left bare when it is already lower snake case, otherwise quoted
|
|
36
|
+
* by `escapeSqlIdent`.
|
|
37
|
+
*/
|
|
26
38
|
function sqlIdent(name) {
|
|
27
39
|
return PLAIN_IDENT.test(name) ? name : escapeSqlIdent(name);
|
|
28
40
|
}
|
|
29
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* The plain-identifier check behind `quoteSqlIdent`, returning the name
|
|
43
|
+
* unquoted.
|
|
44
|
+
*/
|
|
30
45
|
function assertSqlIdent(name, prefix = "PermDock") {
|
|
31
46
|
if (!SQL_IDENT.test(name)) throw new TypeError(`${prefix}: unsafe SQL identifier '${name}'`);
|
|
32
47
|
return name;
|
|
33
48
|
}
|
|
34
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* `name` with `public.` added when it names no schema; generated functions run
|
|
51
|
+
* with `search_path = ''`.
|
|
52
|
+
*/
|
|
35
53
|
function qualifySqlTable(name) {
|
|
36
54
|
return name.includes(".") ? name : `public.${name}`;
|
|
37
55
|
}
|
|
@@ -43,7 +61,10 @@ function quoteQualifiedTable(name, prefix = "PermDock") {
|
|
|
43
61
|
function sqlTextArray(values) {
|
|
44
62
|
return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteSqlLiteral).join(", ")}]::text[]`;
|
|
45
63
|
}
|
|
46
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* The SQL command a default verb runs: `read`, `list` and `get` select,
|
|
66
|
+
* `create` inserts, `update` and `delete` keep their name.
|
|
67
|
+
*/
|
|
47
68
|
function defaultSqlCommand(action) {
|
|
48
69
|
switch (action) {
|
|
49
70
|
case "read":
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/core/sql.d.ts
|
|
2
2
|
/**
|
|
3
|
-
* Runs one parameterised statement: `pg`'s `client.query` (which resolves
|
|
4
|
-
*
|
|
3
|
+
* Runs one parameterised statement: `pg`'s `client.query` (which resolves `{
|
|
4
|
+
* rows }`) and `postgres`'s `sql.unsafe` (which resolves the rows) both fit.
|
|
5
5
|
*/
|
|
6
6
|
type SqlQuery = (text: string, values: readonly unknown[]) => Promise<readonly Record<string, unknown>[] | {
|
|
7
7
|
readonly rows: readonly Record<string, unknown>[];
|