permdock 0.5.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-B4R5fnMU.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-Djo_PyZc.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-DJ6Yd5z1.js → approvals-CMRfsbBh.js} +74 -48
- package/dist/{arazzo-B6lebmiQ.js → arazzo-ClrF3PVb.js} +2 -2
- package/dist/{arazzo-BWhNF-k0.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-Dg8XsRaO.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-BMZPIVUM.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-CZzhx-Vj.js → bind-D1nO6fiC.js} +5 -5
- package/dist/{bind--9EFVYWF.d.ts → bind-JDuvxjuW.d.ts} +7 -7
- package/dist/{build-instance-BMnAudHn.js → build-instance-DxE7czo9.js} +1 -1
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-BSslw1QV.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-R_A__RsH.js → catalog-BaMQfQ6Y.js} +3 -3
- package/dist/{catalog-BECMPrwc.js → catalog-D69WhFii.js} +43 -13
- package/dist/{catalog-doc-C9wjsfNY.js → catalog-doc-CV9s6B1S.js} +28 -5
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
- package/dist/{create-BWRSXgOF.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-CIoHNevm.js → cloud-CO8pYtwr.js} +5 -5
- package/dist/{codemod-Cxvvc70T.js → codemod-BP6n8N9L.js} +3 -3
- package/dist/{codemod-Bmj9dWMH.js → codemod-i4N2BhDc.js} +3 -3
- package/dist/{collect-CrZJJnEF.js → collect-BaWeMjwV.js} +17 -8
- package/dist/{collect-DloHbDVa.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-Ckm2HqBZ.d.ts → compile-COM2VKuN.d.ts} +3 -3
- package/dist/{completion-BqhRBJD8.js → completion-BNdVf7X2.js} +3 -3
- package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
- package/dist/{config-B46rm9sc.js → config-DGZzMV1B.js} +2 -2
- package/dist/{config-report-DUgj62Ai.js → config-report-Cm7UITNA.js} +3 -3
- package/dist/connector-schema-_VCSsdtD.js +433 -0
- package/dist/{context-bbFHR-0D.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-0VZ7Pdiu.d.ts → create-B2-CQqCI.d.ts} +5 -5
- package/dist/{create-C3b4B5eF.js → create-Cb86Z8Im.js} +9 -8
- package/dist/{create-DnrmLnLW.js → create-DJrlhEp9.js} +5 -5
- package/dist/{create-BFfm17UA.d.ts → create-QHuuPw3q.d.ts} +7 -7
- package/dist/{create-BDS7wc3y.d.ts → create-UTnUVETj.d.ts} +30 -10
- package/dist/{credential-DM2um3ha.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-DaXVdDhM.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-D8jDHgsl.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
- package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
- package/dist/{describe-BZUsixiL.d.ts → describe-O0SwYIK8.d.ts} +2 -2
- package/dist/{diff-CxZo9pTq.js → diff-Btr1c1Ow.js} +2 -2
- package/dist/{diff-DCePiN6M.js → diff-DzT-xD13.js} +10 -10
- package/dist/{doctor-DFjUxf2f.js → doctor-BU1szn63.js} +241 -49
- package/dist/{doctor-CxiwSfqH.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-C2PXIv4c.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
- package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
- package/dist/{evaluate-_R8QkWaf.js → evaluate-B_oqFbWC.js} +130 -34
- package/dist/{evaluations-16UqqQ6W.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
- package/dist/{evaluations-DZ2CbV5k.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-qKJBuRqy.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
- package/dist/{fetch-adapter-g0ypLkID.js → fetch-adapter-De-u6vhJ.js} +3 -3
- package/dist/{fields-D9tPVUUS.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-D2lZt4Dd.js → from-snapshot-Bz469dIh.js} +17 -10
- package/dist/generate-3FNO5P5Q.js +159 -0
- package/dist/{grantee-Cn1HyUsI.js → grantee-BrRANrpT.js} +14 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
- package/dist/{grantee-match-DHArqY82.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-DTcZOzhF.js → helpers-DY3vXuGs.js} +3 -3
- package/dist/hono/index.d.ts +5 -5
- package/dist/hono/index.js +3 -3
- package/dist/{hosted-DBDX0M-P.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
- package/dist/{hosted-BZIAYvon.js → hosted-XBgU6RGT.js} +34 -12
- package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
- package/dist/{import-DMmOG27O.js → import-Bz0GefWg.js} +5 -5
- package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
- package/dist/{index-CxGUswIC.d.ts → index-BE8y3moU.d.ts} +50 -8
- package/dist/{index-Chrs5fQ-.d.ts → index-BSfRl0hZ.d.ts} +6 -6
- package/dist/{index-DOVf7RJv.d.ts → index-BTkwrK7v.d.ts} +155 -17
- package/dist/index-CMiPH2Tv.d.ts +206 -0
- package/dist/{index-SGdIQyzc.d.ts → index-DH9DUDEM.d.ts} +18 -3
- package/dist/{index-BcHcPyIo.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-Omfd793B.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
- package/dist/{instance-snapshot-Cxq4ygFc.js → instance-snapshot-CjcwnEiV.js} +20 -14
- package/dist/jwt/index.d.ts +83 -5
- package/dist/jwt/index.js +143 -5
- package/dist/{kernel-5JatXyND.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-CtKR3GXL.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-TCAdw-eW.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-BShP7Vf4.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-ahr8rHu3.js → openapi-DMocl1bh.js} +4 -4
- package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
- package/dist/{openapi-DTaEmTSW.js → openapi-ztVaux6j.js} +8 -8
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
- package/dist/{operations-CxybZErY.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-Dyw8fyPF.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-BatFgAA4.js → ownership-Z2LpxsGa.js} +1349 -883
- 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-DgqtruPn.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-B9JxkBwC.js → permdock-BfWEeMqk.js} +177 -49
- package/dist/{permdock-D7eeLJER.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
- package/dist/{vocabulary-D6lPdb4Z.d.ts → permission-types-DhNEmoRG.d.ts} +4 -62
- package/dist/{permissions-oEWfl-kl.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
- package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
- package/dist/{permissions-CZKiUfFM.js → permissions-DArULThq.js} +4 -4
- package/dist/pkce-5h8NgMQJ.js +21 -0
- package/dist/{policies-CO1oOymN.js → policies-B2lZIurj.js} +3 -3
- package/dist/{policy-Czo4n3Hs.d.ts → policy-B7dg_yzu.d.ts} +2 -2
- package/dist/{policy-DLZJ5gAp.js → policy-DaJy4nK4.js} +17 -8
- package/dist/{policy-from-catalog-DzhEc3Y9.js → policy-from-catalog-DFWYkNdu.js} +9 -9
- package/dist/{policy-types-DzwivBgR.d.ts → policy-types-B-F-qAZk.d.ts} +109 -5
- package/dist/postgres-store-BL9M_CA1.js +1001 -0
- package/dist/{postgrest-NUqZT-RB.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
- package/dist/{postgrest-CW0IqC-U.js → postgrest-r5faDIzD.js} +47 -5
- package/dist/{powersync-BHfuehf3.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-DXlt-vks.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
- package/dist/prompt-DwtVemER.js +935 -0
- package/dist/{protected-DEPHc2xV.d.ts → protected-BwZYL1X_.d.ts} +6 -5
- package/dist/{protected-DfjY5mLA.js → protected-DXE3cQYg.js} +2 -2
- package/dist/{provider-CC-u3bYP.js → provider-BQsTYYy0.js} +2 -2
- package/dist/{provider-DMVt6yYn.d.ts → provider-Csk-THAn.d.ts} +1 -1
- package/dist/{provider-store-B5Yrkhzr.js → provider-store-IgqQipCO.js} +2 -2
- package/dist/{pull-BgIfno6w.js → pull-CN5OLxrF.js} +7 -7
- package/dist/pull-Cty6Ovyu.js +1 -0
- package/dist/{push-CmFVBOeI.js → push-tVdG8dUL.js} +54 -14
- package/dist/{pushed-policy-BImMTTIM.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
- package/dist/{pushed-policy-DobP7AHI.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 +214 -24
- package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
- package/dist/{replay-D7iKcLFe.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
- package/dist/{request-context-BTRTG7OT.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-BA8an5Ap.js → rls-Ck_PocSp.js} +32 -8
- package/dist/{rls-j6t43t7n.js → rls-CxBZb4rZ.js} +478 -534
- package/dist/{role-builder-CXbis5-X.js → role-builder-C1VJzvcr.js} +3 -3
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{rpc-aPyNi6tA.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-BjhTOi6u.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
- package/dist/{run-DOfMtc9V.js → run-uLD2aWuO.js} +7 -7
- package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
- package/dist/{saas-FO-Q8oj0.js → saas-Az_Kz-4D.js} +7 -7
- package/dist/{scan-BOI5tJ-6.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-DqCT4CgZ.js → server-Bnga6I50.js} +3 -3
- package/dist/{server-types-BLd4MnBX.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
- package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
- package/dist/{shared-CD11nBbC.js → shared-fMKOv8hP.js} +46 -39
- package/dist/{sink-Bj_lDUDq.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-CXUWfsNy.js → snapshot-CbGmYiJx.js} +4 -4
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
- package/dist/{snapshot-cache-DqK9eDmM.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-BV9j0DeZ.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-DLfUWFAI.js → src-DLFrtrrC.js} +154 -53
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +640 -211
- package/dist/{standard-webhooks-6lg8v_is.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
- package/dist/{store-4u_hxjWa.js → store-DSP9oGvh.js} +15 -7
- package/dist/{store-options-BqEakYRa.js → store-options-B_poyYvg.js} +6 -6
- package/dist/{stores-ClZUgeoP.d.ts → stores-BAZwSYZA.d.ts} +6 -5
- package/dist/{stores-BbsD4fAR.js → stores-BqEuHC05.js} +2 -2
- package/dist/{stream-7-xmnf3U.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-Dxlp8A94.js → supabase--0aJdLEd.js} +9 -7
- package/dist/{supabase-9pqI57pW.js → supabase-Bqp7iIY2.js} +3 -3
- package/dist/supabase-hook-DJxC4PoP.js +1 -0
- package/dist/{supabase-hook-DdDQhMlw.js → supabase-hook-Dg0SrQWR.js} +1069 -123
- 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-5Ut_pbKy.d.ts → types-BWZybqs9.d.ts} +112 -8
- package/dist/{types-CZTnPFzM.d.ts → types-BXMYB7BY.d.ts} +2 -2
- package/dist/{types-CdlxsYQh.d.ts → types-BfVmNJO5.d.ts} +14 -3
- package/dist/{types-BqAKcRNW.d.ts → types-CIeZcG8v.d.ts} +2 -2
- package/dist/{types-BNORmDM8.d.ts → types-CKV71kKh.d.ts} +4 -4
- package/dist/{types-tIgIeIKJ.d.ts → types-CQVEQawv.d.ts} +4 -4
- package/dist/{types-BjV-fqcA.d.ts → types-CeIscIKp.d.ts} +4 -4
- package/dist/{types-_sHy8BQf.d.ts → types-CfiKC5aN.d.ts} +1 -1
- package/dist/{types-ClZaWzfb.d.ts → types-D3A19w4A.d.ts} +8 -4
- package/dist/{types-C8-KNsFf.d.ts → types-DBHftjgS.d.ts} +15 -8
- package/dist/{types-CCpc2Dcv.d.ts → types-DC44-hqb.d.ts} +2 -2
- package/dist/{types-fbZ7JEXr.d.ts → types-DXmwu78Z.d.ts} +4 -4
- package/dist/{types-DiQjupG2.d.ts → types-cTos-H7p.d.ts} +2 -2
- package/dist/{types-DX0LaKTb.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-T5mXq98v.js → usage-Bybmck7f.js} +7 -7
- package/dist/{usage-DHtE8j4E.js → usage-CDaLXCfL.js} +2 -2
- package/dist/usage-y-kBNdqs.js +1 -0
- package/dist/{validation-error-Bg5Tpluk.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
- package/dist/{verify-DbCL9bnB.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-CKy4MQSY.d.ts → waiter-DwEyouan.d.ts} +2 -2
- package/dist/watch-Bd9mx3rd.js +1 -0
- package/dist/{watch-CszoTJMq.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-Dv-WTP-w.js → where-scope-wq2coopv.js} +41 -21
- package/dist/{who-can-D0QoYbEb.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-Bd1Tejur.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 +5 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -0
- package/skills/permdock-wire/references/adapters.md +14 -0
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-DjhMYYCq.js +0 -1
- package/dist/collect-FlXJlhus.js +0 -1
- package/dist/index-D8EovfsP.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-CbzkqL_M.js +0 -1
- package/dist/powersync-bYUDLOAO.js +0 -538
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/pull-ByOks_Tg.js +0 -1
- package/dist/run-CNsApDpd.js +0 -1
- package/dist/supabase-hook-CXcGpHqq.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/usage-CHOtwL19.js +0 -1
- package/dist/watch-Cb-NcaUw.js +0 -1
|
@@ -2,19 +2,20 @@ import { t as compact } from "./compact-CAf557ZB.js";
|
|
|
2
2
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
3
|
import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-BKy0EfhN.js";
|
|
4
4
|
import { o as sameId } from "./expiry-D4_YKRKD.js";
|
|
5
|
-
import { c as listPermissions } from "./permission-registry-
|
|
5
|
+
import { c as listPermissions } from "./permission-registry-DpPtSKNZ.js";
|
|
6
6
|
import { g as secondsOf, o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
|
|
7
|
-
import {
|
|
8
|
-
import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-
|
|
9
|
-
import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-
|
|
7
|
+
import { f as scopeList, h as tenantOf, o as normalizeMemberships, s as resolveScope, t as activeFor } from "./scopes-BHsc-wp-.js";
|
|
8
|
+
import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-C5rOdTp5.js";
|
|
9
|
+
import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-BrRANrpT.js";
|
|
10
10
|
import { a as grantCoversField, o as pickVisible, r as readWireValidity, t as isActive } from "./validity-CZ7-y0Cj.js";
|
|
11
|
-
import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-
|
|
11
|
+
import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-CmeBQ6Nv.js";
|
|
12
12
|
import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
|
|
13
|
-
import { r as tokenPayload, t as decisionToken } from "./token-
|
|
13
|
+
import { r as tokenPayload, t as decisionToken } from "./token-2qYDvXz2.js";
|
|
14
14
|
import { t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
|
|
15
|
-
import { n as matchGrantee } from "./grantee-match-
|
|
15
|
+
import { n as matchGrantee } from "./grantee-match-0RtHWQDx.js";
|
|
16
16
|
import { t as resourceIdOf } from "./resource-ref-CaS9yVPi.js";
|
|
17
|
-
import {
|
|
17
|
+
import { i as permittedIds, o as deniedFor, r as mayUse, s as signSnapshot, t as whereFromGrants } from "./where-scope-wq2coopv.js";
|
|
18
|
+
import { i as decideAllWith, n as canAllWith } from "./checks-BC_0mPIq.js";
|
|
18
19
|
//#region src/core/snapshot-evaluate.ts
|
|
19
20
|
function coveredByInclude(snapshot, permission) {
|
|
20
21
|
const include = snapshot.include;
|
|
@@ -51,7 +52,7 @@ function scopeOk(snapshot, grant, permission, subject, data, team, now, only) {
|
|
|
51
52
|
};
|
|
52
53
|
if (!activeFor(membership, scopes, principal.tenant)) return {
|
|
53
54
|
ok: false,
|
|
54
|
-
reason: principal.tenant === void 0 ? "no-membership" : "tenant-mismatch"
|
|
55
|
+
reason: principal.tenant === void 0 && principal.unheldTenant === void 0 ? "no-tenant" : principal.tenant === void 0 ? "no-membership" : "tenant-mismatch"
|
|
55
56
|
};
|
|
56
57
|
if (!inTeam(membership, scopes, team)) return {
|
|
57
58
|
ok: false,
|
|
@@ -361,7 +362,8 @@ function subjectFromSnapshot(snapshot, tenant) {
|
|
|
361
362
|
return freezeDeep(compact({
|
|
362
363
|
principal: principal === null ? null : compact({
|
|
363
364
|
...principal,
|
|
364
|
-
tenant: nextTenant
|
|
365
|
+
tenant: nextTenant,
|
|
366
|
+
unheldTenant: nextTenant === void 0 ? tenant : void 0
|
|
365
367
|
}),
|
|
366
368
|
delegation: fromWireDelegation(snapshot.subject.delegation),
|
|
367
369
|
context: snapshot.subject.context,
|
|
@@ -440,9 +442,14 @@ function fromSnapshot(snapshot, options = {}) {
|
|
|
440
442
|
const instance = {
|
|
441
443
|
can,
|
|
442
444
|
decide,
|
|
445
|
+
canAll: (checks, decideOptions) => canAllWith(can, checks, decideOptions),
|
|
446
|
+
decideAll: (checks, decideOptions) => decideAllWith(decide, checks, decideOptions),
|
|
443
447
|
decideEach(permission, rows, decideOptions) {
|
|
444
448
|
return Object.freeze(rows.map((row) => run(permission, row, decideOptions)));
|
|
445
449
|
},
|
|
450
|
+
decideIds(permission, ids) {
|
|
451
|
+
return Promise.resolve(Object.freeze(ids.map(() => deniedFor(permission, "unsupported"))));
|
|
452
|
+
},
|
|
446
453
|
decideFor(_principalId, permission) {
|
|
447
454
|
return Promise.resolve(deniedFor(permission, "unsupported"));
|
|
448
455
|
},
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { n as SCIM_TABLES, r as SCIM_UNIQUE } from "./postgres-store-BL9M_CA1.js";
|
|
2
|
+
import { o as quoteSqlIdent } from "./sql-B96movIM.js";
|
|
3
|
+
import { n as fileSummary, t as applyFiles } from "./files-acUbNwWt.js";
|
|
4
|
+
import { r as driftOf } from "./output-files-CCMdcFWb.js";
|
|
5
|
+
//#region src/cli/scim/generate.ts
|
|
6
|
+
const SCIM_MARKER = "-- generated by permdock scim generate";
|
|
7
|
+
/** The client roles each dialect's data API connects as; none may reach the directory. */
|
|
8
|
+
function clientRoles(dialect) {
|
|
9
|
+
switch (dialect) {
|
|
10
|
+
case "supabase": return [
|
|
11
|
+
"public",
|
|
12
|
+
"anon",
|
|
13
|
+
"authenticated"
|
|
14
|
+
];
|
|
15
|
+
case "neon": return [
|
|
16
|
+
"public",
|
|
17
|
+
"anonymous",
|
|
18
|
+
"authenticated"
|
|
19
|
+
];
|
|
20
|
+
case "guc": return ["public"];
|
|
21
|
+
default: return dialect;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The directory `postgresDirectoryStore` reads and writes: users, groups and
|
|
26
|
+
* group members keyed on `(tenant, id)`, with `userName` and `externalId`
|
|
27
|
+
* unique per tenant. Member values are SCIM `value`s, not a foreign key to
|
|
28
|
+
* users, because a member may be a nested group. No client role may read
|
|
29
|
+
* or write the tables.
|
|
30
|
+
*/
|
|
31
|
+
function scimSchemaSql(input) {
|
|
32
|
+
const schema = quoteSqlIdent(input.schema);
|
|
33
|
+
const table = (name) => `${schema}.${quoteSqlIdent(name)}`;
|
|
34
|
+
const users = table(SCIM_TABLES.users);
|
|
35
|
+
const groups = table(SCIM_TABLES.groups);
|
|
36
|
+
const members = table(SCIM_TABLES.members);
|
|
37
|
+
const all = [
|
|
38
|
+
users,
|
|
39
|
+
groups,
|
|
40
|
+
members
|
|
41
|
+
].join(", ");
|
|
42
|
+
return `${SCIM_MARKER} (--dialect ${input.dialect})
|
|
43
|
+
-- the SCIM directory postgresDirectoryStore reads and writes for scimHandler; every row belongs to one tenant
|
|
44
|
+
create schema if not exists ${schema};
|
|
45
|
+
|
|
46
|
+
create table if not exists ${users} (
|
|
47
|
+
seq bigint generated always as identity unique,
|
|
48
|
+
tenant text not null check (tenant <> ''),
|
|
49
|
+
id text not null check (id <> ''),
|
|
50
|
+
user_name text not null,
|
|
51
|
+
external_id text,
|
|
52
|
+
active boolean not null default true,
|
|
53
|
+
emails jsonb,
|
|
54
|
+
x jsonb,
|
|
55
|
+
created_at timestamptz not null default now(),
|
|
56
|
+
updated_at timestamptz not null default now(),
|
|
57
|
+
revision bigint not null default 1,
|
|
58
|
+
primary key (tenant, id),
|
|
59
|
+
constraint ${quoteSqlIdent(SCIM_UNIQUE.userName)} unique (tenant, user_name),
|
|
60
|
+
constraint ${quoteSqlIdent(SCIM_UNIQUE.userExternalId)} unique (tenant, external_id)
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
create table if not exists ${groups} (
|
|
64
|
+
seq bigint generated always as identity unique,
|
|
65
|
+
tenant text not null check (tenant <> ''),
|
|
66
|
+
id text not null check (id <> ''),
|
|
67
|
+
display_name text not null,
|
|
68
|
+
external_id text,
|
|
69
|
+
roles text[],
|
|
70
|
+
x jsonb,
|
|
71
|
+
created_at timestamptz not null default now(),
|
|
72
|
+
updated_at timestamptz not null default now(),
|
|
73
|
+
revision bigint not null default 1,
|
|
74
|
+
primary key (tenant, id),
|
|
75
|
+
constraint ${quoteSqlIdent(SCIM_UNIQUE.groupExternalId)} unique (tenant, external_id)
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
create table if not exists ${members} (
|
|
79
|
+
tenant text not null,
|
|
80
|
+
group_id text not null,
|
|
81
|
+
user_id text not null,
|
|
82
|
+
position integer not null default 0,
|
|
83
|
+
primary key (tenant, group_id, user_id),
|
|
84
|
+
foreign key (tenant, group_id) references ${groups} (tenant, id) on delete cascade
|
|
85
|
+
);
|
|
86
|
+
create index if not exists ${quoteSqlIdent(`${SCIM_TABLES.members}_user_idx`)} on ${members} (tenant, user_id);
|
|
87
|
+
|
|
88
|
+
-- server only: grant select, insert, update and delete on these tables to the role postgresDirectoryStore
|
|
89
|
+
-- connects as when it does not own them
|
|
90
|
+
alter table ${users} enable row level security;
|
|
91
|
+
alter table ${groups} enable row level security;
|
|
92
|
+
alter table ${members} enable row level security;
|
|
93
|
+
revoke all on table ${all} from ${clientRoles(input.dialect).join(", ")};
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
/** `supabase/schemas/<schema>/scim.sql` for Supabase, the pg-delta per-schema layout; `permdock_scim.sql` otherwise. */
|
|
97
|
+
function scimOut(dialect, schema) {
|
|
98
|
+
return dialect === "supabase" ? `supabase/schemas/${schema}/scim.sql` : "permdock_scim.sql";
|
|
99
|
+
}
|
|
100
|
+
function runScimGenerate(input) {
|
|
101
|
+
const dialect = input.dialect ?? input.config.rls?.dialect ?? "supabase";
|
|
102
|
+
const schema = input.schema ?? input.config.rls?.schema ?? "permdock";
|
|
103
|
+
const sql = scimSchemaSql({
|
|
104
|
+
schema,
|
|
105
|
+
dialect
|
|
106
|
+
});
|
|
107
|
+
const out = input.out ?? scimOut(dialect, schema);
|
|
108
|
+
const data = {
|
|
109
|
+
out,
|
|
110
|
+
dialect,
|
|
111
|
+
schema,
|
|
112
|
+
tables: Object.values(SCIM_TABLES).map((name) => `${schema}.${name}`)
|
|
113
|
+
};
|
|
114
|
+
if (out === "-") return {
|
|
115
|
+
code: 0,
|
|
116
|
+
output: sql.trimEnd(),
|
|
117
|
+
data: {
|
|
118
|
+
...data,
|
|
119
|
+
sql
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
if (input.check) {
|
|
123
|
+
const drift = driftOf(input.cwd, [{
|
|
124
|
+
part: "scim",
|
|
125
|
+
rel: out,
|
|
126
|
+
text: sql
|
|
127
|
+
}]);
|
|
128
|
+
return drift.length === 0 ? {
|
|
129
|
+
code: 0,
|
|
130
|
+
output: `${out} is current`,
|
|
131
|
+
data
|
|
132
|
+
} : {
|
|
133
|
+
code: 1,
|
|
134
|
+
output: `${drift.join("\n")}\nrun permdock scim generate`,
|
|
135
|
+
data: {
|
|
136
|
+
...data,
|
|
137
|
+
drift
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
const applied = applyFiles(input.cwd, [{
|
|
142
|
+
path: out,
|
|
143
|
+
text: sql
|
|
144
|
+
}], { dryRun: input.dryRun });
|
|
145
|
+
return {
|
|
146
|
+
code: 0,
|
|
147
|
+
output: fileSummary(applied, input.dryRun),
|
|
148
|
+
data: {
|
|
149
|
+
...data,
|
|
150
|
+
files: applied
|
|
151
|
+
},
|
|
152
|
+
next: [{
|
|
153
|
+
when: "in CI, to fail when the file is stale",
|
|
154
|
+
command: "permdock scim generate --check"
|
|
155
|
+
}]
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
//#endregion
|
|
159
|
+
export { runScimGenerate };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep, t as freezeCopy } from "./freeze-CrU8nQeX.js";
|
|
3
3
|
import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-DXSHAMIa.js";
|
|
4
|
-
import { c as listPermissions, o as isPermission } from "./permission-registry-
|
|
4
|
+
import { c as listPermissions, o as isPermission } from "./permission-registry-DpPtSKNZ.js";
|
|
5
5
|
import { i as readAppData, r as parseAppData, t as assertAppData } from "./app-data-MuyzVqX8.js";
|
|
6
6
|
//#region src/core/vocabulary.ts
|
|
7
7
|
const ROLE_KIND = "role";
|
|
@@ -133,11 +133,10 @@ function synthesiseRole(key, options) {
|
|
|
133
133
|
const on = options?.on;
|
|
134
134
|
const assignable = options?.assignable ?? false;
|
|
135
135
|
const meta = options?.meta;
|
|
136
|
-
|
|
136
|
+
const leaf = on === void 0 ? makeRole(key, meta === void 0 ? { assignable } : {
|
|
137
137
|
assignable,
|
|
138
138
|
meta
|
|
139
|
-
})
|
|
140
|
-
return makeRole(key, meta === void 0 ? {
|
|
139
|
+
}) : makeRole(key, meta === void 0 ? {
|
|
141
140
|
on,
|
|
142
141
|
assignable
|
|
143
142
|
} : {
|
|
@@ -145,6 +144,17 @@ function synthesiseRole(key, options) {
|
|
|
145
144
|
assignable,
|
|
146
145
|
meta
|
|
147
146
|
});
|
|
147
|
+
if (options?.shared !== true) return leaf;
|
|
148
|
+
const shared = Object.defineProperty({
|
|
149
|
+
...leaf,
|
|
150
|
+
shared: true
|
|
151
|
+
}, "kind", {
|
|
152
|
+
value: ROLE_KIND,
|
|
153
|
+
enumerable: false,
|
|
154
|
+
writable: false,
|
|
155
|
+
configurable: false
|
|
156
|
+
});
|
|
157
|
+
return Object.freeze(shared);
|
|
148
158
|
}
|
|
149
159
|
function isGrantee(value) {
|
|
150
160
|
return value !== null && typeof value === "object" && "kind" in value && typeof value.kind === "string";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as sole, t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, m as restrictedStops, p as restrictedFor, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
|
|
3
3
|
import { d as isoNow } from "./time-DkWjdL98.js";
|
|
4
|
-
import {
|
|
4
|
+
import { f as scopeList, l as rootScope, s as resolveScope } from "./scopes-BHsc-wp-.js";
|
|
5
5
|
//#region src/core/grantee-conditions.ts
|
|
6
6
|
/**
|
|
7
7
|
* Where a graph relation starts on the row: its own id when the relation is
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { u as isoAt } from "./time-DkWjdL98.js";
|
|
3
|
-
import {
|
|
4
|
-
import { o as flattenGrantee } from "./grantee-
|
|
5
|
-
import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-
|
|
3
|
+
import { f as scopeList, t as activeFor } from "./scopes-BHsc-wp-.js";
|
|
4
|
+
import { o as flattenGrantee } from "./grantee-BrRANrpT.js";
|
|
5
|
+
import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-C6P1Tvol.js";
|
|
6
6
|
//#region src/core/grantee-match.ts
|
|
7
7
|
function combineWhere(left, right) {
|
|
8
8
|
if (left === void 0) return right;
|
package/dist/h3/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
4
|
-
import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-
|
|
1
|
+
import { Gt as Snapshot, T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
|
|
2
|
+
import { a as PermDock } from "../permdock-Dco6dyCK.js";
|
|
3
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
|
|
4
|
+
import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-CuhyYwC1.js";
|
|
5
5
|
import { EventHandler, H3Event, H3EventContext, Middleware } from "h3";
|
|
6
6
|
//#region src/h3/create.d.ts
|
|
7
7
|
type H3PermDockOptions<TUser = unknown> = FetchAdapterOptions<H3Event, TUser>;
|
package/dist/h3/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as decorate } from "../bind-
|
|
3
|
-
import { t as fetchAdapter } from "../fetch-adapter-
|
|
1
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
|
|
2
|
+
import { i as decorate } from "../bind-D1nO6fiC.js";
|
|
3
|
+
import { t as fetchAdapter } from "../fetch-adapter-De-u6vhJ.js";
|
|
4
4
|
//#region src/h3/create.ts
|
|
5
5
|
function createPermDock(policy, options) {
|
|
6
6
|
const adapter = fetchAdapter(policy, options, "h3", (event) => event.req);
|
|
@@ -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 };
|