permdock 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +8 -8
- package/dist/action-result-BcudBQOF.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-Ch07MdxN.js} +5 -5
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +19 -13
- package/dist/ai-sdk/index.js +6 -6
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +6 -6
- package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-ClrF3PVb.js → arazzo-BpS7LnV0.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.js} +6 -6
- package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-BrMs8c4o.js → audience-DTjR8xet.js} +8 -8
- package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
- package/dist/authzen/index.d.ts +34 -28
- package/dist/authzen/index.js +23 -20
- package/dist/{automation-DOtAFWdy.d.ts → automation-C6Jg75xq.d.ts} +42 -32
- package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +357 -227
- package/dist/better-supabase/index.js +219 -140
- package/dist/{bind-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
- package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-DxE7czo9.js → build-instance-BWXqwQYU.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
- package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
- package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
- package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +51 -30
- package/dist/catalog/index.js +18 -15
- package/dist/{catalog-D69WhFii.js → catalog-CGlSwU6j.js} +20 -19
- package/dist/catalog-D3oS2GH3.js +1 -0
- package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.js} +3 -3
- package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
- package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
- package/dist/catalog-operations-DeHTrJSV.js +60 -0
- package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +84 -52
- package/dist/cloud/index.js +53 -39
- package/dist/{cloud-CO8pYtwr.js → cloud-3kWfjnYy.js} +4 -5
- package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
- package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
- package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
- package/dist/collect-D-eroIfV.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-COM2VKuN.d.ts → compile-BEklRUYo.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
- package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
- package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/{core-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
- package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
- package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
- package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
- package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
- package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
- package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
- package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
- package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +4 -4
- package/dist/delivery/index.js +5 -5
- package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-DHldhVUv.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
- package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
- package/dist/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-BIbBAtPZ.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
- package/dist/gen-BFfzZSLH.js +58 -0
- package/dist/gen-BtfFWGbz.js +827 -0
- package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
- package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -21
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
- package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
- package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
- package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
- package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
- package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
- package/dist/index.d.ts +22 -22
- package/dist/index.js +34 -34
- package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
- package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +57 -27
- package/dist/jwt/index.js +24 -21
- package/dist/{kernel-DVExUwkp.js → kernel-qv4cr9w8.js} +32 -23
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-ClSJh5t5.js → login-CfImTJGb.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.js} +49 -38
- package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
- package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
- package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
- package/dist/{map-claims-etGIS_Dv.js → map-claims-C-nv08_n.js} +16 -9
- package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +114 -61
- package/dist/mcp/index.js +70 -40
- package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +79 -26
- package/dist/next/index.js +121 -10
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +51 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
- package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/{output-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/ownership-DA5YdYTm.js +1059 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-CCmbhnxP.d.ts +10 -0
- package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +20 -13
- package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
- package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
- package/dist/{permdock-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
- package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
- package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
- package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
- package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
- package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-DArULThq.js → permissions-CYcHj_w7.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
- package/dist/{policy-B7dg_yzu.d.ts → policy-BycVKnXv.d.ts} +5 -5
- package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
- package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CU3An8uP.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-DGIO_gxq.d.ts} +782 -357
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
- package/dist/powersync-B701tvhE.js +1 -0
- package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
- package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
- package/dist/protected-action-D8x73IGm.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-Csk-THAn.d.ts → provider-DfLeek9O.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
- package/dist/pull-C3EEGzSw.js +1 -0
- package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
- package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +94 -55
- package/dist/react-native/index.js +200 -61
- package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-DCDD_ZfL.d.ts → replay-Bs9Df2fQ.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-ConCSj1y.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
- package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
- package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-Bk1bE-ch.js → rpc-vHIwyXCp.js} +8 -5
- package/dist/run-Ck22anC2.js +1 -0
- package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.d.ts} +29 -14
- package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
- package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-Az_Kz-4D.js → saas-DK4V-3Is.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.js} +8 -4
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +2 -2
- package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
- package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
- package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +12 -12
- package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-C4gZUEZy.d.ts → server-types-CyRN0-Cd.d.ts} +88 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
- package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
- package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.d.ts} +21 -12
- package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -16
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
- package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
- package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
- package/dist/{src-DLFrtrrC.js → src-C_pi2Rnh.js} +292 -101
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
- package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
- package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-DZJvxFIZ.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -38
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase--0aJdLEd.js → supabase-DnMMg5Fn.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
- package/dist/supabase-hook-C0FyEACZ.js +1 -0
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
- package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
- package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-Z2LpxsGa.js → tables-BqrxBCir.js} +641 -1104
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +1 -1
- package/dist/testing/core.js +1 -1
- package/dist/testing/fixtures/index.d.ts +8 -5
- package/dist/testing/fixtures/index.js +78 -17
- package/dist/testing/index.d.ts +225 -141
- package/dist/testing/index.js +352 -234
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
- package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-c7Xo_2Cu.d.ts +50 -0
- package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
- package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
- package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
- package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
- package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
- package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
- package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
- package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
- package/dist/types-tQB2CEnY.d.ts +262 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-0hjZPIRX.js +1 -0
- package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-pe8rL_Qw.js → verify-DlUcTDBz.js} +148 -487
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
- package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
- package/dist/vue/index.d.ts +71 -22
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-DwEyouan.d.ts → waiter-CqUKX6CY.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
- package/dist/watch-ClLuO2TL.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
- package/dist/{who-can-BwNsI_Js.js → who-can-BoDJm0Nc.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
- package/dist/{wrap-B6R0cMRL.d.ts → wrap-DxXB54Wu.d.ts} +8 -5
- package/package.json +8 -8
- package/schemas/catalog-v1.json +3 -0
- package/schemas/supabase-manifest-v1.json +33 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +2 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
- package/skills/permdock-wire/references/adapters.md +16 -23
- package/dist/catalog-BCCjSAdH.js +0 -1
- package/dist/collect-k_Dulxr5.js +0 -1
- package/dist/config-CoQHDrDi.js +0 -166
- package/dist/denied-text-D4qkEtFz.d.ts +0 -19
- package/dist/fields-ClcQLrVc.js +0 -238
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/load-DrMHXzgN.js +0 -1
- package/dist/output-files-DPAY7-GX.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
- package/dist/policies-B2lZIurj.js +0 -295
- package/dist/powersync-CExtTLyA.js +0 -1
- package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
- package/dist/protected-BwZYL1X_.d.ts +0 -39
- package/dist/pull-Cty6Ovyu.js +0 -1
- package/dist/run-Bz7DXGEv.js +0 -1
- package/dist/stores-BAZwSYZA.d.ts +0 -31
- package/dist/supabase-hook-DJxC4PoP.js +0 -1
- package/dist/types-CKV71kKh.d.ts +0 -172
- package/dist/usage-y-kBNdqs.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch-Bd9mx3rd.js +0 -1
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { n as isReadonlyArray, 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, r as idList } from "./expiry-
|
|
5
|
-
import { n as internalsOf } from "./internals-
|
|
6
|
-
import { c as listPermissions, h as formerKeys } from "./permission-registry-
|
|
7
|
-
import { g as secondsOf, l as isRfc3339, m as rfc3339, 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, r as idList } from "./expiry-6XByK0dm.js";
|
|
5
|
+
import { n as internalsOf } from "./internals-B3IgHrvo.js";
|
|
6
|
+
import { c as listPermissions, h as formerKeys } from "./permission-registry-B8tYxPIt.js";
|
|
7
|
+
import { g as secondsOf, l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-nR1JesoH.js";
|
|
8
8
|
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
9
|
-
import { r as sha256Digest } from "./sha256-
|
|
10
|
-
import { n as coveredByDelegation } from "./delegation-
|
|
11
|
-
import { o as flattenGrantee } from "./grantee-
|
|
9
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
10
|
+
import { n as coveredByDelegation } from "./delegation-CDB6_keF.js";
|
|
11
|
+
import { o as flattenGrantee } from "./grantee-Dke-9rd1.js";
|
|
12
12
|
import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
|
|
13
13
|
//#region src/core/credential.ts
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* A feed id: lowercase, so a mail system that lowercases a local part still
|
|
16
|
+
* matches. At most 16 characters, so `pdfeed_<id>_<secret>` fits an email local
|
|
17
|
+
* part.
|
|
18
|
+
*/
|
|
15
19
|
function isFeedId(value) {
|
|
16
20
|
return /^[a-z0-9-]{1,16}$/u.test(value);
|
|
17
21
|
}
|
|
@@ -53,10 +57,10 @@ function parsePermissions(value) {
|
|
|
53
57
|
return out;
|
|
54
58
|
}
|
|
55
59
|
/**
|
|
56
|
-
* Validates an untrusted credential record and returns a frozen copy with
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
+
* Validates an untrusted credential record and returns a frozen copy with only
|
|
61
|
+
* the v1 fields, or `undefined`. Unknown fields are dropped; a wrong type in a
|
|
62
|
+
* known field, a service credential without `tenant` and `roles`, or a user
|
|
63
|
+
* credential with `roles`, rejects the whole record.
|
|
60
64
|
*/
|
|
61
65
|
function parseCredential(input) {
|
|
62
66
|
const value = ownRecord(input);
|
|
@@ -111,9 +115,9 @@ function leafByKey(tree) {
|
|
|
111
115
|
}
|
|
112
116
|
/**
|
|
113
117
|
* The delegation a credential narrows its principal to: OAuth scopes for
|
|
114
|
-
* permissions on every instance, one RFC 9396 entry per id otherwise. A key
|
|
115
|
-
*
|
|
116
|
-
*
|
|
118
|
+
* permissions on every instance, one RFC 9396 entry per id otherwise. A key the
|
|
119
|
+
* definitions no longer declare is dropped, so a credential whose every key is
|
|
120
|
+
* gone delegates nothing and every check is denied.
|
|
117
121
|
*/
|
|
118
122
|
function credentialDelegation(credential, permissions) {
|
|
119
123
|
const leaves = leafByKey(permissions);
|
|
@@ -138,14 +142,14 @@ function credentialDelegation(credential, permissions) {
|
|
|
138
142
|
});
|
|
139
143
|
}
|
|
140
144
|
/**
|
|
141
|
-
* The subject a verified credential acts as. A `user` credential is its
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
145
|
+
* The subject a verified credential acts as. A `user` credential is its owner,
|
|
146
|
+
* passed live as `owner` (roles and memberships as of this request), with the
|
|
147
|
+
* credential's delegation: every check is the owner's rights intersected with
|
|
148
|
+
* the key's. One that names a `tenant` makes it the active tenant, and
|
|
149
|
+
* `getPermDock` then keeps only the owner's memberships inside it and no global
|
|
150
|
+
* role. A `service` credential is a `service` principal whose only membership
|
|
151
|
+
* is `roles` in `tenant`. An owner whose id is not the credential's
|
|
152
|
+
* `principal`, or who is not a user, is anonymous.
|
|
149
153
|
*/
|
|
150
154
|
function credentialSubject(credential, options) {
|
|
151
155
|
const delegation = credentialDelegation(credential, options.permissions);
|
|
@@ -361,25 +365,24 @@ function credentialTenant(credential, active) {
|
|
|
361
365
|
}
|
|
362
366
|
/**
|
|
363
367
|
* Decides whether the subject of `permdock` may create the credential in
|
|
364
|
-
* `request`. The creator must be a signed-in user or service that is not
|
|
365
|
-
*
|
|
366
|
-
* delegation covers. A key's tenant must be one the creator is a member of;
|
|
367
|
-
*
|
|
368
|
+
* `request`. The creator must be a signed-in user or service that is not itself
|
|
369
|
+
* a link or a credential; a delegated creator hands out only what its
|
|
370
|
+
* delegation covers. A key's tenant must be one the creator is a member of; a
|
|
371
|
+
* service key's roles among the creator's `assignableRoles` there and its
|
|
368
372
|
* permissions within `assignablePermissions` there (`exceeds-creator`). The
|
|
369
|
-
* `credentials` policy of the key's tenant (its own, or for a user key
|
|
370
|
-
*
|
|
373
|
+
* `credentials` policy of the key's tenant (its own, or for a user key without
|
|
374
|
+
* one the creator's active tenant) then applies (`credential-policy`; a
|
|
371
375
|
* settings source that throws denies with `rule: 'unavailable'`), and
|
|
372
|
-
* `approval` makes the result `approval-required` until `approved` carries
|
|
373
|
-
*
|
|
374
|
-
*
|
|
376
|
+
* `approval` makes the result `approval-required` until `approved` carries its
|
|
377
|
+
* token. PermDock never stores the credential; the application does, after a
|
|
378
|
+
* `granted` result.
|
|
375
379
|
*/
|
|
376
380
|
/**
|
|
377
381
|
* Decides whether the subject of `permdock` may create the credential in
|
|
378
382
|
* `request`: the creator's own reach, the `credentials` policy of the key's
|
|
379
|
-
* tenant (the call's `settings`, else the instance's), and `approval`.
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
* `unsupported`.
|
|
383
|
+
* tenant (the call's `settings`, else the instance's), and `approval`. PermDock
|
|
384
|
+
* never stores the credential; the application does, after a `granted` result.
|
|
385
|
+
* An instance built from a snapshot denies with `unsupported`.
|
|
383
386
|
*/
|
|
384
387
|
function decideCredential(permdock, request, options = {}) {
|
|
385
388
|
const internals = internalsOf(permdock);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as CliError } from "./errors-
|
|
1
|
+
import { n as CliError } from "./errors-Vpu6rKHl.js";
|
|
2
2
|
//#region src/cli/core/io.ts
|
|
3
3
|
const FRAMES = [
|
|
4
4
|
"⠋",
|
|
@@ -14,8 +14,8 @@ const FRAMES = [
|
|
|
14
14
|
];
|
|
15
15
|
const FRAME_MS = 80;
|
|
16
16
|
/**
|
|
17
|
-
* A spinner on a terminal stderr; a plain line elsewhere, so logs and CI
|
|
18
|
-
*
|
|
17
|
+
* A spinner on a terminal stderr; a plain line elsewhere, so logs and CI output
|
|
18
|
+
* stay readable. `done` replaces the spinner with a final line.
|
|
19
19
|
*/
|
|
20
20
|
function progressReporter(input) {
|
|
21
21
|
return (message) => {
|
|
@@ -50,13 +50,13 @@ async function readSecret(readStdin) {
|
|
|
50
50
|
const URL_PASSWORD = /\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)([^\s@/]+)@/giu;
|
|
51
51
|
/** `text` with every registered secret and every URL password masked. */
|
|
52
52
|
function redact(text, secrets) {
|
|
53
|
-
let out = text.
|
|
53
|
+
let out = text.replaceAll(URL_PASSWORD, "$1***@");
|
|
54
54
|
for (const secret of secrets) if (secret.length >= 4) out = out.replaceAll(secret, "***");
|
|
55
55
|
return out;
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
|
-
* The secret piped in for `--<flag>-stdin`, when it was passed, registered
|
|
59
|
-
*
|
|
58
|
+
* The secret piped in for `--<flag>-stdin`, when it was passed, registered for
|
|
59
|
+
* redaction.
|
|
60
60
|
*/
|
|
61
61
|
async function secretInput(ctx, input) {
|
|
62
62
|
let value;
|
|
@@ -87,8 +87,8 @@ function tableKey(name) {
|
|
|
87
87
|
* membership (user, scope, id, `within`, role, `via`, expiry), and the id and
|
|
88
88
|
* value columns of a table a role or user column references, keyed by
|
|
89
89
|
* {@link tableKey}. A client that can write one can give itself a membership.
|
|
90
|
-
* The hook's sources count even when `rls.membershipSources` replaces them
|
|
91
|
-
*
|
|
90
|
+
* The hook's sources count even when `rls.membershipSources` replaces them for
|
|
91
|
+
* the helpers: the token's claims still come from them.
|
|
92
92
|
*/
|
|
93
93
|
function membershipColumns(config) {
|
|
94
94
|
const sources = /* @__PURE__ */ new Set([...membershipSourcesOf(config), ...config.supabase?.hook?.memberships ?? []]);
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { n as isReadonlyArray } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { r as ownGet } from "./paths-
|
|
3
|
-
import { a as resolveConditionRef, c as isConditionDate, d as parentHop, l as isConditionRef } from "./refs-
|
|
4
|
-
import { o as sameId, t as expiredAt } from "./expiry-
|
|
5
|
-
import { g as formerScopes, m as annotationsFor, n as findPermission } from "./permission-registry-
|
|
6
|
-
import { o as epochSeconds } from "./time-
|
|
7
|
-
import { f as scopeList, h as tenantOf, m as subjectMemberships, s as resolveScope } from "./scopes-
|
|
8
|
-
import { t as isoInstant } from "./instant-
|
|
9
|
-
import { o as flattenGrantee } from "./grantee-
|
|
10
|
-
import { t as isActive } from "./validity-
|
|
11
|
-
import { n as matchGrantee } from "./grantee-match-
|
|
2
|
+
import { r as ownGet } from "./paths-CUvURzHp.js";
|
|
3
|
+
import { a as resolveConditionRef, c as isConditionDate, d as parentHop, l as isConditionRef } from "./refs-C8BKxc_e.js";
|
|
4
|
+
import { o as sameId, t as expiredAt } from "./expiry-6XByK0dm.js";
|
|
5
|
+
import { g as formerScopes, m as annotationsFor, n as findPermission } from "./permission-registry-B8tYxPIt.js";
|
|
6
|
+
import { o as epochSeconds } from "./time-nR1JesoH.js";
|
|
7
|
+
import { f as scopeList, h as tenantOf, m as subjectMemberships, s as resolveScope } from "./scopes-0Up_UA2t.js";
|
|
8
|
+
import { t as isoInstant } from "./instant-DK3Iz83e.js";
|
|
9
|
+
import { o as flattenGrantee } from "./grantee-Dke-9rd1.js";
|
|
10
|
+
import { t as isActive } from "./validity-Buc7w8E9.js";
|
|
11
|
+
import { n as matchGrantee } from "./grantee-match-7RZZvoT_.js";
|
|
12
12
|
//#region src/conditions/evaluate.ts
|
|
13
13
|
function resolveRef(ref, subject) {
|
|
14
14
|
return resolveConditionRef(ref, subject);
|
|
@@ -145,9 +145,9 @@ function isRowPair(value) {
|
|
|
145
145
|
return value !== null && typeof value === "object" && "current" in value && "next" in value;
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
148
|
-
* The row a `where` reads and the row a `check` reads. An instance check
|
|
149
|
-
*
|
|
150
|
-
*
|
|
148
|
+
* The row a `where` reads and the row a `check` reads. An instance check takes
|
|
149
|
+
* a `{ current, next }` pair or one row for both; a collection check has no
|
|
150
|
+
* current row, only the input it creates.
|
|
151
151
|
*/
|
|
152
152
|
function rowValues(permission, data) {
|
|
153
153
|
if (permission.kind === "collection") return {
|
|
@@ -163,7 +163,10 @@ function rowValues(permission, data) {
|
|
|
163
163
|
next: data
|
|
164
164
|
};
|
|
165
165
|
}
|
|
166
|
-
/**
|
|
166
|
+
/**
|
|
167
|
+
* The row's id under `field` as a string, or `*` when the row has no string or
|
|
168
|
+
* number there.
|
|
169
|
+
*/
|
|
167
170
|
function rowIdOf(row, field = "id") {
|
|
168
171
|
if (row === null || typeof row !== "object" || !Object.hasOwn(row, field)) return "*";
|
|
169
172
|
const id = Reflect.get(row, field);
|
|
@@ -171,14 +174,17 @@ function rowIdOf(row, field = "id") {
|
|
|
171
174
|
}
|
|
172
175
|
//#endregion
|
|
173
176
|
//#region src/core/delegation.ts
|
|
174
|
-
/**
|
|
177
|
+
/**
|
|
178
|
+
* The permission's scope and any scope it was renamed from: tokens issued
|
|
179
|
+
* before a rename keep working.
|
|
180
|
+
*/
|
|
175
181
|
function scopeNames(permission) {
|
|
176
182
|
return [permission.scope, ...formerScopes(permission)];
|
|
177
183
|
}
|
|
178
184
|
/**
|
|
179
185
|
* Whether a delegated caller may use a permission its principal holds, through
|
|
180
|
-
* OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`.
|
|
181
|
-
*
|
|
186
|
+
* OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`. `undefined`
|
|
187
|
+
* means covered; otherwise the denial reason `decide` would add.
|
|
182
188
|
*/
|
|
183
189
|
function coveredByDelegation(permission, delegation, resourceId, hasActor = false) {
|
|
184
190
|
const unscoped = hasActor ? "no-delegation" : void 0;
|
|
@@ -206,7 +212,10 @@ function coveredByDelegation(permission, delegation, resourceId, hasActor = fals
|
|
|
206
212
|
if (scopeOk || detailOk || accessOk) return;
|
|
207
213
|
return "not-delegated";
|
|
208
214
|
}
|
|
209
|
-
/**
|
|
215
|
+
/**
|
|
216
|
+
* A `readOnly` actor never uses a permission without `readOnlyHint`, delegated
|
|
217
|
+
* or not.
|
|
218
|
+
*/
|
|
210
219
|
function readOnlyActorRefuses(actor, permission) {
|
|
211
220
|
return actor?.readOnly === true && !annotationsFor(permission).readOnlyHint;
|
|
212
221
|
}
|
|
@@ -266,10 +275,10 @@ function handsOver(delegation, subject, heldRoles, now) {
|
|
|
266
275
|
/**
|
|
267
276
|
* The permission keys the policy's delegations let `subject.actor` use for
|
|
268
277
|
* `subject.principal` right now: the union over every active delegation whose
|
|
269
|
-
* `to` matches the actor and whose `from` the principal holds. `undefined`
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
278
|
+
* `to` matches the actor and whose `from` the principal holds. `undefined` when
|
|
279
|
+
* none applies, so the call falls back to the token delegation alone. An actor
|
|
280
|
+
* with `readOnly: true` gets only each delegation's read-only keys. Attenuation
|
|
281
|
+
* only: a key here still needs a matching allow and no deny.
|
|
273
282
|
*/
|
|
274
283
|
function delegatedPermissions(delegations, subject, heldRoles, now) {
|
|
275
284
|
const actor = subject.actor;
|
package/dist/delivery/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as approvalUrlFor, n as ApprovalUrl, r as approvalPrompt, t as ApprovalPrompt } from "../approval-prompt-
|
|
3
|
-
import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, d as EmailTransport, f as EmailUnsubscribe, g as TransportMessages, h as TransportItem, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, n as ChatTransport, o as DeliveryResult, p as OutgoingEmail, r as DeliverOptions, s as DeliveryTarget, t as ChatMessage, u as EmailMessage, v as WebhookMessage, y as WebhookTransport } from "../types-
|
|
4
|
-
import { C as audience, S as SubscriberEvent, _ as ParseConnectorResult, a as DeliveryPermDock, b as Audience, c as MemoryDelivery, d as memoryDeliveryTransport, f as CONNECTOR_SCHEMA, g as ConnectorKind, h as ConnectorIssue, i as isDeliveryTarget, l as MemoryDeliveryTransport, m as Connector, n as webhookTransport, o as DeliveryPermDockOptions, p as CONNECTOR_KINDS, r as isAddrSpec, s as createPermDock, t as WebhookTransportOptions, u as MemoryDeliveryTransportOptions, v as SiemDestination, w as subscribersFor, x as AudienceOptions, y as parseConnector } from "../index-
|
|
1
|
+
import { dn as EmailCategory, ln as DeliveryFailureCause, sn as DeliveryChannel } from "../policy-types-DGIO_gxq.js";
|
|
2
|
+
import { i as approvalUrlFor, n as ApprovalUrl, r as approvalPrompt, t as ApprovalPrompt } from "../approval-prompt-3BqWczTt.js";
|
|
3
|
+
import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, d as EmailTransport, f as EmailUnsubscribe, g as TransportMessages, h as TransportItem, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, n as ChatTransport, o as DeliveryResult, p as OutgoingEmail, r as DeliverOptions, s as DeliveryTarget, t as ChatMessage, u as EmailMessage, v as WebhookMessage, y as WebhookTransport } from "../types-CN0LsqbK.js";
|
|
4
|
+
import { C as audience, S as SubscriberEvent, _ as ParseConnectorResult, a as DeliveryPermDock, b as Audience, c as MemoryDelivery, d as memoryDeliveryTransport, f as CONNECTOR_SCHEMA, g as ConnectorKind, h as ConnectorIssue, i as isDeliveryTarget, l as MemoryDeliveryTransport, m as Connector, n as webhookTransport, o as DeliveryPermDockOptions, p as CONNECTOR_KINDS, r as isAddrSpec, s as createPermDock, t as WebhookTransportOptions, u as MemoryDeliveryTransportOptions, v as SiemDestination, w as subscribersFor, x as AudienceOptions, y as parseConnector } from "../index-ymept53A.js";
|
|
5
5
|
export { type ApprovalPrompt, type ApprovalUrl, type Audience, type AudienceOptions, CONNECTOR_KINDS, CONNECTOR_SCHEMA, type ChatMessage, type ChatTransport, type Connector, type ConnectorIssue, type ConnectorKind, type DeliverOptions, type DeliveryChannel, type DeliveryFailureCause, type DeliveryMessages, type DeliveryPermDock, type DeliveryPermDockOptions, type DeliveryReport, type DeliveryResult, type DeliveryTarget, type DeliveryTransport, type DeliveryTransports, type EmailCategory, type EmailMessage, type EmailTransport, type EmailUnsubscribe, type MemoryDelivery, type MemoryDeliveryTransport, type MemoryDeliveryTransportOptions, type OutgoingEmail, type ParseConnectorResult, type Recipient, type SiemDestination, type SubscriberEvent, type TransportItem, type TransportMessages, type TransportOptions, type WebhookMessage, type WebhookTransport, type WebhookTransportOptions, approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, parseConnector, subscribersFor, webhookTransport };
|
package/dist/delivery/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as approvalUrlFor, t as approvalPrompt } from "../approval-prompt-
|
|
2
|
-
import { n as subscribersFor, t as audience } from "../audience-
|
|
3
|
-
import { t as CONNECTOR_SCHEMA } from "../connector-schema-
|
|
4
|
-
import { a as parseConnector, i as CONNECTOR_KINDS, n as createPermDock, r as memoryDeliveryTransport, t as webhookTransport } from "../delivery-
|
|
5
|
-
import { i as isDeliveryTarget, n as isAddrSpec } from "../target-
|
|
1
|
+
import { n as approvalUrlFor, t as approvalPrompt } from "../approval-prompt-B8hQY69x.js";
|
|
2
|
+
import { n as subscribersFor, t as audience } from "../audience-DTjR8xet.js";
|
|
3
|
+
import { t as CONNECTOR_SCHEMA } from "../connector-schema-CYLQNMYq.js";
|
|
4
|
+
import { a as parseConnector, i as CONNECTOR_KINDS, n as createPermDock, r as memoryDeliveryTransport, t as webhookTransport } from "../delivery-BupfvJIV.js";
|
|
5
|
+
import { i as isDeliveryTarget, n as isAddrSpec } from "../target-qdEAnnhU.js";
|
|
6
6
|
export { CONNECTOR_KINDS, CONNECTOR_SCHEMA, approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, parseConnector, subscribersFor, webhookTransport };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { a as ownRecord } from "./paths-
|
|
4
|
-
import { n as loadPrincipalByIdentity } from "./principal-source-
|
|
5
|
-
import { t as deliveryEvent } from "./delivery-event-
|
|
6
|
-
import { n as CLOUDEVENTS_CONTENT_TYPE } from "./sink-
|
|
7
|
-
import { n as copyJson, r as forbiddenKeyPath, t as checkSchema } from "./json-schema-
|
|
8
|
-
import { t as CONNECTOR_SCHEMA } from "./connector-schema-
|
|
9
|
-
import { a as isWebhookAddress, i as isDeliveryTarget, n as isAddrSpec, r as isChatAddress, t as idempotencyKeyFor } from "./target-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { a as ownRecord } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { n as loadPrincipalByIdentity } from "./principal-source-C6N60GtM.js";
|
|
5
|
+
import { t as deliveryEvent } from "./delivery-event-JioK5YbS.js";
|
|
6
|
+
import { n as CLOUDEVENTS_CONTENT_TYPE } from "./sink-D9_vh372.js";
|
|
7
|
+
import { n as copyJson, r as forbiddenKeyPath, t as checkSchema } from "./json-schema-BPGa-RjQ.js";
|
|
8
|
+
import { t as CONNECTOR_SCHEMA } from "./connector-schema-CYLQNMYq.js";
|
|
9
|
+
import { a as isWebhookAddress, i as isDeliveryTarget, n as isAddrSpec, r as isChatAddress, t as idempotencyKeyFor } from "./target-qdEAnnhU.js";
|
|
10
10
|
//#region src/delivery/connector.ts
|
|
11
11
|
const BRANCHES = new Map((CONNECTOR_SCHEMA.oneOf ?? []).map((branch) => [branch.properties?.["kind"]?.const, branch]));
|
|
12
12
|
/** The kinds `connector-v1` lists, in schema order. */
|
|
@@ -25,8 +25,8 @@ function fail$1(issues) {
|
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Checks `input` against `connector-v1.json` and answers a frozen copy, or
|
|
28
|
-
* every issue with a JSON pointer. The branch is chosen by `kind`, so an
|
|
29
|
-
*
|
|
28
|
+
* every issue with a JSON pointer. The branch is chosen by `kind`, so an issue
|
|
29
|
+
* names the field rather than "no branch matched".
|
|
30
30
|
*/
|
|
31
31
|
function parseConnector(input) {
|
|
32
32
|
const issues = [];
|
|
@@ -55,7 +55,10 @@ function parseConnector(input) {
|
|
|
55
55
|
}
|
|
56
56
|
//#endregion
|
|
57
57
|
//#region src/delivery/memory-transport.ts
|
|
58
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* An in-process transport for tests and examples: it records what it would have
|
|
60
|
+
* sent.
|
|
61
|
+
*/
|
|
59
62
|
function memoryDeliveryTransport(channel, options = {}) {
|
|
60
63
|
const deliveries = [];
|
|
61
64
|
return Object.freeze({
|
|
@@ -89,7 +92,10 @@ const ROUTER_FIELDS = /* @__PURE__ */ new Set([
|
|
|
89
92
|
"list-unsubscribe",
|
|
90
93
|
"list-unsubscribe-post"
|
|
91
94
|
]);
|
|
92
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Fields that would add recipients or rewrite the envelope past the recipient
|
|
97
|
+
* check.
|
|
98
|
+
*/
|
|
93
99
|
const ENVELOPE_FIELDS = /* @__PURE__ */ new Set([
|
|
94
100
|
"to",
|
|
95
101
|
"cc",
|
|
@@ -143,8 +149,8 @@ function unsubscribeHeaders(unsubscribe) {
|
|
|
143
149
|
/**
|
|
144
150
|
* The email a transport sends to `target`: `from` resolved, the caller's
|
|
145
151
|
* headers checked, `Auto-Submitted: auto-generated` (RFC 3834) on every
|
|
146
|
-
* message, and the RFC 2369 / RFC 8058 unsubscribe pair on `notification`
|
|
147
|
-
*
|
|
152
|
+
* message, and the RFC 2369 / RFC 8058 unsubscribe pair on `notification` only.
|
|
153
|
+
* A message that cannot be sent as given returns the reason.
|
|
148
154
|
*/
|
|
149
155
|
function outgoingEmail(message, target, defaultFrom) {
|
|
150
156
|
const from = message.from ?? defaultFrom;
|
|
@@ -188,7 +194,10 @@ function optionalString(value) {
|
|
|
188
194
|
if (value === void 0) return;
|
|
189
195
|
return typeof value === "string" && value !== "" ? value : null;
|
|
190
196
|
}
|
|
191
|
-
/**
|
|
197
|
+
/**
|
|
198
|
+
* The recipient in the form its channel compares, or `null` when it is
|
|
199
|
+
* malformed.
|
|
200
|
+
*/
|
|
192
201
|
function checkRecipient(value) {
|
|
193
202
|
const record = ownRecord(value);
|
|
194
203
|
const channel = record?.["channel"];
|
|
@@ -281,9 +290,9 @@ async function sendBatch(transport, batch) {
|
|
|
281
290
|
}));
|
|
282
291
|
}
|
|
283
292
|
/**
|
|
284
|
-
* Sends every ready item: one batch call per `batchSize` items for a
|
|
285
|
-
*
|
|
286
|
-
*
|
|
293
|
+
* Sends every ready item: one batch call per `batchSize` items for a transport
|
|
294
|
+
* with `deliverBatch`, one `deliver` call each otherwise. Events keep recipient
|
|
295
|
+
* order.
|
|
287
296
|
*/
|
|
288
297
|
async function send(prepared) {
|
|
289
298
|
const events = prepared.map((entry) => "transport" in entry ? void 0 : entry);
|
|
@@ -310,7 +319,10 @@ async function send(prepared) {
|
|
|
310
319
|
}));
|
|
311
320
|
return events;
|
|
312
321
|
}
|
|
313
|
-
/**
|
|
322
|
+
/**
|
|
323
|
+
* Routes checked recipients to channel transports and records a delivery event
|
|
324
|
+
* for each.
|
|
325
|
+
*/
|
|
314
326
|
function createPermDock(_policy, options) {
|
|
315
327
|
const source = options.source ?? "permdock";
|
|
316
328
|
const decideRecipient = async (permdock, checked, permission, row) => {
|
|
@@ -497,9 +509,9 @@ function fromStatus(status) {
|
|
|
497
509
|
}
|
|
498
510
|
/**
|
|
499
511
|
* Posts each CloudEvent to the target's https endpoint as
|
|
500
|
-
* `application/cloudevents+json`, signed with the Standard Webhooks
|
|
501
|
-
*
|
|
502
|
-
*
|
|
512
|
+
* `application/cloudevents+json`, signed with the Standard Webhooks headers.
|
|
513
|
+
* `webhook-id` is the idempotency key, so a retry repeats it and the receiver
|
|
514
|
+
* drops the duplicate. Redirects are not followed.
|
|
503
515
|
*/
|
|
504
516
|
function webhookTransport(signer, options = {}) {
|
|
505
517
|
const timeout = options.timeout ?? 1e4;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { t as assertAppData } from "./app-data-
|
|
3
|
-
import { d as isoNow } from "./time-
|
|
4
|
-
import { n as requireEventInstant } from "./event-time-
|
|
2
|
+
import { t as assertAppData } from "./app-data-UNNm07jV.js";
|
|
3
|
+
import { d as isoNow } from "./time-nR1JesoH.js";
|
|
4
|
+
import { n as requireEventInstant } from "./event-time-BGy48400.js";
|
|
5
5
|
//#region src/core/delivery-event.ts
|
|
6
6
|
/**
|
|
7
|
-
* A `delivery` sink event. Throws a `TypeError` when `cause` or `retryable`
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* A `delivery` sink event. Throws a `TypeError` when `cause` or `retryable` is
|
|
8
|
+
* set on an operation other than `failed`, and a `RangeError` for a malformed
|
|
9
|
+
* `at`.
|
|
10
10
|
*/
|
|
11
11
|
function checkedX(x) {
|
|
12
12
|
assertAppData(x, "x of a delivery event");
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Un as Decision } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
//#region src/agent/denied-text.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* What an agent adapter's `deniedText` receives: the refusal and the text
|
|
6
|
+
* PermDock wrote for it.
|
|
7
|
+
*/
|
|
8
|
+
type DeniedTextEvent = {
|
|
9
|
+
readonly decision: Exclude<Decision, {
|
|
10
|
+
readonly outcome: "granted";
|
|
11
|
+
}> | null;
|
|
12
|
+
readonly permission: Permission | undefined;
|
|
13
|
+
readonly text: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Replaces the human-readable text of a refusal, and nothing else: the outcome,
|
|
17
|
+
* `isError`, the structured content and the approval token stay. `undefined`
|
|
18
|
+
* keeps PermDock's text.
|
|
19
|
+
*/
|
|
20
|
+
type DeniedText = (event: DeniedTextEvent) => string | undefined;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { DeniedTextEvent as n, DeniedText as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as flattenApprovers } from "./approvers-
|
|
2
|
-
import { r as requiredPlans } from "./problem-details-
|
|
1
|
+
import { i as flattenApprovers } from "./approvers-B4r0N_Uz.js";
|
|
2
|
+
import { r as requiredPlans } from "./problem-details-CLDgX1KV.js";
|
|
3
3
|
//#region src/core/describe.ts
|
|
4
4
|
const TENANT_REASONS = /* @__PURE__ */ new Set([
|
|
5
5
|
"tenant-mismatch",
|
|
@@ -31,7 +31,7 @@ function labelGrantee(grantee) {
|
|
|
31
31
|
default: return grantee;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
const
|
|
34
|
+
const DESCRIBE_TITLES = {
|
|
35
35
|
granted: "Granted",
|
|
36
36
|
denied: "Denied",
|
|
37
37
|
approval: "Approval required",
|
|
@@ -57,7 +57,7 @@ function approvalDetail(permission, labels) {
|
|
|
57
57
|
function describe(decision, options) {
|
|
58
58
|
const messages = options?.messages;
|
|
59
59
|
const labelOf = (key) => options?.permission?.key === key ? options.permission.meta?.title ?? key : key;
|
|
60
|
-
const titleOf = (kind) => messages?.titles?.[kind] ??
|
|
60
|
+
const titleOf = (kind) => messages?.titles?.[kind] ?? DESCRIBE_TITLES[kind];
|
|
61
61
|
if (decision.outcome === "granted") {
|
|
62
62
|
const permission = labelOf(decision.matched.permission);
|
|
63
63
|
return {
|
|
@@ -97,4 +97,4 @@ function describe(decision, options) {
|
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
99
|
//#endregion
|
|
100
|
-
export { describe as t };
|
|
100
|
+
export { describe as n, DESCRIBE_TITLES as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as Permission } from "./permission-types-
|
|
1
|
+
import { Kn as DenialReason, Un as Decision, qn as DeniedDecision } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
3
|
//#region src/core/describe.d.ts
|
|
4
4
|
type DecisionDescription = {
|
|
5
5
|
readonly kind: "granted" | "denied" | "approval" | "tenant" | "delegation" | "server-only" | "upgrade";
|
|
@@ -16,9 +16,9 @@ type DecisionDescription = {
|
|
|
16
16
|
type DescribeMessages = {
|
|
17
17
|
readonly titles?: Partial<Record<DecisionDescription["kind"], string>>;
|
|
18
18
|
/**
|
|
19
|
-
* Text per denial reason; a denied detail joins the texts of its reasons
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* Text per denial reason; a denied detail joins the texts of its reasons with
|
|
20
|
+
* `separator`. The function form also sees the decision; `undefined` keeps
|
|
21
|
+
* the reason code, as a missing record entry does.
|
|
22
22
|
*/
|
|
23
23
|
readonly reasons?: Partial<Record<DenialReason, string>> | ((reason: DenialReason, decision: DeniedDecision) => string | undefined);
|
|
24
24
|
/** Joins denial reason texts. Default `', '`. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { h as secondsAt } from "./time-
|
|
3
|
-
import { n as readBodyText } from "./body-text-
|
|
2
|
+
import { h as secondsAt } from "./time-nR1JesoH.js";
|
|
3
|
+
import { n as readBodyText } from "./body-text-DQhcmqdY.js";
|
|
4
4
|
import { t as timeoutSignal } from "./timeout-D51niuQP.js";
|
|
5
5
|
//#region src/terminal/device.ts
|
|
6
6
|
/** Milliseconds an authorization server request may take. */
|
|
@@ -15,7 +15,10 @@ async function readJson(response) {
|
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* POSTs a form and reads a JSON object back; any network or parse failure is
|
|
20
|
+
* `null`.
|
|
21
|
+
*/
|
|
19
22
|
async function postForm(runtime, url, fields) {
|
|
20
23
|
const fetchImpl = runtime.fetch ?? fetch;
|
|
21
24
|
try {
|
|
@@ -33,9 +36,9 @@ function withoutTrailingSlash(url) {
|
|
|
33
36
|
return url.replace(/\/+$/u, "");
|
|
34
37
|
}
|
|
35
38
|
/**
|
|
36
|
-
* Where RFC 8414 metadata may live: the well-known segment inserted before
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
+
* Where RFC 8414 metadata may live: the well-known segment inserted before the
|
|
40
|
+
* issuer's path (section 3.1), then appended after it for servers that predate
|
|
41
|
+
* the rule. An issuer without a path has one location.
|
|
39
42
|
*/
|
|
40
43
|
function metadataUrls(issuer) {
|
|
41
44
|
const parsed = new URL(issuer);
|
|
@@ -44,8 +47,8 @@ function metadataUrls(issuer) {
|
|
|
44
47
|
return path === "" ? [inserted] : [inserted, `${withoutTrailingSlash(issuer)}/.well-known/oauth-authorization-server`];
|
|
45
48
|
}
|
|
46
49
|
/**
|
|
47
|
-
* The issuer's RFC 8414 metadata, or `null`. Metadata whose `issuer` is not
|
|
48
|
-
*
|
|
50
|
+
* The issuer's RFC 8414 metadata, or `null`. Metadata whose `issuer` is not the
|
|
51
|
+
* configured issuer is refused (section 3.3), so a mix-up never routes a
|
|
49
52
|
* credential to another server.
|
|
50
53
|
*/
|
|
51
54
|
async function discoverAuthorizationServer(issuer, runtime) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { c as given } from "./flags-
|
|
2
|
+
import { c as given } from "./flags-DXjoTVbS.js";
|
|
3
3
|
//#region src/cli/commands/diff.ts
|
|
4
4
|
const diff = defineLeaf({
|
|
5
5
|
positionals: [{
|
|
@@ -21,7 +21,7 @@ const diff = defineLeaf({
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
async run(ctx, { flags, args }) {
|
|
24
|
-
return (await import("./diff-
|
|
24
|
+
return (await import("./diff-CQegtBAo.js")).runDiff({
|
|
25
25
|
cwd: ctx.cwd,
|
|
26
26
|
config: ctx.config,
|
|
27
27
|
sources: [args["before"], args["after"]].filter((value) => value !== void 0),
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as findPermission } from "./permission-registry-
|
|
3
|
-
import { g as secondsOf } from "./time-
|
|
1
|
+
import { j as memoryCustomRoleSource } from "./src-C_pi2Rnh.js";
|
|
2
|
+
import { n as findPermission } from "./permission-registry-B8tYxPIt.js";
|
|
3
|
+
import { g as secondsOf } from "./time-nR1JesoH.js";
|
|
4
4
|
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
5
|
-
import { t as getPermDock } from "./permdock-
|
|
6
|
-
import { i as configError, u as usageResult } from "./errors-
|
|
7
|
-
import { t as buildCatalog } from "./catalog-doc-
|
|
8
|
-
import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-
|
|
9
|
-
import { t as parseCatalog } from "./parse-
|
|
10
|
-
import { t as operationFindings } from "./operation-findings-
|
|
11
|
-
import { n as fixtureSubject, r as loadFixtures, t as fixtureRow } from "./fixtures-
|
|
5
|
+
import { t as getPermDock } from "./permdock-BvjivVb9.js";
|
|
6
|
+
import { i as configError, u as usageResult } from "./errors-Vpu6rKHl.js";
|
|
7
|
+
import { t as buildCatalog } from "./catalog-doc-DjMKzJp9.js";
|
|
8
|
+
import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-DjSU5KXO.js";
|
|
9
|
+
import { t as parseCatalog } from "./parse-1_ZheTW5.js";
|
|
10
|
+
import { t as operationFindings } from "./operation-findings-CXtFzlKJ.js";
|
|
11
|
+
import { n as fixtureSubject, r as loadFixtures, t as fixtureRow } from "./fixtures-A1_sp_tR.js";
|
|
12
12
|
import { existsSync, readFileSync } from "node:fs";
|
|
13
13
|
import { resolve } from "node:path";
|
|
14
14
|
//#region src/cli/diff/format.ts
|
|
@@ -90,7 +90,10 @@ function setDiff(before, after) {
|
|
|
90
90
|
removed: before.filter((item) => !b.has(item)).toSorted()
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* What makes two grants "the same grant" across versions: everything but the
|
|
95
|
+
* body.
|
|
96
|
+
*/
|
|
94
97
|
function grantIdentity(grant) {
|
|
95
98
|
return canonicalJson({
|
|
96
99
|
permission: grant.permission,
|
|
@@ -125,7 +128,10 @@ function fieldsChange(before, after) {
|
|
|
125
128
|
}
|
|
126
129
|
const validFrom = (value) => secondsOf(value?.from) ?? Number.NEGATIVE_INFINITY;
|
|
127
130
|
const validUntil = (value) => secondsOf(value?.until) ?? Number.POSITIVE_INFINITY;
|
|
128
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* Narrowed when the window starts later or ends earlier than before; a new
|
|
133
|
+
* window on an open grant narrows it.
|
|
134
|
+
*/
|
|
129
135
|
function validityChange(before, after) {
|
|
130
136
|
return validFrom(after) > validFrom(before) || validUntil(after) < validUntil(before) ? "validity narrowed" : "validity widened";
|
|
131
137
|
}
|
|
@@ -207,7 +213,10 @@ function sideRef(side) {
|
|
|
207
213
|
function aliasesOf(catalog) {
|
|
208
214
|
return new Map(catalog.permissions.flatMap((item) => (item.renamedFrom ?? []).map((old) => [old, item.key])));
|
|
209
215
|
}
|
|
210
|
-
/**
|
|
216
|
+
/**
|
|
217
|
+
* `a` with every key `b` renamed written as its new key, so grants compare by
|
|
218
|
+
* the current name.
|
|
219
|
+
*/
|
|
211
220
|
function underNames(a, aliases) {
|
|
212
221
|
if (a.catalog.grants === void 0 || aliases.size === 0) return a;
|
|
213
222
|
return {
|