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,6 +1,9 @@
|
|
|
1
1
|
import { n as isReadonlyArray } from "./compact-CAf557ZB.js";
|
|
2
2
|
//#region src/core/approvers.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Approves when the approver holds `permission` in the request's tenant (any
|
|
5
|
+
* role, custom roles included).
|
|
6
|
+
*/
|
|
4
7
|
function holder(permission) {
|
|
5
8
|
const key = permission?.key;
|
|
6
9
|
if (typeof key !== "string" || key === "") throw new Error("PermDock: holder() needs a permission");
|
|
@@ -38,7 +41,10 @@ function flattenApprovers(input) {
|
|
|
38
41
|
if (isReadonlyArray(input)) return input;
|
|
39
42
|
return [input];
|
|
40
43
|
}
|
|
41
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Every approver `input` names, inside `anyOf` groups too, for reading facts
|
|
46
|
+
* and labels.
|
|
47
|
+
*/
|
|
42
48
|
function approverLeaves(input) {
|
|
43
49
|
return flattenApprovers(input).flatMap((item) => item.kind === "any-of" ? item.of.flatMap((entry) => approverLeaves(entry)) : [item]);
|
|
44
50
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { c as given, u as permissionsFlag } from "./flags-
|
|
2
|
+
import { c as given, u as permissionsFlag } from "./flags-DXjoTVbS.js";
|
|
3
3
|
//#region src/cli/commands/arazzo.ts
|
|
4
4
|
const check = defineLeaf({
|
|
5
5
|
flags: {
|
|
@@ -21,7 +21,7 @@ const check = defineLeaf({
|
|
|
21
21
|
...permissionsFlag
|
|
22
22
|
},
|
|
23
23
|
async run(ctx, { flags }) {
|
|
24
|
-
return (await import("./arazzo-
|
|
24
|
+
return (await import("./arazzo-CmQaGPkM.js")).runArazzo({
|
|
25
25
|
cwd: ctx.cwd,
|
|
26
26
|
config: ctx.config,
|
|
27
27
|
doc: given(flags.doc),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { _ as arazzoFindings } from "./src-
|
|
2
|
-
import { c as missingInput } from "./errors-
|
|
3
|
-
import { i as readJsonFile } from "./files-
|
|
4
|
-
import { t as ARAZZO_REPORT_SCHEMA } from "./version-
|
|
5
|
-
import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-
|
|
6
|
-
import { t as DOCS_BASE } from "./manifest-
|
|
1
|
+
import { _ as arazzoFindings } from "./src-C_pi2Rnh.js";
|
|
2
|
+
import { c as missingInput } from "./errors-Vpu6rKHl.js";
|
|
3
|
+
import { i as readJsonFile } from "./files-BSjrtIHw.js";
|
|
4
|
+
import { t as ARAZZO_REPORT_SCHEMA } from "./version-DMQ0dnN5.js";
|
|
5
|
+
import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
|
|
6
|
+
import { t as DOCS_BASE } from "./manifest-B2QPh19C.js";
|
|
7
7
|
import { existsSync } from "node:fs";
|
|
8
8
|
import { resolve } from "node:path";
|
|
9
9
|
//#region src/cli/arazzo.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as CliError } from "./errors-
|
|
1
|
+
import { n as CliError } from "./errors-Vpu6rKHl.js";
|
|
2
2
|
//#region ../../node_modules/.pnpm/fastest-levenshtein@1.0.16/node_modules/fastest-levenshtein/esm/mod.js
|
|
3
3
|
const peq = /* @__PURE__ */ new Uint32Array(65536);
|
|
4
4
|
const myers_32 = (a, b) => {
|
|
@@ -185,7 +185,10 @@ function suggestion(given, names) {
|
|
|
185
185
|
const best = didYouMean(given, names);
|
|
186
186
|
return best === void 0 ? "" : ` Did you mean ${best}?`;
|
|
187
187
|
}
|
|
188
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* Every spelling a flag set accepts: `--name`, `--no-name` for booleans, `-x`
|
|
190
|
+
* aliases.
|
|
191
|
+
*/
|
|
189
192
|
function lookupOf(flags) {
|
|
190
193
|
const lookup = /* @__PURE__ */ new Map();
|
|
191
194
|
for (const [name, flag] of Object.entries(flags)) {
|
|
@@ -207,7 +210,10 @@ function lookupOf(flags) {
|
|
|
207
210
|
function flagSpellings(flags) {
|
|
208
211
|
return [...lookupOf(flags).keys()];
|
|
209
212
|
}
|
|
210
|
-
/**
|
|
213
|
+
/**
|
|
214
|
+
* A value never starts with `-`, bar `-` itself: `--out --check` is a bare
|
|
215
|
+
* `--out`.
|
|
216
|
+
*/
|
|
211
217
|
function isValue(token) {
|
|
212
218
|
return token !== void 0 && (token === "-" || !token.startsWith("-"));
|
|
213
219
|
}
|
|
@@ -218,8 +224,8 @@ function checkEnum(command, name, flag, value) {
|
|
|
218
224
|
if (flag.type === "enum" && !flag.options.includes(value)) throw new CliError("usage", `${command}: --${name} ${value === "" ? "needs a value" : `'${value}' is not one of ${flag.options.join(", ")}`}.${suggestion(value, flag.options)}`, { code: "invalid_value" });
|
|
219
225
|
}
|
|
220
226
|
/**
|
|
221
|
-
* Splits argv into the flags `flags` declares, positionals and the tokens
|
|
222
|
-
*
|
|
227
|
+
* Splits argv into the flags `flags` declares, positionals and the tokens after
|
|
228
|
+
* `--`. An undeclared flag is a usage error naming the nearest one.
|
|
223
229
|
* `--name=value`, `--name value`, `--no-name` and `-x` aliases all read.
|
|
224
230
|
*/
|
|
225
231
|
function parseFlags(command, argv, flags) {
|
|
@@ -244,11 +250,12 @@ function parseFlags(command, argv, flags) {
|
|
|
244
250
|
const flag = flags[found.name];
|
|
245
251
|
if (flag === void 0) continue;
|
|
246
252
|
if (flag.type === "boolean") {
|
|
247
|
-
if (eq
|
|
253
|
+
if (eq === -1) values.set(found.name, !found.negated);
|
|
254
|
+
else {
|
|
248
255
|
const raw = token.slice(eq + 1);
|
|
249
256
|
if (raw !== "true" && raw !== "false") throw new CliError("usage", `${command}: ${spelling} takes true or false, got '${raw}'`, { code: "invalid_value" });
|
|
250
257
|
values.set(found.name, raw === "true" !== found.negated);
|
|
251
|
-
}
|
|
258
|
+
}
|
|
252
259
|
continue;
|
|
253
260
|
}
|
|
254
261
|
let value;
|
package/dist/astro/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as Permission } from "../permission-types-
|
|
3
|
-
import { a as OperationInput, t as Operation } from "../operations-
|
|
4
|
-
import { a as PermDock } from "../permdock-
|
|
5
|
-
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
6
|
-
import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-
|
|
1
|
+
import { T as Policy, Zt as Snapshot, j as PolicyVocabulary, pr as Principal } from "../policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as OperationInput, t as Operation } from "../operations-Ci_rT6Uo.js";
|
|
4
|
+
import { a as PermDock } from "../permdock-CprAPN3w.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-CyRN0-Cd.js";
|
|
6
|
+
import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-BIbBAtPZ.js";
|
|
7
7
|
import { APIContext, MiddlewareHandler } from "astro";
|
|
8
8
|
//#region src/astro/create.d.ts
|
|
9
9
|
type AstroPermDockOptions<TUser = unknown> = FetchAdapterOptions<APIContext, TUser>;
|
|
@@ -12,7 +12,10 @@ type AstroPermDockLocals<TData = unknown, V extends PolicyVocabulary = PolicyVoc
|
|
|
12
12
|
readonly permdock: PermDock<V>;
|
|
13
13
|
readonly permdockData: TData;
|
|
14
14
|
};
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The context a wrapped endpoint receives: its own `APIContext` with typed
|
|
17
|
+
* `locals`.
|
|
18
|
+
*/
|
|
16
19
|
type AstroPermDockContext<TContext extends APIContext = APIContext, TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TContext & {
|
|
17
20
|
readonly locals: AstroPermDockLocals<TData, V>;
|
|
18
21
|
};
|
|
@@ -23,18 +26,33 @@ type AstroProtect<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
23
26
|
<TOperation extends Operation>(operation: TOperation, input?: ContextReader<APIContext, OperationInput<TOperation>>, protectOptions?: ProtectOptions): AstroGuarded<unknown, V>;
|
|
24
27
|
};
|
|
25
28
|
type AstroPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
26
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* `onRequest` in `src/middleware.ts`: sets `context.locals.permdock`; a bad
|
|
31
|
+
* Web Bot Auth signature is a `401`.
|
|
32
|
+
*/
|
|
27
33
|
readonly middleware: () => MiddlewareHandler;
|
|
28
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* `export const DELETE = protect(permissions.post.delete,
|
|
36
|
+
* loadPost)(handler)`.
|
|
37
|
+
*/
|
|
29
38
|
readonly protect: AstroProtect<V>;
|
|
30
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Types `context.locals.permdock` for an endpoint and answers a thrown
|
|
41
|
+
* PermDock error with Problem Details.
|
|
42
|
+
*/
|
|
31
43
|
readonly withPermDock: AstroGuarded<unknown, V>;
|
|
32
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* The instance for an endpoint, an action or a page's frontmatter (`Astro` is
|
|
46
|
+
* an `APIContext`).
|
|
47
|
+
*/
|
|
33
48
|
readonly getPermDock: (context: APIContext) => Promise<PermDock<V>>;
|
|
34
49
|
/** The snapshot a page passes to a `permdock/react` island. */
|
|
35
50
|
readonly getSnapshot: (context: APIContext, query?: SnapshotQuery) => Promise<Snapshot>;
|
|
36
51
|
readonly connection: (context: APIContext, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
37
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* `export const { GET, POST } = permdockHandler()` in
|
|
54
|
+
* `src/pages/api/permdock.ts`.
|
|
55
|
+
*/
|
|
38
56
|
readonly permdockHandler: () => PermDockHandlers<APIContext>;
|
|
39
57
|
readonly openapi: OpenApiHooks;
|
|
40
58
|
};
|
package/dist/astro/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-
|
|
2
|
-
import { n as guardedRoute, r as instanceRoute, t as fetchAdapter } from "../fetch-adapter-
|
|
1
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-IBceAeKT.js";
|
|
2
|
+
import { n as guardedRoute, r as instanceRoute, t as fetchAdapter } from "../fetch-adapter-dPTgJVHd.js";
|
|
3
3
|
//#region src/astro/create.ts
|
|
4
4
|
const route = {
|
|
5
5
|
context: (context) => context,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { t as whoCan } from "./who-can-
|
|
1
|
+
import { t as whoCan } from "./who-can-BoDJm0Nc.js";
|
|
2
2
|
//#region src/delivery/audience.ts
|
|
3
3
|
async function granted(permdock, ids, permission, row) {
|
|
4
4
|
const unique = [...new Set(ids.filter((id) => typeof id === "string" && id !== ""))];
|
|
5
5
|
const decisions = await Promise.all(unique.map(async (id) => {
|
|
6
6
|
try {
|
|
7
|
-
|
|
7
|
+
const { outcome } = await permdock.decideFor(id, permission, row);
|
|
8
|
+
return outcome;
|
|
8
9
|
} catch {
|
|
9
10
|
return "denied";
|
|
10
11
|
}
|
|
@@ -14,8 +15,8 @@ async function granted(permdock, ids, permission, row) {
|
|
|
14
15
|
/**
|
|
15
16
|
* Who may receive a delivery about `row`: the holders `whoCan` lists (or
|
|
16
17
|
* `candidates`), kept only where `decideFor` grants `permission` in the
|
|
17
|
-
* sender's active tenant. A collection permission has no holders to list,
|
|
18
|
-
*
|
|
18
|
+
* sender's active tenant. A collection permission has no holders to list, so it
|
|
19
|
+
* needs `candidates`; without them it is empty and incomplete.
|
|
19
20
|
*/
|
|
20
21
|
async function audience(permdock, permission, row, options = {}) {
|
|
21
22
|
if (options.candidates !== void 0) return Object.freeze({
|
|
@@ -41,10 +42,9 @@ async function audience(permdock, permission, row, options = {}) {
|
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
|
-
* The subscribers whose principal `decideFor` grants the event's
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* `principal` is dropped.
|
|
45
|
+
* The subscribers whose principal `decideFor` grants the event's permission on
|
|
46
|
+
* its row, in their order: the per-event filter for webhook endpoints and
|
|
47
|
+
* realtime channels. A subscriber without a string `principal` is dropped.
|
|
48
48
|
*/
|
|
49
49
|
async function subscribersFor(permdock, event, subscribers) {
|
|
50
50
|
const ids = subscribers.map((subscriber) => subscriber.principal).filter((id) => typeof id === "string");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { h as secondsAt } from "./time-
|
|
3
|
-
import { n as CliError } from "./errors-
|
|
4
|
-
import { a as refreshCredential, c as stringField, n as discoverAuthorizationServer } from "./device-
|
|
2
|
+
import { h as secondsAt } from "./time-nR1JesoH.js";
|
|
3
|
+
import { n as CliError } from "./errors-Vpu6rKHl.js";
|
|
4
|
+
import { a as refreshCredential, c as stringField, n as discoverAuthorizationServer } from "./device-BwbJNmb2.js";
|
|
5
5
|
import { i as writeCredentials, r as readCredentials, t as credentialsPath } from "./storage-C2bWdvJH.js";
|
|
6
6
|
import { t as CLOUD_BASE_URL } from "./base-url-BQbddZO5.js";
|
|
7
7
|
import { existsSync } from "node:fs";
|
|
@@ -15,7 +15,10 @@ function firstNonEmpty(...values) {
|
|
|
15
15
|
for (const value of values) if (value !== void 0 && value !== "") return value;
|
|
16
16
|
return "";
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* `--url`, then `PERMDOCK_CLOUD_URL`, then the platform issuer; never a
|
|
20
|
+
* trailing slash.
|
|
21
|
+
*/
|
|
19
22
|
function cloudUrl(flag, env) {
|
|
20
23
|
return firstNonEmpty(flag, env["PERMDOCK_CLOUD_URL"], CLOUD_BASE_URL).replace(/\/+$/u, "");
|
|
21
24
|
}
|
|
@@ -54,7 +57,10 @@ function isHttps(value, issuer) {
|
|
|
54
57
|
}
|
|
55
58
|
//#endregion
|
|
56
59
|
//#region src/cli/cloud/auth.ts
|
|
57
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* The service name credentials are stored under, in the keychain or the config
|
|
62
|
+
* directory.
|
|
63
|
+
*/
|
|
58
64
|
const CREDENTIAL_SERVICE = "permdock";
|
|
59
65
|
/** Seconds before `expires_at` at which a stored access token counts as expired. */
|
|
60
66
|
const EXPIRY_SKEW_SECONDS = 30;
|
|
@@ -98,7 +104,10 @@ function repositoryRoot(cwd) {
|
|
|
98
104
|
dir = parent;
|
|
99
105
|
}
|
|
100
106
|
}
|
|
101
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* The credentials file when it would land inside the repository at `cwd`;
|
|
109
|
+
* `null` when it is outside.
|
|
110
|
+
*/
|
|
102
111
|
function credentialsInsideRepository(cwd, runtime) {
|
|
103
112
|
const root = repositoryRoot(cwd);
|
|
104
113
|
if (root === null) return null;
|
|
@@ -159,7 +168,10 @@ async function readAuth(command, issuer, env, runtime) {
|
|
|
159
168
|
source: "login"
|
|
160
169
|
};
|
|
161
170
|
}
|
|
162
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* The bearer for `cloud push`: `PERMDOCK_CLOUD_KEY`, then a login holding
|
|
173
|
+
* `catalog:write`.
|
|
174
|
+
*/
|
|
163
175
|
async function pushAuth(issuer, env, runtime) {
|
|
164
176
|
const key = env["PERMDOCK_CLOUD_KEY"];
|
|
165
177
|
if (key !== void 0 && key !== "") return {
|
package/dist/authzen/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as Policy,
|
|
2
|
-
import { m as ApprovalStore } from "../types-
|
|
3
|
-
import { a as ProblemDetails } from "../errors-
|
|
4
|
-
import { t as InstanceOptions } from "../instance-options-
|
|
5
|
-
import { a as evaluationsSemantic, n as EvaluationsSemantic, r as evaluateBatch, t as EVALUATIONS_SEMANTICS } from "../evaluations-
|
|
1
|
+
import { T as Policy, lr as Delegation, pr as Principal, rr as Actor } from "../policy-types-DGIO_gxq.js";
|
|
2
|
+
import { m as ApprovalStore } from "../types-DLvhVm1r.js";
|
|
3
|
+
import { a as ProblemDetails } from "../errors-BIM4MFsJ.js";
|
|
4
|
+
import { t as InstanceOptions } from "../instance-options-CoHn-0e8.js";
|
|
5
|
+
import { a as evaluationsSemantic, n as EvaluationsSemantic, r as evaluateBatch, t as EVALUATIONS_SEMANTICS } from "../evaluations-DOWuBpWv.js";
|
|
6
6
|
//#region src/authzen/map.d.ts
|
|
7
7
|
type AuthzenEntity = {
|
|
8
8
|
readonly type?: unknown;
|
|
@@ -32,7 +32,10 @@ type AuthzenSubject = {
|
|
|
32
32
|
readonly type: "user";
|
|
33
33
|
readonly id: string;
|
|
34
34
|
};
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* What `search/subject` asks a lister for: candidates of `type` for one action
|
|
37
|
+
* on one resource.
|
|
38
|
+
*/
|
|
36
39
|
type AuthzenSubjectQuery = {
|
|
37
40
|
readonly type: string;
|
|
38
41
|
readonly action: AuthzenEntity;
|
|
@@ -40,9 +43,9 @@ type AuthzenSubjectQuery = {
|
|
|
40
43
|
readonly context?: unknown;
|
|
41
44
|
};
|
|
42
45
|
/**
|
|
43
|
-
* The principals a policy decision point may answer `search/subject` with,
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
+
* The principals a policy decision point may answer `search/subject` with, the
|
|
47
|
+
* way `AuthzenResourceAdapter.list` supplies rows. Each record is decided as `{
|
|
48
|
+
* type: "user", id, properties }`; only candidates that are granted are
|
|
46
49
|
* returned, so a lister may answer a superset.
|
|
47
50
|
*/
|
|
48
51
|
type AuthzenSubjectLister = {
|
|
@@ -62,10 +65,10 @@ type SearchActionsOptions = AuthzenSearchOptions & {
|
|
|
62
65
|
readonly data?: unknown;
|
|
63
66
|
};
|
|
64
67
|
/**
|
|
65
|
-
* The AuthZEN `search/action` answer for `user` on `resource`: every
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
68
|
+
* The AuthZEN `search/action` answer for `user` on `resource`: every permission
|
|
69
|
+
* of `resource.type` in the policy is decided, and the distinct actions of the
|
|
70
|
+
* granted ones are returned in catalog order. Paging is the caller's
|
|
71
|
+
* (`authzenPage`).
|
|
69
72
|
*/
|
|
70
73
|
export declare function searchActions<TUser, TPrincipal extends Principal = Principal>(policy: Policy<TUser, TPrincipal>, user: TUser, resource: AuthzenEntity & {
|
|
71
74
|
readonly type: string;
|
|
@@ -73,8 +76,8 @@ export declare function searchActions<TUser, TPrincipal extends Principal = Prin
|
|
|
73
76
|
/**
|
|
74
77
|
* The AuthZEN `search/subject` answer: the candidates `lister` returns for
|
|
75
78
|
* `request`, each decided as itself, filtered to those granted `action` on
|
|
76
|
-
* `resource`. An unknown action, a subject type other than `user`, or a
|
|
77
|
-
*
|
|
79
|
+
* `resource`. An unknown action, a subject type other than `user`, or a lister
|
|
80
|
+
* that throws answers none.
|
|
78
81
|
*/
|
|
79
82
|
export declare function searchSubjects<TUser, TPrincipal extends Principal = Principal>(policy: Policy<TUser, TPrincipal>, lister: AuthzenSubjectLister, request: AuthzenItem & {
|
|
80
83
|
readonly subject: {
|
|
@@ -99,9 +102,9 @@ type AuthzenPermDockOptions<TUser = unknown> = InstanceOptions & {
|
|
|
99
102
|
readonly subject: (request: Request) => TUser | Promise<TUser>;
|
|
100
103
|
readonly anonymous?: boolean;
|
|
101
104
|
/**
|
|
102
|
-
* Allow-list over the authenticated PEP. Only a PEP it returns `true` for
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
+
* Allow-list over the authenticated PEP. Only a PEP it returns `true` for may
|
|
106
|
+
* evaluate the body's `subject`, `actor` and `delegation`; every other caller
|
|
107
|
+
* is evaluated as itself. Off by default.
|
|
105
108
|
*/
|
|
106
109
|
readonly trustedPep?: (pep: unknown) => boolean;
|
|
107
110
|
readonly resources?: Readonly<Record<string, AuthzenResourceAdapter>>;
|
|
@@ -129,7 +132,10 @@ type AuthzenPageRequest = {
|
|
|
129
132
|
type AuthzenPage<T> = {
|
|
130
133
|
readonly results: readonly T[];
|
|
131
134
|
readonly page: {
|
|
132
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* The offset of the next page as a decimal string, or `""` on the last
|
|
137
|
+
* page.
|
|
138
|
+
*/
|
|
133
139
|
readonly next_token: string;
|
|
134
140
|
readonly count: number;
|
|
135
141
|
readonly total: number;
|
|
@@ -150,10 +156,10 @@ export declare function emptyAuthzenPage<T>(): AuthzenPage<T>;
|
|
|
150
156
|
type AuthzenRequestKind = "evaluation" | "evaluations" | "search/subject" | "search/resource" | "search/action";
|
|
151
157
|
type AuthzenSearchKind = Extract<AuthzenRequestKind, `search/${string}`>;
|
|
152
158
|
/**
|
|
153
|
-
* A checked AuthZEN request. An `evaluations` body with no items is the
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
159
|
+
* A checked AuthZEN request. An `evaluations` body with no items is the single
|
|
160
|
+
* evaluation AuthZEN 1.0 section 7.1 makes it, so it parses as `kind:
|
|
161
|
+
* "evaluation"`; the `evaluations` items already carry the shared top-level
|
|
162
|
+
* fields.
|
|
157
163
|
*/
|
|
158
164
|
type AuthzenRequest = AuthzenEvaluationRequest | AuthzenEvaluationsRequest | AuthzenSearchRequest;
|
|
159
165
|
type AuthzenEvaluationRequest = {
|
|
@@ -185,14 +191,14 @@ type ParseAuthzenRequestOptions = {
|
|
|
185
191
|
};
|
|
186
192
|
/**
|
|
187
193
|
* Checks a parsed AuthZEN body the way `permdock/authzen` answers it: the body
|
|
188
|
-
* is an object, then each required entity and field in a fixed order, then
|
|
189
|
-
*
|
|
190
|
-
*
|
|
194
|
+
* is an object, then each required entity and field in a fixed order, then the
|
|
195
|
+
* `evaluations` array, batch size and semantic. A failure is the 400 (or 413)
|
|
196
|
+
* Problem Details the handler sends, with the same `detail`.
|
|
191
197
|
*/
|
|
192
198
|
export declare function parseAuthzenRequest<K extends AuthzenRequestKind>(kind: K, body: unknown, options?: ParseAuthzenRequestOptions): ParseAuthzenRequestResult<AuthzenRequestOf<K>>;
|
|
193
199
|
/**
|
|
194
|
-
* Reads `request` as an AuthZEN body: `Content-Type: application/json`, at
|
|
195
|
-
*
|
|
200
|
+
* Reads `request` as an AuthZEN body: `Content-Type: application/json`, at most
|
|
201
|
+
* 1 MiB (a 413 above it), valid JSON, then `parseAuthzenRequest`.
|
|
196
202
|
*/
|
|
197
203
|
export declare function readAuthzenRequest<K extends AuthzenRequestKind>(kind: K, request: Request, options?: ParseAuthzenRequestOptions): Promise<ParseAuthzenRequestResult<AuthzenRequestOf<K>>>;
|
|
198
204
|
//#endregion
|
package/dist/authzen/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { r as ownGet } from "../paths-
|
|
3
|
-
import { a as problemType, o as statusProblem } from "../problem-details-
|
|
4
|
-
import { a as getResource, c as listPermissions } from "../permission-registry-
|
|
2
|
+
import { r as ownGet } from "../paths-CUvURzHp.js";
|
|
3
|
+
import { a as problemType, o as statusProblem } from "../problem-details-CLDgX1KV.js";
|
|
4
|
+
import { a as getResource, c as listPermissions } from "../permission-registry-B8tYxPIt.js";
|
|
5
5
|
import { t as fromWireDelegation } from "../wire-delegation-Cv3W2eaM.js";
|
|
6
6
|
import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
|
|
7
|
-
import { n as readBodyText, t as MAX_BODY_BYTES } from "../body-text-
|
|
8
|
-
import { r as hasCredentials } from "../http-
|
|
9
|
-
import {
|
|
10
|
-
import { n as resolveOrNull, t as buildInstance } from "../build-instance-
|
|
11
|
-
import { a as evaluationReasons, c as withRequestId, g as wireResourceId, h as permissionLookup, i as evaluateBatch, m as itemResourceData, n as applyApprovalResume, r as authzenMetadata, s as evaluationsSemantic, t as EVALUATIONS_SEMANTICS } from "../evaluations-
|
|
7
|
+
import { n as readBodyText, t as MAX_BODY_BYTES } from "../body-text-DQhcmqdY.js";
|
|
8
|
+
import { r as hasCredentials } from "../http-DKLXrFGk.js";
|
|
9
|
+
import { d as unauthenticatedProblem, l as problemResponse, o as methodNotAllowed } from "../problem-BVLHFK33.js";
|
|
10
|
+
import { n as resolveOrNull, t as buildInstance } from "../build-instance-BWXqwQYU.js";
|
|
11
|
+
import { a as evaluationReasons, c as withRequestId, g as wireResourceId, h as permissionLookup, i as evaluateBatch, m as itemResourceData, n as applyApprovalResume, r as authzenMetadata, s as evaluationsSemantic, t as EVALUATIONS_SEMANTICS } from "../evaluations-IBceAeKT.js";
|
|
12
12
|
//#region src/authzen/map.ts
|
|
13
13
|
const UNKNOWN = {
|
|
14
14
|
outcome: "denied",
|
|
@@ -40,7 +40,10 @@ function permissionOf(lookup, item) {
|
|
|
40
40
|
function resourceData(item) {
|
|
41
41
|
return itemResourceData(item.resource);
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* The row id an item names; `undefined` for none and for the collection
|
|
45
|
+
* sentinel `id: "*"`.
|
|
46
|
+
*/
|
|
44
47
|
function resourceIdOf(item) {
|
|
45
48
|
return wireResourceId(item.resource?.id);
|
|
46
49
|
}
|
|
@@ -251,9 +254,9 @@ function evaluations(body, maxEvaluations) {
|
|
|
251
254
|
}
|
|
252
255
|
/**
|
|
253
256
|
* Checks a parsed AuthZEN body the way `permdock/authzen` answers it: the body
|
|
254
|
-
* is an object, then each required entity and field in a fixed order, then
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
+
* is an object, then each required entity and field in a fixed order, then the
|
|
258
|
+
* `evaluations` array, batch size and semantic. A failure is the 400 (or 413)
|
|
259
|
+
* Problem Details the handler sends, with the same `detail`.
|
|
257
260
|
*/
|
|
258
261
|
function parseAuthzenRequest(kind, body, options = {}) {
|
|
259
262
|
return parseAny(kind, body, options);
|
|
@@ -283,8 +286,8 @@ function parseAny(kind, body, options) {
|
|
|
283
286
|
}
|
|
284
287
|
}
|
|
285
288
|
/**
|
|
286
|
-
* Reads `request` as an AuthZEN body: `Content-Type: application/json`, at
|
|
287
|
-
*
|
|
289
|
+
* Reads `request` as an AuthZEN body: `Content-Type: application/json`, at most
|
|
290
|
+
* 1 MiB (a 413 above it), valid JSON, then `parseAuthzenRequest`.
|
|
288
291
|
*/
|
|
289
292
|
async function readAuthzenRequest(kind, request, options = {}) {
|
|
290
293
|
if (request.headers.get("content-type")?.split(";", 1)[0]?.trim().toLowerCase() !== "application/json") return invalid("AuthZEN requests must use Content-Type: application/json");
|
|
@@ -358,10 +361,10 @@ function scopeOf(options) {
|
|
|
358
361
|
};
|
|
359
362
|
}
|
|
360
363
|
/**
|
|
361
|
-
* The AuthZEN `search/action` answer for `user` on `resource`: every
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
*
|
|
364
|
+
* The AuthZEN `search/action` answer for `user` on `resource`: every permission
|
|
365
|
+
* of `resource.type` in the policy is decided, and the distinct actions of the
|
|
366
|
+
* granted ones are returned in catalog order. Paging is the caller's
|
|
367
|
+
* (`authzenPage`).
|
|
365
368
|
*/
|
|
366
369
|
async function searchActions(policy, user, resource, options = {}) {
|
|
367
370
|
const { permdock } = await buildInstance({
|
|
@@ -377,8 +380,8 @@ async function searchActions(policy, user, resource, options = {}) {
|
|
|
377
380
|
/**
|
|
378
381
|
* The AuthZEN `search/subject` answer: the candidates `lister` returns for
|
|
379
382
|
* `request`, each decided as itself, filtered to those granted `action` on
|
|
380
|
-
* `resource`. An unknown action, a subject type other than `user`, or a
|
|
381
|
-
*
|
|
383
|
+
* `resource`. An unknown action, a subject type other than `user`, or a lister
|
|
384
|
+
* that throws answers none.
|
|
382
385
|
*/
|
|
383
386
|
async function searchSubjects(policy, lister, request, options = {}) {
|
|
384
387
|
const permission = permissionOf(permissionLookup(policy.permissions), request);
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as Permission } from "./permission-types-
|
|
3
|
-
import { t as Operation } from "./operations-
|
|
1
|
+
import { Ut as InstanceHandle, Wn as Denial, Wt as Instant } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { t as Operation } from "./operations-Ci_rT6Uo.js";
|
|
4
4
|
//#region src/core/automation.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Who an automation runs as. `publisher`: the person who published it, with
|
|
7
|
-
* their rights as of each run. `service`: a `kind: 'service'` principal
|
|
8
|
-
*
|
|
7
|
+
* their rights as of each run. `service`: a `kind: 'service'` principal holding
|
|
8
|
+
* `roles` in `tenant`, capped at what the publisher could assign.
|
|
9
9
|
*/
|
|
10
10
|
type AutomationMode = "publisher" | "service";
|
|
11
11
|
/**
|
|
12
|
-
* Automation v1: a published, versioned run of operations. Every run acts
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Automation v1: a published, versioned run of operations. Every run acts as
|
|
13
|
+
* `principal` with live rights, narrowed to `permissions` (the operations'
|
|
14
|
+
* permissions) and to any policy delegation to `actor('automation')`. The event
|
|
15
|
+
* that triggers a run never grants.
|
|
16
16
|
*/
|
|
17
17
|
type Automation = {
|
|
18
18
|
readonly v: 1;
|
|
@@ -32,7 +32,10 @@ type Automation = {
|
|
|
32
32
|
readonly operations: readonly string[];
|
|
33
33
|
/** The delegation: the permission keys of `operations`. */
|
|
34
34
|
readonly permissions: readonly string[];
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* The permission key a caller needs to start a run; absent, only server code
|
|
37
|
+
* starts one.
|
|
38
|
+
*/
|
|
36
39
|
readonly run?: string;
|
|
37
40
|
readonly revoked?: boolean;
|
|
38
41
|
readonly name?: string;
|
|
@@ -41,16 +44,22 @@ type Automation = {
|
|
|
41
44
|
type AutomationSource = {
|
|
42
45
|
/** Names the implementation in errors and events. */
|
|
43
46
|
readonly name?: string;
|
|
44
|
-
/**
|
|
45
|
-
|
|
47
|
+
/**
|
|
48
|
+
* The automation as of now, or `null` for an unknown one. A throw is no
|
|
49
|
+
* automation.
|
|
50
|
+
*/
|
|
51
|
+
automation: (id: string, options?: {
|
|
46
52
|
readonly tenant?: string;
|
|
47
|
-
})
|
|
53
|
+
}) => Automation | null | Promise<Automation | null>;
|
|
48
54
|
};
|
|
49
55
|
type OperationRef = Pick<Operation, "name" | "permission">;
|
|
50
56
|
type AutomationRequest = {
|
|
51
57
|
readonly id: string;
|
|
52
58
|
readonly version: number | string;
|
|
53
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* The operations the automation runs: entries of an `OperationMap`, or the
|
|
61
|
+
* map itself.
|
|
62
|
+
*/
|
|
54
63
|
readonly operations: readonly OperationRef[] | Readonly<Record<string, OperationRef>>;
|
|
55
64
|
/** Defaults to `'publisher'`. */
|
|
56
65
|
readonly mode?: AutomationMode;
|
|
@@ -76,38 +85,39 @@ type DecideAutomationOptions = {
|
|
|
76
85
|
readonly now?: Instant;
|
|
77
86
|
};
|
|
78
87
|
/**
|
|
79
|
-
* Validates an untrusted automation record and returns a frozen copy with
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* `roles`.
|
|
88
|
+
* Validates an untrusted automation record and returns a frozen copy with only
|
|
89
|
+
* the v1 fields, or `undefined`. A service automation needs `tenant` and
|
|
90
|
+
* `roles`; a publisher automation runs as `publishedBy` and has no `roles`.
|
|
83
91
|
*/
|
|
84
92
|
declare function parseAutomation(input: unknown): Automation | undefined;
|
|
85
93
|
type MemoryAutomationSource = {
|
|
86
|
-
automation(id: string, options?: {
|
|
94
|
+
automation: (id: string, options?: {
|
|
87
95
|
readonly tenant?: string;
|
|
88
|
-
})
|
|
96
|
+
}) => Automation | null;
|
|
89
97
|
/** Adds or replaces a record by id; an invalid record throws. */
|
|
90
|
-
put(automation: Automation)
|
|
98
|
+
put: (automation: Automation) => void;
|
|
91
99
|
};
|
|
92
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* An in-process `AutomationSource`; records are kept by id and checked with
|
|
102
|
+
* `parseAutomation`.
|
|
103
|
+
*/
|
|
93
104
|
declare function memoryAutomationSource(automations?: readonly Automation[]): MemoryAutomationSource;
|
|
94
105
|
/**
|
|
95
106
|
* Decides whether the subject of `permdock` may publish the automation in
|
|
96
|
-
* `request`, and returns the record to store. The publisher must be a
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* application does, after a `granted` result.
|
|
107
|
+
* `request`, and returns the record to store. The publisher must be a signed-in
|
|
108
|
+
* user or service that is not a link, a feed, a contact, a credential or a run,
|
|
109
|
+
* and must be able to use every operation's permission now (`exceeds-creator`);
|
|
110
|
+
* each run re-checks their live rights. A `service` automation's tenant must be
|
|
111
|
+
* one the publisher is a member of, its roles among their `assignableRoles`
|
|
112
|
+
* there and its permissions within `assignablePermissions`. PermDock never
|
|
113
|
+
* stores the record; the application does, after a `granted` result.
|
|
104
114
|
*/
|
|
105
115
|
/**
|
|
106
116
|
* Decides whether the subject of `permdock` may publish the automation in
|
|
107
117
|
* `request` and returns the record to store: the publisher's own reach over
|
|
108
118
|
* every operation's permission and, for a `service` automation, their
|
|
109
|
-
* assignable ceiling. Each run re-checks the publisher live. An instance
|
|
110
|
-
*
|
|
119
|
+
* assignable ceiling. Each run re-checks the publisher live. An instance built
|
|
120
|
+
* from a snapshot denies with `unsupported`.
|
|
111
121
|
*/
|
|
112
122
|
declare function decideAutomation(permdock: InstanceHandle, request: AutomationRequest, options?: DecideAutomationOptions): Promise<AutomationDecision>;
|
|
113
123
|
//#endregion
|