permdock 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +8 -8
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +19 -13
- package/dist/ai-sdk/index.js +6 -6
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +6 -6
- package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-ClrF3PVb.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-BrMs8c4o.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
- package/dist/authzen/index.d.ts +34 -28
- package/dist/authzen/index.js +23 -20
- package/dist/{automation-DOtAFWdy.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +357 -227
- package/dist/better-supabase/index.js +219 -140
- package/dist/{bind-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-DxE7czo9.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +51 -30
- package/dist/catalog/index.js +18 -15
- package/dist/{catalog-D69WhFii.js → catalog-BFpz2EmT.js} +20 -19
- package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
- package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +84 -52
- package/dist/cloud/index.js +53 -39
- package/dist/{cloud-CO8pYtwr.js → cloud-BFlGMaak.js} +4 -5
- package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
- package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-COM2VKuN.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
- package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/{core-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
- package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
- package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
- package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
- package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
- package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +4 -4
- package/dist/delivery/index.js +5 -5
- package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
- package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
- package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
- package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
- package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
- package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
- package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
- package/dist/index.d.ts +22 -22
- package/dist/index.js +33 -33
- package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +57 -27
- package/dist/jwt/index.js +24 -21
- package/dist/{kernel-DVExUwkp.js → kernel-C-fYydV2.js} +32 -23
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-ClSJh5t5.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.js} +49 -38
- package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
- package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
- package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
- package/dist/{map-claims-etGIS_Dv.js → map-claims-BNWCJtmP.js} +14 -8
- package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +114 -61
- package/dist/mcp/index.js +70 -40
- package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +51 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +20 -13
- package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
- package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
- package/dist/{permdock-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
- package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
- package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
- package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
- package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
- package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-DArULThq.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
- package/dist/{policy-B7dg_yzu.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
- package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-CCiDRZBH.d.ts} +738 -349
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
- package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
- package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-Csk-THAn.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +94 -55
- package/dist/react-native/index.js +200 -61
- package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-DCDD_ZfL.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
- package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
- package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-Bk1bE-ch.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.d.ts} +29 -14
- package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
- package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-Az_Kz-4D.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.js} +8 -4
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +2 -2
- package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
- package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
- package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +12 -12
- package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-C4gZUEZy.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
- package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
- package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -16
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/{sources-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
- package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
- package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
- package/dist/{src-DLFrtrrC.js → src-DZ0l9UAg.js} +190 -100
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
- package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -38
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase--0aJdLEd.js → supabase-BL1qJzzY.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
- package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-Z2LpxsGa.js → tables-DeMNEy6V.js} +641 -1104
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +1 -1
- package/dist/testing/core.js +1 -1
- package/dist/testing/fixtures/index.d.ts +8 -5
- package/dist/testing/fixtures/index.js +78 -17
- package/dist/testing/index.d.ts +224 -141
- package/dist/testing/index.js +299 -234
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
- package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
- package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
- package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
- package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-pe8rL_Qw.js → verify-DZeqoWu5.js} +148 -487
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
- package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
- package/dist/vue/index.d.ts +71 -22
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-DwEyouan.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
- package/dist/{who-can-BwNsI_Js.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
- package/dist/{wrap-B6R0cMRL.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +7 -7
- package/schemas/catalog-v1.json +3 -0
- package/schemas/supabase-manifest-v1.json +33 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +2 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
- package/skills/permdock-wire/references/adapters.md +14 -22
- package/dist/catalog-BCCjSAdH.js +0 -1
- package/dist/collect-k_Dulxr5.js +0 -1
- package/dist/config-CoQHDrDi.js +0 -166
- package/dist/denied-text-D4qkEtFz.d.ts +0 -19
- package/dist/fields-ClcQLrVc.js +0 -238
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/load-DrMHXzgN.js +0 -1
- package/dist/output-files-DPAY7-GX.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
- package/dist/policies-B2lZIurj.js +0 -295
- package/dist/powersync-CExtTLyA.js +0 -1
- package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
- package/dist/protected-BwZYL1X_.d.ts +0 -39
- package/dist/pull-Cty6Ovyu.js +0 -1
- package/dist/run-Bz7DXGEv.js +0 -1
- package/dist/stores-BAZwSYZA.d.ts +0 -31
- package/dist/supabase-hook-DJxC4PoP.js +0 -1
- package/dist/types-CKV71kKh.d.ts +0 -172
- package/dist/usage-y-kBNdqs.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch-Bd9mx3rd.js +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Bn as DenialReason, C as MembershipFixture, Cr as SqlFunctionArg, D as PolicyDelegation, Gt as Snapshot, I as SeparationConflict, J as EntitlementSource, Ln as Decision, Lt as InstanceHandle, N as RoleBinding, P as RoleOptions, R as SupportAccessOptions, Rn as Denial, Rt as Instant, T as Policy, Ut as LocalSnapshotManifest, V as VocabularyFromInput, W as CustomRoleSource, Xt as AccessEvent, Y as JwtClaims, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, dn as PolicyScopesInput, en as DecisionEvent, et as MembershipSource, fn as Scope, g as GrantCondition, h as Grant, hr as ConditionRef, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, lr as Subject, nn as DeliveryEvent, nt as RelationGroup, or as Membership, ot as SnapshotSource, rr as Delegation, s as AssuranceRequirement, sn as SinkEvent, sr as Principal, tr as CustomRole, ut as TokenSigner, wr as SqlFunctionCondition, yr as OpaqueCondition } from "./policy-types-
|
|
2
|
-
import { E as ResourceXTree, S as ResourceParent, T as ResourceRestricted, b as ResourceNode, d as PermissionKind, f as PermissionTree, g as ResourceInit, m as PermissionsOptions, n as ActionMeta, p as PermissionsOf, t as ActionList, u as Permission, w as ResourceRelationInput, x as ResourceOptions, y as ResourceMeta } from "./permission-types-
|
|
3
|
-
import { a as RoleTree, r as Role } from "./vocabulary-
|
|
4
|
-
import { a as PermDock, o as PermDockOptions } from "./permdock-
|
|
5
|
-
import { o as PolicyDocument } from "./hosted-
|
|
6
|
-
import { m as ApprovalStore } from "./types-
|
|
7
|
-
import { t as InstanceOptions } from "./instance-options-
|
|
8
|
-
import { n as PermDockWrap } from "./wrap-
|
|
9
|
-
import { t as JsonSchemaNode } from "./json-schema-
|
|
10
|
-
import { i as CatalogEventData, s as CloudEvent } from "./sink-
|
|
1
|
+
import { Bn as DenialReason, C as MembershipFixture, Cr as SqlFunctionArg, D as PolicyDelegation, Gt as Snapshot, I as SeparationConflict, J as EntitlementSource, Ln as Decision, Lt as InstanceHandle, N as RoleBinding, P as RoleOptions, R as SupportAccessOptions, Rn as Denial, Rt as Instant, T as Policy, Ut as LocalSnapshotManifest, V as VocabularyFromInput, W as CustomRoleSource, Xt as AccessEvent, Y as JwtClaims, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, dn as PolicyScopesInput, en as DecisionEvent, et as MembershipSource, fn as Scope, g as GrantCondition, h as Grant, hr as ConditionRef, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, lr as Subject, nn as DeliveryEvent, nt as RelationGroup, or as Membership, ot as SnapshotSource, rr as Delegation, s as AssuranceRequirement, sn as SinkEvent, sr as Principal, tr as CustomRole, ut as TokenSigner, wr as SqlFunctionCondition, yr as OpaqueCondition } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { E as ResourceXTree, S as ResourceParent, T as ResourceRestricted, b as ResourceNode, d as PermissionKind, f as PermissionTree, g as ResourceInit, m as PermissionsOptions, n as ActionMeta, p as PermissionsOf, t as ActionList, u as Permission, w as ResourceRelationInput, x as ResourceOptions, y as ResourceMeta } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as RoleTree, r as Role } from "./vocabulary-DEJ5j4mR.js";
|
|
4
|
+
import { a as PermDock, o as PermDockOptions } from "./permdock-B6Sf4T_S.js";
|
|
5
|
+
import { o as PolicyDocument } from "./hosted-Cmtxogd0.js";
|
|
6
|
+
import { m as ApprovalStore } from "./types-B_tiYvk8.js";
|
|
7
|
+
import { t as InstanceOptions } from "./instance-options-B0KXqTrJ.js";
|
|
8
|
+
import { n as PermDockWrap } from "./wrap-DlJE3gS_.js";
|
|
9
|
+
import { t as JsonSchemaNode } from "./json-schema-BfXgnRNT.js";
|
|
10
|
+
import { i as CatalogEventData, s as CloudEvent } from "./sink-Dvi7YZG_.js";
|
|
11
11
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
12
12
|
//#region src/conditions/refs.d.ts
|
|
13
13
|
type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session" | "claims";
|
|
@@ -25,7 +25,10 @@ declare function claim(path: string): SubjectRef;
|
|
|
25
25
|
//#endregion
|
|
26
26
|
//#region src/core/custom-roles.d.ts
|
|
27
27
|
type CustomRoleDropReason = "unknown-permission" | "outside-ceiling" | "condition-not-allowed" | "unknown-level";
|
|
28
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Why part of a custom role was left out: a permission, or an undeclared
|
|
30
|
+
* include.
|
|
31
|
+
*/
|
|
29
32
|
type CustomRoleDrop = {
|
|
30
33
|
readonly permission: string;
|
|
31
34
|
readonly reason: CustomRoleDropReason;
|
|
@@ -44,10 +47,16 @@ type CustomRoleRename = {
|
|
|
44
47
|
readonly to: string;
|
|
45
48
|
};
|
|
46
49
|
type ResolvedCustomRole = {
|
|
47
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Declared grants re-targeted to the custom role; conditions and approvals
|
|
52
|
+
* kept.
|
|
53
|
+
*/
|
|
48
54
|
readonly grants: readonly Grant[];
|
|
49
55
|
readonly dropped: readonly CustomRoleDrop[];
|
|
50
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Grants stored under a former key (`definePermissions` `renamed`), resolved
|
|
58
|
+
* to the current one.
|
|
59
|
+
*/
|
|
51
60
|
readonly renamed: readonly CustomRoleRename[];
|
|
52
61
|
};
|
|
53
62
|
type CustomRoleValidation = {
|
|
@@ -68,7 +77,10 @@ type CustomRoleValidation = {
|
|
|
68
77
|
*/
|
|
69
78
|
declare function resolveCustomRole(policy: Policy, role: CustomRole): ResolvedCustomRole;
|
|
70
79
|
type ValidateCustomRoleOptions = {
|
|
71
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* The shared custom roles: a tenant role with one of their names is dropped
|
|
82
|
+
* as `name-taken`.
|
|
83
|
+
*/
|
|
72
84
|
readonly shared?: readonly CustomRole[];
|
|
73
85
|
};
|
|
74
86
|
declare function validateCustomRole(policy: Policy, role: CustomRole, options?: ValidateCustomRoleOptions): CustomRoleValidation;
|
|
@@ -91,10 +103,10 @@ declare function parseCustomRoleEntry(policy: Policy, entry: string, options?: {
|
|
|
91
103
|
readonly scope?: string;
|
|
92
104
|
}): CustomRoleEntry;
|
|
93
105
|
/**
|
|
94
|
-
* The compact JWT form of custom roles for the `memberships[].grants` claim
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
106
|
+
* The compact JWT form of custom roles for the `memberships[].grants` claim RLS
|
|
107
|
+
* reads in `jwt` mode: role name to entries, where `key` allows, `-key` denies
|
|
108
|
+
* and `@role` includes. Put a team custom role on its team membership. Pass
|
|
109
|
+
* `policy` to write keys stored under a former name as the current key.
|
|
98
110
|
*/
|
|
99
111
|
declare function customRoleClaim(roles: readonly CustomRole[], policy?: Policy): Readonly<Record<string, readonly string[]>>;
|
|
100
112
|
//#endregion
|
|
@@ -112,18 +124,21 @@ declare function emptySnapshot(): Snapshot;
|
|
|
112
124
|
declare function requiresApproval(approval: Grant["approval"] | undefined): boolean;
|
|
113
125
|
//#endregion
|
|
114
126
|
//#region src/core/policy.d.ts
|
|
115
|
-
declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input
|
|
116
|
-
/**
|
|
127
|
+
declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>, S>;
|
|
128
|
+
/**
|
|
129
|
+
* The role names a policy declares: the keys of its `defineRoles` vocabulary,
|
|
130
|
+
* else `string`.
|
|
131
|
+
*/
|
|
117
132
|
type RoleNameOf<P> = P extends {
|
|
118
133
|
readonly vocabulary: infer V;
|
|
119
134
|
} ? V extends {
|
|
120
135
|
readonly roles: infer R extends RoleTree;
|
|
121
136
|
} ? R[keyof R]["key"] : string : string;
|
|
122
137
|
/**
|
|
123
|
-
* Whether `value` names a role the policy declares, for a role read as a
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
138
|
+
* Whether `value` names a role the policy declares, for a role read as a string
|
|
139
|
+
* from a database or a token. A name it rejects is an unknown role, which
|
|
140
|
+
* grants nothing (`unknown-role`). A tenant's custom roles are not declared;
|
|
141
|
+
* `CustomRoleSource` resolves them.
|
|
127
142
|
*/
|
|
128
143
|
declare function isRoleName<P extends Policy<never>>(policy: P, value: unknown): value is RoleNameOf<P>;
|
|
129
144
|
declare function separationConflicts(policy: Policy, memberships: readonly MembershipFixture[]): readonly SeparationConflict[];
|
|
@@ -158,16 +173,22 @@ declare function sqlFunction(name: string, options: {
|
|
|
158
173
|
//#region src/core/memory-sources.d.ts
|
|
159
174
|
declare function memoryEntitlementSource(entries: Readonly<Record<string, readonly string[]>>): EntitlementSource;
|
|
160
175
|
declare function memorySettingsSource(settings: Readonly<Record<string, TenantSettings>>): SettingsSource;
|
|
161
|
-
/**
|
|
176
|
+
/**
|
|
177
|
+
* Memberships keyed by principal id; `tenant` is not a filter, as for a
|
|
178
|
+
* database source.
|
|
179
|
+
*/
|
|
162
180
|
declare function memoryMembershipSource(entries: Readonly<Record<string, readonly Membership[]>>): MembershipSource;
|
|
163
181
|
/** A snapshot held in memory; `set` replaces it and notifies every subscriber. */
|
|
164
182
|
declare function memorySnapshotSource(initial: Snapshot | string): SnapshotSource & {
|
|
165
|
-
set(snapshot: Snapshot | string)
|
|
183
|
+
set: (snapshot: Snapshot | string) => void;
|
|
166
184
|
};
|
|
167
185
|
declare function memoryCustomRoleSource(customRoles: readonly CustomRole[]): CustomRoleSource;
|
|
168
186
|
//#endregion
|
|
169
187
|
//#region src/core/approval-state.d.ts
|
|
170
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* The denial detail when an `ApprovalPolicySource` threw or returned an invalid
|
|
190
|
+
* entry.
|
|
191
|
+
*/
|
|
171
192
|
declare const APPROVAL_POLICY_UNAVAILABLE = "approval-policy-unavailable";
|
|
172
193
|
//#endregion
|
|
173
194
|
//#region src/core/memberships.d.ts
|
|
@@ -179,23 +200,26 @@ declare const APPROVAL_POLICY_UNAVAILABLE = "approval-policy-unavailable";
|
|
|
179
200
|
*/
|
|
180
201
|
declare function composeMemberships(sources: readonly MembershipSource[]): MembershipSource;
|
|
181
202
|
/**
|
|
182
|
-
* Trust the memberships the verified token carries, and read `source` only
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
203
|
+
* Trust the memberships the verified token carries, and read `source` only when
|
|
204
|
+
* the token marks them truncated. With `version`, a token minted before the
|
|
205
|
+
* latest membership change is stale for the policy's `fresh` permissions, or
|
|
206
|
+
* with `onStale: 'reread'` has its memberships read from `source` instead.
|
|
186
207
|
*/
|
|
187
208
|
declare function claimsFirst(source: MembershipSource | readonly MembershipSource[], options?: {
|
|
188
209
|
readonly version?: MembershipSource["version"];
|
|
189
210
|
readonly onStale?: "deny" | "reread";
|
|
190
211
|
}): MembershipSource;
|
|
191
|
-
/**
|
|
212
|
+
/**
|
|
213
|
+
* Whether the identity provider owns `membership`: the application must not
|
|
214
|
+
* add, change or remove it.
|
|
215
|
+
*/
|
|
192
216
|
declare function isExternallyManaged(membership: Membership): boolean;
|
|
193
217
|
/**
|
|
194
|
-
* How many principals hold `role` in one scope instance now, from the
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
218
|
+
* How many principals hold `role` in one scope instance now, from the source's
|
|
219
|
+
* member list (`MembershipSource.list`): live memberships of exactly that scope
|
|
220
|
+
* and instance, each principal counted once. The `holders` a `decideRoleChange`
|
|
221
|
+
* with `min`, `max` or `transferOnly` needs. `undefined` when the source cannot
|
|
222
|
+
* list or the read fails, which that check denies.
|
|
199
223
|
*/
|
|
200
224
|
declare function countHolders(source: MembershipSource | readonly MembershipSource[], query: {
|
|
201
225
|
readonly scope: string;
|
|
@@ -206,15 +230,18 @@ declare function countHolders(source: MembershipSource | readonly MembershipSour
|
|
|
206
230
|
}): Promise<number | undefined>;
|
|
207
231
|
//#endregion
|
|
208
232
|
//#region src/core/stripe-entitlements.d.ts
|
|
209
|
-
/**
|
|
233
|
+
/**
|
|
234
|
+
* The part of the Stripe Node SDK this source calls:
|
|
235
|
+
* `stripe.entitlements.activeEntitlements.list`.
|
|
236
|
+
*/
|
|
210
237
|
type StripeEntitlementsClient = {
|
|
211
238
|
readonly entitlements: {
|
|
212
239
|
readonly activeEntitlements: {
|
|
213
|
-
list(params: {
|
|
240
|
+
list: (params: {
|
|
214
241
|
readonly customer: string;
|
|
215
242
|
readonly limit?: number;
|
|
216
243
|
readonly starting_after?: string;
|
|
217
|
-
})
|
|
244
|
+
}) => PromiseLike<{
|
|
218
245
|
readonly data: readonly {
|
|
219
246
|
readonly id: string;
|
|
220
247
|
readonly lookup_key: string;
|
|
@@ -246,14 +273,17 @@ type MemoryEdge = {
|
|
|
246
273
|
readonly expiresAt?: number;
|
|
247
274
|
};
|
|
248
275
|
type MemoryRelationSourceData = {
|
|
249
|
-
/**
|
|
276
|
+
/**
|
|
277
|
+
* Rows per resource: parent pointers, links, restricted flags and relation
|
|
278
|
+
* columns are read from them.
|
|
279
|
+
*/
|
|
250
280
|
readonly rows?: Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
|
|
251
281
|
/** Edge-table rows per resource and relation. */
|
|
252
282
|
readonly edges?: Readonly<Record<string, Readonly<Record<string, readonly MemoryEdge[]>>>>;
|
|
253
283
|
/**
|
|
254
|
-
* Edge tables as the database holds them, keyed by `edge` name: each row
|
|
255
|
-
*
|
|
256
|
-
*
|
|
284
|
+
* Edge tables as the database holds them, keyed by `edge` name: each row is
|
|
285
|
+
* read through the relation's `object`, `subject`, `expiresAt`, `match` and
|
|
286
|
+
* `groups` columns. A relation whose table is here ignores `edges`.
|
|
257
287
|
*/
|
|
258
288
|
readonly tables?: Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
|
|
259
289
|
};
|
|
@@ -273,7 +303,10 @@ type HoldingVia = {
|
|
|
273
303
|
readonly kind: "relation";
|
|
274
304
|
readonly resource: string;
|
|
275
305
|
readonly relation: string;
|
|
276
|
-
/**
|
|
306
|
+
/**
|
|
307
|
+
* The instance the relation is held on: the object or one of its
|
|
308
|
+
* ancestors.
|
|
309
|
+
*/
|
|
277
310
|
readonly id: string;
|
|
278
311
|
} | {
|
|
279
312
|
readonly kind: "share";
|
|
@@ -281,7 +314,10 @@ type HoldingVia = {
|
|
|
281
314
|
readonly relation: string;
|
|
282
315
|
readonly id: string;
|
|
283
316
|
readonly expiresAt?: number;
|
|
284
|
-
/**
|
|
317
|
+
/**
|
|
318
|
+
* The group the share names, when the principal holds it as one of its
|
|
319
|
+
* members.
|
|
320
|
+
*/
|
|
285
321
|
readonly group?: RelationGroup;
|
|
286
322
|
};
|
|
287
323
|
type Holder = {
|
|
@@ -291,10 +327,10 @@ type Holder = {
|
|
|
291
327
|
readonly via: readonly HoldingVia[];
|
|
292
328
|
};
|
|
293
329
|
/**
|
|
294
|
-
* Who holds a permission on one object, for share dialogs and access
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
330
|
+
* Who holds a permission on one object, for share dialogs and access reviews.
|
|
331
|
+
* It lists and never grants. `complete: false` means some grantee could not be
|
|
332
|
+
* enumerated (a global role, a plan, a source without `list`, an unavailable
|
|
333
|
+
* relation): holders may be missing, so check with `decide`.
|
|
298
334
|
*/
|
|
299
335
|
type WhoCan = {
|
|
300
336
|
readonly permission: string;
|
|
@@ -302,11 +338,11 @@ type WhoCan = {
|
|
|
302
338
|
readonly complete: boolean;
|
|
303
339
|
};
|
|
304
340
|
/**
|
|
305
|
-
* Who holds `permission` on `resource` for the instance's policy and how
|
|
306
|
-
*
|
|
307
|
-
* `RelationSource.related`. It lists and never grants; `complete: false`
|
|
308
|
-
*
|
|
309
|
-
*
|
|
341
|
+
* Who holds `permission` on `resource` for the instance's policy and how (role,
|
|
342
|
+
* relation or share), from `MembershipSource.list` and
|
|
343
|
+
* `RelationSource.related`. It lists and never grants; `complete: false` means
|
|
344
|
+
* some holders could not be listed. An instance built from a snapshot answers
|
|
345
|
+
* an empty, incomplete list.
|
|
310
346
|
*/
|
|
311
347
|
declare function whoCan(permdock: InstanceHandle, permission: Permission<string, unknown, "instance">, resource: unknown): Promise<WhoCan>;
|
|
312
348
|
//#endregion
|
|
@@ -314,7 +350,10 @@ declare function whoCan(permdock: InstanceHandle, permission: Permission<string,
|
|
|
314
350
|
type SignPolicyDocumentOptions = {
|
|
315
351
|
/** `aud`: the environment URL `cloud().policies` checks it against. */
|
|
316
352
|
readonly audience: string | readonly string[];
|
|
317
|
-
/**
|
|
353
|
+
/**
|
|
354
|
+
* `exp`, a NumericDate; the signer's default (one hour after `iat`) when
|
|
355
|
+
* absent.
|
|
356
|
+
*/
|
|
318
357
|
readonly expiresAt?: number;
|
|
319
358
|
};
|
|
320
359
|
/**
|
|
@@ -329,14 +368,20 @@ type SignSnapshotOptions = {
|
|
|
329
368
|
/** `aud`; a signer with no default audience refuses to sign without one. */
|
|
330
369
|
readonly audience?: string | readonly string[];
|
|
331
370
|
};
|
|
332
|
-
/**
|
|
371
|
+
/**
|
|
372
|
+
* The claims of a `vnd.permdock.snapshot+jwt` apart from `iss`, `aud` and
|
|
373
|
+
* `jti`.
|
|
374
|
+
*/
|
|
333
375
|
type SnapshotClaims = {
|
|
334
376
|
readonly snapshot: Omit<Snapshot, "issuedAt" | "expiresAt">;
|
|
335
377
|
/** The principal's id; absent for an anonymous snapshot. */
|
|
336
378
|
readonly sub?: string;
|
|
337
379
|
/** `issuedAt` in NumericDate seconds; absent when it is not after the epoch. */
|
|
338
380
|
readonly iat?: number;
|
|
339
|
-
/**
|
|
381
|
+
/**
|
|
382
|
+
* `expiresAt` in NumericDate seconds; absent when the snapshot has none, and
|
|
383
|
+
* the signer then sets its default.
|
|
384
|
+
*/
|
|
340
385
|
readonly exp?: number;
|
|
341
386
|
};
|
|
342
387
|
/**
|
|
@@ -345,7 +390,10 @@ type SnapshotClaims = {
|
|
|
345
390
|
* claims are the only times a verifier reads.
|
|
346
391
|
*/
|
|
347
392
|
declare function snapshotClaims(snapshot: Snapshot): SnapshotClaims;
|
|
348
|
-
/**
|
|
393
|
+
/**
|
|
394
|
+
* Signs `snapshot` as a `vnd.permdock.snapshot+jwt` with the claims
|
|
395
|
+
* `snapshotClaims` answers.
|
|
396
|
+
*/
|
|
349
397
|
declare function signSnapshot(snapshot: Snapshot, signer: TokenSigner, options?: SignSnapshotOptions): Promise<string>;
|
|
350
398
|
/**
|
|
351
399
|
* The snapshot a verified `vnd.permdock.snapshot+jwt` carries, parsed as
|
|
@@ -390,10 +438,9 @@ type ArazzoFinding = {
|
|
|
390
438
|
};
|
|
391
439
|
declare function arazzoFindings(input: ArazzoSimulateInput, tree: PermissionTree | undefined): readonly ArazzoFinding[];
|
|
392
440
|
/**
|
|
393
|
-
* Walks an Arazzo workflow against `permdock`: each step's operation is
|
|
394
|
-
*
|
|
395
|
-
*
|
|
396
|
-
* snapshot too.
|
|
441
|
+
* Walks an Arazzo workflow against `permdock`: each step's operation is decided
|
|
442
|
+
* as `permdock.simulate` would, and a server instance emits one simulate event
|
|
443
|
+
* for the whole plan. Works on an instance built from a snapshot too.
|
|
397
444
|
*/
|
|
398
445
|
declare function simulateArazzo(permdock: PermDock, input: ArazzoSimulateInput): ArazzoPlan;
|
|
399
446
|
//#endregion
|
|
@@ -407,16 +454,17 @@ declare function localSnapshotManifest(policy: Policy): LocalSnapshotManifest;
|
|
|
407
454
|
//#endregion
|
|
408
455
|
//#region src/core/app.d.ts
|
|
409
456
|
/**
|
|
410
|
-
* How strict `defineApp` is about the services the policy needs. `dev`
|
|
411
|
-
*
|
|
412
|
-
*
|
|
413
|
-
* service the app does not configure, instead of denying at run
|
|
457
|
+
* How strict `defineApp` is about the services the policy needs. `dev` fills in
|
|
458
|
+
* in-process defaults (a memory approval store and a memory limit store) so a
|
|
459
|
+
* new app runs before any infrastructure exists. `prod` throws at startup when
|
|
460
|
+
* a grant needs a service the app does not configure, instead of denying at run
|
|
461
|
+
* time.
|
|
414
462
|
*/
|
|
415
463
|
type AppProfile = "dev" | "prod";
|
|
416
464
|
/**
|
|
417
|
-
* Everything an app wires once and every adapter reads: the data sources,
|
|
418
|
-
*
|
|
419
|
-
*
|
|
465
|
+
* Everything an app wires once and every adapter reads: the data sources, the
|
|
466
|
+
* opt-in features and the services. An adapter's own options win over these,
|
|
467
|
+
* key by key.
|
|
420
468
|
*/
|
|
421
469
|
type AppOptions = InstanceOptions & Pick<PermDockOptions, "settings"> & {
|
|
422
470
|
/** Where approval requests open and resume, for every adapter. */
|
|
@@ -426,10 +474,10 @@ type AppOptions = InstanceOptions & Pick<PermDockOptions, "settings"> & {
|
|
|
426
474
|
//#endregion
|
|
427
475
|
//#region src/app/define-app.d.ts
|
|
428
476
|
/**
|
|
429
|
-
* Binds the app's sources, features and services to `policy`. The result
|
|
430
|
-
*
|
|
431
|
-
*
|
|
432
|
-
*
|
|
477
|
+
* Binds the app's sources, features and services to `policy`. The result is a
|
|
478
|
+
* policy: pass it wherever a policy goes (`createPermDock`, every adapter, the
|
|
479
|
+
* CLI) and each picks up the app definition, with its own options taking
|
|
480
|
+
* precedence. The profile defaults to `prod`.
|
|
433
481
|
*/
|
|
434
482
|
declare function defineApp<TUser, TPrincipal extends Principal, V extends PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options?: AppOptions): Policy<TUser, TPrincipal, V>;
|
|
435
483
|
//#endregion
|
|
@@ -453,20 +501,20 @@ type ShadowMismatch = {
|
|
|
453
501
|
type ShadowOptions = {
|
|
454
502
|
readonly legacy: LegacyCheck;
|
|
455
503
|
/**
|
|
456
|
-
* Permissions PermDock decides; every other check returns the legacy
|
|
457
|
-
*
|
|
504
|
+
* Permissions PermDock decides; every other check returns the legacy answer.
|
|
505
|
+
* `"all"` once every mismatch is resolved; default none.
|
|
458
506
|
*/
|
|
459
507
|
readonly enforce?: readonly Permission[] | "all";
|
|
460
508
|
/** Called for each disagreement; a throw here is ignored. */
|
|
461
509
|
readonly onMismatch?: (mismatch: ShadowMismatch) => void;
|
|
462
510
|
};
|
|
463
511
|
/**
|
|
464
|
-
* Runs PermDock beside the application's existing checks while adopting
|
|
465
|
-
*
|
|
466
|
-
*
|
|
467
|
-
*
|
|
468
|
-
*
|
|
469
|
-
*
|
|
512
|
+
* Runs PermDock beside the application's existing checks while adopting it.
|
|
513
|
+
* Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both; the
|
|
514
|
+
* legacy answer is returned unless the permission is in `enforce`, and every
|
|
515
|
+
* disagreement reaches `onMismatch`. Promote permissions one by one as their
|
|
516
|
+
* mismatches are resolved, then remove the wrap. Pass it as an adapter's `wrap`
|
|
517
|
+
* option, or call it on a core instance.
|
|
470
518
|
*/
|
|
471
519
|
declare function shadowMode(options: ShadowOptions): PermDockWrap;
|
|
472
520
|
//#endregion
|
|
@@ -483,28 +531,41 @@ declare function mayAccess(policy: Policy, user: unknown, permission: Permission
|
|
|
483
531
|
}): boolean;
|
|
484
532
|
//#endregion
|
|
485
533
|
//#region src/core/custom-role-source.d.ts
|
|
486
|
-
/**
|
|
534
|
+
/**
|
|
535
|
+
* Reads custom roles from the application's store, as `customRoleSource` takes
|
|
536
|
+
* them.
|
|
537
|
+
*/
|
|
487
538
|
type CustomRoleReader = {
|
|
488
|
-
/**
|
|
489
|
-
|
|
490
|
-
|
|
539
|
+
/**
|
|
540
|
+
* Every custom role of `tenant`, whether or not anyone in the request holds
|
|
541
|
+
* it.
|
|
542
|
+
*/
|
|
543
|
+
rolesFor: (tenant: string) => CustomRole[] | Promise<CustomRole[]>;
|
|
544
|
+
assignable?: (tenant: string) => string[] | Promise<string[]>;
|
|
491
545
|
/** Platform custom roles (`scope: 'global'`). */
|
|
492
|
-
globalRoles
|
|
546
|
+
globalRoles?: () => CustomRole[] | Promise<CustomRole[]>;
|
|
493
547
|
/** Shared custom roles (`shared: true`), the same for every tenant. */
|
|
494
|
-
sharedRoles
|
|
548
|
+
sharedRoles?: () => CustomRole[] | Promise<CustomRole[]>;
|
|
495
549
|
};
|
|
496
550
|
type CustomRoleSourceOptions = {
|
|
497
|
-
/**
|
|
551
|
+
/**
|
|
552
|
+
* `'all'` (default): read every custom role of each tenant, so
|
|
553
|
+
* `assignableRoles` and `decideRoleChange` see them all.
|
|
554
|
+
*/
|
|
498
555
|
readonly read?: "all";
|
|
499
556
|
} | {
|
|
500
|
-
/**
|
|
557
|
+
/**
|
|
558
|
+
* `'held'`: skip a tenant's read, and the platform read, when every role
|
|
559
|
+
* the subject holds there is declared in `policy`. For requests that
|
|
560
|
+
* never manage roles.
|
|
561
|
+
*/
|
|
501
562
|
readonly read: "held";
|
|
502
563
|
readonly policy: Policy;
|
|
503
564
|
};
|
|
504
565
|
/**
|
|
505
|
-
* A `CustomRoleSource` over a reader that returns every custom role of a
|
|
506
|
-
* It keeps only the roles of the requested tenant. With `read: 'held'`
|
|
507
|
-
* skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
|
|
566
|
+
* A `CustomRoleSource` over a reader that returns every custom role of a
|
|
567
|
+
* tenant. It keeps only the roles of the requested tenant. With `read: 'held'`
|
|
568
|
+
* it skips a tenant's read, and `globalRoles` and `sharedRoles`, when the
|
|
508
569
|
* subject holds only declared roles there.
|
|
509
570
|
*/
|
|
510
571
|
declare function customRoleSource(reader: CustomRoleReader, options?: CustomRoleSourceOptions): CustomRoleSource;
|
|
@@ -522,7 +583,10 @@ type SnapshotForOptions = {
|
|
|
522
583
|
readonly memberships?: readonly Membership[];
|
|
523
584
|
/** The tenant's custom roles, typically from a shared, tagged cache. */
|
|
524
585
|
readonly customRoles?: readonly CustomRole[];
|
|
525
|
-
/**
|
|
586
|
+
/**
|
|
587
|
+
* Per tenant, the role names `CustomRoleSource.assignable` returns; narrows
|
|
588
|
+
* `assignable`.
|
|
589
|
+
*/
|
|
526
590
|
readonly assignable?: Readonly<Record<string, readonly string[]>>;
|
|
527
591
|
/** Plans of the active tenant; replaces `principal.plans`. */
|
|
528
592
|
readonly plans?: readonly string[];
|
|
@@ -532,10 +596,10 @@ type SnapshotForOptions = {
|
|
|
532
596
|
readonly now?: Instant;
|
|
533
597
|
};
|
|
534
598
|
/**
|
|
535
|
-
* Builds the serializable access snapshot for a subject without a request,
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
*
|
|
599
|
+
* Builds the serializable access snapshot for a subject without a request, a
|
|
600
|
+
* network call or a cache directive: call it inside the app's own `'use cache:
|
|
601
|
+
* private'` function. Synchronous; the policy's `subject` and `context` mappers
|
|
602
|
+
* must be synchronous too.
|
|
539
603
|
*/
|
|
540
604
|
declare function snapshotFor<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: SnapshotForOptions): Snapshot;
|
|
541
605
|
//#endregion
|
|
@@ -548,8 +612,12 @@ declare function definePermissions<const Input, PX = never, RX = never>(input: I
|
|
|
548
612
|
* renames and for one that crossed a serialisation boundary.
|
|
549
613
|
*/
|
|
550
614
|
declare function formerKeys(permission: object): readonly string[];
|
|
551
|
-
declare function resource<T, const A extends ActionList = readonly [], const C extends ActionList = readonly []>(schema: StandardSchemaV1<unknown, T>, options?: ResourceOptions<A, C>
|
|
552
|
-
|
|
615
|
+
declare function resource<T, const A extends ActionList = readonly [], const C extends ActionList = readonly [], const N extends string = never>(schema: StandardSchemaV1<unknown, T>, options?: ResourceOptions<A, C> & {
|
|
616
|
+
readonly name?: N;
|
|
617
|
+
}): ResourceInit<T, A, C, N>;
|
|
618
|
+
declare function resource<const A extends ActionList = readonly [], const C extends ActionList = readonly [], const N extends string = never>(options: ResourceOptions<A, C> & {
|
|
619
|
+
readonly name?: N;
|
|
620
|
+
}): ResourceInit<unknown, A, C, N>;
|
|
553
621
|
//#endregion
|
|
554
622
|
//#region src/core/presets.d.ts
|
|
555
623
|
type ReadOnlyMeta = {
|
|
@@ -612,7 +680,10 @@ declare function writable<const A extends ActionList | undefined = undefined, co
|
|
|
612
680
|
//#endregion
|
|
613
681
|
//#region src/core/role-builder.d.ts
|
|
614
682
|
type RoleGrants = readonly (Omit<Grant, "role" | "scope"> | readonly Omit<Grant, "role" | "scope">[])[];
|
|
615
|
-
/**
|
|
683
|
+
/**
|
|
684
|
+
* A role held at a named scope: `on` is checked against `definePolicy({ scopes
|
|
685
|
+
* })`.
|
|
686
|
+
*/
|
|
616
687
|
declare function role<const S extends string>(name: string | Role, grants: RoleGrants, options: RoleOptions<S> & {
|
|
617
688
|
readonly on: S;
|
|
618
689
|
}): RoleBinding<S>;
|
|
@@ -625,13 +696,16 @@ declare function normalizeAssurance(input: AssuranceRequirement | undefined): As
|
|
|
625
696
|
//#region src/core/grant-builders.d.ts
|
|
626
697
|
declare function allow<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
627
698
|
/**
|
|
628
|
-
* Every action of a resource (`permissions.post`), of several, or of the
|
|
629
|
-
*
|
|
630
|
-
*
|
|
699
|
+
* Every action of a resource (`permissions.post`), of several, or of the whole
|
|
700
|
+
* tree, unconditionally. Each grant is listed in the policy as if written out,
|
|
701
|
+
* and an action added to the resource later is granted too.
|
|
631
702
|
*/
|
|
632
703
|
declare function allow(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
633
704
|
declare function deny<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
634
|
-
/**
|
|
705
|
+
/**
|
|
706
|
+
* Every action of a resource, of several, or of the whole tree,
|
|
707
|
+
* unconditionally.
|
|
708
|
+
*/
|
|
635
709
|
declare function deny(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
636
710
|
//#endregion
|
|
637
711
|
//#region src/core/approval-normalize.d.ts
|
|
@@ -657,7 +731,10 @@ declare function supportAccess<const S extends string>(options: SupportAccessOpt
|
|
|
657
731
|
declare function supportAccess(options: SupportAccessOptions<never>): RoleBinding<"tenant">;
|
|
658
732
|
type ActivateInput = {
|
|
659
733
|
readonly role: string | Role;
|
|
660
|
-
/**
|
|
734
|
+
/**
|
|
735
|
+
* The scope the activation applies in (a declared name or the `tenant` /
|
|
736
|
+
* `team` alias).
|
|
737
|
+
*/
|
|
661
738
|
readonly scope: string;
|
|
662
739
|
readonly id: string;
|
|
663
740
|
/** Ancestor scope ids, keyed by scope name, for a nested-scope activation. */
|
|
@@ -667,30 +744,32 @@ type ActivateInput = {
|
|
|
667
744
|
readonly reason?: string;
|
|
668
745
|
};
|
|
669
746
|
/**
|
|
670
|
-
* Requests a just-in-time role activation. It never writes: a granted
|
|
671
|
-
*
|
|
672
|
-
*
|
|
673
|
-
*
|
|
674
|
-
*
|
|
747
|
+
* Requests a just-in-time role activation. It never writes: a granted decision
|
|
748
|
+
* carries the elevated membership under `elevation` for the app to write.
|
|
749
|
+
* `approval-required` comes back first when the role's `activation` sets
|
|
750
|
+
* `approval`. Fail-closed: an unknown role, an ineligible subject, a missing
|
|
751
|
+
* justification or stale authentication all deny.
|
|
675
752
|
*/
|
|
676
753
|
/**
|
|
677
754
|
* Requests a just-in-time activation of an eligible role for the subject of
|
|
678
755
|
* `permdock`. It never writes: a granted decision carries the elevated
|
|
679
|
-
* membership under `elevation` for the app to write, and
|
|
680
|
-
*
|
|
681
|
-
*
|
|
756
|
+
* membership under `elevation` for the app to write, and `approval-required`
|
|
757
|
+
* comes back first when the role's `activation` sets `approval`. An instance
|
|
758
|
+
* built from a snapshot denies with `unsupported`.
|
|
682
759
|
*/
|
|
683
760
|
declare function activate(permdock: InstanceHandle, input: ActivateInput): Decision;
|
|
684
761
|
//#endregion
|
|
685
762
|
//#region src/core/scope-helpers.d.ts
|
|
686
763
|
/**
|
|
687
|
-
* The canonical form PermDock evaluates one membership in, or `undefined`
|
|
688
|
-
*
|
|
689
|
-
*
|
|
690
|
-
* `team` pair.
|
|
764
|
+
* The canonical form PermDock evaluates one membership in, or `undefined` when
|
|
765
|
+
* it is malformed and grants nothing. `scopes` is the policy's or the catalog's
|
|
766
|
+
* scope list; absent or empty means the implicit `tenant` and `team` pair.
|
|
691
767
|
*/
|
|
692
768
|
declare function normalizeMembership(input: unknown, scopes?: readonly Scope[]): Membership | undefined;
|
|
693
|
-
/**
|
|
769
|
+
/**
|
|
770
|
+
* Every well-formed membership of `input` in canonical form; malformed entries
|
|
771
|
+
* are dropped.
|
|
772
|
+
*/
|
|
694
773
|
declare function normalizeMemberships(input: unknown, scopes?: readonly Scope[]): readonly Membership[];
|
|
695
774
|
/**
|
|
696
775
|
* The declared scope `name` stands for: the name itself, or the scope the
|
|
@@ -699,14 +778,23 @@ declare function normalizeMemberships(input: unknown, scopes?: readonly Scope[])
|
|
|
699
778
|
declare function resolveScope(scopes: readonly Scope[] | undefined, name: unknown): string | undefined;
|
|
700
779
|
//#endregion
|
|
701
780
|
//#region src/core/ownership.d.ts
|
|
702
|
-
/**
|
|
781
|
+
/**
|
|
782
|
+
* Who a role change is about: their principal id and their membership in the
|
|
783
|
+
* scope instance.
|
|
784
|
+
*/
|
|
703
785
|
type RoleChangeTarget = {
|
|
704
786
|
readonly id: string;
|
|
705
|
-
/**
|
|
787
|
+
/**
|
|
788
|
+
* The kind of the target's membership in the instance (`staff`, `contact`,
|
|
789
|
+
* ...).
|
|
790
|
+
*/
|
|
706
791
|
readonly via?: string;
|
|
707
792
|
/** The roles the target holds in the instance now. */
|
|
708
793
|
readonly roles?: readonly string[];
|
|
709
|
-
/**
|
|
794
|
+
/**
|
|
795
|
+
* `idp` when the identity provider owns the target's membership: the
|
|
796
|
+
* application cannot change it.
|
|
797
|
+
*/
|
|
710
798
|
readonly managedBy?: "idp";
|
|
711
799
|
};
|
|
712
800
|
type RoleChangeBase = {
|
|
@@ -716,16 +804,15 @@ type RoleChangeBase = {
|
|
|
716
804
|
readonly within?: Readonly<Record<string, string>>;
|
|
717
805
|
readonly target: RoleChangeTarget;
|
|
718
806
|
/**
|
|
719
|
-
* How many principals hold `role` in the instance now, from the
|
|
720
|
-
*
|
|
721
|
-
* `transferOnly` is denied.
|
|
807
|
+
* How many principals hold `role` in the instance now, from the application's
|
|
808
|
+
* store. Without it a role with `min`, `max` or `transferOnly` is denied.
|
|
722
809
|
*/
|
|
723
810
|
readonly holders?: number;
|
|
724
811
|
};
|
|
725
812
|
/**
|
|
726
813
|
* A role held at a named scope instance (`scope` is a declared name or alias
|
|
727
|
-
* and `id` the instance), or a global role: `scope: 'global'` with no `id`.
|
|
728
|
-
*
|
|
814
|
+
* and `id` the instance), or a global role: `scope: 'global'` with no `id`. A
|
|
815
|
+
* global change has no tenant, so `within` and `holders` do not apply to it.
|
|
729
816
|
*/
|
|
730
817
|
type RoleChange = RoleChangeBase & ({
|
|
731
818
|
/** The scope the role is held at (a declared name or alias). */
|
|
@@ -750,7 +837,10 @@ type RoleChangeDecision = {
|
|
|
750
837
|
readonly change: RoleChange;
|
|
751
838
|
readonly denials: readonly Denial[];
|
|
752
839
|
};
|
|
753
|
-
/**
|
|
840
|
+
/**
|
|
841
|
+
* The holder-count, membership-kind, exclusivity and `assigns` rules of one
|
|
842
|
+
* role, as the catalog lists them (`CatalogRole`).
|
|
843
|
+
*/
|
|
754
844
|
type RoleRules = {
|
|
755
845
|
readonly key: string;
|
|
756
846
|
readonly min?: number;
|
|
@@ -765,14 +855,26 @@ type RoleChangeCheckInput = {
|
|
|
765
855
|
readonly kind: "assign" | "revoke" | "transfer";
|
|
766
856
|
readonly target: Pick<RoleChangeTarget, "via" | "roles">;
|
|
767
857
|
};
|
|
768
|
-
/**
|
|
858
|
+
/**
|
|
859
|
+
* How many principals hold the role in the instance now; without it a role
|
|
860
|
+
* with `min`, `max` or `transferOnly` is denied.
|
|
861
|
+
*/
|
|
769
862
|
readonly holders?: number;
|
|
770
|
-
/**
|
|
863
|
+
/**
|
|
864
|
+
* Every declared role: adds the `exclusiveWith` other roles declare against
|
|
865
|
+
* this one, and with `actorRoles` the `assigns` rule.
|
|
866
|
+
*/
|
|
771
867
|
readonly roles?: readonly RoleRules[];
|
|
772
|
-
/**
|
|
868
|
+
/**
|
|
869
|
+
* The roles the actor holds at the instance, highest rank first. With `roles`
|
|
870
|
+
* naming any `assigns`, one of them must assign this role.
|
|
871
|
+
*/
|
|
773
872
|
readonly actorRoles?: readonly string[];
|
|
774
873
|
};
|
|
775
|
-
/**
|
|
874
|
+
/**
|
|
875
|
+
* `by` names the actor role whose `assigns` allowed the change, `null` when the
|
|
876
|
+
* rule did not apply.
|
|
877
|
+
*/
|
|
776
878
|
type RoleChangeCheck = {
|
|
777
879
|
readonly ok: true;
|
|
778
880
|
readonly by: string | null;
|
|
@@ -782,18 +884,18 @@ type RoleChangeCheck = {
|
|
|
782
884
|
};
|
|
783
885
|
/**
|
|
784
886
|
* The rules of a role change that need no subject: `assigns`, `for`,
|
|
785
|
-
* `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and
|
|
786
|
-
*
|
|
787
|
-
*
|
|
788
|
-
*
|
|
887
|
+
* `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and the
|
|
888
|
+
* target's roles alone. `decideRoleChange` runs the same function after its
|
|
889
|
+
* actor, tenant and ceiling checks; a service that holds only the catalog calls
|
|
890
|
+
* it with the `CatalogRole` entries.
|
|
789
891
|
*/
|
|
790
892
|
declare function checkRoleChange(role: RoleRules, input: RoleChangeCheckInput): RoleChangeCheck;
|
|
791
893
|
type RoleChangeOptions = {
|
|
792
894
|
/**
|
|
793
|
-
* `true` when the application loaded `change.within` from its own store
|
|
794
|
-
*
|
|
795
|
-
*
|
|
796
|
-
*
|
|
895
|
+
* `true` when the application loaded `change.within` from its own store (the
|
|
896
|
+
* instance's stored parent), not from the request. Without it, a nested
|
|
897
|
+
* instance's tenant comes only from a live membership the actor holds on that
|
|
898
|
+
* instance or under it.
|
|
797
899
|
*/
|
|
798
900
|
readonly trusted?: boolean;
|
|
799
901
|
};
|
|
@@ -802,12 +904,12 @@ type RoleChangeOptions = {
|
|
|
802
904
|
* the instance's own principal; nothing in `change` can stand in for it.
|
|
803
905
|
*/
|
|
804
906
|
/**
|
|
805
|
-
* Whether the subject of `permdock` may assign, revoke or transfer a role
|
|
806
|
-
*
|
|
807
|
-
* `
|
|
808
|
-
*
|
|
809
|
-
* instance's tenant comes from a live membership the subject holds on it,
|
|
810
|
-
*
|
|
907
|
+
* Whether the subject of `permdock` may assign, revoke or transfer a role in
|
|
908
|
+
* one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`, `min`,
|
|
909
|
+
* `max` and `transferOnly`. It never writes; the application does, and
|
|
910
|
+
* generated RLS triggers re-check the holder counts at commit. A nested
|
|
911
|
+
* instance's tenant comes from a live membership the subject holds on it, or
|
|
912
|
+
* from `change.within` only with `{ trusted: true }`; otherwise
|
|
811
913
|
* `no-membership`. An instance built from a snapshot denies with
|
|
812
914
|
* `unsupported`.
|
|
813
915
|
*/
|
|
@@ -815,17 +917,20 @@ declare function decideRoleChange(permdock: InstanceHandle, change: RoleChange,
|
|
|
815
917
|
//#endregion
|
|
816
918
|
//#region src/core/parse-sink-events.d.ts
|
|
817
919
|
/**
|
|
818
|
-
* Validates one untrusted sink event against its family's schema and returns
|
|
819
|
-
*
|
|
920
|
+
* Validates one untrusted sink event against its family's schema and returns a
|
|
921
|
+
* frozen copy, or `null` for anything else. Never throws.
|
|
820
922
|
*/
|
|
821
923
|
declare function parseSinkEvent(value: unknown): SinkEvent | null;
|
|
822
924
|
/**
|
|
823
925
|
* Validates an untrusted list of sink events, such as a request body a sink
|
|
824
|
-
* receiver read. Each event that fails its schema is dropped, and a value
|
|
825
|
-
*
|
|
926
|
+
* receiver read. Each event that fails its schema is dropped, and a value that
|
|
927
|
+
* is not an array yields no events. Never throws.
|
|
826
928
|
*/
|
|
827
929
|
declare function parseSinkEvents(value: unknown): readonly SinkEvent[];
|
|
828
|
-
/**
|
|
930
|
+
/**
|
|
931
|
+
* Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it
|
|
932
|
+
* does not match.
|
|
933
|
+
*/
|
|
829
934
|
declare function parseCatalogEventData(value: unknown): CatalogEventData | null;
|
|
830
935
|
/**
|
|
831
936
|
* Validates one CloudEvent against the closed type list, its `dataschema` and
|
|
@@ -840,7 +945,10 @@ declare function parseCloudEvent(value: unknown): CloudEvent | null;
|
|
|
840
945
|
declare function parseCloudEventBatch(value: unknown): readonly CloudEvent[] | null;
|
|
841
946
|
//#endregion
|
|
842
947
|
//#region src/core/event-schemas.d.ts
|
|
843
|
-
/**
|
|
948
|
+
/**
|
|
949
|
+
* The URL each event family's schema is published at, and its CloudEvents
|
|
950
|
+
* `dataschema`.
|
|
951
|
+
*/
|
|
844
952
|
declare const EVENT_SCHEMA_IDS: {
|
|
845
953
|
readonly decision: "https://permdock.com/schemas/decision-event-v1.json";
|
|
846
954
|
readonly directory: "https://permdock.com/schemas/directory-event-v1.json";
|
|
@@ -874,9 +982,9 @@ declare const SINK_EVENT_SCHEMAS: {
|
|
|
874
982
|
/** The OCSF schema version `toOcsf` emits. */
|
|
875
983
|
declare const OCSF_VERSION = "1.9.0";
|
|
876
984
|
/**
|
|
877
|
-
* An OCSF Authorize Session (class 3003, category Identity and Access
|
|
878
|
-
* API Activity (6003) would fit a per-request decision, but
|
|
879
|
-
* `src_endpoint`, which a decision event does not carry.
|
|
985
|
+
* An OCSF Authorize Session (class 3003, category Identity and Access
|
|
986
|
+
* Management) event. API Activity (6003) would fit a per-request decision, but
|
|
987
|
+
* it requires `api` and `src_endpoint`, which a decision event does not carry.
|
|
880
988
|
*/
|
|
881
989
|
type OcsfAuthorizeSession = {
|
|
882
990
|
readonly class_uid: 3003;
|
|
@@ -934,15 +1042,16 @@ type OcsfAuthorizeSession = {
|
|
|
934
1042
|
};
|
|
935
1043
|
};
|
|
936
1044
|
/**
|
|
937
|
-
* Projects a decision or approval event onto OCSF Authorize Session; the event
|
|
938
|
-
* An event whose `at` does not parse has no OCSF `time`
|
|
1045
|
+
* Projects a decision or approval event onto OCSF Authorize Session; the event
|
|
1046
|
+
* itself is unchanged. An event whose `at` does not parse has no OCSF `time`
|
|
1047
|
+
* and projects to `undefined`.
|
|
939
1048
|
*/
|
|
940
1049
|
declare function toOcsf(event: DecisionEvent): OcsfAuthorizeSession | undefined;
|
|
941
1050
|
/**
|
|
942
1051
|
* An OCSF User Management (class 3007) event for a support-access lifecycle
|
|
943
1052
|
* event: `started` enables the session, `ended` and `revoked` disable it.
|
|
944
|
-
* Support access is high severity, so a SIEM can alert on vendor access.
|
|
945
|
-
*
|
|
1053
|
+
* Support access is high severity, so a SIEM can alert on vendor access. OCSF
|
|
1054
|
+
* 1.9.0 deprecates Account Change (3001) in favour of this class.
|
|
946
1055
|
*/
|
|
947
1056
|
type OcsfUserManagement = {
|
|
948
1057
|
readonly class_uid: 3007;
|
|
@@ -987,16 +1096,17 @@ declare function accessToOcsf(event: AccessEvent): OcsfUserManagement | undefine
|
|
|
987
1096
|
/** The CSV export columns, in order; the header row of every CSV file. */
|
|
988
1097
|
declare const CSV_COLUMNS: readonly ["time", "principal", "actor", "tenant", "permission", "outcome", "matched.role", "via", "denials.reason", "token"];
|
|
989
1098
|
/**
|
|
990
|
-
* One RFC 4180 row for a decision or approval event, without a line
|
|
991
|
-
*
|
|
1099
|
+
* One RFC 4180 row for a decision or approval event, without a line terminator;
|
|
1100
|
+
* join rows with CRLF under a `CSV_COLUMNS` header.
|
|
992
1101
|
*/
|
|
993
1102
|
declare function toCsvRow(event: DecisionEvent): string;
|
|
994
1103
|
//#endregion
|
|
995
1104
|
//#region src/core/catalog-fingerprint.d.ts
|
|
996
1105
|
/**
|
|
997
|
-
* The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON
|
|
998
|
-
*
|
|
999
|
-
* call sites
|
|
1106
|
+
* The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON
|
|
1107
|
+
* without `generatedAt`, `generator`, `fingerprint` and every
|
|
1108
|
+
* `permissions[].usages`, so neither the CLI version, the clock nor call sites
|
|
1109
|
+
* change it.
|
|
1000
1110
|
*/
|
|
1001
1111
|
declare function catalogFingerprint(catalog: unknown): string;
|
|
1002
1112
|
//#endregion
|
|
@@ -1012,8 +1122,8 @@ declare function canonicalJson(value: unknown): string;
|
|
|
1012
1122
|
//#endregion
|
|
1013
1123
|
//#region src/core/sha256.d.ts
|
|
1014
1124
|
/**
|
|
1015
|
-
* The one digest notation: `sha-256:` plus the unpadded base64url SHA-256
|
|
1016
|
-
*
|
|
1125
|
+
* The one digest notation: `sha-256:` plus the unpadded base64url SHA-256 of
|
|
1126
|
+
* `text`. An RFC 9651 sf-token, so it fits a structured header as is.
|
|
1017
1127
|
*/
|
|
1018
1128
|
declare function sha256Digest(text: string): string;
|
|
1019
1129
|
//#endregion
|
|
@@ -1021,17 +1131,17 @@ declare function sha256Digest(text: string): string;
|
|
|
1021
1131
|
type DelegatedPermission = Pick<Permission, "scope" | "resource" | "action">;
|
|
1022
1132
|
/**
|
|
1023
1133
|
* Whether a delegated caller may use a permission its principal holds, through
|
|
1024
|
-
* OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`.
|
|
1025
|
-
*
|
|
1134
|
+
* OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`. `undefined`
|
|
1135
|
+
* means covered; otherwise the denial reason `decide` would add.
|
|
1026
1136
|
*/
|
|
1027
1137
|
declare function coveredByDelegation(permission: DelegatedPermission, delegation: Delegation | undefined, resourceId?: string, hasActor?: boolean): DenialReason | undefined;
|
|
1028
1138
|
/**
|
|
1029
1139
|
* The permission keys the policy's delegations let `subject.actor` use for
|
|
1030
1140
|
* `subject.principal` right now: the union over every active delegation whose
|
|
1031
|
-
* `to` matches the actor and whose `from` the principal holds. `undefined`
|
|
1032
|
-
*
|
|
1033
|
-
*
|
|
1034
|
-
*
|
|
1141
|
+
* `to` matches the actor and whose `from` the principal holds. `undefined` when
|
|
1142
|
+
* none applies, so the call falls back to the token delegation alone. An actor
|
|
1143
|
+
* with `readOnly: true` gets only each delegation's read-only keys. Attenuation
|
|
1144
|
+
* only: a key here still needs a matching allow and no deny.
|
|
1035
1145
|
*/
|
|
1036
1146
|
declare function delegatedPermissions(delegations: readonly PolicyDelegation[] | undefined, subject: Subject, heldRoles: ReadonlySet<string>, now: number): ReadonlySet<string> | undefined;
|
|
1037
1147
|
//#endregion
|