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,6 +1,7 @@
|
|
|
1
|
-
import { et as MembershipSource } from "./policy-types-
|
|
2
|
-
import { n as
|
|
3
|
-
import {
|
|
1
|
+
import { et as MembershipSource } from "./policy-types-B-F-qAZk.js";
|
|
2
|
+
import { b as SupabaseSuspension, n as RoleMap, r as RoleThrough } from "./types-BfVmNJO5.js";
|
|
3
|
+
import { t as SqlQuery } from "./sql-CDEPCA0g.js";
|
|
4
|
+
import { c as SupabaseManifestMembership } from "./manifest-BVhExYhw.js";
|
|
4
5
|
//#region src/supabase/roles.d.ts
|
|
5
6
|
/** A roles table a role column references, by `schema.table`. */
|
|
6
7
|
type RoleKeys = {
|
|
@@ -12,15 +13,26 @@ type RoleKeys = {
|
|
|
12
13
|
/** The referencing table's column. */
|
|
13
14
|
readonly ref: string;
|
|
14
15
|
};
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
/** One role source of a membership row: a key column, or a reference to a roles table. */
|
|
17
|
+
type RoleSource = string | RoleThrough | RoleMap;
|
|
18
|
+
/** A role source, or several the row holds at once. */
|
|
19
|
+
type RoleSpec = RoleSource | readonly RoleSource[];
|
|
17
20
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
21
|
+
* A roles table whose tenant rows are written by tenants. A role key read
|
|
22
|
+
* through it from a tenant row that is one of `declared` reads as null, so a
|
|
23
|
+
* tenant cannot claim the grants of a declared role by naming a role after it.
|
|
20
24
|
*/
|
|
21
|
-
type
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
type RoleGuard = {
|
|
26
|
+
/** `schema.table`, or `public`. */
|
|
27
|
+
readonly table: string;
|
|
28
|
+
/** The tenant column of the roles table. */
|
|
29
|
+
readonly tenant: string;
|
|
30
|
+
/** A tenant row with this column true is the application's own copy of a declared role. */
|
|
31
|
+
readonly skip?: string | undefined;
|
|
32
|
+
readonly declared: readonly string[];
|
|
33
|
+
};
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/supabase/sources.d.ts
|
|
24
36
|
type Common = {
|
|
25
37
|
readonly table: string;
|
|
26
38
|
/** Runs the lookups; without it the source only describes SQL (for `permdock supabase hook generate`). */
|
|
@@ -41,7 +53,7 @@ type MembershipTableOptions = Common & {
|
|
|
41
53
|
* The role key column, a reference to a roles table that holds the key,
|
|
42
54
|
* or several of them: the row holds every non-null key.
|
|
43
55
|
*/
|
|
44
|
-
readonly role?:
|
|
56
|
+
readonly role?: RoleSpec;
|
|
45
57
|
readonly via?: string;
|
|
46
58
|
readonly expiresAt?: string;
|
|
47
59
|
readonly disabledAt?: string;
|
|
@@ -73,8 +85,8 @@ type MembershipJunctionOptions = Common & {
|
|
|
73
85
|
* roles every row holds (a contact table with no role column), or
|
|
74
86
|
* `{ sources }`: several role columns whose non-null keys the row holds.
|
|
75
87
|
*/
|
|
76
|
-
readonly roles: string | RoleThrough | readonly string[] | {
|
|
77
|
-
readonly sources: readonly
|
|
88
|
+
readonly roles: string | RoleThrough | RoleMap | readonly string[] | {
|
|
89
|
+
readonly sources: readonly RoleSource[];
|
|
78
90
|
};
|
|
79
91
|
/** The membership kind every row has (`contact`, `staff`, `partner`). */
|
|
80
92
|
readonly via?: string;
|
|
@@ -135,6 +147,41 @@ type MembershipSql = {
|
|
|
135
147
|
readonly manifest: SupabaseManifestMembership;
|
|
136
148
|
/** What the ownership triggers count; absent on a source that is not a table. */
|
|
137
149
|
readonly holders?: MembershipHolders;
|
|
150
|
+
/** The rows as plain columns, for Sync Streams and `powerSyncSource`; a source without it does not sync. */
|
|
151
|
+
readonly stream?: MembershipStream;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* One membership source as columns a Sync Streams query can filter on.
|
|
155
|
+
* Tables are `schema.table`; a `through` table is qualified in the source's
|
|
156
|
+
* schema when it names none.
|
|
157
|
+
*/
|
|
158
|
+
type MembershipStream = {
|
|
159
|
+
readonly table: string;
|
|
160
|
+
/** The user id column, or the reference to the table that holds the user id. */
|
|
161
|
+
readonly user: string | RoleThrough;
|
|
162
|
+
/** The scope column, or the scope every row is a membership of. */
|
|
163
|
+
readonly scope: {
|
|
164
|
+
readonly column: string;
|
|
165
|
+
} | {
|
|
166
|
+
readonly value: string;
|
|
167
|
+
};
|
|
168
|
+
readonly id: string;
|
|
169
|
+
/** The role sources (the row holds every non-null key), or the fixed roles every row holds. */
|
|
170
|
+
readonly roles: RoleSpec | {
|
|
171
|
+
readonly value: readonly string[];
|
|
172
|
+
};
|
|
173
|
+
/** The membership kind column, or the kind every row has. */
|
|
174
|
+
readonly via?: {
|
|
175
|
+
readonly column: string;
|
|
176
|
+
} | {
|
|
177
|
+
readonly value: string;
|
|
178
|
+
};
|
|
179
|
+
readonly expiresAt?: string;
|
|
180
|
+
readonly disabledAt?: string;
|
|
181
|
+
/** A row may hold no role key: such a row is no membership, and a reader drops it. */
|
|
182
|
+
readonly nullableRoles: boolean;
|
|
183
|
+
/** The guard the source reads its roles table with: a tenant row named like a declared role is no role. */
|
|
184
|
+
readonly guard?: RoleGuard;
|
|
138
185
|
};
|
|
139
186
|
/**
|
|
140
187
|
* The rows of a membership table, for the holder-count and transfer-only
|
|
@@ -158,6 +205,8 @@ type MembershipHolders = {
|
|
|
158
205
|
};
|
|
159
206
|
type SqlMembershipSource = MembershipSource & {
|
|
160
207
|
readonly sql: MembershipSql;
|
|
208
|
+
/** The same source with the role keys of tenant rows of `guard.table` named like a declared role read as null. */
|
|
209
|
+
readonly guarded?: (guard: RoleGuard) => SqlMembershipSource;
|
|
161
210
|
};
|
|
162
211
|
/** The part of `@supabase/server`'s `PostgresApi` a `SqlQuery` needs. */
|
|
163
212
|
type SupabasePostgres = {
|
|
@@ -187,4 +236,4 @@ declare function authzVersion(options: {
|
|
|
187
236
|
readonly schema?: string;
|
|
188
237
|
}): NonNullable<MembershipSource["version"]>;
|
|
189
238
|
//#endregion
|
|
190
|
-
export {
|
|
239
|
+
export { MembershipStream as a, SupabasePostgres as c, supabasePostgresQuery as d, tableMembershipSource as f, MembershipSql as i, authzVersion as l, MembershipHolders as n, MembershipTableOptions as o, MembershipJunctionOptions as r, SqlMembershipSource as s, AUTHZ_VERSION_TABLE as t, junctionMembershipSource as u };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/cli/sql/sources.ts
|
|
2
|
+
/**
|
|
3
|
+
* The membership sources a project reads: `rls.membershipSources`, else
|
|
4
|
+
* `supabase.hook.memberships`. Every generator, doctor check and verifier
|
|
5
|
+
* resolves them here, so they all read the same tables.
|
|
6
|
+
*/
|
|
7
|
+
function membershipSourcesOf(config) {
|
|
8
|
+
return config.rls?.membershipSources ?? config.supabase?.hook?.memberships ?? [];
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { membershipSourcesOf as t };
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
//#region src/core/sql.ts
|
|
2
|
+
/** The rows of a `SqlQuery` result, whichever of its two shapes the driver resolved. */
|
|
3
|
+
function sqlRows(result) {
|
|
4
|
+
return Array.isArray(result) ? result : result.rows;
|
|
5
|
+
}
|
|
2
6
|
/** A bare Postgres identifier PermDock emits unquoted-safe: letters, digits and `_`, not starting with a digit. */
|
|
3
7
|
const SQL_IDENT = /^[A-Za-z_][A-Za-z0-9_]*$/u;
|
|
4
8
|
/** A validated, double-quoted identifier; anything outside `SQL_IDENT` throws. */
|
|
@@ -52,4 +56,4 @@ function defaultSqlCommand(action) {
|
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
//#endregion
|
|
55
|
-
export { quoteQualifiedTable as a, quoteSqlTable as c, qualifySqlTable as i, sqlIdent as l, defaultSqlCommand as n, quoteSqlIdent as o, escapeSqlIdent as r, quoteSqlLiteral as s, SQL_IDENT as t,
|
|
59
|
+
export { quoteQualifiedTable as a, quoteSqlTable as c, sqlTextArray as d, qualifySqlTable as i, sqlIdent as l, defaultSqlCommand as n, quoteSqlIdent as o, escapeSqlIdent as r, quoteSqlLiteral as s, SQL_IDENT as t, sqlRows as u };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/core/sql.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Runs one parameterised statement: `pg`'s `client.query` (which resolves
|
|
4
|
+
* `{ rows }`) and `postgres`'s `sql.unsafe` (which resolves the rows) both fit.
|
|
5
|
+
*/
|
|
6
|
+
type SqlQuery = (text: string, values: readonly unknown[]) => Promise<readonly Record<string, unknown>[] | {
|
|
7
|
+
readonly rows: readonly Record<string, unknown>[];
|
|
8
|
+
}>;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { SqlQuery as t };
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { n as isReadonlyArray, 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, r as ownGet } from "./paths-DXSHAMIa.js";
|
|
4
|
-
import { f as normalizeApproval, g as assertSqlFunctionName, h as assertSqlFunctionArg, m as assertPortableTwin, p as normalizeWhere, u as assertApprovalRelations } from "./role-builder-
|
|
4
|
+
import { f as normalizeApproval, g as assertSqlFunctionName, h as assertSqlFunctionArg, m as assertPortableTwin, p as normalizeWhere, u as assertApprovalRelations } from "./role-builder-C1VJzvcr.js";
|
|
5
5
|
import { n as PermDockDeniedError } from "./errors-BKy0EfhN.js";
|
|
6
6
|
import { o as sameId } from "./expiry-D4_YKRKD.js";
|
|
7
7
|
import { n as internalsOf } from "./internals-Dk8A8fX3.js";
|
|
8
|
-
import { c as listPermissions, i as getRegistry, n as findPermission, o as isPermission } from "./permission-registry-
|
|
8
|
+
import { c as listPermissions, i as getRegistry, n as findPermission, o as isPermission } from "./permission-registry-DpPtSKNZ.js";
|
|
9
9
|
import { n as isThenable$1 } from "./thenable-yD7SabqG.js";
|
|
10
10
|
import { c as isEdgeRelation, m as restrictedStops, o as groupEntries, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
|
|
11
11
|
import { a as durationOf, g as secondsOf, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
|
|
12
|
-
import { d as
|
|
13
|
-
import { u as evaluateCondition } from "./delegation-
|
|
14
|
-
import { _ as listPlans, a as authenticated, m as findRole, o as flattenGrantee } from "./grantee-
|
|
15
|
-
import { m as tenantsOf, r as isMembershipExpired } from "./tenancy-
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { n as OPERATION_RISKS, r as isOperationRisk } from "./permissions-
|
|
19
|
-
import {
|
|
20
|
-
import { d as rankRoles, f as usesAssigns, i as collectSnapshotGrants, n as snapshotScopes, t as snapshotOf, u as bindingOf } from "./instance-snapshot-
|
|
12
|
+
import { a as normalizeMembership$1, d as scopeIdOf, f as scopeList, h as tenantOf, o as normalizeMemberships$1, s as resolveScope$1, u as scopeChain } from "./scopes-BHsc-wp-.js";
|
|
13
|
+
import { u as evaluateCondition } from "./delegation-C5rOdTp5.js";
|
|
14
|
+
import { _ as listPlans, a as authenticated, m as findRole, o as flattenGrantee } from "./grantee-BrRANrpT.js";
|
|
15
|
+
import { m as tenantsOf, r as isMembershipExpired } from "./tenancy-CmeBQ6Nv.js";
|
|
16
|
+
import { r as grantList, s as levelNames, t as declaredRoleNames } from "./policy-DaJy4nK4.js";
|
|
17
|
+
import { o as isPortableCondition } from "./hosted-XBgU6RGT.js";
|
|
18
|
+
import { n as OPERATION_RISKS, r as isOperationRisk } from "./permissions-CyH2MV_B.js";
|
|
19
|
+
import { C as tenantCustomRoles, f as customRoleId, l as ceilingGrants, m as customRoleScope, p as customRoleOf, x as resolveCustomRole } from "./evaluate-B_oqFbWC.js";
|
|
20
|
+
import { d as rankRoles, f as usesAssigns, i as collectSnapshotGrants, n as snapshotScopes, t as snapshotOf, u as bindingOf } from "./instance-snapshot-CjcwnEiV.js";
|
|
21
21
|
import { n as relationId } from "./relations-BnCWnJGI.js";
|
|
22
|
-
import { r as snapshotGrant, t as buildSnapshot } from "./snapshot-
|
|
23
|
-
import { n as LOCAL_CUSTOM_ROLE } from "./parse-local-manifest-
|
|
24
|
-
import {
|
|
25
|
-
import { i as memoryApprovalStore } from "./store-
|
|
26
|
-
import { n as wrapPermDock } from "./wrap-
|
|
22
|
+
import { r as snapshotGrant, t as buildSnapshot } from "./snapshot-CbGmYiJx.js";
|
|
23
|
+
import { n as LOCAL_CUSTOM_ROLE } from "./parse-local-manifest-T1Q8X3A2.js";
|
|
24
|
+
import { c as APP, r as resolveSubject } from "./permdock-BfWEeMqk.js";
|
|
25
|
+
import { i as memoryApprovalStore } from "./store-DSP9oGvh.js";
|
|
26
|
+
import { n as wrapPermDock } from "./wrap-CiSc_KCq.js";
|
|
27
27
|
//#region src/conditions/sql-function.ts
|
|
28
28
|
function sqlFunction(name, options) {
|
|
29
29
|
assertSqlFunctionName(name);
|
|
@@ -1599,12 +1599,34 @@ function writable(options) {
|
|
|
1599
1599
|
return finishPreset(WRITABLE_ACTIONS, WRITABLE_COLLECTION, options);
|
|
1600
1600
|
}
|
|
1601
1601
|
//#endregion
|
|
1602
|
+
//#region src/core/scope-helpers.ts
|
|
1603
|
+
/**
|
|
1604
|
+
* The canonical form PermDock evaluates one membership in, or `undefined`
|
|
1605
|
+
* when it is malformed and grants nothing. `scopes` is the policy's or the
|
|
1606
|
+
* catalog's scope list; absent or empty means the implicit `tenant` and
|
|
1607
|
+
* `team` pair.
|
|
1608
|
+
*/
|
|
1609
|
+
function normalizeMembership(input, scopes) {
|
|
1610
|
+
return normalizeMembership$1(input, scopeList(scopes));
|
|
1611
|
+
}
|
|
1612
|
+
/** Every well-formed membership of `input` in canonical form; malformed entries are dropped. */
|
|
1613
|
+
function normalizeMemberships(input, scopes) {
|
|
1614
|
+
return normalizeMemberships$1(input, scopeList(scopes));
|
|
1615
|
+
}
|
|
1616
|
+
/**
|
|
1617
|
+
* The declared scope `name` stands for: the name itself, or the scope the
|
|
1618
|
+
* `tenant` (first) or `team` (second) alias names. `undefined` otherwise.
|
|
1619
|
+
*/
|
|
1620
|
+
function resolveScope(scopes, name) {
|
|
1621
|
+
return resolveScope$1(scopeList(scopes), name);
|
|
1622
|
+
}
|
|
1623
|
+
//#endregion
|
|
1602
1624
|
//#region src/core/ownership.ts
|
|
1603
1625
|
function coversInstance(membership, scopes, scope, id, within) {
|
|
1604
1626
|
if (membership.scope === void 0 || membership.id === void 0) return false;
|
|
1605
1627
|
if (membership.scope === scope) return sameId(membership.id, id);
|
|
1606
1628
|
if (!scopeChain(scopes, scope).slice(1).includes(membership.scope)) return false;
|
|
1607
|
-
const wanted = within === void 0 ? void 0 : Object.entries(within).find(([key]) => resolveScope(scopes, key) === membership.scope)?.[1] ?? void 0;
|
|
1629
|
+
const wanted = within === void 0 ? void 0 : Object.entries(within).find(([key]) => resolveScope$1(scopes, key) === membership.scope)?.[1] ?? void 0;
|
|
1608
1630
|
return wanted !== void 0 && scopeIdOf(membership, membership.scope) === wanted;
|
|
1609
1631
|
}
|
|
1610
1632
|
/** Roles the principal holds at the instance, at an ancestor named in `within`, or globally. */
|
|
@@ -1639,12 +1661,13 @@ function conflictsWith(policy, role) {
|
|
|
1639
1661
|
return out;
|
|
1640
1662
|
}
|
|
1641
1663
|
/** What the change does to the instance's holder count. */
|
|
1642
|
-
function countRules(
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1664
|
+
function countRules(rules, holders, delta, deny) {
|
|
1665
|
+
const role = rules.key;
|
|
1666
|
+
if (delta === 0) return;
|
|
1667
|
+
const min = rules.min ?? 0;
|
|
1668
|
+
if (!(min > 0 || rules.max !== void 0 || rules.transferOnly === true)) return;
|
|
1646
1669
|
if (!(holders !== void 0 && Number.isInteger(holders) && holders >= 0)) {
|
|
1647
|
-
deny(delta < 0 && min > 0 ? "last-holder" : delta > 0 &&
|
|
1670
|
+
deny(delta < 0 && min > 0 ? "last-holder" : delta > 0 && rules.max !== void 0 ? "max-holders" : "transfer-only", {
|
|
1648
1671
|
role,
|
|
1649
1672
|
holders: null
|
|
1650
1673
|
});
|
|
@@ -1656,17 +1679,85 @@ function countRules(binding, role, holders, delta, deny) {
|
|
|
1656
1679
|
min,
|
|
1657
1680
|
holders
|
|
1658
1681
|
});
|
|
1659
|
-
if (delta > 0 &&
|
|
1682
|
+
if (delta > 0 && rules.max !== void 0 && after > rules.max) deny("max-holders", {
|
|
1660
1683
|
role,
|
|
1661
|
-
max:
|
|
1684
|
+
max: rules.max,
|
|
1662
1685
|
holders
|
|
1663
1686
|
});
|
|
1664
|
-
if (
|
|
1687
|
+
if (rules.transferOnly === true && holders > 0 && after > 0) deny("transfer-only", {
|
|
1665
1688
|
role,
|
|
1666
1689
|
holders
|
|
1667
1690
|
});
|
|
1668
1691
|
}
|
|
1669
1692
|
/**
|
|
1693
|
+
* The rules of a role change that need no subject: `assigns`, `for`,
|
|
1694
|
+
* `exclusiveWith`, `min`, `max` and `transferOnly`, from holder counts and
|
|
1695
|
+
* the target's roles alone. `decideRoleChange` runs the same function after
|
|
1696
|
+
* its actor, tenant and ceiling checks; a service that holds only the
|
|
1697
|
+
* catalog calls it with the `CatalogRole` entries.
|
|
1698
|
+
*/
|
|
1699
|
+
function checkRoleChange(role, input) {
|
|
1700
|
+
const name = role.key;
|
|
1701
|
+
const denials = [];
|
|
1702
|
+
const deny = (reason, detail) => {
|
|
1703
|
+
denials.push(compact({
|
|
1704
|
+
role: name,
|
|
1705
|
+
reason,
|
|
1706
|
+
detail
|
|
1707
|
+
}));
|
|
1708
|
+
};
|
|
1709
|
+
const kind = input.change?.kind;
|
|
1710
|
+
const target = input.change?.target;
|
|
1711
|
+
if (kind !== "assign" && kind !== "revoke" && kind !== "transfer" || target === null || typeof target !== "object") {
|
|
1712
|
+
deny("validation");
|
|
1713
|
+
return freezeDeep({
|
|
1714
|
+
ok: false,
|
|
1715
|
+
denials
|
|
1716
|
+
});
|
|
1717
|
+
}
|
|
1718
|
+
const roles = input.roles ?? [];
|
|
1719
|
+
const targetRoles = isReadonlyArray(target.roles) ? target.roles : [];
|
|
1720
|
+
const already = targetRoles.includes(name);
|
|
1721
|
+
let by = null;
|
|
1722
|
+
if (kind !== "transfer" && input.actorRoles !== void 0 && roles.some((rules) => rules.assigns !== void 0)) {
|
|
1723
|
+
const held = input.actorRoles;
|
|
1724
|
+
by = held.find((actorRole) => roles.find((rules) => rules.key === actorRole)?.assigns?.includes(name) === true) ?? null;
|
|
1725
|
+
if (by === null) deny("not-assignable-by", { held });
|
|
1726
|
+
}
|
|
1727
|
+
if (kind !== "revoke" && !already) {
|
|
1728
|
+
const kinds = role.for;
|
|
1729
|
+
if (kinds !== void 0 && (target.via === void 0 || !kinds.includes(target.via))) deny("not-allowed-for-membership", {
|
|
1730
|
+
via: target.via ?? null,
|
|
1731
|
+
for: kinds
|
|
1732
|
+
});
|
|
1733
|
+
const conflicts = new Set(role.exclusiveWith ?? []);
|
|
1734
|
+
for (const rules of roles) if (rules.exclusiveWith?.includes(name) === true) conflicts.add(rules.key);
|
|
1735
|
+
const clash = targetRoles.filter((held) => conflicts.has(held));
|
|
1736
|
+
if (clash.length > 0) deny("conflicting-role", { with: clash });
|
|
1737
|
+
}
|
|
1738
|
+
const delta = kind === "assign" ? already ? 0 : 1 : kind === "revoke" ? targetRoles.length > 0 && !already ? 0 : -1 : already ? -1 : 0;
|
|
1739
|
+
countRules(role, input.holders, delta, deny);
|
|
1740
|
+
return freezeDeep(denials.length === 0 ? {
|
|
1741
|
+
ok: true,
|
|
1742
|
+
by
|
|
1743
|
+
} : {
|
|
1744
|
+
ok: false,
|
|
1745
|
+
denials
|
|
1746
|
+
});
|
|
1747
|
+
}
|
|
1748
|
+
/** A declared binding's rules, by the name `checkRoleChange` reads. */
|
|
1749
|
+
function rulesOf(binding) {
|
|
1750
|
+
return compact({
|
|
1751
|
+
key: binding.name,
|
|
1752
|
+
min: binding.min,
|
|
1753
|
+
max: binding.max,
|
|
1754
|
+
transferOnly: binding.transferOnly,
|
|
1755
|
+
assigns: binding.assigns,
|
|
1756
|
+
for: binding.for,
|
|
1757
|
+
exclusiveWith: binding.exclusiveWith
|
|
1758
|
+
});
|
|
1759
|
+
}
|
|
1760
|
+
/**
|
|
1670
1761
|
* A live membership of the principal on the instance or on an instance under
|
|
1671
1762
|
* it: the one in-band fact that ties a nested instance to a tenant.
|
|
1672
1763
|
*/
|
|
@@ -1745,10 +1836,10 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1745
1836
|
deny("unknown-role");
|
|
1746
1837
|
return done(null);
|
|
1747
1838
|
}
|
|
1748
|
-
const scope = global ? "global" : resolveScope(scopes, change.scope);
|
|
1839
|
+
const scope = global ? "global" : resolveScope$1(scopes, change.scope);
|
|
1749
1840
|
const customAt = named.map((role) => customRoleScope(role, scopes));
|
|
1750
1841
|
const on = declared ? binding?.on ?? findRole(policy.vocabulary?.roles, name)?.on : customAt.includes(scope) ? scope : customAt[0];
|
|
1751
|
-
const heldAt = typeof on === "string" ? resolveScope(scopes, on) : global ? "global" : void 0;
|
|
1842
|
+
const heldAt = typeof on === "string" ? resolveScope$1(scopes, on) : global ? "global" : void 0;
|
|
1752
1843
|
if (scope === void 0 || heldAt === void 0 || heldAt !== scope) {
|
|
1753
1844
|
deny("scope", { expected: heldAt ?? null });
|
|
1754
1845
|
return done(null);
|
|
@@ -1758,7 +1849,7 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1758
1849
|
let custom;
|
|
1759
1850
|
if (!global) {
|
|
1760
1851
|
const root = scopes[0]?.name;
|
|
1761
|
-
const supplied = change.within === void 0 ? void 0 : Object.entries(change.within).find(([key]) => resolveScope(scopes, key) === root)?.[1];
|
|
1852
|
+
const supplied = change.within === void 0 ? void 0 : Object.entries(change.within).find(([key]) => resolveScope$1(scopes, key) === root)?.[1];
|
|
1762
1853
|
if (scope === root) tenant = id;
|
|
1763
1854
|
else {
|
|
1764
1855
|
const anchor = heldAnchor(principal, scopes, scope, id, now);
|
|
@@ -1787,9 +1878,8 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1787
1878
|
return done(null);
|
|
1788
1879
|
}
|
|
1789
1880
|
const self = target.id === principal.id;
|
|
1790
|
-
const targetRoles = isReadonlyArray(target.roles) ? target.roles : [];
|
|
1791
|
-
const already = targetRoles.includes(name);
|
|
1792
1881
|
let by = null;
|
|
1882
|
+
let actorRoles;
|
|
1793
1883
|
if (kind === "transfer") {
|
|
1794
1884
|
if (self) deny("self-demotion");
|
|
1795
1885
|
if (global ? (principal.roles ?? []).includes(name) : holdsAt(principal, name, scope, id, now)) by = name;
|
|
@@ -1799,24 +1889,26 @@ function decideRoleChangeWith(policy, principal, scopes, change, customRoles, au
|
|
|
1799
1889
|
const allowed = authority(tenant);
|
|
1800
1890
|
const revocable = kind === "revoke" && custom !== void 0 && allowed.inert?.has(name);
|
|
1801
1891
|
if (!allowed.assignable.has(name) && revocable !== true) deny("not-assignable-by");
|
|
1802
|
-
else if (custom === void 0 && usesAssigns(policy) && !allowed.manage)
|
|
1803
|
-
const held = global ? rankRoles(policy, (principal.roles ?? []).filter((role) => declaredRoleNames(policy).has(role))) : rolesAtInstance(policy, principal, scopes, scope, id, within, now);
|
|
1804
|
-
by = held.find((role) => bindingOf(policy, role)?.assigns?.includes(name) === true) ?? null;
|
|
1805
|
-
if (by === null) deny("not-assignable-by", { held });
|
|
1806
|
-
}
|
|
1807
|
-
}
|
|
1808
|
-
if (kind !== "revoke" && !already) {
|
|
1809
|
-
const kinds = custom === void 0 ? binding?.for : customForKinds(policy, custom);
|
|
1810
|
-
if (kinds !== void 0 && (target.via === void 0 || !kinds.includes(target.via))) deny("not-allowed-for-membership", {
|
|
1811
|
-
via: target.via ?? null,
|
|
1812
|
-
for: kinds
|
|
1813
|
-
});
|
|
1814
|
-
const conflicts = custom === void 0 ? conflictsWith(policy, name) : new Set(includedRoles(custom).flatMap((include) => Array.from(conflictsWith(policy, include))));
|
|
1815
|
-
const clash = targetRoles.filter((role) => conflicts.has(role));
|
|
1816
|
-
if (clash.length > 0) deny("conflicting-role", { with: clash });
|
|
1892
|
+
else if (custom === void 0 && usesAssigns(policy) && !allowed.manage) actorRoles = global ? rankRoles(policy, (principal.roles ?? []).filter((role) => declaredRoleNames(policy).has(role))) : rolesAtInstance(policy, principal, scopes, scope, id, within, now);
|
|
1817
1893
|
}
|
|
1818
|
-
const
|
|
1819
|
-
|
|
1894
|
+
const conflicts = custom === void 0 ? conflictsWith(policy, name) : new Set(includedRoles(custom).flatMap((include) => Array.from(conflictsWith(policy, include))));
|
|
1895
|
+
const checked = checkRoleChange(compact({
|
|
1896
|
+
...binding === void 0 ? {} : rulesOf(binding),
|
|
1897
|
+
key: name,
|
|
1898
|
+
for: custom === void 0 ? binding?.for : customForKinds(policy, custom),
|
|
1899
|
+
exclusiveWith: [...conflicts],
|
|
1900
|
+
assigns: void 0
|
|
1901
|
+
}), compact({
|
|
1902
|
+
change: {
|
|
1903
|
+
kind,
|
|
1904
|
+
target
|
|
1905
|
+
},
|
|
1906
|
+
holders: change.holders,
|
|
1907
|
+
roles: actorRoles === void 0 ? void 0 : policy.roles.map(rulesOf),
|
|
1908
|
+
actorRoles
|
|
1909
|
+
}));
|
|
1910
|
+
if (checked.ok) by = actorRoles === void 0 ? by : checked.by;
|
|
1911
|
+
else denials.push(...checked.denials);
|
|
1820
1912
|
return done(by);
|
|
1821
1913
|
}
|
|
1822
1914
|
//#endregion
|
|
@@ -1857,4 +1949,4 @@ function toCsvRow(event) {
|
|
|
1857
1949
|
].map(field).join(",");
|
|
1858
1950
|
}
|
|
1859
1951
|
//#endregion
|
|
1860
|
-
export {
|
|
1952
|
+
export { memoryCustomRoleSource as A, stripeEntitlementSource as C, validateApprovalPolicy as D, memoryApprovalPolicySource as E, sqlFunction as F, memoryMembershipSource as M, memorySettingsSource as N, defineOperations as O, memorySnapshotSource as P, memoryLimitStore as S, approvalPoliciesFor as T, arazzoFindings as _, normalizeMembership as a, memoryRelationSource as b, crud as c, snapshotFor as d, customRoleSource as f, localSnapshotManifest as g, defineApp as h, decideRoleChange as i, memoryEntitlementSource as j, isOperationEffect as k, readable as l, shadowMode as m, toCsvRow as n, normalizeMemberships as o, mayAccess as p, checkRoleChange as r, resolveScope as s, CSV_COLUMNS as t, writable as u, simulateArazzo as v, approvalPolicies as w, limits as x, signPolicyDocument as y };
|
package/dist/ssf/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as SsfSubject, C as SsfEventName, D as SsfReceiver, E as SsfPermDockOptions, M as SsfTransmitterConfiguration, N as SsfVerification, O as SsfStreamConfiguration, S as SsfEventListener, T as SsfPermDock, _ as SetSubject, a as PollHandle, b as SsfEventHandler, c as PushSetOptions, d as SetDelivery, f as SetDeliveryFailureCause, g as SetQueue, h as SetPollHandlerOptions, i as CaepReason, j as SsfSubjectResolver, k as SsfStreamStatus, l as ReplayStore, m as SetEvent, n as CaepEventName, o as PollOptions, p as SetError, r as CaepInitiatingEntity, s as PollResult, t as CaepCommon, u as RiscEventName, v as SignSetOptions, w as SsfOnEvent, x as SsfEventInput, y as SsfAuditEvent } from "../types-
|
|
2
|
-
import { t as memoryReplayStore } from "../replay-
|
|
3
|
-
import {
|
|
4
|
-
export { type CaepAssuranceLevelChange, type CaepCommon, type CaepCredentialChange, type CaepDeviceComplianceChange, type CaepEventName, type CaepEvents, type CaepInitiatingEntity, type CaepReason, type CaepTokenClaimsChange, type PollHandle, type PollOptions, type PollResult, type PushSetOptions, type ReplayStore, type RiscAccountDisabled, type RiscCredentialCompromise, type RiscEventName, type RiscEvents, SSF_POLL_DELIVERY, SSF_PUSH_DELIVERY, type SetDelivery, type SetDeliveryFailureCause, type SetError, type SetEvent, type SetPollHandlerOptions, type SetQueue, type SetSubject, type SignSetOptions, type SsfAuditEvent, type SsfEventHandler, type SsfEventInput, type SsfEventListener, type SsfEventName, type SsfOnEvent, type SsfPermDock, type SsfPermDockOptions, type SsfReceiver, type SsfStreamConfiguration, type SsfStreamStatus, type SsfSubject, type SsfSubjectResolver, type SsfTransmitterConfiguration, type SsfVerification, caepEvents, createPermDock, memoryReplayStore, memorySetQueue, pushSet, riscEvents, setPollHandler, signSet, streamVerificationEvent };
|
|
1
|
+
import { A as SsfSubject, C as SsfEventName, D as SsfReceiver, E as SsfPermDockOptions, M as SsfTransmitterConfiguration, N as SsfVerification, O as SsfStreamConfiguration, S as SsfEventListener, T as SsfPermDock, _ as SetSubject, a as PollHandle, b as SsfEventHandler, c as PushSetOptions, d as SetDelivery, f as SetDeliveryFailureCause, g as SetQueue, h as SetPollHandlerOptions, i as CaepReason, j as SsfSubjectResolver, k as SsfStreamStatus, l as ReplayStore, m as SetEvent, n as CaepEventName, o as PollOptions, p as SetError, r as CaepInitiatingEntity, s as PollResult, t as CaepCommon, u as RiscEventName, v as SignSetOptions, w as SsfOnEvent, x as SsfEventInput, y as SsfAuditEvent } from "../types-cTos-H7p.js";
|
|
2
|
+
import { t as memoryReplayStore } from "../replay-DCDD_ZfL.js";
|
|
3
|
+
import { A as createPermDock, C as memorySsfStreamStore, D as PollSetsResult, E as PollSetsOptions, O as PolledSet, S as SsfStreamStore, T as setPollHandler, _ as SsfFanOut, a as CaepTokenClaimsChange, b as ssfTransmitter, c as RiscEvents, d as caepEvents, f as pushSet, g as FanOutSetOptions, h as streamVerificationEvent, i as CaepEvents, k as pollSets, l as SSF_POLL_DELIVERY, m as signSet, n as CaepCredentialChange, o as RiscAccountDisabled, p as riscEvents, r as CaepDeviceComplianceChange, s as RiscCredentialCompromise, t as CaepAssuranceLevelChange, u as SSF_PUSH_DELIVERY, v as SsfTransmitterOptions, w as memorySetQueue, x as SsfStream, y as fanOutSet } from "../index-CMiPH2Tv.js";
|
|
4
|
+
export { type CaepAssuranceLevelChange, type CaepCommon, type CaepCredentialChange, type CaepDeviceComplianceChange, type CaepEventName, type CaepEvents, type CaepInitiatingEntity, type CaepReason, type CaepTokenClaimsChange, type FanOutSetOptions, type PollHandle, type PollOptions, type PollResult, type PollSetsOptions, type PollSetsResult, type PolledSet, type PushSetOptions, type ReplayStore, type RiscAccountDisabled, type RiscCredentialCompromise, type RiscEventName, type RiscEvents, SSF_POLL_DELIVERY, SSF_PUSH_DELIVERY, type SetDelivery, type SetDeliveryFailureCause, type SetError, type SetEvent, type SetPollHandlerOptions, type SetQueue, type SetSubject, type SignSetOptions, type SsfAuditEvent, type SsfEventHandler, type SsfEventInput, type SsfEventListener, type SsfEventName, type SsfFanOut, type SsfOnEvent, type SsfPermDock, type SsfPermDockOptions, type SsfReceiver, type SsfStream, type SsfStreamConfiguration, type SsfStreamStatus, type SsfStreamStore, type SsfSubject, type SsfSubjectResolver, type SsfTransmitterConfiguration, type SsfTransmitterOptions, type SsfVerification, caepEvents, createPermDock, fanOutSet, memoryReplayStore, memorySetQueue, memorySsfStreamStore, pollSets, pushSet, riscEvents, setPollHandler, signSet, ssfTransmitter, streamVerificationEvent };
|