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,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as Permission } from "./permission-types-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Hn as ApprovalRequiredDecision, Un as Decision, Yn as GrantedDecision, Zt as Snapshot, ht as TokenVerifier } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { s as RowData } from "./permdock-CprAPN3w.js";
|
|
4
|
+
import { n as DescribeMessages } from "./describe-BbFPBSms.js";
|
|
5
|
+
import { _ as ClientStoreOptions } from "./types-tQB2CEnY.js";
|
|
5
6
|
import { ReactNode } from "react";
|
|
6
7
|
//#region src/react/types.d.ts
|
|
7
8
|
type PermDockProviderProps = ({
|
|
@@ -9,21 +10,24 @@ type PermDockProviderProps = ({
|
|
|
9
10
|
readonly snapshotPromise?: never;
|
|
10
11
|
} | {
|
|
11
12
|
/**
|
|
12
|
-
* An unawaited snapshot from a Server Component. Hooks never suspend on
|
|
13
|
-
* resolves they deny with `status: 'pending'`, then
|
|
14
|
-
* (`server-only`). Set `suspend` to
|
|
13
|
+
* An unawaited snapshot from a Server Component. Hooks never suspend on
|
|
14
|
+
* it: until it resolves they deny with `status: 'pending'`, then
|
|
15
|
+
* re-render. A rejection fails closed (`server-only`). Set `suspend` to
|
|
16
|
+
* suspend readers through `use()` instead.
|
|
15
17
|
*/
|
|
16
18
|
readonly snapshotPromise: PromiseLike<Snapshot | string>;
|
|
17
19
|
readonly snapshot?: never;
|
|
18
20
|
}) & {
|
|
19
21
|
/**
|
|
20
|
-
* With `snapshotPromise`: `true` suspends every hook to the nearest Suspense
|
|
21
|
-
* resolves, and a rejection reaches the nearest error
|
|
22
|
+
* With `snapshotPromise`: `true` suspends every hook to the nearest Suspense
|
|
23
|
+
* boundary until it resolves, and a rejection reaches the nearest error
|
|
24
|
+
* boundary. Defaults to `false`.
|
|
22
25
|
*/
|
|
23
26
|
readonly suspend?: boolean;
|
|
24
27
|
/**
|
|
25
|
-
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
26
|
-
* fetches: those checks answer `denied` with reason
|
|
28
|
+
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
29
|
+
* `false` never fetches: those checks answer `denied` with reason
|
|
30
|
+
* `server-only`.
|
|
27
31
|
*/
|
|
28
32
|
readonly endpoint?: string | false;
|
|
29
33
|
/** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
|
|
@@ -44,6 +48,11 @@ type PermDockProviderProps = ({
|
|
|
44
48
|
readonly onClear?: () => void;
|
|
45
49
|
/** Milliseconds between approval status polls. Defaults to 2000. */
|
|
46
50
|
readonly approvalInterval?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Triggers that refresh the snapshot, such as `eventSourceRefresh(url)`; read
|
|
53
|
+
* when the store is built.
|
|
54
|
+
*/
|
|
55
|
+
readonly refreshOn?: ClientStoreOptions["refreshOn"];
|
|
47
56
|
readonly children: ReactNode;
|
|
48
57
|
};
|
|
49
58
|
/** Provider-wide content for the `<Protected>` slots a component leaves out. */
|
|
@@ -52,9 +61,10 @@ type PermDockDefaults = {
|
|
|
52
61
|
readonly denied?: ReactNode | ((decision: Decision) => ReactNode);
|
|
53
62
|
readonly approval?: ReactNode | ((decision: ApprovalRequiredDecision) => ReactNode);
|
|
54
63
|
};
|
|
55
|
-
type ProtectedProps = {
|
|
56
|
-
readonly permission:
|
|
57
|
-
|
|
64
|
+
type ProtectedProps<P extends Permission = Permission> = {
|
|
65
|
+
readonly permission: P;
|
|
66
|
+
/** Any part of the permission's row; see `RowData`. */
|
|
67
|
+
readonly data?: RowData<P>;
|
|
58
68
|
readonly tenant?: string;
|
|
59
69
|
readonly pending?: ReactNode;
|
|
60
70
|
readonly denied?: ReactNode | ((decision: Decision) => ReactNode);
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { Un as Decision, Zt as Snapshot, ht as TokenVerifier, j as PolicyVocabulary, lr as Delegation, pr as Principal, rr as Actor } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock } from "./permdock-CprAPN3w.js";
|
|
4
|
+
import { n as DescribeMessages, t as DecisionDescription } from "./describe-BbFPBSms.js";
|
|
5
|
+
import { t as ActionResult } from "./action-result-BcudBQOF.js";
|
|
6
|
+
//#region src/client/refresh-on.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Calls `refresh` when the snapshot may be out of date (a membership event, a
|
|
9
|
+
* window focus, a realtime message) and returns the unsubscribe. A refresh
|
|
10
|
+
* re-fetches the signed snapshot; it never grants by itself.
|
|
11
|
+
*/
|
|
12
|
+
type RefreshTrigger = (refresh: () => void) => () => void;
|
|
13
|
+
type EventSourceRefreshOptions = {
|
|
14
|
+
/**
|
|
15
|
+
* CloudEvent `type` values that refresh; a trailing `*` matches a prefix.
|
|
16
|
+
* Defaults to `com.permdock.membership.*` and `com.permdock.catalog.*`.
|
|
17
|
+
*/
|
|
18
|
+
readonly types?: readonly string[];
|
|
19
|
+
readonly withCredentials?: boolean;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* A `refreshOn` trigger over Server-Sent Events: each `message` whose data is a
|
|
23
|
+
* structured CloudEvent with a matching `type` refreshes the snapshot. Without
|
|
24
|
+
* a global `EventSource` it never fires.
|
|
25
|
+
*/
|
|
26
|
+
declare function eventSourceRefresh(url: string, options?: EventSourceRefreshOptions): RefreshTrigger;
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/client/request.d.ts
|
|
29
|
+
type StoreHeaders = Readonly<Record<string, string>>;
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/client/store.d.ts
|
|
32
|
+
type ClientStoreOptions = {
|
|
33
|
+
readonly snapshot: Snapshot | string;
|
|
34
|
+
readonly endpoint?: string;
|
|
35
|
+
readonly snapshotUrl?: string;
|
|
36
|
+
readonly approvals?: string;
|
|
37
|
+
readonly tenant?: string;
|
|
38
|
+
readonly fetch?: typeof fetch;
|
|
39
|
+
/**
|
|
40
|
+
* Request headers, or a getter read on every request so a rotated token needs
|
|
41
|
+
* no new store.
|
|
42
|
+
*/
|
|
43
|
+
readonly headers?: StoreHeaders | (() => StoreHeaders | undefined);
|
|
44
|
+
readonly maxAge?: number;
|
|
45
|
+
readonly verifier?: TokenVerifier;
|
|
46
|
+
/**
|
|
47
|
+
* `raw` is the compact JWS the snapshot was verified from, so a signed
|
|
48
|
+
* snapshot can be persisted signed.
|
|
49
|
+
*/
|
|
50
|
+
readonly onSnapshot?: (snapshot: Snapshot, tenant: string | undefined, raw: string | undefined) => void;
|
|
51
|
+
readonly onClear?: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* Called once per key the snapshot cannot answer when there is no `endpoint`
|
|
54
|
+
* to ask.
|
|
55
|
+
*/
|
|
56
|
+
readonly onServerOnly?: (permission: Permission) => void;
|
|
57
|
+
/**
|
|
58
|
+
* `true` while rendering on the server: endpoint checks answer `pending`
|
|
59
|
+
* without a request. Defaults to `typeof window === 'undefined'`.
|
|
60
|
+
*/
|
|
61
|
+
readonly server?: boolean;
|
|
62
|
+
/** Milliseconds between approval status polls. Defaults to 2000. */
|
|
63
|
+
readonly approvalInterval?: number;
|
|
64
|
+
/** Start `pending`: the snapshot arrives later through `track()`. */
|
|
65
|
+
readonly awaiting?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* The first snapshot that hydrates with a principal is a persisted copy:
|
|
68
|
+
* `stale` until a refresh or a `replace()` lands.
|
|
69
|
+
*/
|
|
70
|
+
readonly stale?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Reuse decisions for the same row object until the next microtask. Only for
|
|
73
|
+
* renderers that do not track the fields a check reads (React): Vue, Svelte
|
|
74
|
+
* and Solid would stop re-running when a reactive row changes in place.
|
|
75
|
+
*/
|
|
76
|
+
readonly passCache?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Triggers that refresh the snapshot, started while something subscribes and
|
|
79
|
+
* never during a server render. Calls within 250 ms fold into one refresh.
|
|
80
|
+
*/
|
|
81
|
+
readonly refreshOn?: readonly RefreshTrigger[];
|
|
82
|
+
};
|
|
83
|
+
type ClientStore = {
|
|
84
|
+
get: () => ClientPermDock;
|
|
85
|
+
subscribe: (listener: () => void) => () => void;
|
|
86
|
+
permissionState: (permission: Permission, data?: unknown) => PermissionState;
|
|
87
|
+
requestApproval: (decision: Decision, note?: string) => Promise<void>;
|
|
88
|
+
/** Hydrate from a pushed snapshot; a compact JWS goes through the verifier. */
|
|
89
|
+
replace: (value: unknown) => void;
|
|
90
|
+
/**
|
|
91
|
+
* Stay `pending` until `value` settles, then hydrate; a rejection fails
|
|
92
|
+
* closed.
|
|
93
|
+
*/
|
|
94
|
+
follow: (value: PromiseLike<Snapshot | string>) => void;
|
|
95
|
+
/**
|
|
96
|
+
* `follow()` once per `value`, without suspending. A thenable React already
|
|
97
|
+
* settled (`status: 'fulfilled'`) hydrates at once.
|
|
98
|
+
*/
|
|
99
|
+
track: (value: PromiseLike<Snapshot | string>) => void;
|
|
100
|
+
/**
|
|
101
|
+
* The approval state for a decision. While something subscribes, an
|
|
102
|
+
* `approval-required` decision is polled at `<approvals>/<token>`.
|
|
103
|
+
*/
|
|
104
|
+
approvalState: (decision: Decision) => ApprovalState;
|
|
105
|
+
/**
|
|
106
|
+
* Hydrate from a resolved `snapshotPromise` during render. Idempotent per
|
|
107
|
+
* `source`; subscribers are notified in a microtask, never synchronously
|
|
108
|
+
* inside render.
|
|
109
|
+
*/
|
|
110
|
+
adopt: (value: Snapshot | string, source: object) => void;
|
|
111
|
+
snapshot: () => Snapshot;
|
|
112
|
+
/** The tenant the store currently answers for. */
|
|
113
|
+
tenant: () => string | undefined;
|
|
114
|
+
/**
|
|
115
|
+
* Stops polls, drops in-flight results and persistence; the store keeps
|
|
116
|
+
* answering from its last snapshot.
|
|
117
|
+
*/
|
|
118
|
+
dispose: () => void;
|
|
119
|
+
};
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/client/protected-action.d.ts
|
|
122
|
+
type ProtectedActionState<T> = {
|
|
123
|
+
/** The last call's answer; `undefined` before the first call. */
|
|
124
|
+
readonly result: ActionResult<T> | undefined;
|
|
125
|
+
/** A call is in flight. */
|
|
126
|
+
readonly pending: boolean;
|
|
127
|
+
};
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src/client/types.d.ts
|
|
130
|
+
type ClientStatus = "ready" | "pending" | "stale" | "server-only";
|
|
131
|
+
type PermissionState = {
|
|
132
|
+
readonly allowed: boolean;
|
|
133
|
+
readonly status: ClientStatus;
|
|
134
|
+
readonly decision: Decision;
|
|
135
|
+
};
|
|
136
|
+
type PermissionSet = {
|
|
137
|
+
readonly granted: readonly Permission[];
|
|
138
|
+
get: (permission: Permission) => PermissionState | undefined;
|
|
139
|
+
};
|
|
140
|
+
type ClientPermDock<V extends PolicyVocabulary = PolicyVocabulary> = PermDock<V> & {
|
|
141
|
+
status: (permission?: Permission, data?: unknown) => ClientStatus;
|
|
142
|
+
invalidate: (ref: Permission | {
|
|
143
|
+
readonly [key: string]: unknown;
|
|
144
|
+
}) => void;
|
|
145
|
+
refresh: (options?: {
|
|
146
|
+
readonly tenant?: string;
|
|
147
|
+
}) => Promise<void>;
|
|
148
|
+
clear: () => void;
|
|
149
|
+
subscribe: (listener: () => void) => () => void;
|
|
150
|
+
};
|
|
151
|
+
type ApprovalState = "not-needed" | "required" | "pending" | "approved" | "rejected" | "expired";
|
|
152
|
+
type ApprovalHandle = {
|
|
153
|
+
readonly state: ApprovalState;
|
|
154
|
+
readonly token: string | undefined;
|
|
155
|
+
readonly request: (note?: string) => Promise<void>;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* A protected server action wired to a control: the gate for its button, the
|
|
159
|
+
* last answer, and the approval its `approval-required` problem carries. The
|
|
160
|
+
* client decides nothing; the action answers.
|
|
161
|
+
*/
|
|
162
|
+
type ProtectedActionView<T> = ProtectedActionState<T> & {
|
|
163
|
+
readonly gate: GateView;
|
|
164
|
+
/** On an `approval-required` problem, the handle for its token. */
|
|
165
|
+
readonly approval: ApprovalHandle | undefined;
|
|
166
|
+
};
|
|
167
|
+
type ProtectedActionHandle<T> = ProtectedActionView<T> & {
|
|
168
|
+
readonly run: (input: unknown) => Promise<ActionResult<T>>;
|
|
169
|
+
/** Resends the last input with the approval token; `undefined` without one. */
|
|
170
|
+
readonly retry: () => Promise<ActionResult<T> | undefined>;
|
|
171
|
+
};
|
|
172
|
+
type SubjectView = {
|
|
173
|
+
readonly principal: Principal | null;
|
|
174
|
+
readonly actor: Actor | undefined;
|
|
175
|
+
readonly delegation: Delegation | undefined;
|
|
176
|
+
readonly expiresAt: number | undefined;
|
|
177
|
+
readonly simulated: boolean;
|
|
178
|
+
};
|
|
179
|
+
type TenantView = {
|
|
180
|
+
readonly tenant: string | null;
|
|
181
|
+
readonly tenants: readonly string[];
|
|
182
|
+
readonly switchTo: (id: string) => Promise<void>;
|
|
183
|
+
readonly status: ClientStatus;
|
|
184
|
+
};
|
|
185
|
+
type FilterResult<T> = readonly T[] & {
|
|
186
|
+
readonly partial: boolean;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Which held roles `useRoles` lists: those of a tenant (the active one by
|
|
190
|
+
* default), or only those on the memberships of one `scope`, and of one
|
|
191
|
+
* instance `id` of it.
|
|
192
|
+
*/
|
|
193
|
+
type RolesOptions = {
|
|
194
|
+
readonly tenant?: string;
|
|
195
|
+
readonly scope?: string;
|
|
196
|
+
readonly id?: string;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* The provider options Vue, Svelte and Solid share; each adds its own reactive
|
|
200
|
+
* `snapshot`, `tenant`, `headers`, `verifier` and `defaults`.
|
|
201
|
+
*/
|
|
202
|
+
type ProviderOptionsBase = {
|
|
203
|
+
/**
|
|
204
|
+
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
205
|
+
* `false` never calls one: such a check is denied with reason `server-only`.
|
|
206
|
+
*/
|
|
207
|
+
readonly endpoint?: string | false;
|
|
208
|
+
/** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
|
|
209
|
+
readonly snapshotUrl?: string;
|
|
210
|
+
readonly approvals?: string;
|
|
211
|
+
/** Read on every request, so a new `fetch` applies without a new store. */
|
|
212
|
+
readonly fetch?: typeof fetch;
|
|
213
|
+
readonly maxAge?: number;
|
|
214
|
+
/** Localised text for the describe helper. */
|
|
215
|
+
readonly messages?: DescribeMessages;
|
|
216
|
+
/** Called with each snapshot the store accepts. */
|
|
217
|
+
readonly onSnapshot?: NonNullable<ClientStoreOptions["onSnapshot"]>;
|
|
218
|
+
/** Called when the store drops its snapshot. */
|
|
219
|
+
readonly onClear?: () => void;
|
|
220
|
+
/** Milliseconds between approval status polls. Defaults to 2000. */
|
|
221
|
+
readonly approvalInterval?: number;
|
|
222
|
+
/**
|
|
223
|
+
* Triggers that refresh the snapshot, such as `eventSourceRefresh(url)`; read
|
|
224
|
+
* once.
|
|
225
|
+
*/
|
|
226
|
+
readonly refreshOn?: readonly RefreshTrigger[];
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* How a control shows a permission it cannot use: hidden, or disabled with a
|
|
230
|
+
* reason.
|
|
231
|
+
*/
|
|
232
|
+
type GateMode = "hide" | "disable";
|
|
233
|
+
/**
|
|
234
|
+
* Everything a permission-gated control renders from, in one value: a button, a
|
|
235
|
+
* menu item or a link reads these fields and decides nothing itself. The client
|
|
236
|
+
* is a hint; the server checks again.
|
|
237
|
+
*/
|
|
238
|
+
type GateView = {
|
|
239
|
+
/** The decision granted the action. */
|
|
240
|
+
readonly allowed: boolean;
|
|
241
|
+
/** The snapshot is loading; render the control disabled, not hidden. */
|
|
242
|
+
readonly pending: boolean;
|
|
243
|
+
/** `mode: "hide"` and the action is not available: render nothing. */
|
|
244
|
+
readonly hidden: boolean;
|
|
245
|
+
/**
|
|
246
|
+
* The control cannot run the action now (denied, pending or awaiting
|
|
247
|
+
* approval).
|
|
248
|
+
*/
|
|
249
|
+
readonly disabled: boolean;
|
|
250
|
+
/** The decision needs a person's approval first; offer to request it. */
|
|
251
|
+
readonly needsApproval: boolean;
|
|
252
|
+
/**
|
|
253
|
+
* The plans that would grant the action, for an upgrade prompt; empty
|
|
254
|
+
* otherwise.
|
|
255
|
+
*/
|
|
256
|
+
readonly upgrade: readonly string[];
|
|
257
|
+
/** Title and detail for a tooltip or an accessible description. */
|
|
258
|
+
readonly reason: DecisionDescription;
|
|
259
|
+
readonly decision: Decision;
|
|
260
|
+
};
|
|
261
|
+
//#endregion
|
|
262
|
+
export { ClientStoreOptions as _, FilterResult as a, eventSourceRefresh as b, PermissionSet as c, ProtectedActionView as d, ProviderOptionsBase as f, ClientStore as g, TenantView as h, ClientStatus as i, PermissionState as l, SubjectView as m, ApprovalState as n, GateMode as o, RolesOptions as p, ClientPermDock as r, GateView as s, ApprovalHandle as t, ProtectedActionHandle as u, EventSourceRefreshOptions as v, RefreshTrigger as y };
|
package/dist/unplugin/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { s as PermDockPluginOptions } from "../types-CzOeVvcC.js";
|
|
2
2
|
import { createUnplugin } from "unplugin";
|
|
3
3
|
//#region src/unplugin/index.d.ts
|
|
4
4
|
type CreateUnplugin = typeof createUnplugin<PermDockPluginOptions | undefined>;
|
package/dist/unplugin/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as createCollectScheduler, r as report } from "../watch-
|
|
2
|
-
import { r as peerHint } from "../peer-
|
|
1
|
+
import { n as createCollectScheduler, r as report } from "../watch-BFDKqmUa.js";
|
|
2
|
+
import { r as peerHint } from "../peer-Q0fuZ6hx.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
//#region src/unplugin/index.ts
|
|
5
5
|
function loadCreateUnplugin() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as runUsage } from "./usage-B9EtHWLa.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { a as getResource } from "./permission-registry-
|
|
2
|
-
import { u as usageResult } from "./errors-
|
|
3
|
-
import { a as rel, r as listSourceFiles } from "./files-
|
|
4
|
-
import { o as USAGE_REPORT_SCHEMA } from "./version-
|
|
5
|
-
import { c as jsonSchemaOf } from "./catalog-doc-
|
|
6
|
-
import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-
|
|
7
|
-
import { r as runCollect } from "./collect-
|
|
1
|
+
import { a as getResource } from "./permission-registry-B8tYxPIt.js";
|
|
2
|
+
import { u as usageResult } from "./errors-Vpu6rKHl.js";
|
|
3
|
+
import { a as rel, r as listSourceFiles } from "./files-BSjrtIHw.js";
|
|
4
|
+
import { o as USAGE_REPORT_SCHEMA } from "./version-DMQ0dnN5.js";
|
|
5
|
+
import { c as jsonSchemaOf } from "./catalog-doc-DjMKzJp9.js";
|
|
6
|
+
import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-DjSU5KXO.js";
|
|
7
|
+
import { r as runCollect } from "./collect-WCl8cJQV.js";
|
|
8
8
|
import { t as beforeFirst } from "./text-BMFRfBqc.js";
|
|
9
|
-
import { t as DOCS_BASE } from "./manifest-
|
|
10
|
-
import { r as findingOf } from "./output-
|
|
9
|
+
import { t as DOCS_BASE } from "./manifest-B2QPh19C.js";
|
|
10
|
+
import { r as findingOf } from "./output-DV5dwOTs.js";
|
|
11
11
|
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
12
12
|
import { dirname, resolve } from "node:path";
|
|
13
13
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -15,7 +15,10 @@ import { createJiti } from "jiti";
|
|
|
15
15
|
import { Visitor, parseSync } from "oxc-parser";
|
|
16
16
|
import { isBuiltin } from "node:module";
|
|
17
17
|
//#region src/cli/doctor/source.ts
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Entries a client file must not import; `tests/cli/doctor-entries.test.ts`
|
|
20
|
+
* keeps it in step with `exports`.
|
|
21
|
+
*/
|
|
19
22
|
const SERVER_SPECIFIERS = [
|
|
20
23
|
"permdock/a2a",
|
|
21
24
|
"permdock/agent",
|
|
@@ -112,7 +115,10 @@ function withoutComments(source) {
|
|
|
112
115
|
function isClientSource(source, clientEntries) {
|
|
113
116
|
return clientEntries.has(source.file) || source.text.includes("'use client'") || source.text.includes("\"use client\"") || source.file.includes(".client.");
|
|
114
117
|
}
|
|
115
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* Specifiers a module loads at runtime: value imports, re-exports and literal
|
|
120
|
+
* dynamic imports.
|
|
121
|
+
*/
|
|
116
122
|
function runtimeSpecifiers(source) {
|
|
117
123
|
const { module } = parseSync(source.file, source.text);
|
|
118
124
|
const out = /* @__PURE__ */ new Set();
|
|
@@ -132,10 +138,10 @@ function realFile(path) {
|
|
|
132
138
|
}
|
|
133
139
|
}
|
|
134
140
|
/**
|
|
135
|
-
* A resolver for imports of `file`, the way the bundler resolves them:
|
|
136
|
-
*
|
|
137
|
-
* `tsconfig.json`, and package names through `node_modules` and each
|
|
138
|
-
*
|
|
141
|
+
* A resolver for imports of `file`, the way the bundler resolves them: relative
|
|
142
|
+
* paths with or without an extension, the `paths` of the nearest
|
|
143
|
+
* `tsconfig.json`, and package names through `node_modules` and each package's
|
|
144
|
+
* `exports`. An unresolvable specifier gives `undefined`.
|
|
139
145
|
*/
|
|
140
146
|
function resolverFor(file) {
|
|
141
147
|
const jiti = createJiti(file, { tsconfigPaths: dirname(file) });
|
|
@@ -222,7 +228,7 @@ function pd010(sources) {
|
|
|
222
228
|
}
|
|
223
229
|
function pd011(sources) {
|
|
224
230
|
const findings = [];
|
|
225
|
-
for (const source of sources) if (/tenant['"]?\s*:\s*['"]hd['"]/u.test(source.text) || /accounts\.google\.com/u.test(source.text) &&
|
|
231
|
+
for (const source of sources) if (/tenant['"]?\s*:\s*['"]hd['"]/u.test(source.text) || /accounts\.google\.com/u.test(source.text) && source.text.includes("tenant")) findings.push({
|
|
226
232
|
code: "PD011",
|
|
227
233
|
severity: "warning",
|
|
228
234
|
message: `${source.file} reads tenant from an optional issuer claim`,
|
|
@@ -355,7 +361,10 @@ function pd015(sources) {
|
|
|
355
361
|
return findings;
|
|
356
362
|
}
|
|
357
363
|
const SUPABASE_SUBJECT_CALL = /\bsubjectFromSupabase(?:Session)?\s*\(/gu;
|
|
358
|
-
/**
|
|
364
|
+
/**
|
|
365
|
+
* Top-level arguments of the call whose `(` ends at `open`, or undefined when
|
|
366
|
+
* unbalanced.
|
|
367
|
+
*/
|
|
359
368
|
function callArguments(text, open) {
|
|
360
369
|
const args = [];
|
|
361
370
|
let depth = 0;
|
|
@@ -382,7 +391,10 @@ function callArguments(text, open) {
|
|
|
382
391
|
}
|
|
383
392
|
}
|
|
384
393
|
}
|
|
385
|
-
/**
|
|
394
|
+
/**
|
|
395
|
+
* The claim a `subjectFromSupabase` call reads the tenant from, or undefined
|
|
396
|
+
* when the options are not a literal.
|
|
397
|
+
*/
|
|
386
398
|
function readTenantClaim(options, fallback) {
|
|
387
399
|
if (options === void 0) return fallback;
|
|
388
400
|
if (!options.startsWith("{")) return;
|
|
@@ -409,9 +421,9 @@ function pd038(sources, tenantClaim, fallback) {
|
|
|
409
421
|
return findings;
|
|
410
422
|
}
|
|
411
423
|
/**
|
|
412
|
-
* PD057: `rls.anonymousSignIns` is `'deny'`, so RLS refuses
|
|
413
|
-
* `
|
|
414
|
-
* literal object are not read.
|
|
424
|
+
* PD057: `rls.anonymousSignIns` is `'deny'`, so RLS refuses
|
|
425
|
+
* `signInAnonymously()` users, but a `subjectFromSupabase(Session)` call maps
|
|
426
|
+
* them as signed-in users. Options that are not a literal object are not read.
|
|
415
427
|
*/
|
|
416
428
|
function pd057(sources) {
|
|
417
429
|
const findings = [];
|
|
@@ -433,7 +445,10 @@ function pd057(sources) {
|
|
|
433
445
|
return findings;
|
|
434
446
|
}
|
|
435
447
|
const EXCHANGE_CALL = /\bexchangeCapability\s*\(/gu;
|
|
436
|
-
/**
|
|
448
|
+
/**
|
|
449
|
+
* PD041: `exchangeCapability` signing link tokens with the project's shared JWT
|
|
450
|
+
* secret.
|
|
451
|
+
*/
|
|
437
452
|
function pd041(sources) {
|
|
438
453
|
const findings = [];
|
|
439
454
|
for (const source of sources) for (const match of source.text.matchAll(EXCHANGE_CALL)) {
|
|
@@ -453,7 +468,10 @@ function pd041(sources) {
|
|
|
453
468
|
const PROTECT_CALL = /\bprotect\s*\(/gu;
|
|
454
469
|
const ID_ROUTE = /['"`](\/[^'"`\s]*(?::[A-Za-z_$][\w$]*|\{[A-Za-z_$][\w$]*\})[^'"`\s]*)['"`]/gu;
|
|
455
470
|
const DYNAMIC_SEGMENT = /(?:^|[\\/])(\[[^\]/\\]+\])(?=[\\/])/u;
|
|
456
|
-
/**
|
|
471
|
+
/**
|
|
472
|
+
* The id-bearing route a `protect` call at `index` sits in: the file's dynamic
|
|
473
|
+
* segment, or a route literal earlier in the same statement.
|
|
474
|
+
*/
|
|
457
475
|
function idRouteOf(source, index) {
|
|
458
476
|
const segment = DYNAMIC_SEGMENT.exec(source.file);
|
|
459
477
|
if (segment !== null) return segment[1];
|
|
@@ -461,7 +479,10 @@ function idRouteOf(source, index) {
|
|
|
461
479
|
const start = Math.max(window.lastIndexOf(";"), window.lastIndexOf("\n\n"));
|
|
462
480
|
return [...window.slice(start + 1).matchAll(ID_ROUTE)].at(-1)?.[1];
|
|
463
481
|
}
|
|
464
|
-
/**
|
|
482
|
+
/**
|
|
483
|
+
* PD036: a `protect(permission)` with no row loader on a route whose path names
|
|
484
|
+
* an object id (BOLA, OWASP API1).
|
|
485
|
+
*/
|
|
465
486
|
function pd036(sources) {
|
|
466
487
|
const findings = [];
|
|
467
488
|
for (const source of sources) {
|
|
@@ -709,8 +730,11 @@ function ignored(key, patterns) {
|
|
|
709
730
|
});
|
|
710
731
|
}
|
|
711
732
|
function formatUsage(report) {
|
|
712
|
-
const lines = [
|
|
713
|
-
|
|
733
|
+
const lines = [
|
|
734
|
+
"permdock usage",
|
|
735
|
+
"",
|
|
736
|
+
` defined but unused (${String(report.unused.length)})`
|
|
737
|
+
];
|
|
714
738
|
for (const finding of report.unused) lines.push(` ${finding.key.padEnd(28)} ${finding.detail}`);
|
|
715
739
|
lines.push("");
|
|
716
740
|
lines.push(` used but ungranted (${String(report.ungranted.length)})`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { a as failOnFlag } from "./flags-
|
|
2
|
+
import { a as failOnFlag } from "./flags-DXjoTVbS.js";
|
|
3
3
|
//#region src/cli/commands/usage.ts
|
|
4
4
|
const usage = defineLeaf({
|
|
5
5
|
flags: {
|
|
@@ -16,7 +16,7 @@ const usage = defineLeaf({
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
async run(ctx, { flags }) {
|
|
19
|
-
return (await import("./usage-
|
|
19
|
+
return (await import("./usage-0hjZPIRX.js")).runUsage({
|
|
20
20
|
cwd: ctx.cwd,
|
|
21
21
|
config: ctx.config,
|
|
22
22
|
ignore: flags.ignore,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
//#region src/core/validation-error.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The base of every Problem Details `type` URI; defined here so a validation
|
|
5
|
+
* error does not pull in the Problem Details builders.
|
|
6
|
+
*/
|
|
4
7
|
const PROBLEM_BASE = "https://permdock.com/problems";
|
|
5
8
|
var PermDockValidationError = class extends Error {
|
|
6
9
|
name = "PermDockValidationError";
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { a as ProblemDetails } from "./errors-
|
|
1
|
+
import { a as ProblemDetails } from "./errors-BIM4MFsJ.js";
|
|
2
2
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
3
|
//#region src/core/validation-error.d.ts
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* The base of every Problem Details `type` URI; defined here so a validation
|
|
6
|
+
* error does not pull in the Problem Details builders.
|
|
7
|
+
*/
|
|
5
8
|
declare const PROBLEM_BASE = "https://permdock.com/problems";
|
|
6
9
|
declare class PermDockValidationError extends Error {
|
|
7
10
|
override readonly name: "PermDockValidationError";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as freezeDeep } from "./freeze-
|
|
2
|
-
import { i as ownKeys, n as isForbiddenKey, r as ownGet } from "./paths-
|
|
3
|
-
import { c as instantOf, g as secondsOf, m as rfc3339 } from "./time-
|
|
1
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
2
|
+
import { i as ownKeys, n as isForbiddenKey, r as ownGet } from "./paths-CUvURzHp.js";
|
|
3
|
+
import { c as instantOf, g as secondsOf, m as rfc3339 } from "./time-nR1JesoH.js";
|
|
4
4
|
//#region src/core/fields.ts
|
|
5
5
|
function sanitizeFields(fields) {
|
|
6
6
|
if (fields === void 0) return;
|
|
@@ -26,9 +26,9 @@ function sanitizeContext(value) {
|
|
|
26
26
|
//#endregion
|
|
27
27
|
//#region src/core/validity.ts
|
|
28
28
|
/**
|
|
29
|
-
* The normalised validity of a grant, or `undefined` when neither bound is
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* The normalised validity of a grant, or `undefined` when neither bound is set.
|
|
30
|
+
* Fail-closed at definition time: a bound that does not parse, or a window that
|
|
31
|
+
* ends before it starts, throws so a typo never widens a grant.
|
|
32
32
|
*/
|
|
33
33
|
function normalizeValidity(options, permissionKey) {
|
|
34
34
|
const from = options.validFrom === void 0 ? void 0 : instantOf(options.validFrom);
|
|
@@ -42,7 +42,10 @@ function normalizeValidity(options, permissionKey) {
|
|
|
42
42
|
...until === void 0 ? {} : { until }
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Whether a grant with this validity applies at `now` (Unix seconds); no
|
|
47
|
+
* validity always applies.
|
|
48
|
+
*/
|
|
46
49
|
function isActive(validity, now) {
|
|
47
50
|
if (validity === void 0) return true;
|
|
48
51
|
if (validity.from !== void 0 && now < validity.from) return false;
|
|
@@ -56,9 +59,9 @@ function wireValidity(validity) {
|
|
|
56
59
|
});
|
|
57
60
|
}
|
|
58
61
|
/**
|
|
59
|
-
* The validity of a wire grant. A malformed window fails closed for the
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
+
* The validity of a wire grant. A malformed window fails closed for the grant's
|
|
63
|
+
* effect: an allow never applies (`{ from: +∞ }`), a deny always does (no
|
|
64
|
+
* window), so a corrupt bound can never lift a deny.
|
|
62
65
|
*/
|
|
63
66
|
function readWireValidity(value, effect = "allow") {
|
|
64
67
|
if (value === void 0) return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as isForbiddenKey, s as splitPath } from "./paths-
|
|
3
|
-
import { p as nowSeconds } from "./time-
|
|
2
|
+
import { n as isForbiddenKey, s as splitPath } from "./paths-CUvURzHp.js";
|
|
3
|
+
import { p as nowSeconds } from "./time-nR1JesoH.js";
|
|
4
4
|
import { t as loadJose } from "./load-jose-DZ4dnjri.js";
|
|
5
5
|
//#region src/jwt/header.ts
|
|
6
6
|
function compactParts(token) {
|
|
@@ -145,7 +145,10 @@ function secretBytes(secret) {
|
|
|
145
145
|
if (typeof secret === "string") return new TextEncoder().encode(secret);
|
|
146
146
|
return secret;
|
|
147
147
|
}
|
|
148
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* The verifier options of a subject config: `audience: false` means none is
|
|
150
|
+
* checked.
|
|
151
|
+
*/
|
|
149
152
|
function verifierOptions(options) {
|
|
150
153
|
const { audience, ...rest } = options;
|
|
151
154
|
return audience === false || audience === void 0 ? rest : {
|
|
@@ -348,7 +351,10 @@ function configuredKeys(listed) {
|
|
|
348
351
|
function isObject(value) {
|
|
349
352
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
350
353
|
}
|
|
351
|
-
/**
|
|
354
|
+
/**
|
|
355
|
+
* Whether `key` may decrypt a token with this header: encryption use, matching
|
|
356
|
+
* `alg` and `kid`, and private material.
|
|
357
|
+
*/
|
|
352
358
|
function mayDecrypt(key, header) {
|
|
353
359
|
if (!isObject(key)) return false;
|
|
354
360
|
if (key["use"] !== void 0 && key["use"] !== "enc") return false;
|