permdock 0.6.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 +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- 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-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- 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-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.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-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- 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-CGkP3Z7A.js +40 -0
- 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 +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- 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-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.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-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.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-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- 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-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.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-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- 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 +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- 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-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- 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 +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.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-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- 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 +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.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-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.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-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- 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-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.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 +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- 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-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.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-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.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-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- 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-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.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-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -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 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- 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-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- 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-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- 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-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.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-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.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-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.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-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.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-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.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-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +308 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { i as
|
|
1
|
+
import { G as CustomRoleSourceFactory, Gt as Snapshot, Hn as ExplainedDecision, J as EntitlementSource, Kn as Obligation, Ln as Decision, Q as LimitStore, Rt as Instant, T as Policy, W as CustomRoleSource, Wn as LimitDetail, Zn as Actor, Zt as AuthEvent, _ as GrantLimit, at as SettingsSource, en as DecisionEvent, et as MembershipSource, fn as Scope, fr as AdapterId, h as Grant, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, lr as Subject, mr as Condition, or as Membership, q as DecisionSink, qn as Quota, rr as Delegation, sr as Principal, ut as TokenSigner } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { D as RowOf, M as AppData, b as ResourceNode, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as RoleTree, n as PlanTree, r as Role } from "./vocabulary-DEJ5j4mR.js";
|
|
4
|
+
import { i as OperationEffect, s as OperationMeta, t as Operation, u as OperationRisk } from "./operations-Ci_rT6Uo.js";
|
|
5
|
+
import { a as HostedPolicies } from "./hosted-Cmtxogd0.js";
|
|
5
6
|
//#region src/core/approval-policies.d.ts
|
|
6
7
|
/**
|
|
7
|
-
* One approval requirement kept as data, for a tenant or the whole platform.
|
|
8
|
-
*
|
|
8
|
+
* One approval requirement kept as data, for a tenant or the whole platform. It
|
|
9
|
+
* adds to what the code requires and never removes a requirement.
|
|
9
10
|
*/
|
|
10
11
|
type ApprovalPolicy = {
|
|
11
12
|
/**
|
|
@@ -13,15 +14,27 @@ type ApprovalPolicy = {
|
|
|
13
14
|
* permission, which needs `risk` or `effects`.
|
|
14
15
|
*/
|
|
15
16
|
readonly permission?: string;
|
|
16
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Matches an operation call whose `meta.risk` is one of these; a call that
|
|
19
|
+
* names no operation never matches.
|
|
20
|
+
*/
|
|
17
21
|
readonly risk?: readonly OperationRisk[];
|
|
18
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Matches an operation call whose `meta.effects` includes one of these; a
|
|
24
|
+
* call that names no operation never matches.
|
|
25
|
+
*/
|
|
19
26
|
readonly effects?: readonly OperationEffect[];
|
|
20
27
|
/** Absent: every tenant. */
|
|
21
28
|
readonly tenant?: string;
|
|
22
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Actor kinds it applies to (`['agent']`); absent: every call. A call without
|
|
31
|
+
* an actor never matches a list.
|
|
32
|
+
*/
|
|
23
33
|
readonly actors?: readonly string[];
|
|
24
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* A portable condition over the row; instance permissions only, since a
|
|
36
|
+
* collection action has no row.
|
|
37
|
+
*/
|
|
25
38
|
readonly where?: Condition;
|
|
26
39
|
/** A portable condition over the call's input (the proposed row). */
|
|
27
40
|
readonly check?: Condition;
|
|
@@ -33,18 +46,21 @@ type ApprovalPolicy = {
|
|
|
33
46
|
};
|
|
34
47
|
/**
|
|
35
48
|
* Data-driven approval requirements, a subject input like `CustomRoleSource`:
|
|
36
|
-
* read once per instance for the subject's tenants (entries without a
|
|
37
|
-
*
|
|
38
|
-
*
|
|
49
|
+
* read once per instance for the subject's tenants (entries without a tenant
|
|
50
|
+
* always apply). A throw, a rejected promise or an invalid entry denies every
|
|
51
|
+
* call an allow would otherwise permit.
|
|
39
52
|
*/
|
|
40
53
|
type ApprovalPolicySource = {
|
|
41
54
|
/** Names the implementation in errors and events. */
|
|
42
55
|
readonly name?: string;
|
|
43
|
-
approvalPoliciesFor(query: {
|
|
56
|
+
approvalPoliciesFor: (query: {
|
|
44
57
|
readonly tenants: readonly string[];
|
|
45
|
-
})
|
|
58
|
+
}) => readonly ApprovalPolicy[] | Promise<readonly ApprovalPolicy[]>;
|
|
46
59
|
};
|
|
47
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* The denial detail when an `ApprovalPolicySource` fails: every call an allow
|
|
62
|
+
* would grant denies with reason `approval`.
|
|
63
|
+
*/
|
|
48
64
|
/**
|
|
49
65
|
* The in-process `ApprovalPolicySource`, usable directly as the
|
|
50
66
|
* `approvalPolicies` option: it is the source and its feature at once.
|
|
@@ -73,9 +89,9 @@ type LoadedApprovalPolicies = {
|
|
|
73
89
|
readonly tighten: (code: Grant["approval"], input: TightenInput) => Grant["approval"];
|
|
74
90
|
} | "failed";
|
|
75
91
|
/**
|
|
76
|
-
* Approval policies kept as data, as an instance option:
|
|
77
|
-
*
|
|
78
|
-
*
|
|
92
|
+
* Approval policies kept as data, as an instance option: `approvalPolicies:
|
|
93
|
+
* approvalPolicies(source)`. The loading and tightening code ships only with an
|
|
94
|
+
* app that imports this function.
|
|
79
95
|
*/
|
|
80
96
|
type ApprovalPolicies = {
|
|
81
97
|
readonly feature: "approval-policies";
|
|
@@ -83,11 +99,11 @@ type ApprovalPolicies = {
|
|
|
83
99
|
};
|
|
84
100
|
declare function approvalPolicies(source: ApprovalPolicySource): ApprovalPolicies;
|
|
85
101
|
/**
|
|
86
|
-
* Why an `ApprovalPolicy` entry does not load. `unknown-permission`: the
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* `where-on-collection`: `where` reads a row, which a collection action
|
|
90
|
-
*
|
|
102
|
+
* Why an `ApprovalPolicy` entry does not load. `unknown-permission`: the policy
|
|
103
|
+
* declares no such key (the entry applies to nothing). `invalid`: a field has
|
|
104
|
+
* the wrong shape or the approval option does not normalise.
|
|
105
|
+
* `where-on-collection`: `where` reads a row, which a collection action never
|
|
106
|
+
* has, so the entry could never match; use `check` over the input.
|
|
91
107
|
* `stale-on-without-version`: `staleOn` needs an instance permission whose
|
|
92
108
|
* resource declares `version`.
|
|
93
109
|
*/
|
|
@@ -99,16 +115,16 @@ type ApprovalPolicyValidation = {
|
|
|
99
115
|
readonly problem: ApprovalPolicyProblem;
|
|
100
116
|
};
|
|
101
117
|
/**
|
|
102
|
-
* Checks one entry against the policy the way `approvalPoliciesFor` loads
|
|
103
|
-
*
|
|
104
|
-
*
|
|
118
|
+
* Checks one entry against the policy the way `approvalPoliciesFor` loads it,
|
|
119
|
+
* for an application to refuse a bad entry when it is saved instead of finding
|
|
120
|
+
* every call denied. Never throws.
|
|
105
121
|
*/
|
|
106
122
|
declare function validateApprovalPolicy(policy: Policy, entry: unknown): ApprovalPolicyValidation;
|
|
107
123
|
/**
|
|
108
|
-
* `code` with every matching entry added as further stages: the result
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
124
|
+
* `code` with every matching entry added as further stages: the result needs
|
|
125
|
+
* all of them (`'sequential'` when any part is ordered), keeps the code's
|
|
126
|
+
* escalation, the shortest `ttl`, and `distinct` unless every part opts out.
|
|
127
|
+
* Without a matching entry, `code` unchanged.
|
|
112
128
|
*/
|
|
113
129
|
declare function tightenApproval(code: Grant["approval"], entries: readonly LoadedApprovalPolicy[], input: {
|
|
114
130
|
readonly permission: string;
|
|
@@ -122,10 +138,17 @@ declare function tightenApproval(code: Grant["approval"], entries: readonly Load
|
|
|
122
138
|
readonly operation?: OperationMeta | undefined;
|
|
123
139
|
}): Grant["approval"];
|
|
124
140
|
//#endregion
|
|
141
|
+
//#region src/core/checks.d.ts
|
|
142
|
+
/**
|
|
143
|
+
* One check of `canAll` or `decideAll`: a permission alone, or with the row it
|
|
144
|
+
* is checked on.
|
|
145
|
+
*/
|
|
146
|
+
type PermissionCheck = Permission | readonly [permission: Permission, data?: unknown];
|
|
147
|
+
//#endregion
|
|
125
148
|
//#region src/core/limits.d.ts
|
|
126
149
|
declare function memoryLimitStore(): LimitStore & {
|
|
127
150
|
/** Live counters, for tests and diagnostics. */
|
|
128
|
-
size()
|
|
151
|
+
size: () => number;
|
|
129
152
|
};
|
|
130
153
|
type QuotaVerdict = {
|
|
131
154
|
readonly ok: true;
|
|
@@ -139,7 +162,10 @@ type QuotaVerdict = {
|
|
|
139
162
|
readonly ok: false;
|
|
140
163
|
readonly reason: "limit-unavailable";
|
|
141
164
|
};
|
|
142
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* What the quota stage of `evaluate` asks about one allow whose grant has a
|
|
167
|
+
* `limit`.
|
|
168
|
+
*/
|
|
143
169
|
type QuotaInput = {
|
|
144
170
|
readonly cache: Map<string, number>;
|
|
145
171
|
readonly limit: GrantLimit;
|
|
@@ -175,7 +201,10 @@ type PrincipalIdentity = {
|
|
|
175
201
|
readonly kind: "email" | "chat";
|
|
176
202
|
/** The chat platform (`slack`, `teams`, …); absent for email. */
|
|
177
203
|
readonly provider?: string;
|
|
178
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* The address (RFC 5322 `addr-spec`) or the platform user id. Emails compare
|
|
206
|
+
* trimmed and case-insensitively.
|
|
207
|
+
*/
|
|
179
208
|
readonly value: string;
|
|
180
209
|
/** The chat workspace or team id. */
|
|
181
210
|
readonly workspace?: string;
|
|
@@ -188,88 +217,143 @@ type PrincipalIdentity = {
|
|
|
188
217
|
type PrincipalSource<TPrincipal extends Principal = Principal> = {
|
|
189
218
|
/** Names the implementation in errors and events. */
|
|
190
219
|
readonly name?: string;
|
|
191
|
-
/**
|
|
192
|
-
|
|
220
|
+
/**
|
|
221
|
+
* The principal as of this request, or `null` for one deleted, suspended or
|
|
222
|
+
* unknown.
|
|
223
|
+
*/
|
|
224
|
+
principal: (id: string, options?: {
|
|
193
225
|
readonly tenant?: string;
|
|
194
|
-
})
|
|
195
|
-
/**
|
|
196
|
-
|
|
226
|
+
}) => TPrincipal | null | Promise<TPrincipal | null>;
|
|
227
|
+
/**
|
|
228
|
+
* The principal an app-owned identity link points to, or `null` when none
|
|
229
|
+
* does.
|
|
230
|
+
*/
|
|
231
|
+
principalByIdentity?: (identity: PrincipalIdentity) => TPrincipal | null | Promise<TPrincipal | null>;
|
|
197
232
|
};
|
|
198
|
-
/**
|
|
233
|
+
/**
|
|
234
|
+
* One `memoryPrincipalSource` identity link: `identity` resolves to the
|
|
235
|
+
* principal with id `principal`.
|
|
236
|
+
*/
|
|
199
237
|
type PrincipalIdentityLink = {
|
|
200
238
|
readonly identity: PrincipalIdentity;
|
|
201
239
|
readonly principal: string;
|
|
202
240
|
};
|
|
203
241
|
/**
|
|
204
|
-
* In-process principals for tests and single-replica apps. `identities`
|
|
205
|
-
*
|
|
206
|
-
*
|
|
242
|
+
* In-process principals for tests and single-replica apps. `identities` links
|
|
243
|
+
* an email or chat identity to a principal id; each answer is a fresh frozen
|
|
244
|
+
* copy. `tenant` is not a filter, as for a database source.
|
|
207
245
|
*/
|
|
208
246
|
declare function memoryPrincipalSource<TPrincipal extends Principal>(input: {
|
|
209
247
|
readonly principals: readonly TPrincipal[];
|
|
210
248
|
readonly identities?: readonly PrincipalIdentityLink[];
|
|
211
249
|
}): PrincipalSource<TPrincipal> & {
|
|
212
|
-
principalByIdentity(identity: PrincipalIdentity)
|
|
250
|
+
principalByIdentity: (identity: PrincipalIdentity) => TPrincipal | null;
|
|
213
251
|
};
|
|
214
252
|
//#endregion
|
|
215
253
|
//#region src/core/validation.d.ts
|
|
216
254
|
type Boundary = "http-body" | "mcp-args" | "tool-args" | "decision-endpoint" | "manual";
|
|
217
255
|
//#endregion
|
|
218
256
|
//#region src/core/permdock.d.ts
|
|
257
|
+
/**
|
|
258
|
+
* Rows the server loaded for `decideIds`: by id, or a list carrying the
|
|
259
|
+
* resource id field.
|
|
260
|
+
*/
|
|
261
|
+
type LoadedRows = ReadonlyMap<string, unknown> | readonly unknown[];
|
|
262
|
+
type DecideIdsOptions = Omit<DecideOptions, "trusted" | "boundary"> & {
|
|
263
|
+
/** Loads the rows for `ids`; ids it leaves out are denied with `validation`. */
|
|
264
|
+
readonly data: (ids: readonly string[]) => LoadedRows | Promise<LoadedRows>;
|
|
265
|
+
};
|
|
219
266
|
type DecideOptions = {
|
|
220
|
-
/**
|
|
267
|
+
/**
|
|
268
|
+
* `true` skips schema validation for a row the server loaded itself.
|
|
269
|
+
* Otherwise `data` is validated against the resource schema first (`validate:
|
|
270
|
+
* 'boundary'`), and a failure denies with reason `validation`.
|
|
271
|
+
*/
|
|
221
272
|
readonly trusted?: boolean;
|
|
222
|
-
/**
|
|
273
|
+
/**
|
|
274
|
+
* Where untrusted data came from, reported on validation errors. Defaults to
|
|
275
|
+
* `'manual'`.
|
|
276
|
+
*/
|
|
223
277
|
readonly boundary?: Boundary;
|
|
224
|
-
/**
|
|
278
|
+
/**
|
|
279
|
+
* Decision clock, for expiries and limits; a `Temporal.Instant` fits.
|
|
280
|
+
* Defaults to the current time.
|
|
281
|
+
*/
|
|
225
282
|
readonly now?: Instant;
|
|
226
|
-
/**
|
|
283
|
+
/**
|
|
284
|
+
* The call that produced the decision, reported on the decision event.
|
|
285
|
+
* Defaults to `'decide'`.
|
|
286
|
+
*/
|
|
227
287
|
readonly call?: DecisionEvent["call"];
|
|
228
288
|
/** The adapter that made the call, reported on the decision event. */
|
|
229
289
|
readonly adapter?: AdapterId;
|
|
230
|
-
/**
|
|
290
|
+
/**
|
|
291
|
+
* The model id the decision is about or that drove the call
|
|
292
|
+
* (`'openai/gpt-5'`), reported on the decision event. Never read when
|
|
293
|
+
* deciding.
|
|
294
|
+
*/
|
|
231
295
|
readonly model?: string;
|
|
232
|
-
/**
|
|
296
|
+
/**
|
|
297
|
+
* Per-call unauthorized handler for `assert`; runs before instance and policy
|
|
298
|
+
* handlers.
|
|
299
|
+
*/
|
|
233
300
|
readonly onDenied?: (decision: Decision) => never | void;
|
|
234
301
|
/** The field being read or written; only grants whose `fields` cover it match. */
|
|
235
302
|
readonly field?: string;
|
|
236
|
-
/**
|
|
303
|
+
/**
|
|
304
|
+
* `true` attaches a `trace` to the decision: the grants evaluated, matched
|
|
305
|
+
* and skipped. Off by default and free when off.
|
|
306
|
+
*/
|
|
237
307
|
readonly explain?: boolean;
|
|
238
308
|
/**
|
|
239
309
|
* A declared scope name: only memberships of that scope answer the check.
|
|
240
|
-
* Naming the first scope keeps nested memberships out of a tenant-level
|
|
241
|
-
*
|
|
242
|
-
*
|
|
310
|
+
* Naming the first scope keeps nested memberships out of a tenant-level guard
|
|
311
|
+
* on a collection action. Global roles still apply; resource roles and
|
|
312
|
+
* memberships of other scopes are skipped with reason `scope`.
|
|
243
313
|
*/
|
|
244
314
|
readonly scope?: string;
|
|
245
315
|
/**
|
|
246
316
|
* The operation the call decides, for `ApprovalPolicySource` entries that
|
|
247
|
-
* match on `meta.risk` and `meta.effects`. Surfaces that decide an
|
|
248
|
-
*
|
|
317
|
+
* match on `meta.risk` and `meta.effects`. Surfaces that decide an operation
|
|
318
|
+
* (agent tools, workflow steps, `protect(operation)`) pass it.
|
|
249
319
|
*/
|
|
250
320
|
readonly operation?: Pick<Operation, "name" | "meta">;
|
|
251
321
|
/**
|
|
252
322
|
* The arguments of the call being decided, such as a tool call's input. An
|
|
253
323
|
* `approval-required` token binds their digest, so an approval covers this
|
|
254
|
-
* call and no call with other arguments. Agent and MCP adapters pass the
|
|
255
|
-
*
|
|
324
|
+
* call and no call with other arguments. Agent and MCP adapters pass the tool
|
|
325
|
+
* arguments. Never read when deciding.
|
|
256
326
|
*/
|
|
257
327
|
readonly args?: unknown;
|
|
258
328
|
/**
|
|
259
|
-
* The application's own data for the decision event (a request id, a
|
|
260
|
-
*
|
|
261
|
-
* deciding.
|
|
329
|
+
* The application's own data for the decision event (a request id, a route).
|
|
330
|
+
* Plain JSON; a value that is not is dropped. Never read when deciding.
|
|
262
331
|
*/
|
|
263
332
|
readonly x?: AppData;
|
|
264
333
|
};
|
|
265
334
|
type SimulateOptions = {
|
|
266
|
-
/**
|
|
335
|
+
/**
|
|
336
|
+
* Decision clock for the whole batch: grant validity, membership expiry and
|
|
337
|
+
* limits are read as of this instant. Defaults to the current time.
|
|
338
|
+
*/
|
|
267
339
|
readonly now?: Instant;
|
|
268
340
|
};
|
|
269
341
|
type RowPair<T> = {
|
|
270
342
|
readonly current: T;
|
|
271
343
|
readonly next: T;
|
|
272
344
|
};
|
|
345
|
+
/**
|
|
346
|
+
* The `data` a check of `P` takes: any part of its row, or a `{ current, next
|
|
347
|
+
* }` pair of them for an update. `RowOf` is `unknown` for an untyped
|
|
348
|
+
* permission, so any value passes.
|
|
349
|
+
*/
|
|
350
|
+
type RowData<P> = Partial<RowOf<P>> | RowPair<Partial<RowOf<P>>> | null | undefined;
|
|
351
|
+
/**
|
|
352
|
+
* `data` the type system knows nothing about (`unknown`, `any`), such as a
|
|
353
|
+
* request body. The check parses it against the resource schema at run time; a
|
|
354
|
+
* value of a known type that does not fit the row is a type error.
|
|
355
|
+
*/
|
|
356
|
+
type UncheckedData<D> = D & (unknown extends D ? unknown : never);
|
|
273
357
|
type WhereResult = {
|
|
274
358
|
readonly condition: Condition | {
|
|
275
359
|
readonly op: "or";
|
|
@@ -297,69 +381,111 @@ type SnapshotOptions = {
|
|
|
297
381
|
};
|
|
298
382
|
type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
299
383
|
readonly can: {
|
|
300
|
-
|
|
384
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: DecideOptions): boolean;
|
|
301
385
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): boolean;
|
|
302
386
|
/**
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
* or `undefined` for a check without a row.
|
|
387
|
+
* Data of no known type (`unknown`, `any`), such as a request body. It is
|
|
388
|
+
* parsed against the resource schema at run time.
|
|
306
389
|
*/
|
|
307
|
-
(permission: Permission, data:
|
|
390
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: DecideOptions): boolean;
|
|
391
|
+
/**
|
|
392
|
+
* A permission held as `Permission` at run time (from a list, a catalog or
|
|
393
|
+
* `findPermission`), whose kind the type does not say: pass `data`, or
|
|
394
|
+
* `undefined` for a check without a row.
|
|
395
|
+
*/
|
|
396
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: DecideOptions): boolean;
|
|
308
397
|
};
|
|
309
398
|
readonly decide: {
|
|
310
|
-
|
|
399
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: DecideOptions): Decision;
|
|
311
400
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): Decision;
|
|
312
401
|
/**
|
|
313
|
-
*
|
|
314
|
-
*
|
|
315
|
-
|
|
402
|
+
* Data of no known type (`unknown`, `any`), such as a request body. It is
|
|
403
|
+
* parsed against the resource schema at run time.
|
|
404
|
+
*/
|
|
405
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: DecideOptions): Decision;
|
|
406
|
+
/**
|
|
407
|
+
* A permission held as `Permission` at run time (from a list, a catalog or
|
|
408
|
+
* `findPermission`), whose kind the type does not say: pass `data`, or
|
|
409
|
+
* `undefined` for a check without a row.
|
|
316
410
|
*/
|
|
317
|
-
(permission:
|
|
411
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: DecideOptions): Decision;
|
|
318
412
|
};
|
|
319
413
|
/**
|
|
320
|
-
* `
|
|
321
|
-
*
|
|
414
|
+
* `can` for every check, on one instance: `true` only when each is granted,
|
|
415
|
+
* and `false` for an empty list. A check is a permission, or a `[permission,
|
|
416
|
+
* row]` pair. It stops at the first check that is not granted.
|
|
417
|
+
*/
|
|
418
|
+
readonly canAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => boolean;
|
|
419
|
+
/**
|
|
420
|
+
* `decide` for every check, in check order; a check is a permission or a
|
|
421
|
+
* `[permission, row]` pair.
|
|
422
|
+
*/
|
|
423
|
+
readonly decideAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => readonly Decision[];
|
|
424
|
+
/**
|
|
425
|
+
* `decide` for each row, in row order. Each row is its own call: a limit is
|
|
426
|
+
* consumed once per granted row, so rows past the cap are denied with
|
|
322
427
|
* `limit`, and each `approval-required` row carries its own token.
|
|
323
428
|
*/
|
|
324
|
-
readonly decideEach:
|
|
429
|
+
readonly decideEach: {
|
|
430
|
+
<D>(permission: Permission, rows: readonly UncheckedData<D>[], options?: DecideOptions): readonly Decision[];
|
|
431
|
+
<P extends Permission>(permission: P, rows: readonly RowData<P>[], options?: DecideOptions): readonly Decision[];
|
|
432
|
+
};
|
|
433
|
+
/**
|
|
434
|
+
* `decide` for each id, in id order, on rows the server loads itself:
|
|
435
|
+
* `options.data(ids)` answers a map from id to row, or the rows with their
|
|
436
|
+
* resource id field. Each row is trusted (no schema check) and decided in the
|
|
437
|
+
* tenant its own root scope field names, as `permdock.tenant(<that value>)`
|
|
438
|
+
* would, so one call can span tenants. An id with no loaded row, a loader
|
|
439
|
+
* that throws and a row of another resource are denied with `validation`. A
|
|
440
|
+
* snapshot instance denies every id with `unsupported`.
|
|
441
|
+
*/
|
|
442
|
+
readonly decideIds: (permission: Permission, ids: readonly string[], options: DecideIdsOptions) => Promise<readonly Decision[]>;
|
|
325
443
|
/**
|
|
326
|
-
* What `permission` on `row` decides for the principal `principalId`,
|
|
327
|
-
*
|
|
328
|
-
*
|
|
329
|
-
*
|
|
330
|
-
*
|
|
444
|
+
* What `permission` on `row` decides for the principal `principalId`, loaded
|
|
445
|
+
* from `principals` in this instance's active tenant with no actor and no
|
|
446
|
+
* delegation. It grants this instance nothing, shares none of its caches and
|
|
447
|
+
* never consumes a limit. Denied with `anonymous` when there is no
|
|
448
|
+
* `principals`, no such principal or the source throws, and with
|
|
331
449
|
* `tenant-mismatch` when the principal is outside the active tenant.
|
|
332
450
|
*/
|
|
333
451
|
readonly decideFor: (principalId: string, permission: Permission, row?: unknown) => Promise<Decision>;
|
|
334
452
|
readonly assert: {
|
|
335
|
-
|
|
453
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: DecideOptions): Extract<Decision, {
|
|
336
454
|
readonly outcome: "granted";
|
|
337
455
|
}>;
|
|
338
456
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): Extract<Decision, {
|
|
339
457
|
readonly outcome: "granted";
|
|
340
458
|
}>;
|
|
341
459
|
/**
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
|
|
460
|
+
* Data of no known type (`unknown`, `any`), such as a request body. It is
|
|
461
|
+
* parsed against the resource schema at run time.
|
|
462
|
+
*/
|
|
463
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: DecideOptions): Extract<Decision, {
|
|
464
|
+
readonly outcome: "granted";
|
|
465
|
+
}>;
|
|
466
|
+
/**
|
|
467
|
+
* A permission held as `Permission` at run time (from a list, a catalog or
|
|
468
|
+
* `findPermission`), whose kind the type does not say: pass `data`, or
|
|
469
|
+
* `undefined` for a check without a row.
|
|
345
470
|
*/
|
|
346
|
-
(permission:
|
|
471
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: DecideOptions): Extract<Decision, {
|
|
347
472
|
readonly outcome: "granted";
|
|
348
473
|
}>;
|
|
349
474
|
};
|
|
350
475
|
/**
|
|
351
|
-
* `decide` with `explain: true`: the same decision, with a `trace` that
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
476
|
+
* `decide` with `explain: true`: the same decision, with a `trace` that names
|
|
477
|
+
* the grants evaluated, the allows and denies that matched (so a `denied`
|
|
478
|
+
* says which deny won) and the grants passed over. Local computation only;
|
|
479
|
+
* the trace never reaches a `DecisionSink`.
|
|
355
480
|
*/
|
|
356
481
|
readonly explain: {
|
|
357
|
-
|
|
482
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
358
483
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
359
|
-
(permission: Permission, data:
|
|
484
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
485
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
360
486
|
};
|
|
361
|
-
readonly filter: <T>(permission: Permission<string, T
|
|
362
|
-
readonly pick: <T>(permission: Permission<string, T
|
|
487
|
+
readonly filter: <T>(permission: Permission<string, NoInfer<T>, "instance">, rows: readonly T[], options?: DecideOptions) => T[];
|
|
488
|
+
readonly pick: <T>(permission: Permission<string, NoInfer<T>, "instance">, row: T, options?: DecideOptions) => Partial<T>;
|
|
363
489
|
readonly where: (permission: Permission) => WhereResult;
|
|
364
490
|
readonly actions: (resource: Permission | {
|
|
365
491
|
readonly [key: string]: unknown;
|
|
@@ -396,12 +522,15 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
396
522
|
readonly scope?: string;
|
|
397
523
|
readonly id?: string;
|
|
398
524
|
}) => readonly Role[];
|
|
399
|
-
/**
|
|
525
|
+
/**
|
|
526
|
+
* The distinct `meta.audience` values of the roles held in the active tenant,
|
|
527
|
+
* in rank order.
|
|
528
|
+
*/
|
|
400
529
|
readonly audiences: () => readonly string[];
|
|
401
530
|
/**
|
|
402
|
-
* The roles the subject may hand out in a tenant (the active one by
|
|
403
|
-
*
|
|
404
|
-
*
|
|
531
|
+
* The roles the subject may hand out in a tenant (the active one by default),
|
|
532
|
+
* or with `scope: 'global'` the global roles it may hand out. A snapshot
|
|
533
|
+
* answers only the tenant form.
|
|
405
534
|
*/
|
|
406
535
|
readonly assignableRoles: (options?: {
|
|
407
536
|
readonly tenant?: string;
|
|
@@ -418,8 +547,8 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
418
547
|
readonly scope?: "global";
|
|
419
548
|
}) => readonly Permission[];
|
|
420
549
|
/**
|
|
421
|
-
* The levels of `permission` (`resource(…, { levels })`) the subject may
|
|
422
|
-
*
|
|
550
|
+
* The levels of `permission` (`resource(…, { levels })`) the subject may hand
|
|
551
|
+
* out in a custom role: those it holds, or every level with
|
|
423
552
|
* `meta.manageRoles`. Empty when the permission is not assignable.
|
|
424
553
|
*/
|
|
425
554
|
readonly assignableLevels: (permission: Permission, options?: {
|
|
@@ -438,10 +567,10 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
438
567
|
*/
|
|
439
568
|
readonly permittedIds: (permission: Permission, scope: string, options?: PermittedIdsOptions) => readonly string[];
|
|
440
569
|
/**
|
|
441
|
-
* Loads the relation facts `permission` needs for `rows` into this
|
|
442
|
-
*
|
|
443
|
-
*
|
|
444
|
-
*
|
|
570
|
+
* Loads the relation facts `permission` needs for `rows` into this instance's
|
|
571
|
+
* cache, so `can`, `decide` and `filter` answer synchronously over an async
|
|
572
|
+
* `RelationSource`. It never grants; a failed load leaves the checks denied
|
|
573
|
+
* with `relation-unavailable`.
|
|
445
574
|
*/
|
|
446
575
|
readonly prefetchRelations: (permission: Permission, rows: readonly unknown[]) => Promise<void>;
|
|
447
576
|
readonly roles: V["roles"] extends RoleTree ? V["roles"] : RoleTree;
|
|
@@ -451,37 +580,58 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
451
580
|
/**
|
|
452
581
|
* The same subject, tenant, team, actor, delegation, sink and limits with
|
|
453
582
|
* other sources: `customRoles`, `approvalPolicies` or `relations`. The
|
|
454
|
-
* sources it names are read again for the subject's tenants; the others
|
|
455
|
-
*
|
|
456
|
-
*
|
|
583
|
+
* sources it names are read again for the subject's tenants; the others keep
|
|
584
|
+
* what this instance loaded. Always a promise, since the sources it names may
|
|
585
|
+
* answer asynchronously.
|
|
457
586
|
*/
|
|
458
587
|
readonly derive: (options: DeriveOptions) => Promise<PermDock<V>>;
|
|
459
588
|
};
|
|
460
|
-
/**
|
|
589
|
+
/**
|
|
590
|
+
* What `permdock.derive` may replace: the sources read after the subject is
|
|
591
|
+
* resolved.
|
|
592
|
+
*/
|
|
461
593
|
type DeriveOptions = Pick<PermDockOptions, "customRoles" | "approvalPolicies" | "relations" | "principals">;
|
|
462
594
|
type PermDockOptions = {
|
|
463
595
|
readonly tenant?: string;
|
|
464
596
|
/** One source, or several composed with `composeMemberships`. */
|
|
465
597
|
readonly memberships?: MembershipSource | readonly MembershipSource[];
|
|
466
598
|
readonly customRoles?: CustomRoleSource | CustomRoleSourceFactory;
|
|
467
|
-
/**
|
|
599
|
+
/**
|
|
600
|
+
* Plans and seats from billing, merged into `principal.plans` for the active
|
|
601
|
+
* tenant.
|
|
602
|
+
*/
|
|
468
603
|
readonly entitlements?: EntitlementSource;
|
|
469
604
|
readonly actor?: Actor;
|
|
470
605
|
readonly delegation?: Delegation;
|
|
471
606
|
readonly sink?: DecisionSink;
|
|
472
|
-
/**
|
|
607
|
+
/**
|
|
608
|
+
* Grant limits, `limits(store)`; without it a grant with a `limit` denies
|
|
609
|
+
* with `limit-unavailable`.
|
|
610
|
+
*/
|
|
473
611
|
readonly limits?: Limits;
|
|
474
612
|
readonly session?: string;
|
|
475
613
|
readonly expiresAt?: number;
|
|
476
|
-
/**
|
|
614
|
+
/**
|
|
615
|
+
* Hosted grants, `hostedPolicies(source)`; `current()` is read once, when the
|
|
616
|
+
* instance is created.
|
|
617
|
+
*/
|
|
477
618
|
readonly policies?: HostedPolicies;
|
|
478
|
-
/**
|
|
619
|
+
/**
|
|
620
|
+
* The object graph for `through` and edge-table relations; without it they
|
|
621
|
+
* deny with `relation-unavailable`.
|
|
622
|
+
*/
|
|
479
623
|
readonly relations?: RelationSource;
|
|
480
|
-
/**
|
|
624
|
+
/**
|
|
625
|
+
* Approval requirements kept as data; they add to the code's and never remove
|
|
626
|
+
* one. A throw denies.
|
|
627
|
+
*/
|
|
481
628
|
readonly approvalPolicies?: ApprovalPolicies;
|
|
482
629
|
/** Other principals by id, for `decideFor`; asked with the active tenant. */
|
|
483
630
|
readonly principals?: PrincipalSource;
|
|
484
|
-
/**
|
|
631
|
+
/**
|
|
632
|
+
* Tenant settings, read by `decideCredential` for the key's tenant; a call's
|
|
633
|
+
* own `settings` wins.
|
|
634
|
+
*/
|
|
485
635
|
readonly settings?: SettingsSource;
|
|
486
636
|
/**
|
|
487
637
|
* Request values an adapter's `context` hook derived on the server, merged
|
|
@@ -492,11 +642,14 @@ type PermDockOptions = {
|
|
|
492
642
|
/**
|
|
493
643
|
* The instance for `user`, built synchronously. Every input must answer
|
|
494
644
|
* synchronously: the subject mapper, `memberships`, `customRoles`,
|
|
495
|
-
* `entitlements`, `approvalPolicies` and the freshness check. One that
|
|
496
|
-
*
|
|
645
|
+
* `entitlements`, `approvalPolicies` and the freshness check. One that answers
|
|
646
|
+
* with a Promise throws here; use `getPermDock` for those.
|
|
497
647
|
*/
|
|
498
648
|
declare function getPermDockSync<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: PermDockOptions): PermDock<V>;
|
|
499
|
-
/**
|
|
649
|
+
/**
|
|
650
|
+
* The instance for `user`: waits for every source, then builds it.
|
|
651
|
+
* `getPermDockSync` is the synchronous twin.
|
|
652
|
+
*/
|
|
500
653
|
declare function getPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: PermDockOptions): Promise<PermDock<V>>;
|
|
501
654
|
//#endregion
|
|
502
|
-
export {
|
|
655
|
+
export { memoryApprovalPolicySource as A, PermissionCheck as C, ApprovalPolicySource as D, ApprovalPolicyProblem as E, ApprovalPolicyValidation as O, memoryLimitStore as S, ApprovalPolicy as T, PrincipalSource as _, PermDock as a, Limits as b, RowPair as c, UncheckedData as d, WhereResult as f, PrincipalIdentityLink as g, PrincipalIdentity as h, LoadedRows as i, validateApprovalPolicy as j, approvalPolicies as k, SimulateOptions as l, getPermDockSync as m, DecideOptions as n, PermDockOptions as o, getPermDock as p, DeriveOptions as r, RowData as s, DecideIdsOptions as t, SnapshotOptions as u, memoryPrincipalSource as v, ApprovalPolicies as w, limits as x, PermittedIdsOptions as y };
|