permdock 0.4.0 → 0.6.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 +37 -35
- package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
- package/dist/a2a/index.d.ts +6 -6
- package/dist/a2a/index.js +14 -17
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-DCYe60Pi.js +107 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.js +1 -0
- package/dist/ai-sdk/index.d.ts +18 -35
- package/dist/ai-sdk/index.js +37 -23
- package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-DvSSPQJX.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-p1PGoVjb.js +995 -0
- package/dist/arazzo-41WuzHou.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
- package/dist/args-IIolxxKA.js +197 -0
- package/dist/astro/index.d.ts +43 -0
- package/dist/astro/index.js +27 -0
- package/dist/audience-DabClFLQ.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +94 -79
- package/dist/automation-BNM3TtDo.d.ts +114 -0
- package/dist/automation-DVjOckjV.js +157 -0
- package/dist/better-auth/index.d.ts +8 -6
- package/dist/better-auth/index.js +9 -8
- package/dist/better-supabase/index.d.ts +357 -30
- package/dist/better-supabase/index.js +936 -194
- package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
- package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
- package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
- package/dist/casbin-Cr7RLtA3.js +30 -0
- package/dist/casbin-Dyu2gnUD.js +234 -0
- package/dist/casl-64gpT-8x.js +24 -0
- package/dist/casl-DjEDhTCP.js +299 -0
- package/dist/catalog/index.d.ts +74 -2
- package/dist/catalog/index.js +51 -2
- package/dist/catalog-BoWglDPI.js +1 -0
- package/dist/catalog-DZVbrF-z.js +52 -0
- package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
- package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +224 -0
- package/dist/chat-sdk/index.d.ts +87 -0
- package/dist/chat-sdk/index.js +197 -0
- package/dist/claims-map-7oQ3ue4X.js +13 -0
- package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
- package/dist/claude-agent/index.d.ts +7 -14
- package/dist/claude-agent/index.js +24 -27
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +9 -14
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +19 -5
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +239 -340
- package/dist/cloud-ytQ3uviA.js +87 -0
- package/dist/codemod-5mpSpnUY.js +37 -0
- package/dist/codemod-ua2hHy7w.js +2084 -0
- package/dist/collect-Ci6akVwH.js +55 -0
- package/dist/collect-D7eQDffE.js +1 -0
- package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
- package/dist/command-L8EstFNm.js +6 -0
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -2
- package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
- package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/completion-BTFrHZhX.js +143 -0
- package/dist/config-Bj2Ixq3d.js +26 -0
- package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- package/dist/create-B30OMUOJ.d.ts +107 -0
- package/dist/create-CBMmFie-.d.ts +138 -0
- package/dist/create-CGm28gyI.js +130 -0
- package/dist/create-CQWIpUG-.js +403 -0
- package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
- package/dist/create-D_NmPOdH.d.ts +110 -0
- package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-j6-rc37o.js +286 -0
- package/dist/delivery/index.d.ts +5 -0
- package/dist/delivery/index.js +5 -0
- package/dist/delivery-DCAgNyCn.js +499 -0
- package/dist/delivery-event-xX4obB8F.js +40 -0
- package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
- package/dist/diff-CmuSD3vc.js +37 -0
- package/dist/doctor-3ZqNHX_G.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +2 -2
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +13 -12
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
- package/dist/evaluate-CNClBvcj.js +1785 -0
- package/dist/evaluations-C_1vdSZc.d.ts +32 -0
- package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +22 -28
- package/dist/event-time-CsegxXxB.js +23 -0
- package/dist/expiry-D4_YKRKD.js +52 -0
- package/dist/express/index.d.ts +13 -10
- package/dist/express/index.js +12 -11
- package/dist/fastify/index.d.ts +25 -22
- package/dist/fastify/index.js +13 -12
- package/dist/fetch-adapter-DD_gfmrC.js +120 -0
- package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
- package/dist/fields-OYG_JR78.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
- package/dist/h3/index.d.ts +37 -0
- package/dist/h3/index.js +35 -0
- package/dist/headers-BIjfMaoC.js +8 -0
- package/dist/headers-CIbDTUTK.d.ts +7 -0
- package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-B46-5LYE.js +315 -0
- package/dist/hosted-BPk51-kX.d.ts +78 -0
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
- package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
- package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
- package/dist/index-B8YjkEZ4.d.ts +210 -0
- package/dist/index-C-6Letxg.d.ts +431 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
- package/dist/index-Cp_ilKi1.d.ts +91 -0
- package/dist/index-CueFnxQc.d.ts +110 -0
- package/dist/index-DuWxc5dt.d.ts +909 -0
- package/dist/index.d.ts +19 -15
- package/dist/index.js +31 -21
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
- package/dist/instance-snapshot-BOEhcqIF.js +601 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +156 -135
- package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +2 -2
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
- package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
- package/dist/login-Dfe5RlYk.js +68 -0
- package/dist/login-imhuwvn3.js +254 -0
- package/dist/manifest-C8IzW3Do.js +42 -0
- package/dist/manifest-dvL2XEe1.js +370 -0
- package/dist/manifest-json-CAGzls-C.js +9 -0
- package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
- package/dist/manifest-schema-C0kK_8V0.js +399 -0
- package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
- package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
- package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
- package/dist/mcp/index.d.ts +22 -12
- package/dist/mcp/index.js +57 -39
- package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +15 -14
- package/dist/next/index.d.ts +18 -21
- package/dist/next/index.js +13 -11
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +10 -10
- package/dist/node/index.js +7 -9
- package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +17 -24
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
- package/dist/openapi-C4dDTVEd.js +138 -0
- package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-X0VM7F3m.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +20 -15
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +30 -7
- package/dist/output-1im__-08.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
- package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
- package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
- package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
- package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
- package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
- package/dist/parse-request-D_tUXG6M.js +26 -0
- package/dist/paths-DXSHAMIa.js +42 -0
- package/dist/pdp/index.d.ts +7 -3
- package/dist/pdp/index.js +45 -26
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-BrAscV28.js +868 -0
- package/dist/permdock-SV8ZINYT.d.ts +502 -0
- package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
- package/dist/policies-DP2nqRoF.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
- package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
- package/dist/postgrest-CEgRbefE.d.ts +100 -0
- package/dist/postgrest-DAjUkF9w.js +575 -0
- package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
- package/dist/powersync-DISt6SUe.js +62 -0
- package/dist/powersync-MMJ2mI2q.js +1 -0
- package/dist/preset/index.d.ts +146 -0
- package/dist/preset/index.js +1 -0
- package/dist/preset-DZdU0tne.js +1768 -0
- package/dist/principal-source-pHneukrx.js +103 -0
- package/dist/prisma/index.d.ts +6 -3
- package/dist/prisma/index.js +2 -2
- package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
- package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
- package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
- package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
- package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
- package/dist/pull-CvpINcMK.js +1 -0
- package/dist/pull-jEwbf80J.js +256 -0
- package/dist/push-BD4f15co.js +116 -0
- package/dist/pushed-policy-CqtxkV4G.js +238 -0
- package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +6 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -2
- package/dist/react-native/index.d.ts +24 -72
- package/dist/react-native/index.js +29 -25
- package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
- package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
- package/dist/request-schema-CMreVuFM.js +148 -0
- package/dist/resend/index.d.ts +126 -0
- package/dist/resend/index.js +379 -0
- package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
- package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BAqP4q66.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
- package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
- package/dist/run-CUKuz0A8.js +723 -0
- package/dist/run-DDwUaJDU.js +1 -0
- package/dist/run-ticket-DocwaTKn.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
- package/dist/scan-qvOe0hS3.js +29 -0
- package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
- package/dist/schema-yLuBWWsh.js +130 -0
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +1 -2
- package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
- package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
- package/dist/server/index.d.ts +12 -143
- package/dist/server/index.js +12 -9
- package/dist/server-C3WXAHZj.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
- package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-4-eQIRWf.d.ts +225 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-B7DkYg6g.js +269 -0
- package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
- package/dist/solid/index.d.ts +11 -12
- package/dist/solid/index.js +7 -7
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
- package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
- package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
- package/dist/src-Cu2m75uo.js +1860 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
- package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
- package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
- package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
- package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
- package/dist/style-DiKWnAvn.js +1 -0
- package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
- package/dist/subject-BGoM5o8B.js +17 -0
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +7 -6
- package/dist/supabase/middleware.js +13 -11
- package/dist/supabase-By_frk3U.js +92 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
- package/dist/supabase-hook-CCw5m35C.js +1 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +4 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +10 -10
- package/dist/svelte/runtime.d.ts +3 -3
- package/dist/svelte/runtime.js +3 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +4 -4
- package/dist/sveltekit/index.d.ts +51 -0
- package/dist/sveltekit/index.js +27 -0
- package/dist/tanstack-start/index.d.ts +51 -0
- package/dist/tanstack-start/index.js +40 -0
- package/dist/target-Bw37TFNA.js +51 -0
- package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +23 -287
- package/dist/testing/index.d.ts +311 -38
- package/dist/testing/index.js +3475 -201
- package/dist/testing/saas/index.d.ts +9 -8
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -2
- package/dist/text-BMFRfBqc.js +8 -0
- package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
- package/dist/thenable-yD7SabqG.js +31 -0
- package/dist/time-DkWjdL98.js +71 -0
- package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
- package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +16 -14
- package/dist/types-8RnwUAvE.d.ts +107 -0
- package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
- package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
- package/dist/types-BtHtcKMr.d.ts +157 -0
- package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
- package/dist/types-C791HFu9.d.ts +332 -0
- package/dist/types-C863OQiR.d.ts +57 -0
- package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
- package/dist/types-C_IiEs64.d.ts +65 -0
- package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
- package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
- package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CRVl9V3t.js +32 -0
- package/dist/usage-CZpSQP6L.js +1 -0
- package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
- package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
- package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
- package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
- package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
- package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- package/dist/waiter-B986w1oK.d.ts +36 -0
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/watch--ovlPOc0.js +1 -0
- package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- package/dist/where-scope-C9vfEphl.js +306 -0
- package/dist/who-can-DWBAcaCQ.js +364 -0
- package/dist/wire-delegation-Cv3W2eaM.js +36 -0
- package/dist/wire-denial-C7PaVYEM.js +27 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +223 -0
- package/dist/workflow-sdk/index.d.ts +56 -0
- package/dist/workflow-sdk/index.js +78 -0
- package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
- package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
- package/package.json +136 -37
- package/schemas/access-event-v1.json +118 -0
- package/schemas/approval-request-v1.json +34 -1
- package/schemas/approval-signature-v1.json +94 -0
- package/schemas/automation-event-v1.json +113 -0
- package/schemas/capability-v1.json +84 -0
- package/schemas/catalog-event-v1.json +87 -0
- package/schemas/catalog-v1.json +123 -12
- package/schemas/cli-commands-v1.json +164 -0
- package/schemas/cli-result-v1.json +96 -0
- package/schemas/cloud-api-v1.json +5407 -0
- package/schemas/connector-v1.json +408 -0
- package/schemas/credential-event-v1.json +81 -0
- package/schemas/credential-v1.json +134 -0
- package/schemas/decision-event-v1.json +288 -0
- package/schemas/delivery-event-v1.json +117 -0
- package/schemas/directory-event-v1.json +85 -0
- package/schemas/evidence-export-v1.json +54 -0
- package/schemas/membership-event-v1.json +93 -0
- package/schemas/policy-v1.json +68 -0
- package/schemas/pushed-policy-v1.json +236 -0
- package/schemas/run-v1.json +162 -0
- package/schemas/snapshot-v1.json +138 -0
- package/schemas/supabase-claims-v1.json +4 -4
- package/schemas/supabase-manifest-v1.json +5 -1
- package/schemas/support-session-v1.json +111 -0
- package/skills/permdock/SKILL.md +16 -12
- package/skills/permdock-agents/SKILL.md +40 -23
- package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
- package/skills/permdock-agents/references/runtimes.md +22 -18
- package/skills/permdock-approvals/SKILL.md +29 -13
- package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
- package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +5 -5
- package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +10 -9
- package/skills/permdock-data/references/relationships.md +3 -3
- package/skills/permdock-tenancy/SKILL.md +20 -7
- package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
- package/skills/permdock-wire/SKILL.md +17 -11
- package/skills/permdock-wire/references/adapters.md +139 -51
- package/skills/permdock-wire/references/policy-options.md +5 -5
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DZL76lKW.js +0 -240
- package/dist/arazzo-CD8d0WLb.js +0 -54
- package/dist/catalog-6yWAX6Ps.js +0 -2
- package/dist/catalog-WHG4kBq7.js +0 -48
- package/dist/cloud-C7bSDgX4.js +0 -50
- package/dist/cloud-PeBN3IEn.js +0 -118
- package/dist/collect-Bw2Jdq1q.js +0 -2
- package/dist/collect-CQx4hX4N.js +0 -83
- package/dist/commands-Cpip4ULx.js +0 -97
- package/dist/config-DLt6BvV7.js +0 -36
- package/dist/diff-Cnghh_Ip.js +0 -48
- package/dist/doctor-CuVJvhV_.js +0 -53
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-fwfXN01n.js +0 -1016
- package/dist/headers-BZSDieNT.js +0 -6
- package/dist/headers-Cf-zWvsO.d.ts +0 -6
- package/dist/ids-DC4V4CFu.js +0 -18
- package/dist/index-DgM7w96K.d.ts +0 -6
- package/dist/index-Dz7didpC.d.ts +0 -201
- package/dist/index-UdVQgq48.d.ts +0 -550
- package/dist/load-B_shHrmd.js +0 -2
- package/dist/manifest-BngWKryL.js +0 -770
- package/dist/may-use-BOn_dR_w.js +0 -78
- package/dist/openapi-DcQ1Kg40.js +0 -164
- package/dist/ownership-BgnbOJFT.js +0 -851
- package/dist/permdock-L26udHSk.js +0 -3646
- package/dist/powersync-BFSbSElQ.js +0 -62
- package/dist/powersync-DCDgZgfZ.js +0 -2
- package/dist/rls-55DQTuf5.js +0 -250
- package/dist/run-DMcNW_8T.js +0 -174
- package/dist/server-ZYEHtNHS.js +0 -268
- package/dist/sink-BTtmfPnE.js +0 -141
- package/dist/sink-CPN4zLfs.d.ts +0 -104
- package/dist/skills-Dle4ZoLF.js +0 -56
- package/dist/snapshot-Dc9CHPME.js +0 -1078
- package/dist/src-Bb7no-hS.js +0 -639
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-Dbqr141s.js +0 -83
- package/dist/supabase-hook-BULg7Ut_.js +0 -2
- package/dist/thenable-QSmvt-vZ.js +0 -65
- package/dist/types-C0dee0Qf.d.ts +0 -197
- package/dist/types-DvupZE0w.d.ts +0 -9
- package/dist/usage-4G6t643F.js +0 -42
- package/dist/usage-iFLJ0-rr.js +0 -2
- package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
- package/dist/watch-C8TpsAl4.js +0 -2
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
1
|
+
import { Nn as Decision, Rt as Instant, Vt as Snapshot, ar as Subject, j as PolicyVocabulary, qn as Actor, tr as JsonWebKeyLike } from "./policy-types-n0uRTsW8.js";
|
|
2
|
+
import { w as Permission } from "./vocabulary-CN8H_9UF.js";
|
|
3
|
+
import { r as PermDock, s as SnapshotOptions } from "./permdock-SV8ZINYT.js";
|
|
4
|
+
import { m as ApprovalStore } from "./types-BdtSDbBO.js";
|
|
5
|
+
import { a as ProblemDetails, t as ApprovalHint } from "./errors-DH5QEGXh.js";
|
|
6
|
+
import { t as InstanceOptions } from "./instance-options-BsVpyGIk.js";
|
|
6
7
|
import { t as RequestContext } from "./request-context-C2_1lchh.js";
|
|
7
|
-
import { n as PermDockWrap } from "./wrap-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { n as PermDockWrap } from "./wrap-C5jC6sKI.js";
|
|
9
|
+
import { n as RevocationFeed } from "./revocations-R07lFBnX.js";
|
|
10
|
+
import { r as PdpFactory } from "./types-_WhUP7ud.js";
|
|
11
|
+
import { i as evaluationsHandler } from "./evaluations-C_1vdSZc.js";
|
|
10
12
|
//#region src/server/connection.d.ts
|
|
11
13
|
type ConnectionData<T> = T | (() => T | null | undefined | Promise<T | null | undefined>);
|
|
12
14
|
type ConnectionOptions<T = unknown> = {
|
|
@@ -14,7 +16,7 @@ type ConnectionOptions<T = unknown> = {
|
|
|
14
16
|
readonly permission?: Permission;
|
|
15
17
|
/** The row for `permission`, or a loader re-run on every revalidation. */
|
|
16
18
|
readonly data?: ConnectionData<T>;
|
|
17
|
-
/**
|
|
19
|
+
/** Seconds between periodic revalidations; off by default. */
|
|
18
20
|
readonly revalidate?: number;
|
|
19
21
|
};
|
|
20
22
|
type Connection = {
|
|
@@ -51,22 +53,6 @@ type TenantOption<TContext> = string | ((context: TContext) => string | undefine
|
|
|
51
53
|
/** Resolves an adapter `tenant` option against its framework context; a throw is no tenant. */
|
|
52
54
|
declare function tenantScope<TContext>(option: TenantOption<TContext> | undefined, context: TContext): Promise<TenantScope>;
|
|
53
55
|
//#endregion
|
|
54
|
-
//#region src/server/evaluations.d.ts
|
|
55
|
-
declare function createEvaluationsHandler(options: {
|
|
56
|
-
readonly policy: Policy;
|
|
57
|
-
readonly resolve?: (request: Request) => Promise<PermDock>;
|
|
58
|
-
readonly getPermDock?: (query?: {
|
|
59
|
-
readonly tenant?: string;
|
|
60
|
-
}) => Promise<PermDock>;
|
|
61
|
-
readonly store?: ApprovalStore;
|
|
62
|
-
readonly adapter?: string;
|
|
63
|
-
/** The most evaluations one POST may carry; a larger batch is a 413 before any instance is resolved. */
|
|
64
|
-
readonly maxEvaluations?: number;
|
|
65
|
-
}): {
|
|
66
|
-
readonly POST: (request: Request) => Promise<Response>;
|
|
67
|
-
readonly GET: (request: Request) => Promise<Response>;
|
|
68
|
-
};
|
|
69
|
-
//#endregion
|
|
70
56
|
//#region src/server/web-bot-auth.d.ts
|
|
71
57
|
type WebBotAuthJwk = JsonWebKeyLike & {
|
|
72
58
|
readonly kid?: string;
|
|
@@ -85,14 +71,18 @@ type WebBotAuthOptions = {
|
|
|
85
71
|
readonly keys: WebBotAuthKeys | WebBotAuthKeyLookup;
|
|
86
72
|
readonly required?: boolean;
|
|
87
73
|
readonly maxAge?: number;
|
|
88
|
-
/**
|
|
89
|
-
readonly now?: () =>
|
|
74
|
+
/** The clock; defaults to the system clock. */
|
|
75
|
+
readonly now?: () => Instant;
|
|
90
76
|
};
|
|
91
77
|
/**
|
|
92
|
-
* An adapter's `webBotAuth` option: `(
|
|
78
|
+
* An adapter's `webBotAuth` option: `webBotAuthVerifier(options)`,
|
|
93
79
|
* so an app without it does not bundle RFC 9421 verification.
|
|
94
80
|
*/
|
|
95
|
-
type WebBotAuthVerifier =
|
|
81
|
+
type WebBotAuthVerifier = {
|
|
82
|
+
readonly name?: string;
|
|
83
|
+
/** The verified signer as an actor, `undefined` for an unsigned request; throws `InvalidSignatureError` for a bad signature. */
|
|
84
|
+
verify(request: Request): Promise<Actor | undefined>;
|
|
85
|
+
};
|
|
96
86
|
type DiscoverViaSignatureAgentOptions = {
|
|
97
87
|
readonly allow: readonly string[];
|
|
98
88
|
readonly fetch?: typeof fetch;
|
|
@@ -105,21 +95,26 @@ declare class InvalidSignatureError extends Error {
|
|
|
105
95
|
declare function invalidSignatureResponse(error: unknown): Response | undefined;
|
|
106
96
|
declare function invalidSignatureProblem(detail: string): Response;
|
|
107
97
|
declare function discoverViaSignatureAgent(options: DiscoverViaSignatureAgentOptions): WebBotAuthKeys;
|
|
108
|
-
|
|
98
|
+
/**
|
|
99
|
+
* Verifies Web Bot Auth requests: an RFC 9421 signature tagged `web-bot-auth`
|
|
100
|
+
* that covers `@authority`, and `signature-agent` when the request sends
|
|
101
|
+
* `Signature-Agent` (draft-meunier-webbotauth-httpsig-protocol).
|
|
102
|
+
*/
|
|
103
|
+
declare function webBotAuthVerifier(options?: WebBotAuthOptions): WebBotAuthVerifier;
|
|
109
104
|
//#endregion
|
|
110
105
|
//#region src/server/server-types.d.ts
|
|
111
106
|
type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
|
|
112
107
|
/** The user, or a full `Subject` (core then skips `policy.subject`); `null` is anonymous. */
|
|
113
108
|
readonly subject: (request: Request) => TUser | Subject | null | Promise<TUser | Subject | null>;
|
|
114
109
|
readonly actor?: (request: Request) => unknown;
|
|
115
|
-
/** `(
|
|
110
|
+
/** `webBotAuthVerifier(options)`; a verified bot becomes the actor. */
|
|
116
111
|
readonly webBotAuth?: WebBotAuthVerifier;
|
|
117
112
|
readonly tenant?: string | ((request: Request) => string | undefined | Promise<string | undefined>);
|
|
118
113
|
readonly store?: ApprovalStore;
|
|
119
114
|
/** Ends or revalidates open connections; never a decision input. */
|
|
120
115
|
readonly revocations?: RevocationFeed;
|
|
121
116
|
/**
|
|
122
|
-
* `
|
|
117
|
+
* `getPermDock` from `permdock/pdp`: `protect` then decides delegated
|
|
123
118
|
* permissions through the remote PDP. The instance handlers receive stays
|
|
124
119
|
* synchronous and keeps denying delegated permissions (`pdp-unavailable`).
|
|
125
120
|
*/
|
|
@@ -131,7 +126,7 @@ type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
|
|
|
131
126
|
* Replaces the response of a refused guard. A status below 300, or a
|
|
132
127
|
* throw, keeps the default response and reports through `on('error')`.
|
|
133
128
|
*/
|
|
134
|
-
readonly
|
|
129
|
+
readonly deniedResponse?: DeniedResponse;
|
|
135
130
|
/**
|
|
136
131
|
* Request values merged into `subject.context`, under `policy.context`.
|
|
137
132
|
* Only values the server derived belong here, never client input. A throw
|
|
@@ -139,11 +134,13 @@ type ServerPermDockOptions<TUser = unknown> = InstanceOptions & {
|
|
|
139
134
|
* `on('error')`.
|
|
140
135
|
*/
|
|
141
136
|
readonly context?: (request: Request) => RequestContext | undefined | Promise<RequestContext | undefined>;
|
|
142
|
-
/** Wraps each instance the
|
|
137
|
+
/** Wraps each instance the factory builds; build it with `wrapPermDock` to cover derived instances. */
|
|
143
138
|
readonly wrap?: PermDockWrap;
|
|
139
|
+
/** The `adapter` label on decision events, revocations and approvals. Defaults to `server`. */
|
|
140
|
+
readonly adapter?: string;
|
|
144
141
|
};
|
|
145
|
-
/** What `
|
|
146
|
-
type
|
|
142
|
+
/** What `deniedResponse` receives: the refusal and the default Problem Details for it. */
|
|
143
|
+
type DeniedResponseEvent = {
|
|
147
144
|
readonly decision: Exclude<Decision, {
|
|
148
145
|
readonly outcome: "granted";
|
|
149
146
|
}>;
|
|
@@ -151,7 +148,7 @@ type OnDeniedEvent = {
|
|
|
151
148
|
readonly request: Request | undefined;
|
|
152
149
|
};
|
|
153
150
|
/** Returns Problem Details with extra members, a `Response`, or nothing for the default. */
|
|
154
|
-
type
|
|
151
|
+
type DeniedResponse = (event: DeniedResponseEvent) => ProblemDetails | Response | undefined | Promise<ProblemDetails | Response | undefined>;
|
|
155
152
|
type OperationScopes = {
|
|
156
153
|
oauthScopesForRequest(method: string, path: string): readonly string[] | undefined;
|
|
157
154
|
};
|
|
@@ -189,14 +186,14 @@ type ScopeGuard<T = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
189
186
|
};
|
|
190
187
|
type Loader<T> = (request: Request) => T | null | undefined | Promise<T | null | undefined>;
|
|
191
188
|
/**
|
|
192
|
-
* `protect(permission,
|
|
189
|
+
* `protect(permission, data?, options?)`, or `protect(null, data?,
|
|
193
190
|
* { oauthScopes })` for a route that needs a signed-in principal and, from a
|
|
194
191
|
* delegated token, one of the OAuth scopes it declares, but no permission.
|
|
195
192
|
*/
|
|
196
193
|
type Protect<V extends PolicyVocabulary = PolicyVocabulary, TArgs extends unknown[] = []> = {
|
|
197
|
-
<T = unknown>(permission: Permission,
|
|
198
|
-
<T = unknown>(permission: null,
|
|
199
|
-
<T = unknown>(permission: Permission | null,
|
|
194
|
+
<T = unknown>(permission: Permission, data?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<Guard<T, V>>;
|
|
195
|
+
<T = unknown>(permission: null, data?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<ScopeGuard<T, V>>;
|
|
196
|
+
<T = unknown>(permission: Permission | null, data?: Loader<T>, protectOptions?: ProtectOptions): (request: Request, ...args: TArgs) => Promise<Guard<T, V> | ScopeGuard<T, V>>;
|
|
200
197
|
};
|
|
201
198
|
type OpenApiHooks = {
|
|
202
199
|
readonly security: (permission: Permission) => {
|
|
@@ -207,7 +204,7 @@ type OpenApiHooks = {
|
|
|
207
204
|
};
|
|
208
205
|
type ProtectOptions = {
|
|
209
206
|
/**
|
|
210
|
-
* `true` when `
|
|
207
|
+
* `true` when `data` returns a row the server loaded itself, to skip
|
|
211
208
|
* schema validation. Anything else is validated against the resource
|
|
212
209
|
* schema before the check.
|
|
213
210
|
*/
|
|
@@ -223,25 +220,19 @@ type ProtectOptions = {
|
|
|
223
220
|
/** Adds the evaluation `trace` to the guard's decision. */
|
|
224
221
|
readonly explain?: boolean;
|
|
225
222
|
};
|
|
226
|
-
type ServerKernelOptions<TUser, V extends PolicyVocabulary = PolicyVocabulary> = Omit<ServerPermDockOptions<TUser>, "wrap"> & {
|
|
227
|
-
/** Wraps each instance the kernel builds: `otel`, then the adapter's `wrap`. */
|
|
228
|
-
readonly wrap?: (permdock: PermDock<V>) => PermDock<V>;
|
|
229
|
-
/** The `adapter` label on decision events, revocations and approvals. Defaults to `server`. */
|
|
230
|
-
readonly adapter?: string;
|
|
231
|
-
};
|
|
232
|
-
/**
|
|
233
|
-
* What an HTTP adapter builds on: `ServerPermDock` plus an explicit
|
|
234
|
-
* `TenantScope` on every call, so the adapter resolves the tenant from its
|
|
235
|
-
* own framework context.
|
|
236
|
-
*/
|
|
237
223
|
type SnapshotQuery = {
|
|
238
224
|
/** The active tenant; defaults to the `tenant` option resolved from the request. */
|
|
239
225
|
readonly tenant?: string;
|
|
240
226
|
readonly include?: SnapshotOptions["include"];
|
|
241
227
|
readonly tenants?: "all";
|
|
242
228
|
};
|
|
243
|
-
|
|
244
|
-
|
|
229
|
+
/**
|
|
230
|
+
* What `createPermDock` from `permdock/server` returns. Every member takes an
|
|
231
|
+
* optional `TenantScope`, so an adapter resolves the tenant from its own
|
|
232
|
+
* framework context.
|
|
233
|
+
*/
|
|
234
|
+
type ServerPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
235
|
+
readonly getPermDock: (request: Request, scope?: TenantScope) => Promise<PermDock<V>>;
|
|
245
236
|
/**
|
|
246
237
|
* The JSON snapshot for a loader (React Router, TanStack Start, SvelteKit, Nuxt), built from the
|
|
247
238
|
* request's cached subject. Send it with `snapshotHeaders(snapshot)`.
|
|
@@ -251,8 +242,10 @@ type ServerKernel<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
251
242
|
/**
|
|
252
243
|
* `protect` against an instance the adapter already holds, such as a gateway
|
|
253
244
|
* connection's: the same OAuth scope check, loader, decision and approval resume.
|
|
245
|
+
* A method, so a `ServerPermDock<V>` stays assignable to `ServerPermDock`.
|
|
254
246
|
*/
|
|
255
|
-
|
|
247
|
+
protectOn<T = unknown>(instance: PermDock<V>, permission: Permission | null, data?: () => T | null | undefined | Promise<T | null | undefined>, protectOptions?: ProtectOptions, request?: Request): Promise<Guard<T, V> | ScopeGuard<T, V>>;
|
|
248
|
+
/** A long-lived connection for a stream or socket opened by `request`. */
|
|
256
249
|
readonly connection: <T = unknown>(request: Request, options?: ConnectionOptions<T>, scope?: TenantScope) => Promise<Connection>;
|
|
257
250
|
/**
|
|
258
251
|
* Lets `to`, a second `Request` an adapter built for the same incoming
|
|
@@ -260,22 +253,12 @@ type ServerKernel<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
260
253
|
* actor already resolved for `from`.
|
|
261
254
|
*/
|
|
262
255
|
readonly shareSubject: (from: Request, to: Request) => void;
|
|
263
|
-
readonly problem: ServerPermDock<V>["problem"];
|
|
264
|
-
readonly openapi: OpenApiHooks;
|
|
265
|
-
readonly permdockHandler: (scope?: (request: Request) => TenantScope | Promise<TenantScope>) => ReturnType<typeof createEvaluationsHandler>;
|
|
266
|
-
};
|
|
267
|
-
type ServerPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
268
|
-
readonly permdock: (request: Request) => Promise<PermDock<V>>;
|
|
269
|
-
readonly getSnapshot: ServerKernel<V>["getSnapshot"];
|
|
270
|
-
readonly protect: Protect<V>;
|
|
271
|
-
/** A long-lived connection for a stream or socket opened by `request`. */
|
|
272
|
-
readonly connection: <T = unknown>(request: Request, options?: ConnectionOptions<T>) => Promise<Connection>;
|
|
273
256
|
readonly problem: (decision: Decision, init?: {
|
|
274
257
|
readonly permission?: Permission;
|
|
275
258
|
readonly instance?: string;
|
|
276
259
|
}) => Response;
|
|
277
260
|
readonly openapi: OpenApiHooks;
|
|
278
|
-
readonly permdockHandler: () => ReturnType<typeof
|
|
261
|
+
readonly permdockHandler: (scope?: (request: Request) => TenantScope | Promise<TenantScope>) => ReturnType<typeof evaluationsHandler>;
|
|
279
262
|
};
|
|
280
263
|
//#endregion
|
|
281
|
-
export {
|
|
264
|
+
export { TenantScope as C, ConnectionOptions as D, ConnectionData as E, TenantOption as S, Connection as T, WebBotAuthVerifier as _, OperationScopes as a, invalidSignatureResponse as b, ServerPermDock as c, DiscoverViaSignatureAgentOptions as d, InvalidSignatureError as f, WebBotAuthOptions as g, WebBotAuthKeys as h, OpenApiHooks as i, ServerPermDockOptions as l, WebBotAuthKeyLookup as m, DeniedResponseEvent as n, ProtectOptions as o, WebBotAuthJwk as p, Guard as r, ScopeGuard as s, DeniedResponse as t, SnapshotQuery as u, discoverViaSignatureAgent as v, tenantScope as w, webBotAuthVerifier as x, invalidSignatureProblem as y };
|
|
@@ -141,10 +141,17 @@ function sha256(message) {
|
|
|
141
141
|
outView.setInt32(28, h7, false);
|
|
142
142
|
return out;
|
|
143
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* The one digest notation: `sha-256:` plus the unpadded base64url SHA-256
|
|
146
|
+
* of `text`. An RFC 9651 sf-token, so it fits a structured header as is.
|
|
147
|
+
*/
|
|
148
|
+
function sha256Digest(text) {
|
|
149
|
+
return `sha-256:${bytesToBase64Url(sha256(text))}`;
|
|
150
|
+
}
|
|
144
151
|
function bytesToBase64Url(bytes) {
|
|
145
152
|
let binary = "";
|
|
146
153
|
for (const byte of bytes) binary += String.fromCodePoint(byte);
|
|
147
154
|
return btoa(binary).replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
|
|
148
155
|
}
|
|
149
156
|
//#endregion
|
|
150
|
-
export { sha256 as n, bytesToBase64Url as t };
|
|
157
|
+
export { sha256 as n, sha256Digest as r, bytesToBase64Url as t };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
2
|
+
import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
|
|
3
3
|
import { t as byCodePoint } from "./compare-pfyVnBjE.js";
|
|
4
|
-
import {
|
|
5
|
-
import "./
|
|
4
|
+
import { i as configError } from "./errors-CWTY6uih.js";
|
|
5
|
+
import { a as quoteQualifiedTable, c as quoteSqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, t as SQL_IDENT } from "./sql-B5T1IL83.js";
|
|
6
|
+
import "./sources-vs5dGOsS.js";
|
|
6
7
|
//#region src/cli/sql/quote.ts
|
|
7
8
|
function quoteIdent(name) {
|
|
8
9
|
return quoteSqlIdent(name, CLI);
|
|
@@ -27,6 +28,15 @@ const CLI = "PermDock CLI";
|
|
|
27
28
|
function declaredArray(values) {
|
|
28
29
|
return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteLiteral).join(", ")}]::text[]`;
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* A text array as a Postgres literal (`'{admin,owner}'`). An element that
|
|
33
|
+
* holds a delimiter, a brace, a quote, a backslash, whitespace, or that
|
|
34
|
+
* reads as `NULL`, is double-quoted and escaped, so one element can never
|
|
35
|
+
* split into several.
|
|
36
|
+
*/
|
|
37
|
+
function textArrayLiteral(values) {
|
|
38
|
+
return quoteLiteral(`{${values.map((value) => value === "" || /[\s,{}"\\]/u.test(value) || /^null$/iu.test(value) ? `"${value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"` : value).join(",")}}`);
|
|
39
|
+
}
|
|
30
40
|
//#endregion
|
|
31
41
|
//#region src/cli/sql/columns.ts
|
|
32
42
|
/** The Postgres type a JSON Schema property compares as; `undefined` for text or an unknown shape. */
|
|
@@ -85,7 +95,7 @@ function arrayColumnsOf(schema) {
|
|
|
85
95
|
}
|
|
86
96
|
const SQL_TYPE = /^[A-Za-z_][A-Za-z0-9_]*( [A-Za-z_][A-Za-z0-9_]*)*(\[\])?$/u;
|
|
87
97
|
function sqlType(name) {
|
|
88
|
-
if (!SQL_TYPE.test(name)) throw
|
|
98
|
+
if (!SQL_TYPE.test(name)) throw configError(`PermDock CLI: unsafe SQL type '${name}'`);
|
|
89
99
|
return name;
|
|
90
100
|
}
|
|
91
101
|
function tenantTypeOf(ctx) {
|
|
@@ -162,7 +172,7 @@ function userIdHelperSql(ctx) {
|
|
|
162
172
|
const SESSION_LIVE_HELPER = "permdock_session_live";
|
|
163
173
|
/** `{ subject: { session: { live: true } } }` in a policy; only Supabase has `auth.sessions`. */
|
|
164
174
|
function liveSessionSql(ctx) {
|
|
165
|
-
if (ctx.dialect !== "supabase") throw
|
|
175
|
+
if (ctx.dialect !== "supabase") throw configError(`PermDock CLI: { subject: { session: { live: true } } } reads auth.sessions, which only the supabase dialect has (got ${ctx.dialect})`);
|
|
166
176
|
return `(select ${qualified(ctx, SESSION_LIVE_HELPER)}())`;
|
|
167
177
|
}
|
|
168
178
|
/**
|
|
@@ -214,7 +224,7 @@ function subjectIdSql(ctx) {
|
|
|
214
224
|
}
|
|
215
225
|
}
|
|
216
226
|
function subjectClaimSql(ctx, claim) {
|
|
217
|
-
if (!CLAIM.test(claim)) throw
|
|
227
|
+
if (!CLAIM.test(claim)) throw configError(`PermDock CLI: unsafe claim name '${claim}'`);
|
|
218
228
|
switch (ctx.dialect) {
|
|
219
229
|
case "supabase": return `((select auth.jwt()) ->> ${quoteLiteral(claim)})`;
|
|
220
230
|
case "neon": return `((select auth.session()) ->> ${quoteLiteral(claim)})`;
|
|
@@ -224,7 +234,7 @@ function subjectClaimSql(ctx, claim) {
|
|
|
224
234
|
}
|
|
225
235
|
/** A claim as `jsonb`; the `guc` dialect stores JSON text in `<prefix>.<claim>`. */
|
|
226
236
|
function subjectClaimJsonSql(ctx, claim) {
|
|
227
|
-
if (!CLAIM.test(claim)) throw
|
|
237
|
+
if (!CLAIM.test(claim)) throw configError(`PermDock CLI: unsafe claim name '${claim}'`);
|
|
228
238
|
switch (ctx.dialect) {
|
|
229
239
|
case "supabase": return `((select auth.jwt()) -> ${quoteLiteral(claim)})`;
|
|
230
240
|
case "neon": return `((select auth.session()) -> ${quoteLiteral(claim)})`;
|
|
@@ -275,7 +285,8 @@ const CUSTOM_ROLES = {
|
|
|
275
285
|
trustedReplace: "permdock_trusted_replace_custom_role_grants",
|
|
276
286
|
trustedRename: "permdock_trusted_rename_custom_role_grants",
|
|
277
287
|
trustedRemove: "permdock_trusted_delete_custom_role_grants",
|
|
278
|
-
cascade: "permdock_cascade_custom_role"
|
|
288
|
+
cascade: "permdock_cascade_custom_role",
|
|
289
|
+
shared: "permdock_is_shared_role"
|
|
279
290
|
};
|
|
280
291
|
/** The function `rls.roles` adds. The name is part of the SQL contract. */
|
|
281
292
|
const GLOBAL_ROLES = { replace: "permdock_replace_global_roles" };
|
|
@@ -291,4 +302,4 @@ function allowEntry(ctx) {
|
|
|
291
302
|
return ctx.customRoles?.levels === true ? "permission || coalesce('@' || c.level, '')" : "permission";
|
|
292
303
|
}
|
|
293
304
|
//#endregion
|
|
294
|
-
export { declaredArray as A, parseMembershipsFlag as C, sqlType as D, scopeTypeOf as E, quoteQualified as F, quoteTable as I, qualified as M, quoteIdent as N, tenantTypeOf as O, quoteLiteral as P, CLAIM as S, columnTypesOf as T, subjectClaimJsonSql as _, customRolesOn as a, tenantClaimSql as b, SESSION_LIVE_HELPER as c, keyTenantSql as d, kindFilterSql as f, sessionLiveHelperSql as g, roleKindSql as h, allowEntry as i, helperSchema as j, CLI as k, USER_ID_HELPER as l, memberVia as m, GLOBAL_ROLES as n, rootName as o, liveSessionSql as p, HELPERS as r, signedIn as s, CUSTOM_ROLES as t, globalKindFilterSql as u, subjectClaimSql as v, arrayColumnsOf as w, userIdHelperSql as x, subjectIdSql as y };
|
|
305
|
+
export { declaredArray as A, parseMembershipsFlag as C, sqlType as D, scopeTypeOf as E, quoteQualified as F, quoteTable as I, textArrayLiteral as L, qualified as M, quoteIdent as N, tenantTypeOf as O, quoteLiteral as P, CLAIM as S, columnTypesOf as T, subjectClaimJsonSql as _, customRolesOn as a, tenantClaimSql as b, SESSION_LIVE_HELPER as c, keyTenantSql as d, kindFilterSql as f, sessionLiveHelperSql as g, roleKindSql as h, allowEntry as i, helperSchema as j, CLI as k, USER_ID_HELPER as l, memberVia as m, GLOBAL_ROLES as n, rootName as o, liveSessionSql as p, HELPERS as r, signedIn as s, CUSTOM_ROLES as t, globalKindFilterSql as u, subjectClaimSql as v, arrayColumnsOf as w, userIdHelperSql as x, subjectIdSql as y };
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as durationOf, f as nowMillis } from "./time-DkWjdL98.js";
|
|
2
|
+
import { t as decisionToken } from "./token-BLZcjQgt.js";
|
|
2
3
|
//#region src/pdp/shared.ts
|
|
3
|
-
const
|
|
4
|
+
const MAX_CACHE_TTL = 30;
|
|
4
5
|
const CACHE_MAX = 1e3;
|
|
5
|
-
/** Milliseconds, clamped to `
|
|
6
|
+
/** Milliseconds from `ttl` seconds, clamped to 30 s; a `ttl` that is not a whole number of seconds above 0 disables the cache. */
|
|
6
7
|
function ttlMs(cache) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (!Number.isFinite(raw) || raw <= 0) return 0;
|
|
10
|
-
return Math.min(raw, MAX_CACHE_TTL_MS);
|
|
8
|
+
const ttl = durationOf(cache?.ttl);
|
|
9
|
+
return ttl === void 0 ? 0 : Math.min(ttl, MAX_CACHE_TTL) * 1e3;
|
|
11
10
|
}
|
|
12
11
|
function denied(reason) {
|
|
13
12
|
return {
|
|
@@ -68,13 +67,13 @@ function ttlCache(ttl) {
|
|
|
68
67
|
get(key) {
|
|
69
68
|
if (ttl <= 0) return;
|
|
70
69
|
const hit = entries.get(key);
|
|
71
|
-
if (hit !== void 0 &&
|
|
70
|
+
if (hit !== void 0 && nowMillis() - hit.at < ttl) return hit.value;
|
|
72
71
|
entries.delete(key);
|
|
73
72
|
},
|
|
74
73
|
set(key, value) {
|
|
75
74
|
if (ttl <= 0) return;
|
|
76
75
|
entries.set(key, {
|
|
77
|
-
at:
|
|
76
|
+
at: nowMillis(),
|
|
78
77
|
value
|
|
79
78
|
});
|
|
80
79
|
if (entries.size > CACHE_MAX) {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/cli/core/signals.ts
|
|
2
|
+
const EXIT_CODES = {
|
|
3
|
+
SIGINT: 130,
|
|
4
|
+
SIGTERM: 143
|
|
5
|
+
};
|
|
6
|
+
/** How long a signalled run may take to clean up before the process exits. */
|
|
7
|
+
const GRACE_MS = 2e3;
|
|
8
|
+
/**
|
|
9
|
+
* Turns SIGINT and SIGTERM into an aborted signal and the 128 + n exit code.
|
|
10
|
+
* A second signal, or a run still busy after the grace period, exits at once.
|
|
11
|
+
*/
|
|
12
|
+
function trapSignals() {
|
|
13
|
+
const controller = new AbortController();
|
|
14
|
+
const handlers = Object.entries(EXIT_CODES).map(([name, code]) => {
|
|
15
|
+
const handler = () => {
|
|
16
|
+
if (controller.signal.aborted) process.exit(code);
|
|
17
|
+
process.exitCode = code;
|
|
18
|
+
controller.abort(/* @__PURE__ */ new Error(`Received ${name}`));
|
|
19
|
+
setTimeout(() => process.exit(code), GRACE_MS).unref();
|
|
20
|
+
};
|
|
21
|
+
process.on(name, handler);
|
|
22
|
+
return [name, handler];
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
signal: controller.signal,
|
|
26
|
+
dispose: () => {
|
|
27
|
+
for (const [name, handler] of handlers) process.off(name, handler);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { trapSignals };
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { Ct as Credential, Jt as AutomationEvent, Kt as AccessEvent, Yt as CredentialEvent, gt as SupportSession, nn as MembershipEvent, q as DecisionSink, rn as SinkEvent, ut as TokenSigner } from "./policy-types-n0uRTsW8.js";
|
|
2
|
+
import { V as AppData } from "./vocabulary-CN8H_9UF.js";
|
|
3
|
+
import { u as OperationRisk } from "./operations-X0VM7F3m.js";
|
|
4
|
+
import { t as Automation } from "./automation-BNM3TtDo.js";
|
|
5
|
+
//#region src/core/sink.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* The closed list of CloudEvents `type` values, `com.permdock.<family>` or
|
|
8
|
+
* `com.permdock.<family>.<operation>`. `RESERVED_CLOUD_EVENT_TYPES` are named
|
|
9
|
+
* for later releases and nothing emits them yet.
|
|
10
|
+
*/
|
|
11
|
+
declare const CLOUD_EVENT_TYPES: {
|
|
12
|
+
readonly decision: "com.permdock.decision";
|
|
13
|
+
readonly approvalRequested: "com.permdock.approval.requested";
|
|
14
|
+
readonly approvalResolved: "com.permdock.approval.resolved";
|
|
15
|
+
readonly approvalExpired: "com.permdock.approval.expired";
|
|
16
|
+
readonly approvalCancelled: "com.permdock.approval.cancelled";
|
|
17
|
+
readonly membershipAdded: "com.permdock.membership.added";
|
|
18
|
+
readonly membershipRemoved: "com.permdock.membership.removed";
|
|
19
|
+
readonly membershipChanged: "com.permdock.membership.changed";
|
|
20
|
+
readonly credentialCreated: "com.permdock.credential.created";
|
|
21
|
+
readonly credentialUsed: "com.permdock.credential.used";
|
|
22
|
+
readonly credentialRotated: "com.permdock.credential.rotated";
|
|
23
|
+
readonly credentialRevoked: "com.permdock.credential.revoked";
|
|
24
|
+
readonly directoryCreated: "com.permdock.directory.created";
|
|
25
|
+
readonly directoryReplaced: "com.permdock.directory.replaced";
|
|
26
|
+
readonly directoryPatched: "com.permdock.directory.patched";
|
|
27
|
+
readonly directoryDeleted: "com.permdock.directory.deleted";
|
|
28
|
+
readonly catalogPublished: "com.permdock.catalog.published";
|
|
29
|
+
readonly catalogDrifted: "com.permdock.catalog.drifted";
|
|
30
|
+
readonly supportSessionStarted: "com.permdock.support-session.started";
|
|
31
|
+
readonly supportSessionEnded: "com.permdock.support-session.ended";
|
|
32
|
+
readonly automationPublished: "com.permdock.automation.published";
|
|
33
|
+
readonly automationChanged: "com.permdock.automation.changed";
|
|
34
|
+
readonly automationRevoked: "com.permdock.automation.revoked";
|
|
35
|
+
readonly automationRun: "com.permdock.automation.run";
|
|
36
|
+
readonly deliverySent: "com.permdock.delivery.sent";
|
|
37
|
+
readonly deliveryDelivered: "com.permdock.delivery.delivered";
|
|
38
|
+
readonly deliveryBounced: "com.permdock.delivery.bounced";
|
|
39
|
+
readonly deliveryComplained: "com.permdock.delivery.complained";
|
|
40
|
+
readonly deliveryFailed: "com.permdock.delivery.failed";
|
|
41
|
+
};
|
|
42
|
+
type CloudEventType = (typeof CLOUD_EVENT_TYPES)[keyof typeof CLOUD_EVENT_TYPES];
|
|
43
|
+
/** Types named for a later release; a receiver refuses them until then. None are reserved now. */
|
|
44
|
+
declare const RESERVED_CLOUD_EVENT_TYPES: readonly CloudEventType[];
|
|
45
|
+
/** The CloudEvents JSON format media type for one event (structured mode). */
|
|
46
|
+
declare const CLOUDEVENTS_CONTENT_TYPE = "application/cloudevents+json";
|
|
47
|
+
/** The CloudEvents JSON batch format media type: a JSON array of events. */
|
|
48
|
+
declare const CLOUDEVENTS_BATCH_CONTENT_TYPE = "application/cloudevents-batch+json";
|
|
49
|
+
/**
|
|
50
|
+
* Why a published catalog drifted. The first four broke a live hosted grant,
|
|
51
|
+
* which the Cloud then suspends; the `operation-*` codes only report.
|
|
52
|
+
*/
|
|
53
|
+
type CatalogFindingCode = "permission-removed" | "not-hostable" | "grantee-removed" | "approval-tightened" | "operation-risk-raised" | "operation-approval-removed";
|
|
54
|
+
/** One drift finding: the permission key and, when one broke, the hosted grant id. */
|
|
55
|
+
type CatalogFinding = {
|
|
56
|
+
readonly code: CatalogFindingCode;
|
|
57
|
+
readonly permission: string;
|
|
58
|
+
readonly grant?: string;
|
|
59
|
+
/** The operation name, on the `operation-*` codes. */
|
|
60
|
+
readonly operation?: string;
|
|
61
|
+
/** `meta.risk` before the publish, on `operation-risk-raised`; an unset risk is `low`. */
|
|
62
|
+
readonly previous?: OperationRisk;
|
|
63
|
+
/** `meta.risk` after the publish, on `operation-risk-raised`. */
|
|
64
|
+
readonly risk?: OperationRisk;
|
|
65
|
+
};
|
|
66
|
+
/** `data` of a `com.permdock.catalog.*` event: a `permdock cloud push` or a drift against live hosted grants. */
|
|
67
|
+
type CatalogEventData = {
|
|
68
|
+
readonly kind: "publish" | "drift";
|
|
69
|
+
/** The catalog fingerprint after the publish, or the one drift was measured against. */
|
|
70
|
+
readonly fingerprint: string;
|
|
71
|
+
readonly previous?: string;
|
|
72
|
+
readonly findings?: readonly CatalogFinding[];
|
|
73
|
+
};
|
|
74
|
+
/** A CloudEvents 1.0 event in the JSON format, with the distributed-tracing extension. */
|
|
75
|
+
type CloudEvent = {
|
|
76
|
+
readonly specversion: "1.0";
|
|
77
|
+
readonly type: CloudEventType;
|
|
78
|
+
/** An absolute URI naming the producer. */
|
|
79
|
+
readonly source: string;
|
|
80
|
+
readonly subject?: string;
|
|
81
|
+
readonly id: string;
|
|
82
|
+
/** An RFC 3339 instant: the sink event's `at`. */
|
|
83
|
+
readonly time: string;
|
|
84
|
+
readonly datacontenttype: "application/json";
|
|
85
|
+
/** The published JSON Schema of `data`, `https://permdock.com/schemas/<family>-event-v1.json`. */
|
|
86
|
+
readonly dataschema: string;
|
|
87
|
+
/** W3C Trace Context `traceparent`, the CloudEvents distributed-tracing extension. */
|
|
88
|
+
readonly traceparent?: string;
|
|
89
|
+
readonly tracestate?: string;
|
|
90
|
+
readonly data: SinkEvent | CatalogEventData;
|
|
91
|
+
};
|
|
92
|
+
type CloudEventOptions = {
|
|
93
|
+
/** An absolute URI naming the producer, such as the app's origin. */
|
|
94
|
+
readonly source: string;
|
|
95
|
+
/** Defaults to a random UUID. */
|
|
96
|
+
readonly id?: string;
|
|
97
|
+
readonly traceparent?: string;
|
|
98
|
+
readonly tracestate?: string;
|
|
99
|
+
};
|
|
100
|
+
type SignDecisionBatchOptions = {
|
|
101
|
+
readonly audience?: string | readonly string[];
|
|
102
|
+
/** An absolute URI naming the producer, the `source` of every CloudEvent. */
|
|
103
|
+
readonly source: string;
|
|
104
|
+
};
|
|
105
|
+
type MemoryDecisionSinkOptions = {
|
|
106
|
+
readonly capacity?: number;
|
|
107
|
+
} & ({
|
|
108
|
+
readonly signer?: undefined;
|
|
109
|
+
readonly audience?: undefined;
|
|
110
|
+
readonly source?: undefined;
|
|
111
|
+
} | {
|
|
112
|
+
/** Signs each write as an evidence export of CloudEvents. */
|
|
113
|
+
readonly signer: TokenSigner;
|
|
114
|
+
readonly audience?: string | readonly string[];
|
|
115
|
+
/** An absolute URI naming the producer, the `source` of every CloudEvent. */
|
|
116
|
+
readonly source: string;
|
|
117
|
+
});
|
|
118
|
+
type MemoryDecisionSink = DecisionSink & {
|
|
119
|
+
readonly events: () => readonly SinkEvent[];
|
|
120
|
+
readonly batches: () => readonly string[];
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* The CloudEvents `type` of a sink event. A support access event maps onto the
|
|
124
|
+
* `support-session` family, and a consent the tenant pulls early (`revoked`)
|
|
125
|
+
* ends the session like a lapse; `data.operation` keeps the difference.
|
|
126
|
+
*/
|
|
127
|
+
declare function cloudEventType(event: SinkEvent): CloudEventType;
|
|
128
|
+
/**
|
|
129
|
+
* An `automation` sink event for `automation`. `run` carries the run id and
|
|
130
|
+
* belongs on `run` events only.
|
|
131
|
+
*/
|
|
132
|
+
declare function automationEvent(input: {
|
|
133
|
+
readonly operation: AutomationEvent["operation"];
|
|
134
|
+
readonly automation: Automation;
|
|
135
|
+
readonly run?: string;
|
|
136
|
+
readonly source?: string;
|
|
137
|
+
readonly by?: AutomationEvent["by"];
|
|
138
|
+
/** An RFC 3339 instant; defaults to now. */
|
|
139
|
+
readonly at?: string;
|
|
140
|
+
/** The application's own data; plain JSON, checked here. */
|
|
141
|
+
readonly x?: AppData;
|
|
142
|
+
}): AutomationEvent;
|
|
143
|
+
/**
|
|
144
|
+
* The `access` event of a `SupportSession`: `started` when it begins,
|
|
145
|
+
* `ended` when it lapses, `revoked` when it is ended early. `principal` is
|
|
146
|
+
* the staff member, as for a support membership.
|
|
147
|
+
*/
|
|
148
|
+
declare function supportSessionEvent(input: {
|
|
149
|
+
readonly operation: AccessEvent["operation"];
|
|
150
|
+
readonly session: SupportSession;
|
|
151
|
+
readonly source?: string;
|
|
152
|
+
/** An RFC 3339 instant; defaults to now. */
|
|
153
|
+
readonly at?: string;
|
|
154
|
+
/** The application's own data; plain JSON, checked here. */
|
|
155
|
+
readonly x?: AppData;
|
|
156
|
+
}): AccessEvent;
|
|
157
|
+
/**
|
|
158
|
+
* A `credential` sink event for `credential`. `sample` belongs on `used`
|
|
159
|
+
* events only and must be in `(0, 1]`.
|
|
160
|
+
*/
|
|
161
|
+
declare function credentialEvent(input: {
|
|
162
|
+
readonly operation: CredentialEvent["operation"];
|
|
163
|
+
readonly credential: Credential;
|
|
164
|
+
readonly source?: string;
|
|
165
|
+
readonly by?: CredentialEvent["by"];
|
|
166
|
+
readonly sample?: number;
|
|
167
|
+
/** An RFC 3339 instant; defaults to now. */
|
|
168
|
+
readonly at?: string;
|
|
169
|
+
/** The application's own data; plain JSON, checked here. */
|
|
170
|
+
readonly x?: AppData;
|
|
171
|
+
}): CredentialEvent;
|
|
172
|
+
declare function membershipEvent(input: {
|
|
173
|
+
readonly source: string;
|
|
174
|
+
readonly operation: MembershipEvent["operation"];
|
|
175
|
+
readonly principal: MembershipEvent["principal"];
|
|
176
|
+
readonly scope?: string;
|
|
177
|
+
readonly id?: string;
|
|
178
|
+
readonly within?: MembershipEvent["within"];
|
|
179
|
+
readonly via?: string;
|
|
180
|
+
/** An RFC 3339 instant, or NumericDate seconds as a `Membership` holds them. */
|
|
181
|
+
readonly expiresAt?: string | number;
|
|
182
|
+
readonly roles: MembershipEvent["roles"];
|
|
183
|
+
readonly by?: MembershipEvent["by"];
|
|
184
|
+
/** An RFC 3339 instant; defaults to now. */
|
|
185
|
+
readonly at?: string;
|
|
186
|
+
/** The application's own data; plain JSON, checked here. */
|
|
187
|
+
readonly x?: AppData;
|
|
188
|
+
}): MembershipEvent;
|
|
189
|
+
/**
|
|
190
|
+
* A support-access lifecycle event. `started` on consent, `ended` when the
|
|
191
|
+
* session lapses, `revoked` when the tenant pulls consent early. It never
|
|
192
|
+
* decides; the app writes and revokes the membership.
|
|
193
|
+
*/
|
|
194
|
+
declare function accessEvent(input: {
|
|
195
|
+
readonly source: string;
|
|
196
|
+
readonly operation: AccessEvent["operation"];
|
|
197
|
+
readonly tenant: string;
|
|
198
|
+
readonly principal: AccessEvent["principal"];
|
|
199
|
+
readonly via?: string;
|
|
200
|
+
readonly roles: readonly string[];
|
|
201
|
+
readonly member?: AccessEvent["member"];
|
|
202
|
+
/** An RFC 3339 instant, or NumericDate seconds as a `Membership` holds them. */
|
|
203
|
+
readonly expiresAt?: string | number;
|
|
204
|
+
readonly grantedBy?: string;
|
|
205
|
+
readonly reason?: string;
|
|
206
|
+
readonly actor?: AccessEvent["actor"];
|
|
207
|
+
/** An RFC 3339 instant; defaults to now. */
|
|
208
|
+
readonly at?: string;
|
|
209
|
+
/** The application's own data; plain JSON, checked here. */
|
|
210
|
+
readonly x?: AppData;
|
|
211
|
+
}): AccessEvent;
|
|
212
|
+
/**
|
|
213
|
+
* Wraps a sink event in a CloudEvents 1.0 envelope. Throws a `TypeError` when
|
|
214
|
+
* `source` is not an absolute URI or `traceparent` is not W3C Trace Context.
|
|
215
|
+
*/
|
|
216
|
+
declare function toCloudEvent(event: SinkEvent, options: CloudEventOptions): CloudEvent;
|
|
217
|
+
/**
|
|
218
|
+
* Signs sink events as an offline evidence export: a compact JWS with
|
|
219
|
+
* `typ: vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents.
|
|
220
|
+
* Live deliveries use Standard Webhooks instead.
|
|
221
|
+
*/
|
|
222
|
+
declare function signDecisionBatch(events: readonly SinkEvent[], signer: TokenSigner, options: SignDecisionBatchOptions): Promise<string>;
|
|
223
|
+
declare function memoryDecisionSink(options?: MemoryDecisionSinkOptions): MemoryDecisionSink;
|
|
224
|
+
//#endregion
|
|
225
|
+
export { toCloudEvent as S, credentialEvent as _, CatalogFinding as a, signDecisionBatch as b, CloudEventOptions as c, MemoryDecisionSinkOptions as d, RESERVED_CLOUD_EVENT_TYPES as f, cloudEventType as g, automationEvent as h, CatalogEventData as i, CloudEventType as l, accessEvent as m, CLOUDEVENTS_CONTENT_TYPE as n, CatalogFindingCode as o, SignDecisionBatchOptions as p, CLOUD_EVENT_TYPES as r, CloudEvent as s, CLOUDEVENTS_BATCH_CONTENT_TYPE as t, MemoryDecisionSink as u, membershipEvent as v, supportSessionEvent as x, memoryDecisionSink as y };
|