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
|
@@ -9,19 +9,31 @@ function isRfc3339(value) {
|
|
|
9
9
|
function rfc3339(seconds) {
|
|
10
10
|
return (/* @__PURE__ */ new Date(seconds * 1e3)).toISOString();
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Milliseconds since the epoch as RFC 3339 in UTC, milliseconds kept; throws a
|
|
14
|
+
* `RangeError` for a value outside the `Date` range.
|
|
15
|
+
*/
|
|
13
16
|
function isoAt(millis) {
|
|
14
17
|
return new Date(millis).toISOString();
|
|
15
18
|
}
|
|
16
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* RFC 3339 in UTC of `now`, or of the clock when absent; throws a `RangeError`
|
|
21
|
+
* for a `now` that is not an `Instant`.
|
|
22
|
+
*/
|
|
17
23
|
function isoNow(now) {
|
|
18
24
|
return dateAt(now).toISOString();
|
|
19
25
|
}
|
|
20
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Whole seconds since the epoch of an RFC 3339 instant; `undefined` for
|
|
28
|
+
* anything else.
|
|
29
|
+
*/
|
|
21
30
|
function secondsOf(value) {
|
|
22
31
|
return isRfc3339(value) ? Math.floor(Date.parse(value) / 1e3) : void 0;
|
|
23
32
|
}
|
|
24
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Whole seconds since the epoch of an RFC 3339 string or an `Instant`;
|
|
35
|
+
* `undefined` for anything else, Unix seconds included.
|
|
36
|
+
*/
|
|
25
37
|
function instantOf(value) {
|
|
26
38
|
if (typeof value === "string") return secondsOf(value);
|
|
27
39
|
if (typeof value === "object" && value !== null && "epochMilliseconds" in value && typeof value.epochMilliseconds === "number" && Number.isFinite(value.epochMilliseconds)) return Math.floor(value.epochMilliseconds / 1e3);
|
|
@@ -30,7 +42,10 @@ function instantOf(value) {
|
|
|
30
42
|
function durationOf(value) {
|
|
31
43
|
return typeof value === "number" && Number.isSafeInteger(value) && value > 0 ? value : void 0;
|
|
32
44
|
}
|
|
33
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Throws at definition time unless `value` is a whole number of seconds above
|
|
47
|
+
* zero.
|
|
48
|
+
*/
|
|
34
49
|
function assertDuration(value, label) {
|
|
35
50
|
if (durationOf(value) === void 0) throw new Error(`PermDock: ${label} must be a whole number of seconds above 0, got ${JSON.stringify(value) ?? String(value)}`);
|
|
36
51
|
}
|
|
@@ -43,13 +58,19 @@ const INVALID_NOW = Object.freeze({
|
|
|
43
58
|
field: "now",
|
|
44
59
|
message: "now must be an Instant ({ epochMilliseconds }), such as a Temporal.Instant"
|
|
45
60
|
});
|
|
46
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* The `Date` of `now`, or of the clock when absent; throws a `RangeError` for a
|
|
63
|
+
* `now` that is not an `Instant`.
|
|
64
|
+
*/
|
|
47
65
|
function dateAt(now) {
|
|
48
66
|
const millis = nowMillis(now);
|
|
49
67
|
if (!Number.isFinite(millis)) throw new RangeError(`PermDock: ${INVALID_NOW.message}`);
|
|
50
68
|
return new Date(millis);
|
|
51
69
|
}
|
|
52
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Whole seconds since the epoch of `now`, or of the clock when absent; throws a
|
|
72
|
+
* `RangeError` for a `now` that is not an `Instant`.
|
|
73
|
+
*/
|
|
53
74
|
function secondsAt(now) {
|
|
54
75
|
return Math.floor(dateAt(now).getTime() / 1e3);
|
|
55
76
|
}
|
|
@@ -61,7 +82,10 @@ function instantAt(seconds) {
|
|
|
61
82
|
function epochSeconds(now) {
|
|
62
83
|
return nowMillis(now) / 1e3;
|
|
63
84
|
}
|
|
64
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Milliseconds since the epoch of `now`, or of the clock when absent; `NaN` for
|
|
87
|
+
* a `now` that is not an `Instant`.
|
|
88
|
+
*/
|
|
65
89
|
function nowMillis(now) {
|
|
66
90
|
if (now === void 0) return Date.now();
|
|
67
91
|
const millis = typeof now === "object" && now !== null ? now.epochMilliseconds : void 0;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { t as canonicalJson } from "./canonical-json-
|
|
2
|
-
import { r as sha256Digest } from "./sha256-
|
|
1
|
+
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
2
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
3
3
|
//#region src/core/token.ts
|
|
4
4
|
/**
|
|
5
|
-
* Only stable identity goes into the token, so refreshing a session (new
|
|
6
|
-
*
|
|
5
|
+
* Only stable identity goes into the token, so refreshing a session (new roles,
|
|
6
|
+
* assurance or claims) does not orphan an outstanding approval.
|
|
7
7
|
*/
|
|
8
8
|
function principalIdentity(principal) {
|
|
9
9
|
if (principal === null) return null;
|
|
@@ -13,7 +13,10 @@ function principalIdentity(principal) {
|
|
|
13
13
|
issuer: principal.issuer ?? null
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* A row's `version` field as token input; `null` when it is missing or not a
|
|
18
|
+
* scalar.
|
|
19
|
+
*/
|
|
17
20
|
function versionOf(row, field) {
|
|
18
21
|
if (row === null || typeof row !== "object" || !Object.hasOwn(row, field)) return null;
|
|
19
22
|
const value = row[field];
|
|
@@ -25,20 +28,19 @@ function payloadDigest(data) {
|
|
|
25
28
|
return sha256Digest(canonicalJson(data));
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
28
|
-
* The payload a decision token binds: the call's `args` when the caller
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
+
* The payload a decision token binds: the call's `args` when the caller passes
|
|
32
|
+
* them (an agent or MCP tool call, row or not), otherwise the data of a call
|
|
33
|
+
* without a row id. `undefined` binds nothing beyond the row id.
|
|
31
34
|
*/
|
|
32
35
|
function tokenPayload(resourceId, data, args) {
|
|
33
36
|
if (args !== void 0) return payloadDigest(args);
|
|
34
37
|
return resourceId === "*" && data !== void 0 ? payloadDigest(data) : void 0;
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
37
|
-
* `version` is set only for an approval that goes stale on a resource
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* others.
|
|
40
|
+
* `version` is set only for an approval that goes stale on a resource change;
|
|
41
|
+
* without it the payload, and so every other token, is unchanged. `payload` is
|
|
42
|
+
* set when `resourceId` is `*` (a collection action or a row without an id), so
|
|
43
|
+
* an approval covers the arguments it was given and no others.
|
|
42
44
|
*/
|
|
43
45
|
function decisionToken(input) {
|
|
44
46
|
const payload = canonicalJson({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as wireDenials } from "./wire-denial-C7PaVYEM.js";
|
|
2
|
-
import {
|
|
2
|
+
import { n as describe } from "./describe-Bb4hGK5d.js";
|
|
3
3
|
//#region src/core/tool-refusal.ts
|
|
4
4
|
function deniedToolRefusal(decision, permission, resource) {
|
|
5
5
|
const alternatives = decision.alternatives.map((leaf) => leaf.key);
|
|
@@ -26,7 +26,10 @@ function approvalToolRefusal(decision, permission, resource) {
|
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* An MCP `CallToolResult` with `isError` set, as MCP and WebMCP clients read
|
|
31
|
+
* it.
|
|
32
|
+
*/
|
|
30
33
|
function toolErrorResult(refusal) {
|
|
31
34
|
return {
|
|
32
35
|
isError: true,
|
package/dist/trpc/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { T as Policy,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as RevocationFeed } from "../revocations-
|
|
5
|
-
import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-
|
|
6
|
-
import { t as ServerAdapterOptions } from "../bind-
|
|
7
|
-
import { t as StreamProtectOptions } from "../stream-
|
|
1
|
+
import { T as Policy, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock } from "../permdock-B6Sf4T_S.js";
|
|
4
|
+
import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CIlpSA2G.js";
|
|
6
|
+
import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
|
|
7
|
+
import { t as StreamProtectOptions } from "../stream-ltuLdtTG.js";
|
|
8
8
|
import { AnyTRPCMiddlewareFunction } from "@trpc/server";
|
|
9
9
|
//#region src/trpc/create.d.ts
|
|
10
10
|
type TrpcMiddlewareOpts<TCtx = object, TInput = unknown> = {
|
|
@@ -34,7 +34,10 @@ type TrpcOpenApiHooks = {
|
|
|
34
34
|
readonly securitySchemes: OpenApiHooks["securitySchemes"];
|
|
35
35
|
};
|
|
36
36
|
type TrpcPermDock<TCtx = object> = {
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* The `PermDock` for one procedure call, for code the middleware does not run
|
|
39
|
+
* before.
|
|
40
|
+
*/
|
|
38
41
|
readonly getPermDock: (opts: TrpcMiddlewareOpts<TCtx>) => Promise<PermDock>;
|
|
39
42
|
readonly middleware: () => TrpcMiddleware;
|
|
40
43
|
readonly protect: (permission: Permission | null, data?: (opts: TrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => TrpcMiddleware;
|
package/dist/trpc/index.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { o as problemMessage } from "../http-
|
|
2
|
-
import { t as problemFromError } from "../map-error-
|
|
3
|
-
import { n as attached } from "../bind-
|
|
4
|
-
import { i as isAsyncIterable, o as reloadAfter } from "../stream-
|
|
5
|
-
import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-
|
|
1
|
+
import { o as problemMessage } from "../http-DKLXrFGk.js";
|
|
2
|
+
import { t as problemFromError } from "../map-error-pasIGqMT.js";
|
|
3
|
+
import { n as attached } from "../bind-D_sZSVA3.js";
|
|
4
|
+
import { i as isAsyncIterable, o as reloadAfter } from "../stream-CDvF0sJm.js";
|
|
5
|
+
import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-fNqAIqQk.js";
|
|
6
6
|
import { TRPCError, isTrackedEnvelope } from "@trpc/server";
|
|
7
7
|
//#region src/trpc/create.ts
|
|
8
8
|
const PROBLEM = Symbol.for("permdock.problem");
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* A `TRPCError` for a revoked subscription; the Problem Details body rides on
|
|
11
|
+
* `cause`.
|
|
12
|
+
*/
|
|
10
13
|
function trpcErrorFrom(error) {
|
|
11
14
|
const problem = error.toProblemDetails();
|
|
12
15
|
const cause = { ...problem };
|
|
@@ -34,8 +37,8 @@ async function throwTrpcError(response) {
|
|
|
34
37
|
});
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
37
|
-
* A PermDock error thrown further down (an `assert` in a resolver) arrives as
|
|
38
|
-
*
|
|
40
|
+
* A PermDock error thrown further down (an `assert` in a resolver) arrives as a
|
|
41
|
+
* failed middleware result; it becomes the same TRPCError `protect` throws.
|
|
39
42
|
*/
|
|
40
43
|
function mapDownstream(result) {
|
|
41
44
|
if (result === null || typeof result !== "object" || result.ok !== false) return Promise.resolve(result);
|
|
@@ -70,7 +73,10 @@ function createPermDock(policy, options) {
|
|
|
70
73
|
attach(nextCtx, request);
|
|
71
74
|
return mapDownstream(await opts.next({ ctx: nextCtx }));
|
|
72
75
|
});
|
|
73
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Wraps a subscription's iterable so revocation ends it and unreadable items
|
|
78
|
+
* drop.
|
|
79
|
+
*/
|
|
74
80
|
const guardSubscription = async (result, opts, permission, data, protectOptions) => {
|
|
75
81
|
if (result === null || typeof result !== "object" || result.ok !== true || !isAsyncIterable(result.data)) return result;
|
|
76
82
|
return {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { j as PolicyVocabulary, mn as ScopeNames } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { k as POLICY_SCOPES, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { n as PlanTree } from "./vocabulary-DEJ5j4mR.js";
|
|
4
|
+
import { o as OperationMap } from "./operations-Ci_rT6Uo.js";
|
|
5
|
+
//#region src/core/type-helpers.d.ts
|
|
6
|
+
/** Recursion guard: a tree nests resources at most this many levels deep. */
|
|
7
|
+
type Depth = [never, 0, 1, 2, 3, 4, 5, 6, 7];
|
|
8
|
+
/** The literal string keys of `T`, without an index signature. */
|
|
9
|
+
type KnownKeys<T> = keyof { readonly [K in keyof T as string extends K ? never : K extends string ? K : never]: 0; };
|
|
10
|
+
type LeavesOf<T, D extends number> = [D] extends [never] ? never : T extends Permission ? T : { readonly [K in KnownKeys<T>]-?: LeavesOf<T[K], Depth[D]>; }[KnownKeys<T>];
|
|
11
|
+
/** The union of the permission leaves of a `definePermissions` tree. */
|
|
12
|
+
type PermissionOf<T> = [KnownKeys<T>] extends [never] ? Permission : LeavesOf<T, 8>;
|
|
13
|
+
type TreeOf<P> = P extends {
|
|
14
|
+
readonly vocabulary: {
|
|
15
|
+
readonly permissions: infer T;
|
|
16
|
+
};
|
|
17
|
+
} ? T : P;
|
|
18
|
+
/** The resource names of a policy or a permission tree, else `string`. */
|
|
19
|
+
type ResourceNameOf<P> = PermissionOf<TreeOf<P>>["resource"];
|
|
20
|
+
/** The action names of a policy or a permission tree, else `string`. */
|
|
21
|
+
type ActionNameOf<P> = PermissionOf<TreeOf<P>>["action"];
|
|
22
|
+
/** The permission keys of a policy or a permission tree, else `string`. */
|
|
23
|
+
type PermissionKeyOf<P> = PermissionOf<TreeOf<P>>["key"];
|
|
24
|
+
/**
|
|
25
|
+
* The scope names a policy's `definePolicy({ scopes })` declares, plus the
|
|
26
|
+
* `tenant` / `team` aliases; `string` for a policy that declares none.
|
|
27
|
+
*/
|
|
28
|
+
type ScopeNameOf<P> = P extends {
|
|
29
|
+
readonly [POLICY_SCOPES]?: infer S;
|
|
30
|
+
} ? ScopeNames<Exclude<S, undefined>> : string;
|
|
31
|
+
/**
|
|
32
|
+
* The plan names a policy declares: the keys of its `definePlans` vocabulary,
|
|
33
|
+
* else `string`.
|
|
34
|
+
*/
|
|
35
|
+
type PlanNameOf<P> = P extends {
|
|
36
|
+
readonly vocabulary: infer V;
|
|
37
|
+
} ? V extends {
|
|
38
|
+
readonly plans: infer T extends PlanTree;
|
|
39
|
+
} ? T[keyof T]["key"] : string : string;
|
|
40
|
+
/** The operation names of a `defineOperations` map, else `string`. */
|
|
41
|
+
type OperationNameOf<O> = O extends OperationMap<infer D> ? keyof D & string : string;
|
|
42
|
+
/**
|
|
43
|
+
* The vocabulary a policy was defined with, for an instance type such as
|
|
44
|
+
* `usePermDock<VocabularyOf<typeof policy>>()`; `PolicyVocabulary` otherwise.
|
|
45
|
+
*/
|
|
46
|
+
type VocabularyOf<P> = P extends {
|
|
47
|
+
readonly vocabulary: infer V extends PolicyVocabulary;
|
|
48
|
+
} ? V : PolicyVocabulary;
|
|
49
|
+
//#endregion
|
|
50
|
+
export { PlanNameOf as a, VocabularyOf as c, PermissionOf as i, OperationNameOf as n, ResourceNameOf as o, PermissionKeyOf as r, ScopeNameOf as s, ActionNameOf as t };
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { m as ApprovalStore, u as ApprovalRequest } from "./types-
|
|
4
|
-
import { a as CatalogDocument } from "./types-
|
|
5
|
-
import { a as CatalogFinding } from "./sink-
|
|
1
|
+
import { dt as TokenVerifier, lr as Subject, ot as SnapshotSource, q as DecisionSink, ut as TokenSigner } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { s as PolicySource } from "./hosted-Cmtxogd0.js";
|
|
3
|
+
import { m as ApprovalStore, u as ApprovalRequest } from "./types-B_tiYvk8.js";
|
|
4
|
+
import { a as CatalogDocument } from "./types-ZzRGoViD.js";
|
|
5
|
+
import { a as CatalogFinding } from "./sink-Dvi7YZG_.js";
|
|
6
6
|
//#region src/cloud/types.d.ts
|
|
7
7
|
type CloudEndpointOptions = {
|
|
8
8
|
readonly url?: string;
|
|
9
9
|
readonly environment?: string;
|
|
10
10
|
};
|
|
11
11
|
type CloudEndpoints = {
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* The environment URL, `<url>/v1/environments/<env>`: `iss` and `aud` of the
|
|
14
|
+
* policy document.
|
|
15
|
+
*/
|
|
13
16
|
readonly issuer: string;
|
|
14
17
|
/** The environment's JWK Set URL, for `joseTokenVerifier({ jwks })`. */
|
|
15
18
|
readonly jwks: string;
|
|
@@ -24,50 +27,60 @@ type CloudConnectionOptions = CloudEndpointOptions & {
|
|
|
24
27
|
type CloudApproverOptions = {
|
|
25
28
|
/**
|
|
26
29
|
* Signs the token with a key the environment trusts as an issuer, such as
|
|
27
|
-
* `joseTokenSigner` over your own key. Never `cloudSigner`: a client key
|
|
28
|
-
*
|
|
30
|
+
* `joseTokenSigner` over your own key. Never `cloudSigner`: a client key that
|
|
31
|
+
* could mint approver tokens could forge any approver.
|
|
29
32
|
*/
|
|
30
33
|
readonly signer: TokenSigner;
|
|
31
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* `aud` of the token; defaults to `<issuer>/approvals`, the environment URL
|
|
36
|
+
* plus `/approvals`.
|
|
37
|
+
*/
|
|
32
38
|
readonly audience?: string | readonly string[];
|
|
33
39
|
/**
|
|
34
40
|
* The `holder(permission)` approvers of `request` that `approver` holds,
|
|
35
41
|
* typically `approverPermissions(request, permdockFor(approver))`. Signed
|
|
36
|
-
* into the token as `permissions`; without it the verdict's own
|
|
37
|
-
*
|
|
42
|
+
* into the token as `permissions`; without it the verdict's own `permissions`
|
|
43
|
+
* are signed. A throw signs none.
|
|
38
44
|
*/
|
|
39
45
|
readonly permissions?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
|
|
40
46
|
/**
|
|
41
47
|
* The relation approvers of `request` that `approver` holds, typically
|
|
42
|
-
* `approverRelations(request, approver, { relations, permissions })`.
|
|
43
|
-
*
|
|
44
|
-
*
|
|
48
|
+
* `approverRelations(request, approver, { relations, permissions })`. Signed
|
|
49
|
+
* into the token as `relations`; without it the verdict's own `relations` are
|
|
50
|
+
* signed. A throw signs none.
|
|
45
51
|
*/
|
|
46
52
|
readonly relations?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
|
|
47
53
|
};
|
|
48
54
|
type CloudOptions = CloudConnectionOptions & {
|
|
49
55
|
/**
|
|
50
|
-
* Proves the approver on `approvals.resolve`. Without it, every resolve but
|
|
51
|
-
*
|
|
56
|
+
* Proves the approver on `approvals.resolve`. Without it, every resolve but a
|
|
57
|
+
* `system` rejection throws `approver-unauthenticated` and sends nothing.
|
|
52
58
|
*/
|
|
53
59
|
readonly approver?: CloudApproverOptions;
|
|
54
60
|
readonly flushAt?: number;
|
|
55
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Most events the sink holds while the Cloud is unreachable (default 10 000);
|
|
63
|
+
* the oldest are dropped first.
|
|
64
|
+
*/
|
|
56
65
|
readonly capacity?: number;
|
|
57
66
|
readonly waitUntil?: (task: Promise<void>) => void;
|
|
58
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* The CloudEvents `source` of every event the sink sends, an absolute URI;
|
|
69
|
+
* defaults to the environment URL.
|
|
70
|
+
*/
|
|
59
71
|
readonly source?: string;
|
|
60
72
|
/**
|
|
61
|
-
* Verifies the environment's signed policy document, typically
|
|
62
|
-
*
|
|
63
|
-
* `policies.current()` stays
|
|
73
|
+
* Verifies the environment's signed policy document, typically `({ jwks }) =>
|
|
74
|
+
* joseTokenVerifier({ jwks })`. A function is called once, with the resolved
|
|
75
|
+
* endpoints, on the first refresh. Without one, `policies.current()` stays
|
|
76
|
+
* `null`: an unverifiable document is never applied.
|
|
64
77
|
*/
|
|
65
|
-
readonly verifier?: TokenVerifier;
|
|
78
|
+
readonly verifier?: TokenVerifier | ((endpoints: CloudEndpoints) => TokenVerifier);
|
|
66
79
|
};
|
|
67
80
|
/**
|
|
68
81
|
* What `POST /catalog` answers: `201` with the new version and the drift
|
|
69
|
-
* findings against the previous one, or `200` with `unchanged: true` when
|
|
70
|
-
*
|
|
82
|
+
* findings against the previous one, or `200` with `unchanged: true` when the
|
|
83
|
+
* fingerprint is already published.
|
|
71
84
|
*/
|
|
72
85
|
type CloudCatalogPush = {
|
|
73
86
|
readonly version: number;
|
|
@@ -80,13 +93,19 @@ type CloudCatalogPush = {
|
|
|
80
93
|
};
|
|
81
94
|
type CloudCatalog = {
|
|
82
95
|
/**
|
|
83
|
-
* Posts the catalog, its `operations` included, to the environment.
|
|
84
|
-
*
|
|
85
|
-
*
|
|
96
|
+
* Posts the catalog, its `operations` included, to the environment. Throws
|
|
97
|
+
* when the Cloud refuses it or answers another shape. The Cloud shows and
|
|
98
|
+
* diffs it; it never decides with it.
|
|
86
99
|
*/
|
|
87
|
-
push(catalog: CatalogDocument)
|
|
100
|
+
push: (catalog: CatalogDocument) => Promise<CloudCatalogPush>;
|
|
88
101
|
};
|
|
89
|
-
type CloudClient = CloudEndpoints & {
|
|
102
|
+
type CloudClient = Partial<CloudEndpoints> & {
|
|
103
|
+
/**
|
|
104
|
+
* The environment URL and JWK Set URL. `issuer` and `jwks` are set only when
|
|
105
|
+
* the environment is configured; otherwise the first call asks `GET
|
|
106
|
+
* /v1/environment` which environment the key belongs to.
|
|
107
|
+
*/
|
|
108
|
+
endpoints: () => Promise<CloudEndpoints>;
|
|
90
109
|
readonly approvals: ApprovalStore;
|
|
91
110
|
readonly sink: DecisionSink;
|
|
92
111
|
/**
|
|
@@ -95,7 +114,7 @@ type CloudClient = CloudEndpoints & {
|
|
|
95
114
|
* signed. Sent as `PermDock-Subject`; the Cloud never takes a subject from
|
|
96
115
|
* anything else.
|
|
97
116
|
*/
|
|
98
|
-
snapshotsFor(token: string)
|
|
117
|
+
snapshotsFor: (token: string) => SnapshotSource;
|
|
99
118
|
readonly policies: PolicySource;
|
|
100
119
|
readonly catalog: CloudCatalog;
|
|
101
120
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { gn as Approver } from "./policy-types-CCiDRZBH.js";
|
|
2
2
|
//#region src/approvals/access-reviews/types.d.ts
|
|
3
3
|
type AccessReviewStatus = "open" | "closed";
|
|
4
4
|
type AccessReviewItemStatus = "pending" | "kept" | "revoked";
|
|
5
5
|
/**
|
|
6
|
-
* Access review v1: who holds `permissions` in one tenant, and who may
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Access review v1: who holds `permissions` in one tenant, and who may confirm
|
|
7
|
+
* or revoke each holding. PermDock records the reviewer's decision and never
|
|
8
|
+
* changes the role or membership itself.
|
|
9
9
|
*/
|
|
10
10
|
type AccessReview = {
|
|
11
11
|
readonly v: 1;
|
|
@@ -20,7 +20,10 @@ type AccessReview = {
|
|
|
20
20
|
/** `false` when the population can omit a holder, such as a global role. */
|
|
21
21
|
readonly complete: boolean;
|
|
22
22
|
};
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* One holding in a review. `via` names the roles the population attributed it
|
|
25
|
+
* to.
|
|
26
|
+
*/
|
|
24
27
|
type AccessReviewItem = {
|
|
25
28
|
readonly v: 1;
|
|
26
29
|
readonly id: string;
|
|
@@ -54,12 +57,12 @@ type AccessReviewDecision = {
|
|
|
54
57
|
type AccessReviewStore = {
|
|
55
58
|
/** Names the implementation in errors and events. */
|
|
56
59
|
readonly name?: string;
|
|
57
|
-
create(review: AccessReview, items: readonly AccessReviewItem[])
|
|
58
|
-
get(id: string)
|
|
59
|
-
items(query: AccessReviewItemQuery)
|
|
60
|
-
decide(reviewId: string, itemId: string, decision: AccessReviewDecision)
|
|
61
|
-
markApplied(reviewId: string, itemId: string, at: string)
|
|
62
|
-
close(id: string)
|
|
60
|
+
create: (review: AccessReview, items: readonly AccessReviewItem[]) => Promise<void> | void;
|
|
61
|
+
get: (id: string) => Promise<AccessReview | null> | AccessReview | null;
|
|
62
|
+
items: (query: AccessReviewItemQuery) => Promise<AccessReviewItemPage> | AccessReviewItemPage;
|
|
63
|
+
decide: (reviewId: string, itemId: string, decision: AccessReviewDecision) => Promise<AccessReviewItem> | AccessReviewItem;
|
|
64
|
+
markApplied: (reviewId: string, itemId: string, at: string) => Promise<AccessReviewItem> | AccessReviewItem;
|
|
65
|
+
close: (id: string) => Promise<AccessReview> | AccessReview;
|
|
63
66
|
};
|
|
64
67
|
//#endregion
|
|
65
68
|
export { AccessReviewItemQuery as a, AccessReviewStore as c, AccessReviewItemPage as i, AccessReviewDecision as n, AccessReviewItemStatus as o, AccessReviewItem as r, AccessReviewStatus as s, AccessReview as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Hn as ExplainedDecision, Ln as Decision, T as Policy, j as PolicyVocabulary, lr as Subject, or as Membership, sr as Principal } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { C as PermissionCheck, a as PermDock, f as WhereResult, l as SimulateOptions, n as DecideOptions, o as PermDockOptions, r as DeriveOptions } from "./permdock-B6Sf4T_S.js";
|
|
4
4
|
//#region src/pdp/types.d.ts
|
|
5
5
|
type RemotePdpAuth = {
|
|
6
6
|
readonly bearer: string | (() => string | Promise<string>);
|
|
@@ -40,9 +40,9 @@ type RemotePdpOptions = {
|
|
|
40
40
|
readonly fetch?: typeof fetch;
|
|
41
41
|
};
|
|
42
42
|
/**
|
|
43
|
-
* One tuple callback per delegated permission. The callback receives the
|
|
44
|
-
*
|
|
45
|
-
*
|
|
43
|
+
* One tuple callback per delegated permission. The callback receives the row
|
|
44
|
+
* for a check and `undefined` for a listing; returning `null` denies with
|
|
45
|
+
* `pdp-denied`, throwing denies with `pdp-invalid-response`.
|
|
46
46
|
*/
|
|
47
47
|
type RelationMap<T> = readonly (readonly [Permission, (subject: Subject, data: unknown) => T | null])[];
|
|
48
48
|
type OpenFgaTuple = {
|
|
@@ -86,25 +86,38 @@ type SpiceDbOptions = {
|
|
|
86
86
|
readonly cache?: RemotePdpCache;
|
|
87
87
|
readonly fetch?: typeof fetch;
|
|
88
88
|
};
|
|
89
|
-
type PdpPermDock<V extends PolicyVocabulary = PolicyVocabulary> = Omit<PermDock<V>, "can" | "decide" | "decideEach" | "assert" | "explain" | "filter" | "where" | "simulate" | "tenant" | "team" | "derive"> & {
|
|
89
|
+
type PdpPermDock<V extends PolicyVocabulary = PolicyVocabulary> = Omit<PermDock<V>, "can" | "decide" | "canAll" | "decideAll" | "decideEach" | "decideIds" | "assert" | "explain" | "filter" | "where" | "simulate" | "tenant" | "team" | "derive"> & {
|
|
90
90
|
/** `permdock.derive` with the same providers: the result asks the PDP too. */
|
|
91
91
|
readonly derive: (options: DeriveOptions) => Promise<PdpPermDock<V>>;
|
|
92
92
|
/**
|
|
93
|
-
* For a delegated permission whose provider lists ids, an `in` over them
|
|
94
|
-
*
|
|
95
|
-
*
|
|
93
|
+
* For a delegated permission whose provider lists ids, an `in` over them (AND
|
|
94
|
+
* the local condition when local grants exist); otherwise the local `where`,
|
|
95
|
+
* or an always-false `partial` result.
|
|
96
96
|
*/
|
|
97
97
|
readonly where: (permission: Permission) => Promise<WhereResult>;
|
|
98
98
|
readonly can: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<boolean>;
|
|
99
99
|
readonly decide: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<Decision>;
|
|
100
|
+
/**
|
|
101
|
+
* `can` for every check, asking the PDP for each in parallel; `false` for an
|
|
102
|
+
* empty list.
|
|
103
|
+
*/
|
|
104
|
+
readonly canAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => Promise<boolean>;
|
|
105
|
+
/**
|
|
106
|
+
* `decide` for every check, in check order, asking the PDP for each in
|
|
107
|
+
* parallel.
|
|
108
|
+
*/
|
|
109
|
+
readonly decideAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => Promise<readonly Decision[]>;
|
|
100
110
|
/** `decide` for each row, in row order, asking the PDP per row. */
|
|
101
111
|
readonly decideEach: (permission: Permission, rows: readonly unknown[], options?: DecideOptions) => Promise<readonly Decision[]>;
|
|
102
112
|
readonly assert: (permission: Permission, data?: unknown, options?: DecideOptions) => Promise<Extract<Decision, {
|
|
103
113
|
readonly outcome: "granted";
|
|
104
114
|
}>>;
|
|
105
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* `decide` with a trace of the local grants; a decision the remote PDP made
|
|
117
|
+
* carries an empty trace.
|
|
118
|
+
*/
|
|
106
119
|
readonly explain: (permission: Permission, data?: unknown, options?: Omit<DecideOptions, "explain">) => Promise<ExplainedDecision>;
|
|
107
|
-
readonly filter: <T>(permission: Permission<string, T
|
|
120
|
+
readonly filter: <T>(permission: Permission<string, NoInfer<T>, "instance">, rows: readonly T[], options?: DecideOptions) => Promise<T[]>;
|
|
108
121
|
readonly simulate: {
|
|
109
122
|
(checks: readonly (readonly [Permission, unknown?])[], options?: SimulateOptions): Promise<readonly Decision[]>;
|
|
110
123
|
(preview: {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Gt as Snapshot, In as ApprovalRequiredDecision, Ln as Decision, Un as GrantedDecision, dt as TokenVerifier } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { s as RowData } from "./permdock-B6Sf4T_S.js";
|
|
4
|
+
import { n as DescribeMessages } from "./describe-ByS9LgHK.js";
|
|
5
|
+
import { _ as ClientStoreOptions } from "./types-B_d_g7T3.js";
|
|
5
6
|
import { ReactNode } from "react";
|
|
6
7
|
//#region src/react/types.d.ts
|
|
7
8
|
type PermDockProviderProps = ({
|
|
@@ -9,21 +10,24 @@ type PermDockProviderProps = ({
|
|
|
9
10
|
readonly snapshotPromise?: never;
|
|
10
11
|
} | {
|
|
11
12
|
/**
|
|
12
|
-
* An unawaited snapshot from a Server Component. Hooks never suspend on
|
|
13
|
-
* resolves they deny with `status: 'pending'`, then
|
|
14
|
-
* (`server-only`). Set `suspend` to
|
|
13
|
+
* An unawaited snapshot from a Server Component. Hooks never suspend on
|
|
14
|
+
* it: until it resolves they deny with `status: 'pending'`, then
|
|
15
|
+
* re-render. A rejection fails closed (`server-only`). Set `suspend` to
|
|
16
|
+
* suspend readers through `use()` instead.
|
|
15
17
|
*/
|
|
16
18
|
readonly snapshotPromise: PromiseLike<Snapshot | string>;
|
|
17
19
|
readonly snapshot?: never;
|
|
18
20
|
}) & {
|
|
19
21
|
/**
|
|
20
|
-
* With `snapshotPromise`: `true` suspends every hook to the nearest Suspense
|
|
21
|
-
* resolves, and a rejection reaches the nearest error
|
|
22
|
+
* With `snapshotPromise`: `true` suspends every hook to the nearest Suspense
|
|
23
|
+
* boundary until it resolves, and a rejection reaches the nearest error
|
|
24
|
+
* boundary. Defaults to `false`.
|
|
22
25
|
*/
|
|
23
26
|
readonly suspend?: boolean;
|
|
24
27
|
/**
|
|
25
|
-
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
26
|
-
* fetches: those checks answer `denied` with reason
|
|
28
|
+
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
29
|
+
* `false` never fetches: those checks answer `denied` with reason
|
|
30
|
+
* `server-only`.
|
|
27
31
|
*/
|
|
28
32
|
readonly endpoint?: string | false;
|
|
29
33
|
/** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
|
|
@@ -44,6 +48,11 @@ type PermDockProviderProps = ({
|
|
|
44
48
|
readonly onClear?: () => void;
|
|
45
49
|
/** Milliseconds between approval status polls. Defaults to 2000. */
|
|
46
50
|
readonly approvalInterval?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Triggers that refresh the snapshot, such as `eventSourceRefresh(url)`; read
|
|
53
|
+
* when the store is built.
|
|
54
|
+
*/
|
|
55
|
+
readonly refreshOn?: ClientStoreOptions["refreshOn"];
|
|
47
56
|
readonly children: ReactNode;
|
|
48
57
|
};
|
|
49
58
|
/** Provider-wide content for the `<Protected>` slots a component leaves out. */
|
|
@@ -52,9 +61,10 @@ type PermDockDefaults = {
|
|
|
52
61
|
readonly denied?: ReactNode | ((decision: Decision) => ReactNode);
|
|
53
62
|
readonly approval?: ReactNode | ((decision: ApprovalRequiredDecision) => ReactNode);
|
|
54
63
|
};
|
|
55
|
-
type ProtectedProps = {
|
|
56
|
-
readonly permission:
|
|
57
|
-
|
|
64
|
+
type ProtectedProps<P extends Permission = Permission> = {
|
|
65
|
+
readonly permission: P;
|
|
66
|
+
/** Any part of the permission's row; see `RowData`. */
|
|
67
|
+
readonly data?: RowData<P>;
|
|
58
68
|
readonly tenant?: string;
|
|
59
69
|
readonly pending?: ReactNode;
|
|
60
70
|
readonly denied?: ReactNode | ((decision: Decision) => ReactNode);
|