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,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Nn as RelationGrantee, Sn as Approver, Wt as Instant, fr as Membership, gn as WireDelegation, hr as Subject, o as ApprovalStage, r as ApprovalMode, vr as AdapterId } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { M as AppData } from "./permission-types-CAY-GU7e.js";
|
|
3
3
|
//#region src/approvals/types.d.ts
|
|
4
4
|
type ApprovalStatus = "pending" | "approved" | "rejected" | "expired";
|
|
5
5
|
type ApprovalApprovers = {
|
|
@@ -12,30 +12,42 @@ type ApprovalApprovers = {
|
|
|
12
12
|
readonly distinct?: boolean;
|
|
13
13
|
/** Set when the approval no longer applies once the row's `version` changes. */
|
|
14
14
|
readonly staleOn?: "resource-change";
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Distinct approvers of `by` needed before `status` becomes `approved`;
|
|
17
|
+
* absent means 1.
|
|
18
|
+
*/
|
|
16
19
|
readonly quorum?: number;
|
|
17
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Who else may approve once the request has waited `after` seconds since
|
|
22
|
+
* `createdAt`.
|
|
23
|
+
*/
|
|
18
24
|
readonly escalation?: {
|
|
19
25
|
readonly after: number;
|
|
20
26
|
readonly to: Approver | readonly Approver[];
|
|
21
27
|
};
|
|
22
28
|
};
|
|
23
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* One recorded approval: who gave it, when, and under `stages` the index of the
|
|
31
|
+
* stage it counts for.
|
|
32
|
+
*/
|
|
24
33
|
type ApprovalSignature = {
|
|
25
34
|
readonly by: string;
|
|
26
35
|
readonly at: string;
|
|
27
36
|
readonly stage?: number;
|
|
28
37
|
readonly vouched?: string;
|
|
29
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* The principal `by` approved for, when `by` acted under an
|
|
40
|
+
* `ApprovalDelegation`.
|
|
41
|
+
*/
|
|
30
42
|
readonly onBehalfOf?: string;
|
|
31
43
|
/** The `ApprovalDelegation` id `onBehalfOf` was read from. */
|
|
32
44
|
readonly delegation?: string;
|
|
33
45
|
};
|
|
34
46
|
/**
|
|
35
|
-
* One out-of-office delegation: `delegate` may approve what `delegator`
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
47
|
+
* One out-of-office delegation: `delegate` may approve what `delegator` could
|
|
48
|
+
* approve, from `from` until `until`. Both instants are required, so a
|
|
49
|
+
* delegation cannot be open-ended. `permissions` and `resources` narrow it;
|
|
50
|
+
* absent, it covers every request. `tenant` holds it to one tenant.
|
|
39
51
|
*/
|
|
40
52
|
type ApprovalDelegation = {
|
|
41
53
|
readonly id: string;
|
|
@@ -57,12 +69,12 @@ type ApprovalDelegation = {
|
|
|
57
69
|
type ApprovalDelegationSource = {
|
|
58
70
|
/** Names the implementation in errors and events. */
|
|
59
71
|
readonly name?: string;
|
|
60
|
-
delegationsFor(query: {
|
|
72
|
+
delegationsFor: (query: {
|
|
61
73
|
readonly delegate: string;
|
|
62
74
|
readonly tenant?: string;
|
|
63
75
|
/** RFC 3339. The source returns delegations active at this instant. */
|
|
64
76
|
readonly at: string;
|
|
65
|
-
})
|
|
77
|
+
}) => readonly ApprovalDelegation[] | Promise<readonly ApprovalDelegation[]>;
|
|
66
78
|
};
|
|
67
79
|
type ApprovalSubjectSummary = {
|
|
68
80
|
readonly principal: {
|
|
@@ -97,15 +109,24 @@ type ApprovalRequest = {
|
|
|
97
109
|
readonly createdAt: string;
|
|
98
110
|
readonly expiresAt: string;
|
|
99
111
|
readonly status: ApprovalStatus;
|
|
100
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Approvals given so far, oldest first; the request is `approved` once there
|
|
114
|
+
* are `approvers.quorum` of them.
|
|
115
|
+
*/
|
|
101
116
|
readonly approvals?: readonly ApprovalSignature[];
|
|
102
117
|
readonly resolvedAt?: string;
|
|
103
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* The approver whose verdict resolved the request (the last of `approvals` on
|
|
120
|
+
* a quorum), or `system:<by>` for a cancellation.
|
|
121
|
+
*/
|
|
104
122
|
readonly resolvedBy?: string;
|
|
105
123
|
readonly vouched?: string;
|
|
106
124
|
readonly note?: string;
|
|
107
125
|
readonly consumedAt?: string;
|
|
108
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* The application's own data, set when the request opens; plain JSON, never
|
|
128
|
+
* read by a decision.
|
|
129
|
+
*/
|
|
109
130
|
readonly x?: AppData;
|
|
110
131
|
};
|
|
111
132
|
type ApprovalVerdict = {
|
|
@@ -120,8 +141,8 @@ type ApprovalVerdict = {
|
|
|
120
141
|
*/
|
|
121
142
|
readonly relations?: readonly string[];
|
|
122
143
|
/**
|
|
123
|
-
* The `holder(permission)` approvers (by permission key) that `by` holds
|
|
124
|
-
*
|
|
144
|
+
* The `holder(permission)` approvers (by permission key) that `by` holds in
|
|
145
|
+
* the request's tenant, as `approverPermissions` read them from the
|
|
125
146
|
* approver's own instance. Server-side input, never from the request body.
|
|
126
147
|
* Absent means none, so permission approvers match nobody.
|
|
127
148
|
*/
|
|
@@ -130,8 +151,8 @@ type ApprovalVerdict = {
|
|
|
130
151
|
/**
|
|
131
152
|
* Set when `by` is not an approver and acts for this principal under an
|
|
132
153
|
* `ApprovalDelegation`. Server-side input: the handler resolves the
|
|
133
|
-
* delegator, and `applyApprovalVerdict` checks them again. `relations`
|
|
134
|
-
*
|
|
154
|
+
* delegator, and `applyApprovalVerdict` checks them again. `relations` and
|
|
155
|
+
* `permissions` are that principal's facts, never the delegate's.
|
|
135
156
|
*/
|
|
136
157
|
readonly onBehalfOf?: {
|
|
137
158
|
readonly subject: Subject;
|
|
@@ -169,28 +190,28 @@ type ApprovalStore = {
|
|
|
169
190
|
/** Names the implementation in errors and events. */
|
|
170
191
|
readonly name?: string;
|
|
171
192
|
/**
|
|
172
|
-
* Seconds a request opened against this store stays open when the
|
|
173
|
-
*
|
|
174
|
-
*
|
|
193
|
+
* Seconds a request opened against this store stays open when the caller sets
|
|
194
|
+
* no `ttl`; absent means `DEFAULT_APPROVAL_TTL`. A grant's `approval.ttl`
|
|
195
|
+
* still caps it.
|
|
175
196
|
*/
|
|
176
197
|
readonly ttl?: number;
|
|
177
|
-
create(request: ApprovalRequest)
|
|
178
|
-
get(token: string)
|
|
198
|
+
create: (request: ApprovalRequest) => Promise<void> | void;
|
|
199
|
+
get: (token: string) => Promise<ApprovalRequest | null> | ApprovalRequest | null;
|
|
179
200
|
/**
|
|
180
201
|
* The request with this `id`, for `approvalsHandler`, which routes by id.
|
|
181
202
|
* Without it the handler pages through `list` to find the id.
|
|
182
203
|
*/
|
|
183
|
-
getById
|
|
184
|
-
resolve(token: string, verdict: ApprovalVerdict)
|
|
185
|
-
list(query: ApprovalListQuery)
|
|
186
|
-
expire(now?: Instant)
|
|
204
|
+
getById?: (id: string) => Promise<ApprovalRequest | null> | ApprovalRequest | null;
|
|
205
|
+
resolve: (token: string, verdict: ApprovalVerdict) => Promise<ApprovalRequest> | ApprovalRequest;
|
|
206
|
+
list: (query: ApprovalListQuery) => Promise<ApprovalPage> | ApprovalPage;
|
|
207
|
+
expire: (now?: Instant) => Promise<number> | number;
|
|
187
208
|
/**
|
|
188
209
|
* Marks an approved, unexpired, unconsumed request consumed and returns it;
|
|
189
210
|
* returns `null` otherwise. Must be atomic: two concurrent calls for one
|
|
190
211
|
* token never both return the request.
|
|
191
212
|
*/
|
|
192
|
-
consume(token: string, now?: Instant)
|
|
193
|
-
cancel
|
|
213
|
+
consume: (token: string, now?: Instant) => Promise<ApprovalRequest | null> | ApprovalRequest | null;
|
|
214
|
+
cancel?: (filter: ApprovalListFilter, meta: ApprovalCancelMeta) => Promise<number> | number;
|
|
194
215
|
};
|
|
195
216
|
type ApprovalResumeFailureCause = "approval-not-found" | "approval-pending" | "approval-rejected" | "approval-expired" | "approval-consumed";
|
|
196
217
|
type ApprovalInspectResult = {
|
|
@@ -201,9 +222,15 @@ type ApprovalInspectResult = {
|
|
|
201
222
|
readonly cause: ApprovalResumeFailureCause;
|
|
202
223
|
};
|
|
203
224
|
declare const APPROVAL_HEADER: "PermDock-Approval";
|
|
204
|
-
/**
|
|
225
|
+
/**
|
|
226
|
+
* Seconds a request stays open when neither the store nor the call sets a
|
|
227
|
+
* `ttl`.
|
|
228
|
+
*/
|
|
205
229
|
declare const DEFAULT_APPROVAL_TTL: number;
|
|
206
|
-
/**
|
|
230
|
+
/**
|
|
231
|
+
* The approvals a request needs in total: `approvers.quorum` (or 1), or the sum
|
|
232
|
+
* of its stages' quorums.
|
|
233
|
+
*/
|
|
207
234
|
declare function approvalQuorum(request: ApprovalRequest): number;
|
|
208
235
|
/**
|
|
209
236
|
* The instant from which `approvers.escalation.to` may approve, in epoch
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { f as PermissionTree, u as Permission } from "./permission-types-
|
|
3
|
-
import {
|
|
1
|
+
import { Jn as ExplainedDecision, T as Policy, Un as Decision, fr as Membership, hr as Subject, j as PolicyVocabulary, pr as Principal } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { C as PermissionCheck, a as PermDock, f as WhereResult, l as SimulateOptions, n as DecideOptions, o as PermDockOptions, r as DeriveOptions } from "./permdock-CprAPN3w.js";
|
|
4
4
|
//#region src/pdp/types.d.ts
|
|
5
5
|
type RemotePdpAuth = {
|
|
6
6
|
readonly bearer: string | (() => string | Promise<string>);
|
|
@@ -40,9 +40,9 @@ type RemotePdpOptions = {
|
|
|
40
40
|
readonly fetch?: typeof fetch;
|
|
41
41
|
};
|
|
42
42
|
/**
|
|
43
|
-
* One tuple callback per delegated permission. The callback receives the
|
|
44
|
-
*
|
|
45
|
-
*
|
|
43
|
+
* One tuple callback per delegated permission. The callback receives the row
|
|
44
|
+
* for a check and `undefined` for a listing; returning `null` denies with
|
|
45
|
+
* `pdp-denied`, throwing denies with `pdp-invalid-response`.
|
|
46
46
|
*/
|
|
47
47
|
type RelationMap<T> = readonly (readonly [Permission, (subject: Subject, data: unknown) => T | null])[];
|
|
48
48
|
type OpenFgaTuple = {
|
|
@@ -90,25 +90,34 @@ type PdpPermDock<V extends PolicyVocabulary = PolicyVocabulary> = Omit<PermDock<
|
|
|
90
90
|
/** `permdock.derive` with the same providers: the result asks the PDP too. */
|
|
91
91
|
readonly derive: (options: DeriveOptions) => Promise<PdpPermDock<V>>;
|
|
92
92
|
/**
|
|
93
|
-
* For a delegated permission whose provider lists ids, an `in` over them
|
|
94
|
-
*
|
|
95
|
-
*
|
|
93
|
+
* For a delegated permission whose provider lists ids, an `in` over them (AND
|
|
94
|
+
* the local condition when local grants exist); otherwise the local `where`,
|
|
95
|
+
* or an always-false `partial` result.
|
|
96
96
|
*/
|
|
97
97
|
readonly where: (permission: Permission) => Promise<WhereResult>;
|
|
98
98
|
readonly can: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<boolean>;
|
|
99
99
|
readonly decide: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<Decision>;
|
|
100
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* `can` for every check, asking the PDP for each in parallel; `false` for an
|
|
102
|
+
* empty list.
|
|
103
|
+
*/
|
|
101
104
|
readonly canAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => Promise<boolean>;
|
|
102
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* `decide` for every check, in check order, asking the PDP for each in
|
|
107
|
+
* parallel.
|
|
108
|
+
*/
|
|
103
109
|
readonly decideAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => Promise<readonly Decision[]>;
|
|
104
110
|
/** `decide` for each row, in row order, asking the PDP per row. */
|
|
105
111
|
readonly decideEach: (permission: Permission, rows: readonly unknown[], options?: DecideOptions) => Promise<readonly Decision[]>;
|
|
106
112
|
readonly assert: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<Extract<Decision, {
|
|
107
113
|
readonly outcome: "granted";
|
|
108
114
|
}>>;
|
|
109
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* `decide` with a trace of the local grants; a decision the remote PDP made
|
|
117
|
+
* carries an empty trace.
|
|
118
|
+
*/
|
|
110
119
|
readonly explain: (permission: Permission, data?: unknown, options?: Omit<DecideOptions, "explain">) => Promise<ExplainedDecision>;
|
|
111
|
-
readonly filter: <T>(permission: Permission<string, T
|
|
120
|
+
readonly filter: <T>(permission: Permission<string, NoInfer<T>, "instance">, rows: readonly T[], options?: DecideOptions) => Promise<T[]>;
|
|
112
121
|
readonly simulate: {
|
|
113
122
|
(checks: readonly (readonly [Permission, unknown?])[], options?: SimulateOptions): Promise<readonly Decision[]>;
|
|
114
123
|
(preview: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { m as ApprovalStore } from "./types-
|
|
3
|
-
import { n as RevocationFeed } from "./revocations-
|
|
4
|
-
import { t as ClaimsMap } from "./claims-map-
|
|
5
|
-
import { t as ClientNames } from "./clients-
|
|
1
|
+
import { Z as JwtClaims, hr as Subject, ht as TokenVerifier, nt as MembershipSource, pr as Principal, pt as TokenFailureCause, rn as AuthEvent, rr as Actor } from "./policy-types-DGIO_gxq.js";
|
|
2
|
+
import { m as ApprovalStore } from "./types-DLvhVm1r.js";
|
|
3
|
+
import { n as RevocationFeed } from "./revocations-BaUXHM1N.js";
|
|
4
|
+
import { t as ClaimsMap } from "./claims-map-D1Pb5oRq.js";
|
|
5
|
+
import { t as ClientNames } from "./clients-C_NOET3z.js";
|
|
6
6
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
7
7
|
//#region src/jwt/types.d.ts
|
|
8
8
|
type JwtAlgorithm = "ES256" | "PS256" | "Ed25519" | "RS256" | "HS256" | "EdDSA";
|
|
@@ -24,7 +24,10 @@ type JwksCacheOptions = {
|
|
|
24
24
|
readonly minTtl?: number;
|
|
25
25
|
readonly maxTtl?: number;
|
|
26
26
|
readonly cooldown?: number;
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Milliseconds a discovery or JWKS request may take before it counts as
|
|
29
|
+
* failed. Default 5000.
|
|
30
|
+
*/
|
|
28
31
|
readonly timeout?: number;
|
|
29
32
|
};
|
|
30
33
|
type JoseTokenVerifierOptions = {
|
|
@@ -47,7 +50,10 @@ type JoseTokenSignerOptions = {
|
|
|
47
50
|
readonly kid: string;
|
|
48
51
|
/** `iss` of every output; required. */
|
|
49
52
|
readonly issuer: string;
|
|
50
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* `aud` for an output whose `sign` call names none; without either, `sign`
|
|
55
|
+
* rejects.
|
|
56
|
+
*/
|
|
51
57
|
readonly audience?: string | readonly string[];
|
|
52
58
|
};
|
|
53
59
|
type JwtDelegationPaths = {
|
|
@@ -69,11 +75,17 @@ type JwtSubjectOptions = Omit<JoseTokenVerifierOptions, "audience"> & {
|
|
|
69
75
|
readonly actor?: {
|
|
70
76
|
readonly from?: "act";
|
|
71
77
|
readonly kind?: string;
|
|
72
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* Names for client ids (`ClientNames`): the actor gets `client` set to
|
|
80
|
+
* the name of `act.sub`.
|
|
81
|
+
*/
|
|
73
82
|
readonly clients?: ClientNames;
|
|
74
83
|
} | ((claims: JwtClaims) => Actor | undefined);
|
|
75
84
|
readonly sender?: "none" | "dpop" | "mtls";
|
|
76
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* With `sender: "dpop"`, rejects a proof `jti` already used by the same key
|
|
87
|
+
* within 60 seconds.
|
|
88
|
+
*/
|
|
77
89
|
readonly replay?: ReplayStore;
|
|
78
90
|
readonly memberships?: MembershipSource;
|
|
79
91
|
readonly verifier?: TokenVerifier;
|
|
@@ -101,7 +113,10 @@ type CaepEventName = "session-revoked" | "credential-change" | "assurance-level-
|
|
|
101
113
|
/** The RISC 1.0 event types PermDock treats as a revocation of every session. */
|
|
102
114
|
type RiscEventName = "account-disabled" | "account-purged" | "credential-compromise";
|
|
103
115
|
type SsfEventName = CaepEventName | RiscEventName;
|
|
104
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* An SSF 1.0 stream `verification` event: the `state` the receiver asked the
|
|
118
|
+
* transmitter to echo.
|
|
119
|
+
*/
|
|
105
120
|
type SsfVerification = {
|
|
106
121
|
readonly state?: string;
|
|
107
122
|
readonly jti: string;
|
|
@@ -130,7 +145,10 @@ type SsfEventInput = {
|
|
|
130
145
|
type SsfEventHandler = (input: SsfEventInput) => void | Promise<void>;
|
|
131
146
|
type SsfOnEvent = { readonly [K in SsfEventName]?: SsfEventHandler; } & {
|
|
132
147
|
readonly "*"?: SsfEventHandler;
|
|
133
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* SSF 1.0 section 8.1.4.1 stream verification; it names a stream, never a
|
|
150
|
+
* subject.
|
|
151
|
+
*/
|
|
134
152
|
readonly verification?: (input: SsfVerification) => void | Promise<void>;
|
|
135
153
|
};
|
|
136
154
|
/**
|
|
@@ -141,12 +159,12 @@ type SsfOnEvent = { readonly [K in SsfEventName]?: SsfEventHandler; } & {
|
|
|
141
159
|
type ReplayStore = {
|
|
142
160
|
/** Names the implementation in errors and events. */
|
|
143
161
|
readonly name?: string;
|
|
144
|
-
seen(key: string)
|
|
145
|
-
remember(key: string, expiresAt?: number)
|
|
162
|
+
seen: (key: string) => boolean | Promise<boolean>;
|
|
163
|
+
remember: (key: string, expiresAt?: number) => void | Promise<void>;
|
|
146
164
|
/** Records `key` and returns `true` only if it was not already recorded. */
|
|
147
|
-
claim
|
|
165
|
+
claim?: (key: string, expiresAt?: number) => boolean | Promise<boolean>;
|
|
148
166
|
/** Forgets a claimed `key` so a failed delivery can be retried. */
|
|
149
|
-
release
|
|
167
|
+
release?: (key: string) => void | Promise<void>;
|
|
150
168
|
};
|
|
151
169
|
type SsfAuditEvent = {
|
|
152
170
|
readonly type: string;
|
|
@@ -193,22 +211,25 @@ type SsfPermDockOptions = {
|
|
|
193
211
|
readonly revocations?: RevocationFeed;
|
|
194
212
|
readonly clockTolerance?: number;
|
|
195
213
|
/**
|
|
196
|
-
* Seconds a SET without `exp` is accepted after its `iat`; default one
|
|
197
|
-
*
|
|
198
|
-
*
|
|
214
|
+
* Seconds a SET without `exp` is accepted after its `iat`; default one day.
|
|
215
|
+
* The replay record is kept at least that long, so a replayed SET is refused
|
|
216
|
+
* for as long as its signature would verify.
|
|
199
217
|
*/
|
|
200
218
|
readonly maxTokenAge?: number;
|
|
201
219
|
};
|
|
202
220
|
type SsfReceiver = {
|
|
203
|
-
push(request: Request)
|
|
204
|
-
logout(request: Request)
|
|
205
|
-
poll(options: PollOptions)
|
|
206
|
-
on(event: "event", handler: SsfEventListener)
|
|
221
|
+
push: (request: Request) => Promise<Response>;
|
|
222
|
+
logout: (request: Request) => Promise<Response>;
|
|
223
|
+
poll: (options: PollOptions) => Promise<PollResult> | PollHandle;
|
|
224
|
+
on: (event: "event", handler: SsfEventListener) => () => void;
|
|
207
225
|
};
|
|
208
226
|
type SsfPermDock = {
|
|
209
227
|
readonly receiver: SsfReceiver;
|
|
210
228
|
};
|
|
211
|
-
/**
|
|
229
|
+
/**
|
|
230
|
+
* One event of a SET: the event-type URI, the RFC 9493 subject and the event's
|
|
231
|
+
* own claims.
|
|
232
|
+
*/
|
|
212
233
|
type SetEvent = {
|
|
213
234
|
readonly type: string;
|
|
214
235
|
readonly subject: SetSubject;
|
|
@@ -237,7 +258,10 @@ type SignSetOptions = {
|
|
|
237
258
|
/** `iat`, NumericDate seconds; the signer's clock when absent. */
|
|
238
259
|
readonly issuedAt?: number;
|
|
239
260
|
};
|
|
240
|
-
/**
|
|
261
|
+
/**
|
|
262
|
+
* Why `pushSet` did not deliver: the RFC 8935 `err` code in kebab case, or a
|
|
263
|
+
* transport failure.
|
|
264
|
+
*/
|
|
241
265
|
type SetDeliveryFailureCause = "invalid-request" | "invalid-key" | "invalid-issuer" | "invalid-audience" | "authentication-failed" | "access-denied" | "unavailable";
|
|
242
266
|
type SetDelivery = {
|
|
243
267
|
readonly ok: true;
|
|
@@ -245,13 +269,22 @@ type SetDelivery = {
|
|
|
245
269
|
readonly ok: false;
|
|
246
270
|
readonly cause: SetDeliveryFailureCause;
|
|
247
271
|
readonly description?: string;
|
|
248
|
-
/**
|
|
272
|
+
/**
|
|
273
|
+
* `true` when the same SET may be pushed again: a network failure, a
|
|
274
|
+
* timeout or a `5xx`.
|
|
275
|
+
*/
|
|
249
276
|
readonly retry: boolean;
|
|
250
277
|
};
|
|
251
278
|
type PushSetOptions = {
|
|
252
|
-
/**
|
|
279
|
+
/**
|
|
280
|
+
* The receiver's RFC 8935 push endpoint, the stream's
|
|
281
|
+
* `delivery.endpoint_url`.
|
|
282
|
+
*/
|
|
253
283
|
readonly endpoint: string;
|
|
254
|
-
/**
|
|
284
|
+
/**
|
|
285
|
+
* The `Authorization` header value, the stream's
|
|
286
|
+
* `delivery.authorization_header`.
|
|
287
|
+
*/
|
|
255
288
|
readonly authorization?: string;
|
|
256
289
|
readonly fetch?: typeof fetch;
|
|
257
290
|
readonly signal?: AbortSignal;
|
|
@@ -268,21 +301,24 @@ type SetError = {
|
|
|
268
301
|
type SetQueue = {
|
|
269
302
|
/** Names the implementation in errors and events. */
|
|
270
303
|
readonly name?: string;
|
|
271
|
-
enqueue(stream: string, jti: string, set: string)
|
|
304
|
+
enqueue: (stream: string, jti: string, set: string) => void | Promise<void>;
|
|
272
305
|
/** Up to `max` pending SETs, oldest first. */
|
|
273
|
-
pending(stream: string, max: number)
|
|
306
|
+
pending: (stream: string, max: number) => readonly {
|
|
274
307
|
readonly jti: string;
|
|
275
308
|
readonly set: string;
|
|
276
309
|
}[] | Promise<readonly {
|
|
277
310
|
readonly jti: string;
|
|
278
311
|
readonly set: string;
|
|
279
312
|
}[]>;
|
|
280
|
-
ack(stream: string, jti: string)
|
|
281
|
-
fail(stream: string, jti: string, error: SetError)
|
|
313
|
+
ack: (stream: string, jti: string) => void | Promise<void>;
|
|
314
|
+
fail: (stream: string, jti: string, error: SetError) => void | Promise<void>;
|
|
282
315
|
};
|
|
283
316
|
type SetPollHandlerOptions = {
|
|
284
317
|
readonly queue: SetQueue;
|
|
285
|
-
/**
|
|
318
|
+
/**
|
|
319
|
+
* The stream id the request's credentials may poll, or `null` to refuse it
|
|
320
|
+
* with `401`.
|
|
321
|
+
*/
|
|
286
322
|
readonly authorize: (request: Request) => string | null | Promise<string | null>;
|
|
287
323
|
/** The largest `maxEvents` honoured; default 100. */
|
|
288
324
|
readonly maxEvents?: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as ResourceRelation } from "./permission-types-
|
|
2
|
-
import { s as OperationMeta } from "./operations-
|
|
1
|
+
import { C as ResourceRelation } from "./permission-types-CAY-GU7e.js";
|
|
2
|
+
import { s as OperationMeta } from "./operations-Ci_rT6Uo.js";
|
|
3
3
|
//#region src/catalog/types.d.ts
|
|
4
4
|
type CatalogUsage = {
|
|
5
5
|
readonly file: string;
|
|
@@ -14,19 +14,33 @@ type CatalogPermission = {
|
|
|
14
14
|
readonly arity: "instance" | "collection";
|
|
15
15
|
readonly meta: Readonly<Record<string, unknown>>;
|
|
16
16
|
readonly usages: readonly CatalogUsage[];
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Keys the permission was renamed from (`definePermissions` `renamed`),
|
|
19
|
+
* sorted; absent when none.
|
|
20
|
+
*/
|
|
18
21
|
readonly renamedFrom?: readonly string[];
|
|
19
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Level names a custom role may pick for the permission (`resource(…, {
|
|
24
|
+
* levels })`); absent when none.
|
|
25
|
+
*/
|
|
20
26
|
readonly levels?: readonly string[];
|
|
27
|
+
/**
|
|
28
|
+
* `true` when `levels` run from narrowest to widest (`resource(…, {
|
|
29
|
+
* orderedLevels: true })`); absent otherwise.
|
|
30
|
+
*/
|
|
31
|
+
readonly orderedLevels?: true;
|
|
21
32
|
/** Present only when the policy lists the permission in `hostable`. */
|
|
22
33
|
readonly hostable?: true;
|
|
23
34
|
/**
|
|
24
|
-
* `true` when a code grant for the key has a condition beyond role and
|
|
25
|
-
*
|
|
26
|
-
*
|
|
35
|
+
* `true` when a code grant for the key has a condition beyond role and scope,
|
|
36
|
+
* so the SQL helpers alone cannot enforce it, and when the catalog was built
|
|
37
|
+
* without the policy, which leaves it unknown.
|
|
27
38
|
*/
|
|
28
39
|
readonly rowConditions: boolean;
|
|
29
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* The approvals code allows on this permission require; a hosted grant must
|
|
42
|
+
* meet each.
|
|
43
|
+
*/
|
|
30
44
|
readonly approvals?: readonly CatalogApproval[];
|
|
31
45
|
/** Present when a `breakGlass` override targets this permission. */
|
|
32
46
|
readonly breakGlass?: CatalogBreakGlass;
|
|
@@ -72,7 +86,10 @@ type CatalogResource = {
|
|
|
72
86
|
readonly field: string;
|
|
73
87
|
readonly resource: string;
|
|
74
88
|
}>>;
|
|
75
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* `'hide'` answers a denied check on a loaded row as if the row did not
|
|
91
|
+
* exist; absent for `'reveal'`.
|
|
92
|
+
*/
|
|
76
93
|
readonly disclosure?: "hide";
|
|
77
94
|
readonly relations?: Readonly<Record<string, ResourceRelation>>;
|
|
78
95
|
/** The row field an `approval: { staleOn: 'resource-change' }` binds to. */
|
|
@@ -97,7 +114,10 @@ type CatalogRole = {
|
|
|
97
114
|
readonly for?: readonly string[];
|
|
98
115
|
readonly exclusiveWith?: readonly string[];
|
|
99
116
|
readonly audience?: string;
|
|
100
|
-
/**
|
|
117
|
+
/**
|
|
118
|
+
* Present when the role is eligible-only and activated with
|
|
119
|
+
* `permdock.activate`.
|
|
120
|
+
*/
|
|
101
121
|
readonly activation?: CatalogActivation;
|
|
102
122
|
/** Present when the role is a `supportAccess` role. */
|
|
103
123
|
readonly supportAccess?: CatalogSupportAccess;
|
|
@@ -133,9 +153,9 @@ type CatalogValidity = {
|
|
|
133
153
|
readonly until?: string;
|
|
134
154
|
};
|
|
135
155
|
/**
|
|
136
|
-
* One code grant as the catalog carries it: the normalised shape
|
|
137
|
-
*
|
|
138
|
-
*
|
|
156
|
+
* One code grant as the catalog carries it: the normalised shape `definePolicy`
|
|
157
|
+
* produced, minus closures. `permdock diff` compares these; a hosted document
|
|
158
|
+
* is authored against them.
|
|
139
159
|
*/
|
|
140
160
|
type CatalogGrant = {
|
|
141
161
|
readonly permission: string;
|
|
@@ -157,7 +177,10 @@ type CatalogGrant = {
|
|
|
157
177
|
readonly validity?: CatalogValidity;
|
|
158
178
|
readonly name?: string;
|
|
159
179
|
readonly purpose?: readonly string[];
|
|
160
|
-
/**
|
|
180
|
+
/**
|
|
181
|
+
* The permission key the subject must also hold through a role on the row's
|
|
182
|
+
* scope instance (`requires`).
|
|
183
|
+
*/
|
|
161
184
|
readonly requires?: string | readonly string[];
|
|
162
185
|
readonly limit?: {
|
|
163
186
|
readonly count: number;
|
|
@@ -165,9 +188,15 @@ type CatalogGrant = {
|
|
|
165
188
|
readonly per: number;
|
|
166
189
|
readonly mode?: "hard" | "soft";
|
|
167
190
|
};
|
|
168
|
-
/**
|
|
191
|
+
/**
|
|
192
|
+
* Present when the grant is a closure, reads the relation graph or is opaque;
|
|
193
|
+
* `where` and `check` are then omitted.
|
|
194
|
+
*/
|
|
169
195
|
readonly portable?: false;
|
|
170
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* The grant's `meta`: a description plus the app's own `x`; absent when
|
|
198
|
+
* empty.
|
|
199
|
+
*/
|
|
171
200
|
readonly meta?: Readonly<Record<string, unknown>>;
|
|
172
201
|
};
|
|
173
202
|
/** `permissions.catalog.json`, validated by `schemas/catalog-v1.json`. */
|
|
@@ -176,7 +205,10 @@ type CatalogDocument = {
|
|
|
176
205
|
readonly version: 1;
|
|
177
206
|
readonly generatedAt: string;
|
|
178
207
|
readonly generator: string;
|
|
179
|
-
/**
|
|
208
|
+
/**
|
|
209
|
+
* `catalogFingerprint` of this document; what hosted documents pin as
|
|
210
|
+
* `catalog`.
|
|
211
|
+
*/
|
|
180
212
|
readonly fingerprint?: string;
|
|
181
213
|
readonly resources: Readonly<Record<string, CatalogResource>>;
|
|
182
214
|
readonly permissions: readonly CatalogPermission[];
|
|
@@ -186,28 +218,49 @@ type CatalogDocument = {
|
|
|
186
218
|
readonly plans?: readonly {
|
|
187
219
|
readonly key: string;
|
|
188
220
|
}[];
|
|
189
|
-
/**
|
|
221
|
+
/**
|
|
222
|
+
* Every code grant, canonically ordered; present when the catalog was built
|
|
223
|
+
* with the policy.
|
|
224
|
+
*/
|
|
190
225
|
readonly grants?: readonly CatalogGrant[];
|
|
191
|
-
/**
|
|
226
|
+
/**
|
|
227
|
+
* The policy's standing delegations, canonically ordered; present when the
|
|
228
|
+
* policy declares any.
|
|
229
|
+
*/
|
|
192
230
|
readonly delegations?: readonly CatalogDelegation[];
|
|
193
|
-
/**
|
|
231
|
+
/**
|
|
232
|
+
* The `defineOperations` map in definition order; present when the config
|
|
233
|
+
* names an `operations` module.
|
|
234
|
+
*/
|
|
194
235
|
readonly operations?: readonly CatalogOperation[];
|
|
195
|
-
/**
|
|
236
|
+
/**
|
|
237
|
+
* The policy's coarse OAuth scopes, sorted by scope; present when the policy
|
|
238
|
+
* declares any.
|
|
239
|
+
*/
|
|
196
240
|
readonly oauthScopes?: readonly CatalogOAuthScope[];
|
|
197
241
|
};
|
|
198
|
-
/**
|
|
242
|
+
/**
|
|
243
|
+
* One `definePolicy({ oauthScopes })` entry: the coarse scope an authorization
|
|
244
|
+
* server issues and the permission keys it covers, sorted by code point.
|
|
245
|
+
*/
|
|
199
246
|
type CatalogOAuthScope = {
|
|
200
247
|
readonly scope: string;
|
|
201
248
|
readonly permissions: readonly string[];
|
|
202
249
|
};
|
|
203
|
-
/**
|
|
250
|
+
/**
|
|
251
|
+
* One `defineOperations` entry: its name, the permission keys it is bound to,
|
|
252
|
+
* and its meta.
|
|
253
|
+
*/
|
|
204
254
|
type CatalogOperation = {
|
|
205
255
|
readonly name: string;
|
|
206
256
|
readonly permission: string;
|
|
207
257
|
readonly results?: string;
|
|
208
258
|
readonly meta: OperationMeta;
|
|
209
259
|
};
|
|
210
|
-
/**
|
|
260
|
+
/**
|
|
261
|
+
* One `definePolicy({ delegations })` entry: who hands over, to which actor,
|
|
262
|
+
* which permission keys, and when.
|
|
263
|
+
*/
|
|
211
264
|
type CatalogDelegation = {
|
|
212
265
|
readonly from: unknown;
|
|
213
266
|
readonly to: {
|