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,17 +1,23 @@
|
|
|
1
|
-
import { lr as Subject } from "./policy-types-
|
|
2
|
-
import { m as ApprovalStore } from "./types-
|
|
3
|
-
import { t as InstanceOptions } from "./instance-options-
|
|
1
|
+
import { lr as Subject } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { m as ApprovalStore } from "./types-B_tiYvk8.js";
|
|
3
|
+
import { t as InstanceOptions } from "./instance-options-B0KXqTrJ.js";
|
|
4
4
|
import { t as RequestContext } from "./request-context-C2_1lchh.js";
|
|
5
|
-
import { n as PermDockWrap } from "./wrap-
|
|
6
|
-
import { o as OtelWrap } from "./types-
|
|
7
|
-
import { r as PdpFactory } from "./types-
|
|
8
|
-
import { S as TenantOption, _ as WebBotAuthVerifier, t as DeniedResponse } from "./server-types-
|
|
5
|
+
import { n as PermDockWrap } from "./wrap-DlJE3gS_.js";
|
|
6
|
+
import { o as OtelWrap } from "./types-DHKPcqzr.js";
|
|
7
|
+
import { r as PdpFactory } from "./types-B4uqKDnp.js";
|
|
8
|
+
import { S as TenantOption, _ as WebBotAuthVerifier, t as DeniedResponse } from "./server-types-CIlpSA2G.js";
|
|
9
9
|
//#region src/server/bind.d.ts
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* The options of every framework adapter; `TContext` is what its callbacks
|
|
12
|
+
* receive.
|
|
13
|
+
*/
|
|
11
14
|
type ServerAdapterOptions<TContext, TUser = unknown> = InstanceOptions & ServerAdapterServices & {
|
|
12
15
|
/** The user, or a full `Subject` (core then skips `policy.subject`). */
|
|
13
16
|
readonly subject: (context: TContext) => TUser | Subject | Promise<TUser | Subject>;
|
|
14
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* The agent or service acting for the subject; anything but an `Actor` is
|
|
19
|
+
* ignored.
|
|
20
|
+
*/
|
|
15
21
|
readonly actor?: (context: TContext) => unknown;
|
|
16
22
|
readonly tenant?: TenantOption<TContext>;
|
|
17
23
|
/**
|
|
@@ -23,15 +29,24 @@ type ServerAdapterOptions<TContext, TUser = unknown> = InstanceOptions & ServerA
|
|
|
23
29
|
/** The services an adapter hands to its kernel unchanged. */
|
|
24
30
|
type ServerAdapterServices = {
|
|
25
31
|
readonly store?: ApprovalStore;
|
|
26
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* `getPermDock` from `permdock/pdp`; `protect` then decides delegated
|
|
34
|
+
* permissions remotely.
|
|
35
|
+
*/
|
|
27
36
|
readonly pdp?: PdpFactory;
|
|
28
37
|
/** `(permdock) => withOtel(permdock, options)` from `permdock/otel`. */
|
|
29
38
|
readonly otel?: OtelWrap;
|
|
30
39
|
/** `webBotAuthVerifier(options)`; a verified bot becomes the actor. */
|
|
31
40
|
readonly webBotAuth?: WebBotAuthVerifier;
|
|
32
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Wraps each instance after `otel`; build it with `wrapPermDock` to cover
|
|
43
|
+
* derived instances.
|
|
44
|
+
*/
|
|
33
45
|
readonly wrap?: PermDockWrap;
|
|
34
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Replaces the response of a refused guard; it can never turn a refusal into
|
|
48
|
+
* a grant.
|
|
49
|
+
*/
|
|
35
50
|
readonly deniedResponse?: DeniedResponse;
|
|
36
51
|
};
|
|
37
52
|
//#endregion
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { l as withApp } from "./permdock-
|
|
3
|
-
import { t as composeWraps } from "./wrap-
|
|
4
|
-
import { r as instanceOptions } from "./build-instance-
|
|
5
|
-
import { f as invalidSignatureResponse } from "./evaluations-
|
|
6
|
-
import { n as tenantScope } from "./adapter-context-
|
|
7
|
-
import { t as createPermDock } from "./create-
|
|
2
|
+
import { l as withApp } from "./permdock-L-_I_3zP.js";
|
|
3
|
+
import { t as composeWraps } from "./wrap-B2wziJI_.js";
|
|
4
|
+
import { r as instanceOptions } from "./build-instance-CNWaYJyr.js";
|
|
5
|
+
import { f as invalidSignatureResponse } from "./evaluations-IBceAeKT.js";
|
|
6
|
+
import { n as tenantScope } from "./adapter-context-CIQpQxbE.js";
|
|
7
|
+
import { t as createPermDock } from "./create-_noSrY1T.js";
|
|
8
8
|
//#region src/server/bind.ts
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* The server kernel with the subject and actor callbacks reading the context
|
|
11
|
+
* `contextOf` maps a `Request` to.
|
|
12
|
+
*/
|
|
10
13
|
function adapterKernel(policy, options, adapter, contextOf) {
|
|
11
14
|
return createPermDock(policy, compact({
|
|
12
15
|
subject: (request) => {
|
|
@@ -74,7 +77,10 @@ function bindKernel(policy, given, adapter, toRequest) {
|
|
|
74
77
|
guard
|
|
75
78
|
};
|
|
76
79
|
}
|
|
77
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* The instance `build` resolves; an invalid Web Bot Auth signature is its `401`
|
|
82
|
+
* response.
|
|
83
|
+
*/
|
|
78
84
|
async function attached(build) {
|
|
79
85
|
try {
|
|
80
86
|
return {
|
|
@@ -90,14 +96,20 @@ async function attached(build) {
|
|
|
90
96
|
};
|
|
91
97
|
}
|
|
92
98
|
}
|
|
93
|
-
/**
|
|
99
|
+
/**
|
|
100
|
+
* Sets `permdock`, and `permdockData` when a loader returned a row, on a
|
|
101
|
+
* framework request or context.
|
|
102
|
+
*/
|
|
94
103
|
function decorate(target, instance, data) {
|
|
95
104
|
Object.assign(target, data === void 0 ? { permdock: instance } : {
|
|
96
105
|
permdock: instance,
|
|
97
106
|
permdockData: data
|
|
98
107
|
});
|
|
99
108
|
}
|
|
100
|
-
/**
|
|
109
|
+
/**
|
|
110
|
+
* One connection per socket: every handler of `socket` gets the promise the
|
|
111
|
+
* first one opened.
|
|
112
|
+
*/
|
|
101
113
|
function socketConnection(sockets, socket, open) {
|
|
102
114
|
const hit = sockets.get(socket);
|
|
103
115
|
if (hit !== void 0) return hit;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { o as statusProblem } from "./problem-details-
|
|
2
|
-
import { t as MAX_BODY_BYTES } from "./body-text-
|
|
3
|
-
import {
|
|
1
|
+
import { o as statusProblem } from "./problem-details-CLDgX1KV.js";
|
|
2
|
+
import { t as MAX_BODY_BYTES } from "./body-text-DQhcmqdY.js";
|
|
3
|
+
import { l as problemResponse } from "./problem-BVLHFK33.js";
|
|
4
4
|
//#region src/server/body.ts
|
|
5
5
|
/** The 413 Problem Details for a body over `maxBytes`. */
|
|
6
6
|
function bodyTooLarge(maxBytes = MAX_BODY_BYTES) {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
//#region src/server/body-text.ts
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The largest request body PermDock reads when a handler sets no smaller cap: 1
|
|
4
|
+
* MiB.
|
|
5
|
+
*/
|
|
3
6
|
const MAX_BODY_BYTES = 1048576;
|
|
4
7
|
/**
|
|
5
|
-
* The request or response body as UTF-8 text, read until `maxBytes` and no
|
|
6
|
-
* `Content-Length` above the cap is refused before the body is
|
|
7
|
-
* that runs past the cap whatever its header says is cancelled
|
|
8
|
+
* The request or response body as UTF-8 text, read until `maxBytes` and no
|
|
9
|
+
* further. A `Content-Length` above the cap is refused before the body is
|
|
10
|
+
* touched; a body that runs past the cap whatever its header says is cancelled
|
|
11
|
+
* mid-stream.
|
|
8
12
|
*/
|
|
9
13
|
async function readBodyText(request, maxBytes = MAX_BODY_BYTES) {
|
|
10
14
|
const declared = request.headers.get("content-length");
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { r as parsePermDockDigest } from "./digest-BI-6aa6d.js";
|
|
2
2
|
//#region src/client/boundary.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The digest of a PermDock error (`PermDockDeniedError`,
|
|
5
|
+
* `PermDockApprovalRequiredError`); `null` for any other error.
|
|
6
|
+
*/
|
|
4
7
|
function boundaryDigest(error) {
|
|
5
8
|
if (error === null || typeof error !== "object" || !("digest" in error)) return null;
|
|
6
9
|
return parsePermDockDigest(error.digest);
|
|
7
10
|
}
|
|
8
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* What a boundary renders for `digest`: `approval` for an approval request when
|
|
13
|
+
* given, otherwise `denied`.
|
|
14
|
+
*/
|
|
9
15
|
function boundaryFallback(digest, fallbacks) {
|
|
10
16
|
return digest.outcome === "approval-required" ? fallbacks.approval ?? fallbacks.denied : fallbacks.denied;
|
|
11
17
|
}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
import { t as PermDockDigest } from "./digest-
|
|
1
|
+
import { t as PermDockDigest } from "./digest-8Yx2CchM.js";
|
|
2
2
|
//#region src/client/boundary.d.ts
|
|
3
3
|
type PermissionBoundaryState = PermDockDigest & {
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Renders the boundary's children again, e.g. after an approval or a role
|
|
6
|
+
* change.
|
|
7
|
+
*/
|
|
5
8
|
readonly retry: () => void;
|
|
6
9
|
};
|
|
7
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* The digest of a PermDock error (`PermDockDeniedError`,
|
|
12
|
+
* `PermDockApprovalRequiredError`); `null` for any other error.
|
|
13
|
+
*/
|
|
8
14
|
declare function boundaryDigest(error: unknown): PermDockDigest | null;
|
|
9
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* What a boundary renders for `digest`: `approval` for an approval request when
|
|
17
|
+
* given, otherwise `denied`.
|
|
18
|
+
*/
|
|
10
19
|
declare function boundaryFallback<T>(digest: PermDockDigest, fallbacks: {
|
|
11
20
|
readonly denied?: T | undefined;
|
|
12
21
|
readonly approval?: T | undefined;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
//#region src/supabase/budget.ts
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The default size budget, in bytes of JSON, for the hook's `memberships`
|
|
4
|
+
* claim: about 15 UUID-keyed single-role memberships.
|
|
5
|
+
*/
|
|
3
6
|
const supabaseMembershipsBudget = 1024;
|
|
4
7
|
/**
|
|
5
|
-
* The default claim that carries the active first-scope id: the hook writes
|
|
6
|
-
*
|
|
8
|
+
* The default claim that carries the active first-scope id: the hook writes it,
|
|
9
|
+
* `subjectFromSupabase` reads it, and the RLS helpers compare with it.
|
|
7
10
|
* `rls.tenantClaim` and the `tenant` option change it.
|
|
8
11
|
*/
|
|
9
12
|
const supabaseTenantClaim = "tenant_id";
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
//#region src/supabase/budget.d.ts
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The default size budget, in bytes of JSON, for the hook's `memberships`
|
|
4
|
+
* claim: about 15 UUID-keyed single-role memberships.
|
|
5
|
+
*/
|
|
3
6
|
declare const supabaseMembershipsBudget = 1024;
|
|
4
7
|
/**
|
|
5
|
-
* The default claim that carries the active first-scope id: the hook writes
|
|
6
|
-
*
|
|
8
|
+
* The default claim that carries the active first-scope id: the hook writes it,
|
|
9
|
+
* `subjectFromSupabase` reads it, and the RLS helpers compare with it.
|
|
7
10
|
* `rls.tenantClaim` and the `tenant` option change it.
|
|
8
11
|
*/
|
|
9
12
|
declare const supabaseTenantClaim = "tenant_id";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { t as getPermDock } from "./permdock-
|
|
2
|
+
import { t as getPermDock } from "./permdock-L-_I_3zP.js";
|
|
3
3
|
//#region src/core/instance-options.ts
|
|
4
4
|
const INSTANCE_KEYS = {
|
|
5
5
|
memberships: true,
|
|
@@ -24,8 +24,8 @@ function instanceOptions(options) {
|
|
|
24
24
|
//#endregion
|
|
25
25
|
//#region src/core/build-instance.ts
|
|
26
26
|
/**
|
|
27
|
-
* `resolve()`, or `null` when it throws: a subject or delegation that cannot
|
|
28
|
-
*
|
|
27
|
+
* `resolve()`, or `null` when it throws: a subject or delegation that cannot be
|
|
28
|
+
* resolved is absent. `rethrow` sees the error first, so a framework's
|
|
29
29
|
* control-flow throws (Next.js `redirect`, `notFound`) pass through.
|
|
30
30
|
*/
|
|
31
31
|
async function resolveOrNull(resolve, rethrow) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { a as ownRecord } from "./paths-
|
|
4
|
-
import { a as isId, o as sameId, r as idList, t as expiredAt } from "./expiry-
|
|
5
|
-
import { c as listPermissions } from "./permission-registry-
|
|
6
|
-
import { o as epochSeconds, p as nowSeconds } from "./time-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { a as ownRecord } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { a as isId, o as sameId, r as idList, t as expiredAt } from "./expiry-6XByK0dm.js";
|
|
5
|
+
import { c as listPermissions } from "./permission-registry-B8tYxPIt.js";
|
|
6
|
+
import { o as epochSeconds, p as nowSeconds } from "./time-nR1JesoH.js";
|
|
7
7
|
import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
|
|
8
8
|
//#region src/core/capability.ts
|
|
9
9
|
function redeemerKind(redeemer) {
|
|
@@ -11,9 +11,9 @@ function redeemerKind(redeemer) {
|
|
|
11
11
|
return "user" in redeemer ? "user" : "scope";
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* The first rule of `policy` the capability breaks, or `undefined`. A
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* The first rule of `policy` the capability breaks, or `undefined`. A lifetime
|
|
15
|
+
* rule without a known `issuedAt`, or one that is not a finite non-negative
|
|
16
|
+
* number, is broken: the check fails closed.
|
|
17
17
|
*/
|
|
18
18
|
function linkPolicyViolation(capability, policy, issuedAt) {
|
|
19
19
|
const policies = Array.isArray(policy) ? policy : [policy];
|
|
@@ -40,8 +40,8 @@ function parseConfirmation(input) {
|
|
|
40
40
|
return typeof jkt === "string" && /^[\w-]{43}$/u.test(jkt) ? { jkt } : void 0;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
|
-
* Validates a verified capability (a claim plus `id`, `expiresAt` and
|
|
44
|
-
*
|
|
43
|
+
* Validates a verified capability (a claim plus `id`, `expiresAt` and an
|
|
44
|
+
* optional `cnf`) and returns a frozen copy, or `undefined`.
|
|
45
45
|
*/
|
|
46
46
|
function parseCapability(input) {
|
|
47
47
|
const value = ownRecord(input);
|
|
@@ -59,9 +59,9 @@ function parseCapability(input) {
|
|
|
59
59
|
}));
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
* The capability verified claims carry: the `capability` claim, `sub` as
|
|
63
|
-
* `
|
|
64
|
-
*
|
|
62
|
+
* The capability verified claims carry: the `capability` claim, `sub` as `id`,
|
|
63
|
+
* `exp` as `expiresAt` and the RFC 7800 `cnf`. `undefined` when any of them is
|
|
64
|
+
* missing or malformed.
|
|
65
65
|
*/
|
|
66
66
|
function capabilityFromClaims(claims) {
|
|
67
67
|
const claim = parseCapabilityClaim(claims["capability"]);
|
|
@@ -76,9 +76,9 @@ function capabilityFromClaims(claims) {
|
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
|
-
* Validates an untrusted `capability` claim and returns a frozen copy with
|
|
80
|
-
*
|
|
81
|
-
*
|
|
79
|
+
* Validates an untrusted `capability` claim and returns a frozen copy with only
|
|
80
|
+
* the v1 fields, or `undefined`. Unknown fields are dropped; a wrong type in a
|
|
81
|
+
* known field rejects the whole claim.
|
|
82
82
|
*/
|
|
83
83
|
function parseCapabilityClaim(input) {
|
|
84
84
|
const value = ownRecord(input);
|
|
@@ -112,7 +112,10 @@ function resourceName(resource) {
|
|
|
112
112
|
if (names.size !== 1 || name === void 0) throw new Error("PermDock: capability on.resource must name exactly one resource");
|
|
113
113
|
return name;
|
|
114
114
|
}
|
|
115
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Builds the v1 `Capability` for `input`; throws on an input no resolver would
|
|
117
|
+
* accept.
|
|
118
|
+
*/
|
|
116
119
|
function capabilityOf(input) {
|
|
117
120
|
const capability = parseCapability(compact({
|
|
118
121
|
v: 1,
|
|
@@ -133,9 +136,9 @@ function capabilityOf(input) {
|
|
|
133
136
|
return capability;
|
|
134
137
|
}
|
|
135
138
|
/**
|
|
136
|
-
* Signs a capability as a `vnd.permdock.capability+jwt`: `sub` is the link
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
+
* Signs a capability as a `vnd.permdock.capability+jwt`: `sub` is the link id,
|
|
140
|
+
* `exp` is `expiresAt`, `cnf` binds the redeemer's key, and the signer sets
|
|
141
|
+
* `iss`, `aud`, `iat` (`issuedAt`, else now) and a fresh `jti`.
|
|
139
142
|
*/
|
|
140
143
|
function signCapability(input, signer, options = {}) {
|
|
141
144
|
const capability = capabilityOf(input);
|
|
@@ -159,7 +162,10 @@ function holdsScope(membership, scope, id, now) {
|
|
|
159
162
|
if (membership.scope === scope && sameId(membership.id, id)) return true;
|
|
160
163
|
return scope === "tenant" && sameId(membership.tenant, id) || scope === "team" && sameId(membership.team, id);
|
|
161
164
|
}
|
|
162
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* Whether `viewer`, the request's own verified subject, may redeem a
|
|
167
|
+
* capability.
|
|
168
|
+
*/
|
|
163
169
|
function redeemerAllows(redeemer, viewer, now = epochSeconds()) {
|
|
164
170
|
if (redeemer === void 0 || redeemer === "anyone") return true;
|
|
165
171
|
const principal = viewer?.principal ?? null;
|
|
@@ -169,10 +175,10 @@ function redeemerAllows(redeemer, viewer, now = epochSeconds()) {
|
|
|
169
175
|
return (principal.memberships ?? []).some((membership) => holdsScope(membership, redeemer.scope, redeemer.id, now));
|
|
170
176
|
}
|
|
171
177
|
/**
|
|
172
|
-
* The subject a verified capability acts as: a `link` principal holding
|
|
173
|
-
*
|
|
174
|
-
* `permissions` when the capability lists them. A `key` holder resolves to
|
|
175
|
-
*
|
|
178
|
+
* The subject a verified capability acts as: a `link` principal holding `roles`
|
|
179
|
+
* on `on` and nothing else, with `delegation.scopes` narrowing it to
|
|
180
|
+
* `permissions` when the capability lists them. A `key` holder resolves to the
|
|
181
|
+
* anonymous subject until user-bound credentials ship.
|
|
176
182
|
*/
|
|
177
183
|
function capabilitySubject(capability, options = {}) {
|
|
178
184
|
if (capability.holder !== "link") return anonymousSubject();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Rt as Instant, sr as Principal, ut as TokenSigner } from "./policy-types-
|
|
2
|
-
import { f as PermissionTree, u as Permission } from "./permission-types-
|
|
1
|
+
import { Rt as Instant, sr as Principal, ut as TokenSigner } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
3
|
//#region src/core/capability.d.ts
|
|
4
4
|
/**
|
|
5
|
-
* Who may redeem a capability: anyone holding it, any signed-in principal,
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Who may redeem a capability: anyone holding it, any signed-in principal, one
|
|
6
|
+
* user, or a member of one scope instance. The viewer is the request's own
|
|
7
|
+
* verified subject, never a claim of the capability.
|
|
8
8
|
*/
|
|
9
9
|
type CapabilityRedeemer = "anyone" | "signed-in" | {
|
|
10
10
|
readonly user: string;
|
|
@@ -12,15 +12,18 @@ type CapabilityRedeemer = "anyone" | "signed-in" | {
|
|
|
12
12
|
readonly scope: string;
|
|
13
13
|
readonly id: string;
|
|
14
14
|
};
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* RFC 7800 confirmation: the SHA-256 JWK thumbprint (RFC 7638) of the key that
|
|
17
|
+
* must redeem it.
|
|
18
|
+
*/
|
|
16
19
|
type CapabilityConfirmation = {
|
|
17
20
|
readonly jkt: string;
|
|
18
21
|
};
|
|
19
22
|
/**
|
|
20
|
-
* Capability v1: the `capability` claim of a `vnd.permdock.capability+jwt`.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
23
|
+
* Capability v1: the `capability` claim of a `vnd.permdock.capability+jwt`. It
|
|
24
|
+
* holds `roles` on one resource instance (`on`, the `Membership.on` shape),
|
|
25
|
+
* optionally narrowed to `permissions` (keys). The link id is the token's `sub`
|
|
26
|
+
* and its expiry the token's `exp`; neither repeats here.
|
|
24
27
|
*/
|
|
25
28
|
type CapabilityClaim = {
|
|
26
29
|
readonly v: 1;
|
|
@@ -33,12 +36,15 @@ type CapabilityClaim = {
|
|
|
33
36
|
readonly roles: readonly string[];
|
|
34
37
|
readonly permissions?: readonly string[];
|
|
35
38
|
readonly redeemer?: CapabilityRedeemer;
|
|
36
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* One request per token: the resolver claims the token's `jti` in a
|
|
41
|
+
* `ReplayStore`.
|
|
42
|
+
*/
|
|
37
43
|
readonly once?: true;
|
|
38
44
|
};
|
|
39
45
|
/**
|
|
40
|
-
* A verified capability: the claim plus `id` (the token's `sub`, the handle
|
|
41
|
-
*
|
|
46
|
+
* A verified capability: the claim plus `id` (the token's `sub`, the handle an
|
|
47
|
+
* application revokes), `expiresAt` (its `exp`, Unix seconds, also the
|
|
42
48
|
* membership's `expiresAt`) and `cnf` when the token binds a redeemer key.
|
|
43
49
|
*/
|
|
44
50
|
type Capability = CapabilityClaim & {
|
|
@@ -62,7 +68,10 @@ type CapabilityInput = {
|
|
|
62
68
|
readonly once?: boolean;
|
|
63
69
|
/** `exp`, Unix seconds. */
|
|
64
70
|
readonly expiresAt: number;
|
|
65
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Binds the link to the key with this RFC 7638 thumbprint; redeeming it then
|
|
73
|
+
* needs a DPoP proof from that key.
|
|
74
|
+
*/
|
|
66
75
|
readonly cnf?: CapabilityConfirmation;
|
|
67
76
|
};
|
|
68
77
|
/**
|
|
@@ -72,7 +81,10 @@ type CapabilityInput = {
|
|
|
72
81
|
type LinkPolicy = {
|
|
73
82
|
/** Longest a link may live, in seconds from when it was issued. */
|
|
74
83
|
readonly maxLifetime?: number;
|
|
75
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Redeemer kinds allowed; `anyone` also covers a capability without
|
|
86
|
+
* `redeemer`.
|
|
87
|
+
*/
|
|
76
88
|
readonly redeemers?: readonly ("anyone" | "signed-in" | "user" | "scope")[];
|
|
77
89
|
/** Every link must be one-time. */
|
|
78
90
|
readonly once?: boolean;
|
|
@@ -86,32 +98,32 @@ type CapabilityOptions = {
|
|
|
86
98
|
readonly linkPolicy?: LinkPolicy | readonly LinkPolicy[];
|
|
87
99
|
};
|
|
88
100
|
/**
|
|
89
|
-
* The first rule of `policy` the capability breaks, or `undefined`. A
|
|
90
|
-
*
|
|
91
|
-
*
|
|
101
|
+
* The first rule of `policy` the capability breaks, or `undefined`. A lifetime
|
|
102
|
+
* rule without a known `issuedAt`, or one that is not a finite non-negative
|
|
103
|
+
* number, is broken: the check fails closed.
|
|
92
104
|
*/
|
|
93
105
|
declare function linkPolicyViolation(capability: Capability, policy: LinkPolicy | readonly LinkPolicy[], issuedAt: number | undefined): LinkPolicyViolation | undefined;
|
|
94
106
|
/**
|
|
95
|
-
* Validates a verified capability (a claim plus `id`, `expiresAt` and
|
|
96
|
-
*
|
|
107
|
+
* Validates a verified capability (a claim plus `id`, `expiresAt` and an
|
|
108
|
+
* optional `cnf`) and returns a frozen copy, or `undefined`.
|
|
97
109
|
*/
|
|
98
110
|
declare function parseCapability(input: unknown): Capability | undefined;
|
|
99
111
|
/**
|
|
100
|
-
* The capability verified claims carry: the `capability` claim, `sub` as
|
|
101
|
-
* `
|
|
102
|
-
*
|
|
112
|
+
* The capability verified claims carry: the `capability` claim, `sub` as `id`,
|
|
113
|
+
* `exp` as `expiresAt` and the RFC 7800 `cnf`. `undefined` when any of them is
|
|
114
|
+
* missing or malformed.
|
|
103
115
|
*/
|
|
104
116
|
declare function capabilityFromClaims(claims: Readonly<Record<string, unknown>>): Capability | undefined;
|
|
105
117
|
/**
|
|
106
|
-
* Validates an untrusted `capability` claim and returns a frozen copy with
|
|
107
|
-
*
|
|
108
|
-
*
|
|
118
|
+
* Validates an untrusted `capability` claim and returns a frozen copy with only
|
|
119
|
+
* the v1 fields, or `undefined`. Unknown fields are dropped; a wrong type in a
|
|
120
|
+
* known field rejects the whole claim.
|
|
109
121
|
*/
|
|
110
122
|
declare function parseCapabilityClaim(input: unknown): CapabilityClaim | undefined;
|
|
111
123
|
/**
|
|
112
|
-
* Signs a capability as a `vnd.permdock.capability+jwt`: `sub` is the link
|
|
113
|
-
*
|
|
114
|
-
*
|
|
124
|
+
* Signs a capability as a `vnd.permdock.capability+jwt`: `sub` is the link id,
|
|
125
|
+
* `exp` is `expiresAt`, `cnf` binds the redeemer's key, and the signer sets
|
|
126
|
+
* `iss`, `aud`, `iat` (`issuedAt`, else now) and a fresh `jti`.
|
|
115
127
|
*/
|
|
116
128
|
declare function signCapability(input: CapabilityInput, signer: TokenSigner, options?: CapabilityOptions): Promise<string>;
|
|
117
129
|
//#endregion
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { a as nonEmptyOr } from "./output-tkju6U7R.js";
|
|
2
|
+
import { t as applyFiles } from "./files-B3AA05f1.js";
|
|
3
|
+
import { n as isIdentifier, t as emitPolicyModule } from "./policy-module-xym9fnSq.js";
|
|
3
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
5
|
import { resolve } from "node:path";
|
|
5
6
|
//#region src/cli/importers/casbin.ts
|
|
@@ -55,7 +56,7 @@ function readCasbinModel(text) {
|
|
|
55
56
|
if (policy.slice(0, expected.length).join(",") !== expected.join(",") || policy.length !== expected.length && !withEffect) return { refused: `p = ${policy.join(", ")}: casbin import reads p = ${expected.join(", ")}[, eft]` };
|
|
56
57
|
const terms = (model.get("matchers")?.get("m") ?? "").replaceAll(/\s+/gu, "").split("&&").filter((term) => term !== "");
|
|
57
58
|
const unsupported = terms.filter((term) => !MATCHER_TERMS.has(term));
|
|
58
|
-
if (terms.length === 0 || unsupported.length > 0) return { refused: `the matcher has terms casbin import cannot read: ${unsupported.join(" && ")
|
|
59
|
+
if (terms.length === 0 || unsupported.length > 0) return { refused: `the matcher has terms casbin import cannot read: ${nonEmptyOr(unsupported.join(" && "), "(empty)")}; it reads g(r.sub, p.sub[, r.dom]), r.dom == p.dom, r.obj == p.obj and r.act == p.act` };
|
|
59
60
|
const effect = (model.get("policy_effect")?.get("e") ?? "").replaceAll(/\s+/gu, "");
|
|
60
61
|
const allowOnly = effect === "some(where(p.eft==allow))";
|
|
61
62
|
const denyOverrides = effect === "some(where(p.eft==allow))&&!some(where(p.eft==deny))";
|
|
@@ -78,7 +79,10 @@ function policyLines(text) {
|
|
|
78
79
|
}
|
|
79
80
|
return lines;
|
|
80
81
|
}
|
|
81
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Every grant `role` holds through `g` role-to-role lines, its own included; a
|
|
84
|
+
* cycle stops.
|
|
85
|
+
*/
|
|
82
86
|
function inherited(role, own, parents) {
|
|
83
87
|
const seen = /* @__PURE__ */ new Set();
|
|
84
88
|
const grants = [];
|
|
@@ -195,17 +199,21 @@ function runCasbinImport(input) {
|
|
|
195
199
|
output: "casbin import needs --out <file>"
|
|
196
200
|
};
|
|
197
201
|
const modelText = readText(input.cwd, "--model", input.model);
|
|
202
|
+
if (typeof modelText !== "string") return {
|
|
203
|
+
code: 2,
|
|
204
|
+
output: modelText.error
|
|
205
|
+
};
|
|
198
206
|
const policyText = readText(input.cwd, "--policy", input.policy);
|
|
199
|
-
|
|
207
|
+
if (typeof policyText !== "string") return {
|
|
200
208
|
code: 2,
|
|
201
|
-
output:
|
|
209
|
+
output: policyText.error
|
|
202
210
|
};
|
|
203
|
-
const model = readCasbinModel(
|
|
211
|
+
const model = readCasbinModel(modelText);
|
|
204
212
|
if ("refused" in model) return {
|
|
205
213
|
code: 2,
|
|
206
214
|
output: `casbin import --model: ${model.refused}`
|
|
207
215
|
};
|
|
208
|
-
const imported = importCasbin(model,
|
|
216
|
+
const imported = importCasbin(model, policyText);
|
|
209
217
|
applyFiles(input.cwd, [{
|
|
210
218
|
path: input.out,
|
|
211
219
|
text: emitPolicyModule({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { c as given, l as outFlag, o as fileOut } from "./flags-
|
|
2
|
+
import { c as given, l as outFlag, o as fileOut } from "./flags-DXjoTVbS.js";
|
|
3
3
|
//#region src/cli/commands/casbin.ts
|
|
4
4
|
const casbinImport = defineLeaf({
|
|
5
5
|
flags: {
|
|
@@ -16,7 +16,7 @@ const casbinImport = defineLeaf({
|
|
|
16
16
|
...outFlag
|
|
17
17
|
},
|
|
18
18
|
async run(ctx, { flags }) {
|
|
19
|
-
const { runCasbinImport } = await import("./casbin-
|
|
19
|
+
const { runCasbinImport } = await import("./casbin-H0rKxBx2.js");
|
|
20
20
|
return runCasbinImport({
|
|
21
21
|
cwd: ctx.cwd,
|
|
22
22
|
model: given(flags.model),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { c as given, l as outFlag, o as fileOut } from "./flags-
|
|
2
|
+
import { c as given, l as outFlag, o as fileOut } from "./flags-DXjoTVbS.js";
|
|
3
3
|
//#region src/cli/commands/casl.ts
|
|
4
4
|
const caslImport = defineLeaf({
|
|
5
5
|
flags: {
|
|
@@ -11,7 +11,7 @@ const caslImport = defineLeaf({
|
|
|
11
11
|
...outFlag
|
|
12
12
|
},
|
|
13
13
|
async run(ctx, { flags }) {
|
|
14
|
-
const { runCaslImport } = await import("./casl-
|
|
14
|
+
const { runCaslImport } = await import("./casl-CHHoCldP.js");
|
|
15
15
|
return runCaslImport({
|
|
16
16
|
cwd: ctx.cwd,
|
|
17
17
|
rules: given(flags.rules),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { t as applyFiles } from "./files-
|
|
3
|
-
import { n as isIdentifier, t as emitPolicyModule } from "./policy-module-
|
|
2
|
+
import { t as applyFiles } from "./files-B3AA05f1.js";
|
|
3
|
+
import { n as isIdentifier, t as emitPolicyModule } from "./policy-module-xym9fnSq.js";
|
|
4
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
5
5
|
import { resolve } from "node:path";
|
|
6
6
|
//#region src/cli/importers/casl.ts
|
|
@@ -32,7 +32,10 @@ function isStrings(value) {
|
|
|
32
32
|
function split(item) {
|
|
33
33
|
return typeof item === "string" && item.includes(",") ? item.split(",") : item;
|
|
34
34
|
}
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* A rule in either shape: the object form, or `packRules`' `[action, subject,
|
|
37
|
+
* conditions, inverted, fields]`.
|
|
38
|
+
*/
|
|
36
39
|
function readRule(value) {
|
|
37
40
|
if (Array.isArray(value)) {
|
|
38
41
|
const [action, subject, conditions, inverted, fields] = value;
|
|
@@ -79,7 +82,10 @@ function readValue(value) {
|
|
|
79
82
|
}
|
|
80
83
|
return { unsupported: "a nested object value" };
|
|
81
84
|
}
|
|
82
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* The Mongo-query subset CASL conditions use, as a `where`; anything else is
|
|
87
|
+
* reported by name.
|
|
88
|
+
*/
|
|
83
89
|
function readConditions(conditions) {
|
|
84
90
|
const parts = [];
|
|
85
91
|
for (const [key, value] of Object.entries(conditions)) {
|
|
@@ -143,11 +149,11 @@ function collectActions(rule, subjects, actionsBySubject) {
|
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
/**
|
|
146
|
-
* CASL rules per role, as PermDock roles: `inverted` rules are denies,
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
152
|
+
* CASL rules per role, as PermDock roles: `inverted` rules are denies, `manage`
|
|
153
|
+
* and `all` expand to every action and subject the rules name, and conditions
|
|
154
|
+
* in the portable Mongo-query subset become `where`. A deny whose condition
|
|
155
|
+
* does not import keeps its effect without the condition, so the import can
|
|
156
|
+
* only deny more, never less.
|
|
151
157
|
*/
|
|
152
158
|
function importCasl(rulesByRole) {
|
|
153
159
|
const parsed = [];
|
|
@@ -249,7 +255,10 @@ function importCasl(rulesByRole) {
|
|
|
249
255
|
skipped
|
|
250
256
|
};
|
|
251
257
|
}
|
|
252
|
-
/**
|
|
258
|
+
/**
|
|
259
|
+
* `permdock casl import`: CASL rules per role into a `permissions` and `policy`
|
|
260
|
+
* module.
|
|
261
|
+
*/
|
|
253
262
|
function runCaslImport(input) {
|
|
254
263
|
if (input.rules === void 0 || input.out === void 0) return {
|
|
255
264
|
code: 2,
|