permdock 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +5 -5
- package/dist/a2a/index.js +4 -4
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-D-feE7BE.js} +1 -1
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +21 -6
- package/dist/ai-sdk/index.js +19 -9
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-K0faOLFp.d.ts} +2 -2
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +4 -4
- package/dist/{approvals-p1PGoVjb.js → approvals-CMRfsbBh.js} +74 -48
- package/dist/{arazzo-41WuzHou.js → arazzo-ClrF3PVb.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-rdeJ8n1J.js} +4 -4
- package/dist/{args-IIolxxKA.js → args-CC3OwyHW.js} +112 -2
- package/dist/astro/index.d.ts +6 -6
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BrMs8c4o.js} +1 -1
- package/dist/{auth-DRLEizbL.js → auth-CscUX8Sy.js} +3 -4
- package/dist/authzen/index.d.ts +162 -22
- package/dist/authzen/index.js +315 -146
- package/dist/{automation-BNM3TtDo.d.ts → automation-DOtAFWdy.d.ts} +3 -3
- package/dist/{automation-DVjOckjV.js → automation-ySsxp_Yp.js} +1 -1
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +2 -2
- package/dist/better-supabase/index.d.ts +50 -8
- package/dist/better-supabase/index.js +94 -32
- package/dist/{bind-CAvgUuKs.js → bind-D1nO6fiC.js} +5 -5
- package/dist/{bind-DOyrv6zi.d.ts → bind-JDuvxjuW.d.ts} +7 -7
- package/dist/{build-instance-Bu_eDqYw.js → build-instance-DxE7czo9.js} +1 -1
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-Drg-1YhL.d.ts → capability-D4UC9TTW.d.ts} +2 -2
- package/dist/{capability-N1K9IpqS.js → capability-L7NnfhiE.js} +1 -1
- package/dist/{casbin-Cr7RLtA3.js → casbin-BHijLuHY.js} +2 -2
- package/dist/{casbin-Dyu2gnUD.js → casbin-BW9pS47J.js} +1 -1
- package/dist/{casl-64gpT-8x.js → casl-CmJlgziS.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-UbI8v-Wq.js} +1 -1
- package/dist/catalog/index.d.ts +70 -10
- package/dist/catalog/index.js +112 -6
- package/dist/catalog-BCCjSAdH.js +1 -0
- package/dist/{catalog-DZVbrF-z.js → catalog-BaMQfQ6Y.js} +3 -3
- package/dist/{catalog-HD2gf5mY.js → catalog-D69WhFii.js} +43 -13
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-CV9s6B1S.js} +28 -5
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
- package/dist/{create-CQWIpUG-.js → challenge-nGWma08S.js} +122 -25
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +2 -2
- package/dist/chat-sdk/index.d.ts +3 -3
- package/dist/checks-BC_0mPIq.js +37 -0
- package/dist/claude-agent/index.d.ts +3 -3
- package/dist/claude-agent/index.js +2 -2
- package/dist/clerk/index.d.ts +3 -3
- package/dist/clerk/index.js +1 -1
- package/dist/cli/bin.js +2 -2
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +3 -3
- package/dist/cloud/index.d.ts +127 -11
- package/dist/cloud/index.js +251 -3
- package/dist/{cloud-ytQ3uviA.js → cloud-CO8pYtwr.js} +5 -5
- package/dist/{codemod-ua2hHy7w.js → codemod-BP6n8N9L.js} +3 -3
- package/dist/{codemod-5mpSpnUY.js → codemod-i4N2BhDc.js} +3 -3
- package/dist/{collect-mLTY4nwb.js → collect-BaWeMjwV.js} +17 -8
- package/dist/{collect-Ci6akVwH.js → collect-DNm3oKOk.js} +6 -5
- package/dist/collect-k_Dulxr5.js +1 -0
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -1
- package/dist/{compile-CMqMx_IN.js → compile-BAEO5bOk.js} +2 -2
- package/dist/{compile-1bsAezL0.d.ts → compile-COM2VKuN.d.ts} +3 -3
- package/dist/{completion-BTFrHZhX.js → completion-BNdVf7X2.js} +3 -3
- package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
- package/dist/{config-Bj2Ixq3d.js → config-DGZzMV1B.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-Cm7UITNA.js} +3 -3
- package/dist/connector-schema-_VCSsdtD.js +433 -0
- package/dist/{context-B_u3_bDJ.js → context--uM9V3Ui.js} +2 -2
- package/dist/convex/index.d.ts +5 -5
- package/dist/convex/index.js +2 -2
- package/dist/core-B5-w6Kw9.js +335 -0
- package/dist/core-CQkE8Esr.d.ts +179 -0
- package/dist/{create-B30OMUOJ.d.ts → create-B2-CQqCI.d.ts} +5 -5
- package/dist/{create-CGm28gyI.js → create-Cb86Z8Im.js} +9 -8
- package/dist/{create-DCF2SvoT.js → create-DJrlhEp9.js} +5 -5
- package/dist/{create-D_NmPOdH.d.ts → create-QHuuPw3q.d.ts} +7 -7
- package/dist/{create-CBMmFie-.d.ts → create-UTnUVETj.d.ts} +30 -10
- package/dist/{credential-BcoiejpY.js → credential-CIM7wHwA.js} +4 -4
- package/dist/{credentials-DPyHmYz5.js → credentials-BpuTwd7a.js} +1 -1
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-DRo2QM6E.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-C5rOdTp5.js} +5 -5
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +4 -3
- package/dist/{delivery-DCAgNyCn.js → delivery-rwOKLWRm.js} +51 -2
- package/dist/{denied-text-CiFQNuMV.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
- package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
- package/dist/{describe-B5qgDvEW.d.ts → describe-O0SwYIK8.d.ts} +2 -2
- package/dist/{diff-CmuSD3vc.js → diff-Btr1c1Ow.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-DzT-xD13.js} +10 -10
- package/dist/{doctor-BdZw53-k.js → doctor-BU1szn63.js} +241 -49
- package/dist/{doctor-3ZqNHX_G.js → doctor-BoK_y0KO.js} +4 -4
- package/dist/drizzle/index.d.ts +3 -3
- package/dist/drizzle/index.js +1 -1
- package/dist/elysia/index.d.ts +5 -5
- package/dist/elysia/index.js +3 -3
- package/dist/{errors-DH5QEGXh.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
- package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
- package/dist/{evaluate-CNClBvcj.js → evaluate-B_oqFbWC.js} +55 -12
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
- package/dist/{evaluations-beAooV0n.js → evaluations-DReoiVBw.js} +4 -4
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +3 -3
- package/dist/express/index.d.ts +5 -5
- package/dist/express/index.js +3 -3
- package/dist/fastify/index.d.ts +5 -5
- package/dist/fastify/index.js +3 -3
- package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-De-u6vhJ.js} +3 -3
- package/dist/{fields-OYG_JR78.js → fields-ClcQLrVc.js} +48 -13
- package/dist/{files-C5ZI27eV.js → files-acUbNwWt.js} +15 -2
- package/dist/{fixtures-B7XrLeY7.js → fixtures-BTMW6zgU.js} +2 -2
- package/dist/{flags-C3DktBDY.js → flags-aaeRAdiD.js} +2 -2
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-Bz469dIh.js} +17 -10
- package/dist/generate-3FNO5P5Q.js +159 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-BrRANrpT.js} +1 -1
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
- package/dist/{grantee-match-DbENBHLB.js → grantee-match-0RtHWQDx.js} +3 -3
- package/dist/h3/index.d.ts +4 -4
- package/dist/h3/index.js +3 -3
- package/dist/{helpers-CBYVMjwh.js → helpers-DY3vXuGs.js} +3 -3
- package/dist/hono/index.d.ts +5 -5
- package/dist/hono/index.js +3 -3
- package/dist/{hosted-BPk51-kX.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
- package/dist/{hosted-B46-5LYE.js → hosted-XBgU6RGT.js} +34 -12
- package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
- package/dist/{import-wyqXUyjm.js → import-Bz0GefWg.js} +5 -5
- package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
- package/dist/{index-C-6Letxg.d.ts → index-BE8y3moU.d.ts} +50 -8
- package/dist/{index-B8YjkEZ4.d.ts → index-BSfRl0hZ.d.ts} +6 -6
- package/dist/{index-DuWxc5dt.d.ts → index-BTkwrK7v.d.ts} +143 -14
- package/dist/index-CMiPH2Tv.d.ts +206 -0
- package/dist/{index-Ch8LpNDp.d.ts → index-DH9DUDEM.d.ts} +18 -3
- package/dist/{index-CueFnxQc.d.ts → index-DLwcuCN_.d.ts} +86 -7
- package/dist/index.d.ts +18 -17
- package/dist/index.js +27 -25
- package/dist/{init-GG6Jh8HD.js → init-5TXNji88.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-B-4t1NzC.js} +4 -4
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot-CjcwnEiV.js} +16 -11
- package/dist/jwt/index.d.ts +83 -5
- package/dist/jwt/index.js +143 -5
- package/dist/{kernel-D0NVb1cK.js → kernel-DVExUwkp.js} +138 -12
- package/dist/kysely/index.d.ts +3 -3
- package/dist/kysely/index.js +1 -1
- package/dist/load-DrMHXzgN.js +1 -0
- package/dist/{load-DFS_ry0W.js → load-DxroEzH1.js} +2 -2
- package/dist/{login-Dfe5RlYk.js → login-ClSJh5t5.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-WC9HPJpU.js} +6 -10
- package/dist/{manifest-C8IzW3Do.js → manifest-B79YuF2T.js} +6 -2
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-BVhExYhw.d.ts} +23 -2
- package/dist/{manifest-dvL2XEe1.js → manifest-Dv6q4i5s.js} +54 -35
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-Cv492Qev.js} +37 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-etGIS_Dv.js} +14 -11
- package/dist/{map-error-Dr70oA_3.js → map-error-BQGyDm_M.js} +1 -1
- package/dist/mcp/index.d.ts +64 -10
- package/dist/mcp/index.js +151 -22
- package/dist/{migrate-CIq4-E9F.js → migrate-Dodel0IJ.js} +77 -24
- package/dist/nest/index.d.ts +5 -5
- package/dist/nest/index.js +3 -3
- package/dist/next/index.d.ts +9 -9
- package/dist/next/index.js +5 -5
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +2 -2
- package/dist/openai/index.d.ts +5 -5
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +14 -4
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-C4dDTVEd.js → openapi-DMocl1bh.js} +4 -4
- package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
- package/dist/{openapi-DD1SV-5-.js → openapi-ztVaux6j.js} +8 -8
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
- package/dist/{operations-X0VM7F3m.d.ts → operations-BNLes61x.d.ts} +1 -1
- package/dist/orpc/index.d.ts +6 -6
- package/dist/orpc/index.js +4 -4
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +1 -1
- package/dist/{output-1im__-08.js → output-DgSDLrta.js} +7 -3
- package/dist/{output-files-DhRBBE4n.js → output-files-CCMdcFWb.js} +2 -2
- package/dist/output-files-DPAY7-GX.js +1 -0
- package/dist/{ownership-DqaJNJPn.js → ownership-Z2LpxsGa.js} +443 -40
- package/dist/parse-Ddhz2xf4.js +148 -0
- package/dist/{parse-local-manifest-CVSs6J9I.js → parse-local-manifest-T1Q8X3A2.js} +24 -1
- package/dist/{parse-local-manifest-5ODwqu8b.d.ts → parse-local-manifest-e4mdwAKd.d.ts} +1 -1
- package/dist/pdp/index.d.ts +3 -3
- package/dist/pdp/index.js +7 -3
- package/dist/peer-12Q5I_RH.js +976 -0
- package/dist/{peer-CRvC7Hg1.js → peer-DOzzMfZL.js} +1 -1
- package/dist/{permdock-BrAscV28.js → permdock-BfWEeMqk.js} +177 -49
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-DhNEmoRG.d.ts} +4 -64
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
- package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
- package/dist/{permissions-BPxlwVhN.js → permissions-DArULThq.js} +4 -4
- package/dist/pkce-5h8NgMQJ.js +21 -0
- package/dist/{policies-DP2nqRoF.js → policies-B2lZIurj.js} +3 -3
- package/dist/{policy-77FSAq_V.d.ts → policy-B7dg_yzu.d.ts} +2 -2
- package/dist/{policy-DbM5YYtV.js → policy-DaJy4nK4.js} +17 -8
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-DFWYkNdu.js} +9 -9
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-B-F-qAZk.d.ts} +83 -4
- package/dist/postgres-store-BL9M_CA1.js +1001 -0
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
- package/dist/{postgrest-DAjUkF9w.js → postgrest-r5faDIzD.js} +37 -4
- package/dist/{powersync-DISt6SUe.js → powersync-13odBwiM.js} +3 -3
- package/dist/powersync-53ryOZip.js +1059 -0
- package/dist/powersync-CExtTLyA.js +1 -0
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-CHTbd-DQ.js} +2 -2
- package/dist/prisma/index.d.ts +2 -2
- package/dist/prisma/index.js +1 -1
- package/dist/{problem-details-B45V5d2b.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
- package/dist/prompt-DwtVemER.js +935 -0
- package/dist/{protected-RFGpakN9.d.ts → protected-BwZYL1X_.d.ts} +6 -5
- package/dist/{protected-BlF0F6wL.js → protected-DXE3cQYg.js} +2 -2
- package/dist/{provider-B1al-AZz.js → provider-BQsTYYy0.js} +2 -2
- package/dist/{provider-DILL9oPK.d.ts → provider-Csk-THAn.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-IgqQipCO.js} +2 -2
- package/dist/{pull-jEwbf80J.js → pull-CN5OLxrF.js} +7 -7
- package/dist/pull-Cty6Ovyu.js +1 -0
- package/dist/{push-BD4f15co.js → push-tVdG8dUL.js} +54 -14
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-CmYeSQqq.js} +1 -1
- package/dist/react/index.d.ts +6 -6
- package/dist/react/index.js +3 -3
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +25 -11
- package/dist/react-native/index.js +209 -21
- package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
- package/dist/{replay-Bkm-Ne4l.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-BykKLmyE.js} +2 -2
- package/dist/resend/index.d.ts +4 -4
- package/dist/{retire-CALjIQ7e.js → retire-Wj6dkyDE.js} +2 -2
- package/dist/{rls-BAqP4q66.js → rls-Ck_PocSp.js} +32 -8
- package/dist/{rls-DTvYd-lI.js → rls-CxBZb4rZ.js} +478 -534
- package/dist/{role-builder-uWQZ4v84.js → role-builder-C1VJzvcr.js} +3 -3
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{rpc-VSl5ylaQ.js → rpc-Bk1bE-ch.js} +1 -1
- package/dist/run-Bz7DXGEv.js +1 -0
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-B5d_63Ma.js} +22 -1
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
- package/dist/{run-CUKuz0A8.js → run-uLD2aWuO.js} +7 -7
- package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
- package/dist/{saas-BCXRuXca.js → saas-Az_Kz-4D.js} +7 -7
- package/dist/{scan-qvOe0hS3.js → scan-DSljDE1Y.js} +1 -1
- package/dist/{schema-yLuBWWsh.js → schema-gIcCx7zM.js} +1 -1
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-C7JYhySg.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-YNieBO1U.js} +3 -537
- package/dist/{scopes-CUPSjo9q.js → scopes-BHsc-wp-.js} +1 -1
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +7 -7
- package/dist/{server-C3WXAHZj.js → server-Bnga6I50.js} +3 -3
- package/dist/{server-types-CKQiCnON.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
- package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
- package/dist/{shared-BAK8t4Uo.js → shared-fMKOv8hP.js} +44 -38
- package/dist/{sink-4-eQIRWf.d.ts → sink-Cp_Eot9W.d.ts} +4 -4
- package/dist/{skills-B6lVdD_W.js → skills-Dcjw9_1C.js} +5 -5
- package/dist/{skills-CTYwkl44.js → skills-g_3BS9NC.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CbGmYiJx.js} +4 -4
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-Pahd3IYJ.d.ts} +1 -1
- package/dist/solid/index.d.ts +6 -5
- package/dist/solid/index.js +4 -4
- package/dist/solid-start/index.d.ts +6 -6
- package/dist/solid-start/index.js +3 -3
- package/dist/{sources-vs5dGOsS.js → sources-B-zYB4GS.js} +111 -25
- package/dist/{sources-Xc4zkszI.d.ts → sources-DEEuGb8S.d.ts} +63 -14
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-B96movIM.js} +5 -1
- package/dist/sql-CDEPCA0g.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DLFrtrrC.js} +140 -48
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +640 -211
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
- package/dist/{store-BDutJkDL.js → store-DSP9oGvh.js} +15 -7
- package/dist/{store-options-u0ycEe8s.js → store-options-B_poyYvg.js} +6 -6
- package/dist/{stores-BUGNbJTt.d.ts → stores-BAZwSYZA.d.ts} +6 -5
- package/dist/{stores-CGhM8BN_.js → stores-BqEuHC05.js} +2 -2
- package/dist/{stream-CeCMJmBB.d.ts → stream-2Vwhl7Er.d.ts} +2 -2
- package/dist/{style-Uao76wO7.js → style-Cqo7-73x.js} +1 -0
- package/dist/{style-DiKWnAvn.js → style-Ds1gNm77.js} +1 -1
- package/dist/supabase/index.d.ts +8 -7
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +6 -6
- package/dist/supabase/middleware.js +6 -6
- package/dist/{supabase-x5JtR2tc.js → supabase--0aJdLEd.js} +8 -6
- package/dist/{supabase-By_frk3U.js → supabase-Bqp7iIY2.js} +3 -3
- package/dist/supabase-hook-DJxC4PoP.js +1 -0
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-Dg0SrQWR.js} +1060 -119
- package/dist/supautils-MESd81bF.js +689 -0
- package/dist/{support-session-C6xJQYut.js → support-session-Cna49-3f.js} +2 -2
- package/dist/svelte/index.d.ts +5 -5
- package/dist/svelte/index.js +5 -5
- package/dist/svelte/runtime.d.ts +3 -3
- package/dist/svelte/runtime.js +3 -3
- package/dist/svelte/source.d.ts +5 -5
- package/dist/svelte/source.js +2 -2
- package/dist/sveltekit/index.d.ts +6 -6
- package/dist/sveltekit/index.js +2 -2
- package/dist/tanstack-start/index.d.ts +6 -6
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{tenancy-DN2QAx9z.js → tenancy-CmeBQ6Nv.js} +12 -3
- package/dist/terminal/index.d.ts +6 -6
- package/dist/terminal/index.js +3 -3
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +12 -0
- package/dist/testing/fixtures/index.js +770 -0
- package/dist/testing/index.d.ts +41 -174
- package/dist/testing/index.js +241 -731
- package/dist/testing/saas/index.d.ts +5 -5
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/text-diff-DhITNCnD.js +444 -0
- package/dist/{token-BLZcjQgt.js → token-2qYDvXz2.js} +1 -1
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-reAhIzdl.js} +1 -1
- package/dist/trpc/index.d.ts +6 -6
- package/dist/trpc/index.js +3 -3
- package/dist/{types-Dfv0aTER.d.ts → types-BWZybqs9.d.ts} +110 -8
- package/dist/{types-Druu9wLM.d.ts → types-BXMYB7BY.d.ts} +2 -2
- package/dist/{types-BzzaHxt3.d.ts → types-BfVmNJO5.d.ts} +14 -3
- package/dist/{types-lUlG3TVd.d.ts → types-CIeZcG8v.d.ts} +2 -2
- package/dist/{types-B3_ooZgZ.d.ts → types-CKV71kKh.d.ts} +4 -4
- package/dist/{types-CX7AvRqP.d.ts → types-CQVEQawv.d.ts} +4 -4
- package/dist/{types-C863OQiR.d.ts → types-CeIscIKp.d.ts} +4 -4
- package/dist/{types-C_IiEs64.d.ts → types-CfiKC5aN.d.ts} +1 -1
- package/dist/{types-_WhUP7ud.d.ts → types-D3A19w4A.d.ts} +8 -4
- package/dist/{types-8RnwUAvE.d.ts → types-DBHftjgS.d.ts} +15 -8
- package/dist/{types-BdtSDbBO.d.ts → types-DC44-hqb.d.ts} +2 -2
- package/dist/{types-CVZSNocA.d.ts → types-DXmwu78Z.d.ts} +4 -4
- package/dist/{types-C791HFu9.d.ts → types-cTos-H7p.d.ts} +2 -2
- package/dist/{types-BtHtcKMr.d.ts → types-g7Oy6Zg4.d.ts} +3 -3
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/{usage-SveTRTyr.js → usage-Bybmck7f.js} +7 -7
- package/dist/{usage-CRVl9V3t.js → usage-CDaLXCfL.js} +2 -2
- package/dist/usage-y-kBNdqs.js +1 -0
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
- package/dist/{verify-BaAKx7t6.js → verify-pe8rL_Qw.js} +350 -83
- package/dist/{views-DTIIO-oQ.js → views-BB8E9dTP.js} +1 -1
- package/dist/vocabulary-Bg3eeT2H.d.ts +67 -0
- package/dist/vue/index.d.ts +6 -5
- package/dist/vue/index.js +4 -4
- package/dist/{waiter-B986w1oK.d.ts → waiter-DwEyouan.d.ts} +2 -2
- package/dist/watch-Bd9mx3rd.js +1 -0
- package/dist/{watch-vea54PRw.js → watch-C-4VmFlL.js} +3 -3
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +2 -2
- package/dist/{where-scope-C9vfEphl.js → where-scope-wq2coopv.js} +41 -21
- package/dist/{who-can-DWBAcaCQ.js → who-can-BwNsI_Js.js} +6 -6
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +5 -5
- package/dist/workflow-sdk/index.d.ts +5 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-B6R0cMRL.d.ts} +2 -2
- package/dist/{wrap-gX61EtpB.js → wrap-CiSc_KCq.js} +8 -2
- package/package.json +22 -11
- 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 +276 -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-data/references/queries-and-rls.md +4 -1
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +1 -0
- package/skills/permdock-wire/references/adapters.md +14 -0
- 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/index-Cp_ilKi1.d.ts +0 -91
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- 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/usage-CZpSQP6L.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
3
|
import { r as approverLeaves } from "./approvers-CqPOLD-o.js";
|
|
4
|
-
import { t as describe } from "./describe-
|
|
5
|
-
import { i as getRegistry, n as findPermission } from "./permission-registry-
|
|
4
|
+
import { t as describe } from "./describe-DZlnEtLy.js";
|
|
5
|
+
import { i as getRegistry, n as findPermission } from "./permission-registry-DpPtSKNZ.js";
|
|
6
6
|
import { t as assertAppData } from "./app-data-MuyzVqX8.js";
|
|
7
7
|
import { a as durationOf, i as dateAt, u as isoAt } from "./time-DkWjdL98.js";
|
|
8
8
|
import { r as relationReader, t as pendingRelations } from "./relations-BnCWnJGI.js";
|
|
9
9
|
import { n as resolveRelated } from "./relation-walk-3OyDBF0S.js";
|
|
10
10
|
import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
|
|
11
11
|
import { i as approverRelationKey, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
|
|
12
|
-
import {
|
|
12
|
+
import { n as assertApprover, u as listAllApprovals } from "./store-DSP9oGvh.js";
|
|
13
13
|
import { n as parseApprovalHeader } from "./approval-header-CJACtHkv.js";
|
|
14
14
|
//#region src/approvals/relations.ts
|
|
15
15
|
const DEFAULT_PARENT_DEPTH = 16;
|
package/dist/hono/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-DhNEmoRG.js";
|
|
3
|
+
import { a as PermDock } from "../permdock-Dco6dyCK.js";
|
|
4
4
|
import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
|
|
5
|
-
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
6
|
-
import { t as ServerAdapterOptions } from "../bind-
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
|
|
6
|
+
import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
|
|
7
7
|
import { Context, Hono, MiddlewareHandler } from "hono";
|
|
8
8
|
import { SSEMessage, SSEStreamingApi } from "hono/streaming";
|
|
9
9
|
import { WSEvents } from "hono/ws";
|
package/dist/hono/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
2
|
import { r as PermDockRevokedError } from "../errors-BKy0EfhN.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as problemFromError } from "../map-error-
|
|
5
|
-
import { r as bindKernel } from "../bind-
|
|
3
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
|
|
4
|
+
import { t as problemFromError } from "../map-error-BQGyDm_M.js";
|
|
5
|
+
import { r as bindKernel } from "../bind-D1nO6fiC.js";
|
|
6
6
|
import { a as onRevoked, n as closeReason, r as guardIterable, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
|
|
7
7
|
import { Hono } from "hono";
|
|
8
8
|
//#region src/hono/create.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as Policy, a as ApprovalRequirement,
|
|
1
|
+
import { T as Policy, a as ApprovalRequirement, mr as Condition, wn as Grantee } from "./policy-types-B-F-qAZk.js";
|
|
2
2
|
//#region src/core/hosted.d.ts
|
|
3
3
|
/** One grant authored in PermDock Cloud; its grantee is a declared role, plan or relation. */
|
|
4
4
|
type HostedGrant = {
|
|
@@ -51,6 +51,18 @@ declare function parsePolicyDocument(json: unknown): PolicyDocument;
|
|
|
51
51
|
declare function policyDocumentFromClaims(claims: Readonly<Record<string, unknown>>): PolicyDocument;
|
|
52
52
|
/** True for the portable subset only: no `opaque`, no `sqlFunction`, no unknown op. */
|
|
53
53
|
declare function isPortableCondition(value: unknown): value is Condition;
|
|
54
|
+
type HostedGrantCheck = {
|
|
55
|
+
readonly ok: true;
|
|
56
|
+
} | {
|
|
57
|
+
readonly ok: false;
|
|
58
|
+
readonly reason: HostedGrantDropReason;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
|
|
62
|
+
* drop reason it would report when not. Needs no `PolicyDocument`, so a
|
|
63
|
+
* grant form can check a grant before it publishes one.
|
|
64
|
+
*/
|
|
65
|
+
declare function checkHostedGrant(policy: Policy, grant: unknown): HostedGrantCheck;
|
|
54
66
|
/**
|
|
55
67
|
* The code policy plus the hosted grants that pass every rule. Hosted
|
|
56
68
|
* allows OR with code allows and any deny still wins, so a hosted grant can
|
|
@@ -75,4 +87,4 @@ type HostedPolicies = {
|
|
|
75
87
|
};
|
|
76
88
|
declare function hostedPolicies(source: PolicySource): HostedPolicies;
|
|
77
89
|
//#endregion
|
|
78
|
-
export {
|
|
90
|
+
export { HostedPolicies as a, checkHostedGrant as c, memoryPolicySource as d, mergeHostedGrants as f, HostedGrantDropped as i, hostedPolicies as l, policyDocumentFromClaims as m, HostedGrantCheck as n, PolicyDocument as o, parsePolicyDocument as p, HostedGrantDropReason as r, PolicySource as s, HostedGrant as t, isPortableCondition as u };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
3
|
import { n as isForbiddenKey, s as splitPath } from "./paths-DXSHAMIa.js";
|
|
4
|
-
import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-
|
|
5
|
-
import { a as getResource, n as findPermission } from "./permission-registry-
|
|
4
|
+
import { a as deny, i as completeGrant, n as role, p as normalizeWhere, r as allow } from "./role-builder-C1VJzvcr.js";
|
|
5
|
+
import { a as getResource, n as findPermission } from "./permission-registry-DpPtSKNZ.js";
|
|
6
6
|
import { d as isSelfParented } from "./resource-relations-D_jw0BFx.js";
|
|
7
7
|
import { a as durationOf, l as isRfc3339, m as rfc3339 } from "./time-DkWjdL98.js";
|
|
8
8
|
import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
|
|
9
|
-
import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-
|
|
10
|
-
import { i as indexPolicy, t as declaredRoleNames } from "./policy-
|
|
9
|
+
import { _ as listPlans, m as findRole, o as flattenGrantee } from "./grantee-BrRANrpT.js";
|
|
10
|
+
import { i as indexPolicy, t as declaredRoleNames } from "./policy-DaJy4nK4.js";
|
|
11
11
|
//#region src/core/hosted.ts
|
|
12
12
|
function memoryPolicySource(document = null) {
|
|
13
13
|
const current = document === null ? null : parsePolicyDocument(document);
|
|
@@ -124,6 +124,7 @@ function approvalAtLeast(hosted, code) {
|
|
|
124
124
|
function undeclaredKind(_grantee) {
|
|
125
125
|
return false;
|
|
126
126
|
}
|
|
127
|
+
/** Whether a hosted grant may name `grantee` on a permission of `permissionResource`. */
|
|
127
128
|
function declaredGrantee(policy, grantee, permissionResource) {
|
|
128
129
|
switch (grantee.kind) {
|
|
129
130
|
case "role": return declaredRoleNames(policy).has(grantee.role);
|
|
@@ -156,6 +157,10 @@ function granteesAcceptable(policy, raw, permissionResource) {
|
|
|
156
157
|
const items = flattenGrantee(raw);
|
|
157
158
|
return items.length > 0 && items.every((item) => isRecord(item) && item.kind !== "relation" && (item.kind === "authenticated" || declaredGrantee(policy, item, permissionResource)));
|
|
158
159
|
}
|
|
160
|
+
/** The approvals the code allows on `key` carry; a hosted allow must meet each one. */
|
|
161
|
+
function codeApprovals(policy, key) {
|
|
162
|
+
return policy.grants.filter((grant) => grant.effect === "allow" && grant.hosted === void 0 && grant.permission.key === key).map((grant) => grant.approval);
|
|
163
|
+
}
|
|
159
164
|
function buildGrant(policy, document, raw) {
|
|
160
165
|
if (!isRecord(raw) || typeof raw["id"] !== "string" || typeof raw["permission"] !== "string" || raw["effect"] !== void 0 && raw["effect"] !== "allow" && raw["effect"] !== "deny" || raw["to"] === void 0) return {
|
|
161
166
|
ok: false,
|
|
@@ -216,13 +221,10 @@ function buildGrant(policy, document, raw) {
|
|
|
216
221
|
reason: "invalid"
|
|
217
222
|
};
|
|
218
223
|
}
|
|
219
|
-
if (effect === "allow") {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
reason: "weaker-approval"
|
|
224
|
-
};
|
|
225
|
-
}
|
|
224
|
+
if (effect === "allow" && !approvalAtLeast(built.approval, codeApprovals(policy, permission.key))) return {
|
|
225
|
+
ok: false,
|
|
226
|
+
reason: "weaker-approval"
|
|
227
|
+
};
|
|
226
228
|
return {
|
|
227
229
|
ok: true,
|
|
228
230
|
grant: freezeDeep({
|
|
@@ -234,6 +236,26 @@ function buildGrant(policy, document, raw) {
|
|
|
234
236
|
})
|
|
235
237
|
};
|
|
236
238
|
}
|
|
239
|
+
const CHECKED_DOCUMENT = Object.freeze({
|
|
240
|
+
v: 1,
|
|
241
|
+
id: "",
|
|
242
|
+
fingerprint: "",
|
|
243
|
+
catalog: "",
|
|
244
|
+
issuedAt: "",
|
|
245
|
+
grants: Object.freeze([])
|
|
246
|
+
});
|
|
247
|
+
/**
|
|
248
|
+
* Whether `mergeHostedGrants` would keep one candidate hosted grant, and the
|
|
249
|
+
* drop reason it would report when not. Needs no `PolicyDocument`, so a
|
|
250
|
+
* grant form can check a grant before it publishes one.
|
|
251
|
+
*/
|
|
252
|
+
function checkHostedGrant(policy, grant) {
|
|
253
|
+
const result = buildGrant(policy, CHECKED_DOCUMENT, grant);
|
|
254
|
+
return result.ok ? { ok: true } : {
|
|
255
|
+
ok: false,
|
|
256
|
+
reason: result.reason
|
|
257
|
+
};
|
|
258
|
+
}
|
|
237
259
|
/** The grants of `document` that `policy` drops, in document order; `permdock/catalog` turns them into drift findings. */
|
|
238
260
|
function hostedGrantDrops(policy, document) {
|
|
239
261
|
return document.grants.flatMap((raw) => {
|
|
@@ -312,4 +334,4 @@ function hostedPolicies(source) {
|
|
|
312
334
|
});
|
|
313
335
|
}
|
|
314
336
|
//#endregion
|
|
315
|
-
export {
|
|
337
|
+
export { hostedPolicies as a, mergeHostedGrants as c, hostedGrantDrops as i, parsePolicyDocument as l, codeApprovals as n, isPortableCondition as o, declaredGrantee as r, memoryPolicySource as s, checkHostedGrant as t, policyDocumentFromClaims as u };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as timeoutSignal } from "./timeout-D51niuQP.js";
|
|
2
|
-
import { a as describeError, n as CliError } from "./errors-
|
|
2
|
+
import { a as describeError, n as CliError } from "./errors-DpP_U6Bf.js";
|
|
3
3
|
import { s as cliVersion } from "./version-CEbQ5UeM.js";
|
|
4
4
|
import "./device-BARQ8eYG.js";
|
|
5
5
|
//#region src/cli/core/http.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { i as configError, u as usageResult } from "./errors-
|
|
2
|
+
import { i as configError, u as usageResult } from "./errors-DpP_U6Bf.js";
|
|
3
3
|
import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
|
|
4
|
-
import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-
|
|
5
|
-
import { C as parseMembershipsFlag, r as HELPERS } from "./shared-
|
|
6
|
-
import { f as pgConnector } from "./policies-
|
|
7
|
-
import { t as FIELD_VIEWS } from "./fields-
|
|
4
|
+
import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B96movIM.js";
|
|
5
|
+
import { C as parseMembershipsFlag, r as HELPERS } from "./shared-fMKOv8hP.js";
|
|
6
|
+
import { f as pgConnector } from "./policies-B2lZIurj.js";
|
|
7
|
+
import { t as FIELD_VIEWS } from "./fields-ClcQLrVc.js";
|
|
8
8
|
import { n as emptySchema, r as isSchemaKind, t as emitPermissionsModule } from "./generate-CNU1pIOo.js";
|
|
9
9
|
import { existsSync, readFileSync } from "node:fs";
|
|
10
10
|
import { resolve } from "node:path";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { t as byCodePoint } from "./compare-pfyVnBjE.js";
|
|
3
3
|
import { i as readJsonFile } from "./files-D_JIzUrP.js";
|
|
4
|
-
import { t as applyFiles } from "./files-
|
|
5
|
-
import { n as httpRequest } from "./http-
|
|
4
|
+
import { t as applyFiles } from "./files-acUbNwWt.js";
|
|
5
|
+
import { n as httpRequest } from "./http-Ca3Sr5x1.js";
|
|
6
6
|
import { i as schemaExpression, t as emitPermissionsModule } from "./generate-CNU1pIOo.js";
|
|
7
|
-
import { t as validateOpenapi } from "./schema-
|
|
7
|
+
import { t as validateOpenapi } from "./schema-gIcCx7zM.js";
|
|
8
8
|
import { existsSync, readFileSync } from "node:fs";
|
|
9
9
|
import { resolve } from "node:path";
|
|
10
10
|
//#region ../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/browser/dist/nodes/identity.js
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-
|
|
5
|
-
import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-
|
|
1
|
+
import { $n as AuthorizationDetail, Ln as Decision, Rt as Instant, T as Policy, et as MembershipSource, gn as Approver, it as RelationSource, lr as Subject, or as Membership, ut as TokenSigner } from "./policy-types-B-F-qAZk.js";
|
|
2
|
+
import { O as AppData, f as PermissionTree, u as Permission } from "./permission-types-DhNEmoRG.js";
|
|
3
|
+
import { a as PermDock } from "./permdock-Dco6dyCK.js";
|
|
4
|
+
import { a as ApprovalDelegationSource, c as ApprovalListQuery, g as ApprovalVerdict, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, o as ApprovalInspectResult, r as ApprovalCancelMeta, s as ApprovalListFilter, u as ApprovalRequest } from "./types-DC44-hqb.js";
|
|
5
|
+
import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, r as AccessReviewItem, t as AccessReview } from "./types-CfiKC5aN.js";
|
|
6
6
|
import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
|
|
7
7
|
//#region src/approvals/access-reviews/handler.d.ts
|
|
8
8
|
type AccessReviewsHandlerOptions = {
|
|
@@ -135,6 +135,22 @@ type MatchDelegationOptions = {
|
|
|
135
135
|
declare function matchDelegation(request: ApprovalRequest, delegate: Subject, options: MatchDelegationOptions): Promise<ApprovalDelegationMatch | undefined>;
|
|
136
136
|
//#endregion
|
|
137
137
|
//#region src/approvals/idempotency.d.ts
|
|
138
|
+
/** The approve or reject call a key was first used for. */
|
|
139
|
+
type IdempotentCall = {
|
|
140
|
+
readonly action: "approve" | "reject";
|
|
141
|
+
/** The approval id in the path. */
|
|
142
|
+
readonly id: string;
|
|
143
|
+
/** The request body text as read; `""` without a body. */
|
|
144
|
+
readonly body: string;
|
|
145
|
+
};
|
|
146
|
+
/** One `Idempotency-Key` entry as `approvalsHandler` stores it. */
|
|
147
|
+
type IdempotencyRecord = {
|
|
148
|
+
/** The store key: the approver's principal id and the field value, joined by a newline. */
|
|
149
|
+
readonly key: string;
|
|
150
|
+
readonly response: IdempotentResponse;
|
|
151
|
+
/** Epoch milliseconds. */
|
|
152
|
+
readonly expiresAt: number;
|
|
153
|
+
};
|
|
138
154
|
/** A response the approvals handler replays for a repeated `Idempotency-Key`. */
|
|
139
155
|
type IdempotentResponse = {
|
|
140
156
|
/** Which request produced it: a reused key with another fingerprint is refused with `422`. */
|
|
@@ -156,6 +172,22 @@ type IdempotencyStore = {
|
|
|
156
172
|
/** `expiresAt` is epoch milliseconds; the store may drop the entry after it. */
|
|
157
173
|
set(key: string, response: IdempotentResponse, expiresAt: number): void | Promise<void>;
|
|
158
174
|
};
|
|
175
|
+
/** The `IdempotencyStore` key for one approver's `Idempotency-Key`: keys never cross approvers. */
|
|
176
|
+
declare function idempotencyRecordKey(principalId: string, key: string): string;
|
|
177
|
+
/**
|
|
178
|
+
* The record `approvalsHandler` stores after `call` answered `response`:
|
|
179
|
+
* the status, headers and body text, the call's fingerprint, and an expiry
|
|
180
|
+
* 24 hours after `now` (epoch milliseconds, default the clock).
|
|
181
|
+
*/
|
|
182
|
+
declare function idempotencyRecord(input: {
|
|
183
|
+
readonly principalId: string;
|
|
184
|
+
readonly key: string;
|
|
185
|
+
readonly call: IdempotentCall;
|
|
186
|
+
readonly response: Response;
|
|
187
|
+
readonly now?: number;
|
|
188
|
+
}): Promise<IdempotencyRecord>;
|
|
189
|
+
/** Whether a stored response came from the same call: a reused key with another call is refused with `422`. */
|
|
190
|
+
declare function matchesIdempotencyRecord(response: IdempotentResponse, call: IdempotentCall): boolean;
|
|
159
191
|
/** An in-process `IdempotencyStore`, for one instance and for tests. */
|
|
160
192
|
declare function memoryIdempotencyStore(): IdempotencyStore;
|
|
161
193
|
//#endregion
|
|
@@ -193,8 +225,6 @@ type ApprovalsHandlerOptions = {
|
|
|
193
225
|
*/
|
|
194
226
|
readonly idempotency?: IdempotencyStore;
|
|
195
227
|
};
|
|
196
|
-
/** An approval as the approvals API shows it: never the resume `token`. */
|
|
197
|
-
type ApprovalView = Omit<ApprovalRequest, "token">;
|
|
198
228
|
declare function approvalsHandler(store: ApprovalStore, options: ApprovalsHandlerOptions): (request: Request) => Promise<Response>;
|
|
199
229
|
//#endregion
|
|
200
230
|
//#region src/approvals/parse-request.d.ts
|
|
@@ -256,6 +286,18 @@ type SignApprovalOptions = {
|
|
|
256
286
|
*/
|
|
257
287
|
declare function signApproval(request: ApprovalRequest, signer: TokenSigner | undefined, options?: SignApprovalOptions): Promise<string | undefined>;
|
|
258
288
|
//#endregion
|
|
289
|
+
//#region src/approvals/entity-tag.d.ts
|
|
290
|
+
/** An approval as the approvals API shows it: never the resume `token`. */
|
|
291
|
+
type ApprovalView = Omit<ApprovalRequest, "token">;
|
|
292
|
+
/** The request without its resume `token`; every other field stays. */
|
|
293
|
+
declare function approvalView(request: ApprovalRequest): ApprovalView;
|
|
294
|
+
/**
|
|
295
|
+
* A strong RFC 9110 entity tag: the quoted `sha-256:` digest of
|
|
296
|
+
* `approvalView(request)` as RFC 8785 JSON. A field outside
|
|
297
|
+
* `ApprovalRequest` changes the tag, so hash the stored request as is.
|
|
298
|
+
*/
|
|
299
|
+
declare function approvalEntityTag(request: ApprovalRequest): string;
|
|
300
|
+
//#endregion
|
|
259
301
|
//#region src/approvals/relations.d.ts
|
|
260
302
|
type ApproverRelationsOptions = {
|
|
261
303
|
/** The object graph relation approvers are read from; without it they match nobody. */
|
|
@@ -428,4 +470,4 @@ declare function memoryApprovalStore(options?: {
|
|
|
428
470
|
readonly now?: () => Instant;
|
|
429
471
|
}): MemoryApprovalStore;
|
|
430
472
|
//#endregion
|
|
431
|
-
export {
|
|
473
|
+
export { AccessReviewHolder as $, SignApprovalOptions as A, IdempotentResponse as B, ApproverRelationsOptions as C, approvalView as D, approvalEntityTag as E, ApprovalsHandlerOptions as F, ApprovalDelegationMatch as G, idempotencyRecordKey as H, approvalsHandler as I, memoryApprovalDelegationSource as J, MatchDelegationOptions as K, IdempotencyRecord as L, signApproval as M, APPROVAL_REQUEST_SCHEMA as N, ApprovalSignatureClaims as O, parseApprovalRequest as P, pageAccessReviewItems as Q, IdempotencyStore as R, vouchApproval as S, ApprovalView as T, matchesIdempotencyRecord as U, idempotencyRecord as V, memoryIdempotencyStore as W, MemoryAccessReviewStore as X, parseApprovalDelegation as Y, memoryAccessReviewStore as Z, resolveApproval as _, approverPermissions as a, isAccessReviewError as at, storedApprovalToken as b, decodeApprovalCursor as c, decideAccessReviewItem as ct, pageApprovals as d, AccessReviewOptions as et, cancelApprovals as f, requestApproval as g, readApprovalHeader as h, memoryApprovalStore as i, AccessReviewErrorCode as it, approvalSignatureClaims as j, ApprovalSignatureEntry as k, encodeApprovalCursor as l, AccessReviewsHandlerOptions as lt, inspectApproval as m, applyApprovalVerdict as n, startAccessReview as nt, ApprovalCursorPosition as o, AccessReviewVerdict as ot, consumeApproval as p, matchDelegation as q, assertApprover as r, AccessReviewError as rt, approvalPageSize as s, accessReviewerEligible as st, MemoryApprovalStore as t, StartAccessReviewInput as tt, listAllApprovals as u, accessReviewsHandler as ut, resumeDecision as v, approverRelations as w, summarizeSubject as x, resumeFromHeader as y, IdempotentCall as z };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Ct as Credential,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as Disclosure } from "./problem-details-
|
|
5
|
-
import { a as ProblemDetails, t as ApprovalHint } from "./errors-
|
|
6
|
-
import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-
|
|
1
|
+
import { Ct as Credential, Ln as Decision, St as ApiKeyPrincipal, T as Policy, Tt as CredentialKind, U as CredentialVerifier, Zt as AuthEvent, at as SettingsSource, dt as TokenVerifier, gt as SupportSession, j as PolicyVocabulary, lr as Subject, lt as TokenFailureCause, q as DecisionSink, sr as Principal, ut as TokenSigner } from "./policy-types-B-F-qAZk.js";
|
|
2
|
+
import { f as PermissionTree, u as Permission } from "./permission-types-DhNEmoRG.js";
|
|
3
|
+
import { h as PrincipalSource } from "./permdock-Dco6dyCK.js";
|
|
4
|
+
import { t as Disclosure } from "./problem-details-Tcfmj3bV.js";
|
|
5
|
+
import { a as ProblemDetails, t as ApprovalHint } from "./errors-B_Qg9D3e.js";
|
|
6
|
+
import { c as ServerPermDock, l as ServerPermDockOptions } from "./server-types-C4gZUEZy.js";
|
|
7
7
|
//#region src/server/create.d.ts
|
|
8
8
|
/**
|
|
9
9
|
* The Fetch factory behind every HTTP adapter. The subject and actor are
|
|
@@ -1,20 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { a as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { Bn as DenialReason, C as MembershipFixture, Cr as SqlFunctionArg, D as PolicyDelegation, Gt as Snapshot, I as SeparationConflict, J as EntitlementSource, Ln as Decision, Lt as InstanceHandle, N as RoleBinding, P as RoleOptions, R as SupportAccessOptions, Rn as Denial, Rt as Instant, T as Policy, Ut as LocalSnapshotManifest, V as VocabularyFromInput, W as CustomRoleSource, Xt as AccessEvent, Y as JwtClaims, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, dn as PolicyScopesInput, en as DecisionEvent, et as MembershipSource, fn as Scope, g as GrantCondition, h as Grant, hr as ConditionRef, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, lr as Subject, nn as DeliveryEvent, nt as RelationGroup, or as Membership, ot as SnapshotSource, rr as Delegation, s as AssuranceRequirement, sn as SinkEvent, sr as Principal, tr as CustomRole, ut as TokenSigner, wr as SqlFunctionCondition, yr as OpaqueCondition } from "./policy-types-B-F-qAZk.js";
|
|
2
|
+
import { E as ResourceXTree, S as ResourceParent, T as ResourceRestricted, b as ResourceNode, d as PermissionKind, f as PermissionTree, g as ResourceInit, m as PermissionsOptions, n as ActionMeta, p as PermissionsOf, t as ActionList, u as Permission, w as ResourceRelationInput, x as ResourceOptions, y as ResourceMeta } from "./permission-types-DhNEmoRG.js";
|
|
3
|
+
import { a as RoleTree, r as Role } from "./vocabulary-Bg3eeT2H.js";
|
|
4
|
+
import { a as PermDock, o as PermDockOptions } from "./permdock-Dco6dyCK.js";
|
|
5
|
+
import { o as PolicyDocument } from "./hosted-BmjzxQhp.js";
|
|
6
|
+
import { m as ApprovalStore } from "./types-DC44-hqb.js";
|
|
7
|
+
import { t as InstanceOptions } from "./instance-options-CU0YQCLH.js";
|
|
8
|
+
import { n as PermDockWrap } from "./wrap-B6R0cMRL.js";
|
|
8
9
|
import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
|
|
9
|
-
import { i as CatalogEventData, s as CloudEvent } from "./sink-
|
|
10
|
+
import { i as CatalogEventData, s as CloudEvent } from "./sink-Cp_Eot9W.js";
|
|
10
11
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
11
12
|
//#region src/conditions/refs.d.ts
|
|
12
|
-
type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session";
|
|
13
|
+
type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session" | "claims";
|
|
13
14
|
type SubjectRef = ConditionRef & { readonly [K in KnownRefField]: SubjectRef; } & {
|
|
14
15
|
readonly [key: string]: SubjectRef;
|
|
15
16
|
};
|
|
16
17
|
declare const principal: SubjectRef;
|
|
17
18
|
declare const context: SubjectRef;
|
|
19
|
+
/**
|
|
20
|
+
* `principal.claims.<path>` for a dot path such as `team_ids` or
|
|
21
|
+
* `attrs.region`, typed `SubjectRef` under `noUncheckedIndexedAccess` and
|
|
22
|
+
* `noPropertyAccessFromIndexSignature`.
|
|
23
|
+
*/
|
|
24
|
+
declare function claim(path: string): SubjectRef;
|
|
18
25
|
//#endregion
|
|
19
26
|
//#region src/core/custom-roles.d.ts
|
|
20
27
|
type CustomRoleDropReason = "unknown-permission" | "outside-ceiling" | "condition-not-allowed" | "unknown-level";
|
|
@@ -65,6 +72,24 @@ type ValidateCustomRoleOptions = {
|
|
|
65
72
|
readonly shared?: readonly CustomRole[];
|
|
66
73
|
};
|
|
67
74
|
declare function validateCustomRole(policy: Policy, role: CustomRole, options?: ValidateCustomRoleOptions): CustomRoleValidation;
|
|
75
|
+
/** The outcome of one stored allow entry, `<permission>[@<level>]`. */
|
|
76
|
+
type CustomRoleEntry = {
|
|
77
|
+
readonly ok: true;
|
|
78
|
+
/** The current key, after a `renamed` key resolves. */
|
|
79
|
+
readonly permission: string;
|
|
80
|
+
readonly level?: string;
|
|
81
|
+
} | {
|
|
82
|
+
readonly ok: false;
|
|
83
|
+
readonly cause: "unknown-permission" | "outside-ceiling" | "unknown-level";
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Checks one stored allow entry, `<permission>[@<level>]`, the way
|
|
87
|
+
* `permdock_custom_role_entry_problem` does in SQL. `scope` defaults to the
|
|
88
|
+
* first scope; its ceiling is the allows of that scope's assignable roles.
|
|
89
|
+
*/
|
|
90
|
+
declare function parseCustomRoleEntry(policy: Policy, entry: string, options?: {
|
|
91
|
+
readonly scope?: string;
|
|
92
|
+
}): CustomRoleEntry;
|
|
68
93
|
/**
|
|
69
94
|
* The compact JWT form of custom roles for the `memberships[].grants` claim
|
|
70
95
|
* RLS reads in `jwt` mode: role name to entries, where `key` allows, `-key`
|
|
@@ -88,6 +113,19 @@ declare function requiresApproval(approval: Grant["approval"] | undefined): bool
|
|
|
88
113
|
//#endregion
|
|
89
114
|
//#region src/core/policy.d.ts
|
|
90
115
|
declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>>;
|
|
116
|
+
/** The role names a policy declares: the keys of its `defineRoles` vocabulary, else `string`. */
|
|
117
|
+
type RoleNameOf<P> = P extends {
|
|
118
|
+
readonly vocabulary: infer V;
|
|
119
|
+
} ? V extends {
|
|
120
|
+
readonly roles: infer R extends RoleTree;
|
|
121
|
+
} ? R[keyof R]["key"] : string : string;
|
|
122
|
+
/**
|
|
123
|
+
* Whether `value` names a role the policy declares, for a role read as a
|
|
124
|
+
* string from a database or a token. A name it rejects is an unknown role,
|
|
125
|
+
* which grants nothing (`unknown-role`). A tenant's custom roles are not
|
|
126
|
+
* declared; `CustomRoleSource` resolves them.
|
|
127
|
+
*/
|
|
128
|
+
declare function isRoleName<P extends Policy<never>>(policy: P, value: unknown): value is RoleNameOf<P>;
|
|
91
129
|
declare function separationConflicts(policy: Policy, memberships: readonly MembershipFixture[]): readonly SeparationConflict[];
|
|
92
130
|
//#endregion
|
|
93
131
|
//#region src/core/permission-registry.d.ts
|
|
@@ -291,11 +329,23 @@ type SignSnapshotOptions = {
|
|
|
291
329
|
/** `aud`; a signer with no default audience refuses to sign without one. */
|
|
292
330
|
readonly audience?: string | readonly string[];
|
|
293
331
|
};
|
|
332
|
+
/** The claims of a `vnd.permdock.snapshot+jwt` apart from `iss`, `aud` and `jti`. */
|
|
333
|
+
type SnapshotClaims = {
|
|
334
|
+
readonly snapshot: Omit<Snapshot, "issuedAt" | "expiresAt">;
|
|
335
|
+
/** The principal's id; absent for an anonymous snapshot. */
|
|
336
|
+
readonly sub?: string;
|
|
337
|
+
/** `issuedAt` in NumericDate seconds; absent when it is not after the epoch. */
|
|
338
|
+
readonly iat?: number;
|
|
339
|
+
/** `expiresAt` in NumericDate seconds; absent when the snapshot has none, and the signer then sets its default. */
|
|
340
|
+
readonly exp?: number;
|
|
341
|
+
};
|
|
294
342
|
/**
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
343
|
+
* The claims `signSnapshot` signs for `snapshot`. `issuedAt` and `expiresAt`
|
|
344
|
+
* become `iat` and `exp` and leave the `snapshot` claim, so the registered
|
|
345
|
+
* claims are the only times a verifier reads.
|
|
298
346
|
*/
|
|
347
|
+
declare function snapshotClaims(snapshot: Snapshot): SnapshotClaims;
|
|
348
|
+
/** Signs `snapshot` as a `vnd.permdock.snapshot+jwt` with the claims `snapshotClaims` answers. */
|
|
299
349
|
declare function signSnapshot(snapshot: Snapshot, signer: TokenSigner, options?: SignSnapshotOptions): Promise<string>;
|
|
300
350
|
/**
|
|
301
351
|
* The snapshot a verified `vnd.permdock.snapshot+jwt` carries, parsed as
|
|
@@ -490,7 +540,7 @@ type SnapshotForOptions = {
|
|
|
490
540
|
declare function snapshotFor<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: SnapshotForOptions): Snapshot;
|
|
491
541
|
//#endregion
|
|
492
542
|
//#region src/core/permissions.d.ts
|
|
493
|
-
declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?: PermissionsOptions<PX, RX>):
|
|
543
|
+
declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?: PermissionsOptions<PX, RX>): PermissionsOf<Input, PX, RX>;
|
|
494
544
|
//#endregion
|
|
495
545
|
//#region src/core/permission-leaf.d.ts
|
|
496
546
|
/**
|
|
@@ -574,7 +624,15 @@ declare function normalizeAssurance(input: AssuranceRequirement | undefined): As
|
|
|
574
624
|
//#endregion
|
|
575
625
|
//#region src/core/grant-builders.d.ts
|
|
576
626
|
declare function allow<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
627
|
+
/**
|
|
628
|
+
* Every action of a resource (`permissions.post`), of several, or of the
|
|
629
|
+
* whole tree, unconditionally. Each grant is listed in the policy as if
|
|
630
|
+
* written out, and an action added to the resource later is granted too.
|
|
631
|
+
*/
|
|
632
|
+
declare function allow(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
577
633
|
declare function deny<T, K extends PermissionKind = PermissionKind>(permission: Permission<string, T, K> | readonly Permission<string, T, K>[], condition?: GrantCondition<T, K>): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
634
|
+
/** Every action of a resource, of several, or of the whole tree, unconditionally. */
|
|
635
|
+
declare function deny(permissions: PermissionTree | readonly (Permission | PermissionTree)[]): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
578
636
|
//#endregion
|
|
579
637
|
//#region src/core/approval-normalize.d.ts
|
|
580
638
|
declare function normalizeApproval(approval: ApprovalOption | undefined, permission?: string): Grant["approval"];
|
|
@@ -624,6 +682,22 @@ type ActivateInput = {
|
|
|
624
682
|
*/
|
|
625
683
|
declare function activate(permdock: InstanceHandle, input: ActivateInput): Decision;
|
|
626
684
|
//#endregion
|
|
685
|
+
//#region src/core/scope-helpers.d.ts
|
|
686
|
+
/**
|
|
687
|
+
* The canonical form PermDock evaluates one membership in, or `undefined`
|
|
688
|
+
* when it is malformed and grants nothing. `scopes` is the policy's or the
|
|
689
|
+
* catalog's scope list; absent or empty means the implicit `tenant` and
|
|
690
|
+
* `team` pair.
|
|
691
|
+
*/
|
|
692
|
+
declare function normalizeMembership(input: unknown, scopes?: readonly Scope[]): Membership | undefined;
|
|
693
|
+
/** Every well-formed membership of `input` in canonical form; malformed entries are dropped. */
|
|
694
|
+
declare function normalizeMemberships(input: unknown, scopes?: readonly Scope[]): readonly Membership[];
|
|
695
|
+
/**
|
|
696
|
+
* The declared scope `name` stands for: the name itself, or the scope the
|
|
697
|
+
* `tenant` (first) or `team` (second) alias names. `undefined` otherwise.
|
|
698
|
+
*/
|
|
699
|
+
declare function resolveScope(scopes: readonly Scope[] | undefined, name: unknown): string | undefined;
|
|
700
|
+
//#endregion
|
|
627
701
|
//#region src/core/ownership.d.ts
|
|
628
702
|
/** Who a role change is about: their principal id and their membership in the scope instance. */
|
|
629
703
|
type RoleChangeTarget = {
|
|
@@ -676,6 +750,44 @@ type RoleChangeDecision = {
|
|
|
676
750
|
readonly change: RoleChange;
|
|
677
751
|
readonly denials: readonly Denial[];
|
|
678
752
|
};
|
|
753
|
+
/** The holder-count, membership-kind, exclusivity and `assigns` rules of one role, as the catalog lists them (`CatalogRole`). */
|
|
754
|
+
type RoleRules = {
|
|
755
|
+
readonly key: string;
|
|
756
|
+
readonly min?: number;
|
|
757
|
+
readonly max?: number;
|
|
758
|
+
readonly transferOnly?: boolean;
|
|
759
|
+
readonly assigns?: readonly string[];
|
|
760
|
+
readonly for?: readonly string[];
|
|
761
|
+
readonly exclusiveWith?: readonly string[];
|
|
762
|
+
};
|
|
763
|
+
type RoleChangeCheckInput = {
|
|
764
|
+
readonly change: {
|
|
765
|
+
readonly kind: "assign" | "revoke" | "transfer";
|
|
766
|
+
readonly target: Pick<RoleChangeTarget, "via" | "roles">;
|
|
767
|
+
};
|
|
768
|
+
/** How many principals hold the role in the instance now; without it a role with `min`, `max` or `transferOnly` is denied. */
|
|
769
|
+
readonly holders?: number;
|
|
770
|
+
/** Every declared role: adds the `exclusiveWith` other roles declare against this one, and with `actorRoles` the `assigns` rule. */
|
|
771
|
+
readonly roles?: readonly RoleRules[];
|
|
772
|
+
/** The roles the actor holds at the instance, highest rank first. With `roles` naming any `assigns`, one of them must assign this role. */
|
|
773
|
+
readonly actorRoles?: readonly string[];
|
|
774
|
+
};
|
|
775
|
+
/** `by` names the actor role whose `assigns` allowed the change, `null` when the rule did not apply. */
|
|
776
|
+
type RoleChangeCheck = {
|
|
777
|
+
readonly ok: true;
|
|
778
|
+
readonly by: string | null;
|
|
779
|
+
} | {
|
|
780
|
+
readonly ok: false;
|
|
781
|
+
readonly denials: readonly Denial[];
|
|
782
|
+
};
|
|
783
|
+
/**
|
|
784
|
+
* The rules of a role change that need no subject: `assigns`, `for`,
|
|
785
|
+
* `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and
|
|
786
|
+
* the target's roles alone. `decideRoleChange` runs the same function after
|
|
787
|
+
* its actor, tenant and ceiling checks; a service that holds only the
|
|
788
|
+
* catalog calls it with the `CatalogRole` entries.
|
|
789
|
+
*/
|
|
790
|
+
declare function checkRoleChange(role: RoleRules, input: RoleChangeCheckInput): RoleChangeCheck;
|
|
679
791
|
type RoleChangeOptions = {
|
|
680
792
|
/**
|
|
681
793
|
* `true` when the application loaded `change.within` from its own store
|
|
@@ -888,6 +1000,23 @@ declare function toCsvRow(event: DecisionEvent): string;
|
|
|
888
1000
|
*/
|
|
889
1001
|
declare function catalogFingerprint(catalog: unknown): string;
|
|
890
1002
|
//#endregion
|
|
1003
|
+
//#region src/core/canonical-json.d.ts
|
|
1004
|
+
/**
|
|
1005
|
+
* RFC 8785 (JCS) output for I-JSON input: keys sorted by UTF-16 code units,
|
|
1006
|
+
* ECMAScript number and string serialisation, no whitespace. `undefined`
|
|
1007
|
+
* members are dropped. Outside I-JSON, Dates become ISO strings, bigints
|
|
1008
|
+
* `"<n>n"`, and a repeated object on the current path `"[Circular]"`, so any
|
|
1009
|
+
* validated row serialises.
|
|
1010
|
+
*/
|
|
1011
|
+
declare function canonicalJson(value: unknown): string;
|
|
1012
|
+
//#endregion
|
|
1013
|
+
//#region src/core/sha256.d.ts
|
|
1014
|
+
/**
|
|
1015
|
+
* The one digest notation: `sha-256:` plus the unpadded base64url SHA-256
|
|
1016
|
+
* of `text`. An RFC 9651 sf-token, so it fits a structured header as is.
|
|
1017
|
+
*/
|
|
1018
|
+
declare function sha256Digest(text: string): string;
|
|
1019
|
+
//#endregion
|
|
891
1020
|
//#region src/core/delegation.d.ts
|
|
892
1021
|
type DelegatedPermission = Pick<Permission, "scope" | "resource" | "action">;
|
|
893
1022
|
/**
|
|
@@ -906,4 +1035,4 @@ declare function coveredByDelegation(permission: DelegatedPermission, delegation
|
|
|
906
1035
|
*/
|
|
907
1036
|
declare function delegatedPermissions(delegations: readonly PolicyDelegation[] | undefined, subject: Subject, heldRoles: ReadonlySet<string>, now: number): ReadonlySet<string> | undefined;
|
|
908
1037
|
//#endregion
|
|
909
|
-
export {
|
|
1038
|
+
export { resource as $, listPermissions as $t, RoleChangeCheckInput as A, HoldingVia as At, ActivateInput as B, countHolders as Bt, parseCatalogEventData as C, SnapshotClaims as Ct, parseSinkEvents as D, SignPolicyDocumentOptions as Dt, parseSinkEvent as E, snapshotFromClaims as Et, checkRoleChange as F, memoryRelationSource as Ft, allow as G, memoryMembershipSource as Gt, breakGlass as H, APPROVAL_POLICY_UNAVAILABLE as Ht, decideRoleChange as I, StripeEntitlementsClient as It, role as J, sqlFunction as Jt, deny as K, memorySettingsSource as Kt, normalizeMembership as L, stripeEntitlementSource as Lt, RoleChangeOptions as M, whoCan as Mt, RoleChangeTarget as N, MemoryEdge as Nt, RoleChange as O, signPolicyDocument as Ot, RoleRules as P, MemoryRelationSourceData as Pt, formerKeys as Q, isPermission as Qt, normalizeMemberships as R, claimsFirst as Rt, SINK_EVENT_SCHEMAS as S, principal as Sn, SignSnapshotOptions as St, parseCloudEventBatch as T, snapshotClaims as Tt, supportAccess as U, memoryCustomRoleSource as Ut, activate as V, isExternallyManaged as Vt, normalizeApproval as W, memoryEntitlementSource as Wt, readable as X, findPermission as Xt, crud as Y, opaque as Yt, writable as Z, getResource as Zt, DECISION_EVENT_SCHEMA as _, parseCustomRoleEntry as _n, ArazzoSimulateInput as _t, catalogFingerprint as a, requiresApproval as an, customRoleSource as at, EVENT_SCHEMA_IDS as b, claim as bn, simulateArazzo as bt, OCSF_VERSION as c, parseSnapshot as cn, ShadowMismatch as ct, accessToOcsf as d, CustomRoleEntry as dn, defineApp as dt, mergePermissions as en, definePermissions as et, toOcsf as f, CustomRoleRename as fn, AppOptions as ft, CREDENTIAL_EVENT_SCHEMA as g, customRoleClaim as gn, ArazzoPlan as gt, CATALOG_EVENT_SCHEMA as h, ValidateCustomRoleOptions as hn, ArazzoFinding as ht, canonicalJson as i, separationConflicts as in, CustomRoleSourceOptions as it, RoleChangeDecision as j, WhoCan as jt, RoleChangeCheck as k, Holder as kt, OcsfAuthorizeSession as l, CustomRoleDrop as ln, ShadowOptions as lt, AUTOMATION_EVENT_SCHEMA as m, ResolvedCustomRole as mn, localSnapshotManifest as mt, delegatedPermissions as n, definePolicy as nn, snapshotFor as nt, CSV_COLUMNS as o, emptySnapshot as on, mayAccess as ot, ACCESS_EVENT_SCHEMA as p, CustomRoleValidation as pn, AppProfile as pt, normalizeAssurance as q, memorySnapshotSource as qt, sha256Digest as r, isRoleName as rn, CustomRoleReader as rt, toCsvRow as s, fromSnapshot as sn, LegacyCheck as st, coveredByDelegation as t, RoleNameOf as tn, SnapshotForOptions as tt, OcsfUserManagement as u, CustomRoleDropReason as un, shadowMode as ut, DELIVERY_EVENT_SCHEMA as v, resolveCustomRole as vn, ArazzoStepResult as vt, parseCloudEvent as w, signSnapshot as wt, MEMBERSHIP_EVENT_SCHEMA as x, context as xn, deliveryEvent as xt, DIRECTORY_EVENT_SCHEMA as y, validateCustomRole as yn, arazzoFindings as yt, resolveScope as z, composeMemberships as zt };
|