permdock 0.3.1 → 0.5.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/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
- package/dist/a2a/index.d.ts +8 -6
- package/dist/a2a/index.js +21 -31
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-B4R5fnMU.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 -23
- package/dist/ai-sdk/index.js +38 -21
- package/dist/app-data-MuyzVqX8.js +60 -0
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-DJ6Yd5z1.js +995 -0
- package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
- package/dist/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
- 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-Dg8XsRaO.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +228 -75
- package/dist/automation-BMZPIVUM.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 +11 -23
- package/dist/better-supabase/index.d.ts +438 -86
- package/dist/better-supabase/index.js +1027 -184
- package/dist/bind--9EFVYWF.d.ts +38 -0
- package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/build-instance-BMnAudHn.js +52 -0
- package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
- package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
- package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -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-BECMPrwc.js +100 -0
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
- 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 +26 -30
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +15 -45
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +20 -6
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +240 -347
- package/dist/cloud-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- package/dist/command-L8EstFNm.js +6 -0
- package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -2
- package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
- package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
- package/dist/completion-BqhRBJD8.js +143 -0
- package/dist/config-B46rm9sc.js +26 -0
- package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
- package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
- package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
- package/dist/constants-DcJABbLW.js +20 -0
- package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +18 -18
- package/dist/create-0VZ7Pdiu.d.ts +107 -0
- package/dist/create-BDS7wc3y.d.ts +138 -0
- package/dist/create-BFfm17UA.d.ts +110 -0
- package/dist/create-BWRSXgOF.js +403 -0
- package/dist/create-C3b4B5eF.js +130 -0
- package/dist/create-DnrmLnLW.js +323 -0
- package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/deciding-columns-Sq12mEA6.js +123 -0
- package/dist/delegation-DaXVdDhM.js +286 -0
- package/dist/delegation-input-FTxMK3ji.js +19 -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-D8jDHgsl.d.ts +19 -0
- package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
- package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/doctor-DFjUxf2f.js +2361 -0
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +6 -14
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +14 -13
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/evaluate-_R8QkWaf.js +1732 -0
- package/dist/evaluations-16UqqQ6W.d.ts +32 -0
- package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +23 -29
- 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 +14 -12
- package/dist/fastify/index.d.ts +26 -13
- package/dist/fastify/index.js +17 -36
- package/dist/fetch-adapter-g0ypLkID.js +120 -0
- package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
- package/dist/fields-D9tPVUUS.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
- package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
- package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
- package/dist/grantee-Cn1HyUsI.js +254 -0
- package/dist/grantee-conditions-CcXf8hMM.js +271 -0
- package/dist/grantee-match-DHArqY82.js +142 -0
- 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-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +14 -13
- package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
- package/dist/hosted-DBDX0M-P.d.ts +78 -0
- package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
- package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
- package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
- package/dist/index-BcHcPyIo.d.ts +110 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-Chrs5fQ-.d.ts +210 -0
- package/dist/index-CxGUswIC.d.ts +431 -0
- package/dist/index-D8EovfsP.d.ts +91 -0
- package/dist/index-DOVf7RJv.d.ts +900 -0
- package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
- package/dist/index.d.ts +20 -14
- package/dist/index.js +33 -23
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
- package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +166 -145
- package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +6 -14
- package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
- 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-CtKR3GXL.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-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
- package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
- package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
- package/dist/mcp/index.d.ts +36 -9
- package/dist/mcp/index.js +476 -448
- package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +20 -20
- package/dist/next/index.d.ts +40 -20
- package/dist/next/index.js +37 -39
- 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-BFp-PZZA.js +126 -0
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +18 -25
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
- package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
- package/dist/openapi-ahr8rHu3.js +138 -0
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-CxybZErY.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +23 -20
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +53 -27
- package/dist/output-Dyw8fyPF.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/output-files-DhRBBE4n.js +138 -0
- package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
- package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
- package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
- package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
- package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +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 +47 -29
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-B9JxkBwC.js +868 -0
- package/dist/permdock-D7eeLJER.d.ts +502 -0
- package/dist/permission-registry-Br4jSNVi.js +385 -0
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
- package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/policy-DLZJ5gAp.js +399 -0
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
- package/dist/postgrest-CW0IqC-U.js +566 -0
- package/dist/postgrest-NUqZT-RB.d.ts +100 -0
- package/dist/powersync-BHfuehf3.js +62 -0
- package/dist/powersync-CbzkqL_M.js +1 -0
- package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
- 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 +6 -12
- package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
- package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
- package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/protected-DEPHc2xV.d.ts +38 -0
- package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
- package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
- package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
- package/dist/pull-BgIfno6w.js +256 -0
- package/dist/pull-ByOks_Tg.js +1 -0
- package/dist/push-CmFVBOeI.js +116 -0
- package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
- package/dist/pushed-policy-DobP7AHI.js +238 -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 -63
- package/dist/react-native/index.js +45 -27
- package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/relation-walk-3OyDBF0S.js +186 -0
- package/dist/relations-BnCWnJGI.js +163 -0
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/request-context-BTRTG7OT.js +71 -0
- package/dist/request-context-C2_1lchh.d.ts +5 -0
- 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-D_jw0BFx.js +243 -0
- package/dist/retire-CALjIQ7e.js +240 -0
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BA8an5Ap.js +336 -0
- package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
- package/dist/role-builder-CXbis5-X.js +623 -0
- package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
- package/dist/run-CNsApDpd.js +1 -0
- package/dist/run-DOfMtc9V.js +723 -0
- package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
- package/dist/scan-BOI5tJ-6.js +29 -0
- package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
- 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-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
- package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
- package/dist/server/index.d.ts +13 -134
- package/dist/server/index.js +13 -10
- package/dist/server-DqCT4CgZ.js +453 -0
- package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/shared-CD11nBbC.js +304 -0
- package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/sink-Bj_lDUDq.d.ts +225 -0
- package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.js +269 -0
- package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
- package/dist/solid/index.d.ts +24 -25
- package/dist/solid/index.js +41 -11
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
- package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
- package/dist/sql-B5T1IL83.js +55 -0
- package/dist/src-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +440 -106
- package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
- package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
- package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
- package/dist/stores-ClZUgeoP.d.ts +30 -0
- package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
- package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -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/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +13 -6
- package/dist/supabase/middleware.js +16 -11
- package/dist/supabase-9pqI57pW.js +92 -0
- package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
- package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +11 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +26 -12
- package/dist/svelte/runtime.d.ts +10 -3
- package/dist/svelte/runtime.js +4 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +5 -5
- 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/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +36 -316
- package/dist/testing/index.d.ts +391 -106
- package/dist/testing/index.js +4574 -1286
- 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-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
- package/dist/tool-refusal-CMLN5xhn.js +41 -0
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +18 -17
- package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
- package/dist/types-BNORmDM8.d.ts +172 -0
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
- package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
- package/dist/types-DX0LaKTb.d.ts +157 -0
- package/dist/types-DiQjupG2.d.ts +332 -0
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/types-_sHy8BQf.d.ts +65 -0
- package/dist/types-fbZ7JEXr.d.ts +89 -0
- package/dist/types-tIgIeIKJ.d.ts +66 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CHOtwL19.js +1 -0
- package/dist/usage-DHtE8j4E.js +32 -0
- package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
- package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
- package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
- package/dist/validity-CZ7-y0Cj.js +79 -0
- package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
- package/dist/verify-DbCL9bnB.js +1770 -0
- package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
- package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
- package/dist/vue/index.d.ts +25 -21
- package/dist/vue/index.js +25 -9
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/waiter-CKy4MQSY.d.ts +36 -0
- package/dist/watch-Cb-NcaUw.js +1 -0
- package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +13 -37
- package/dist/where-scope-Dv-WTP-w.js +306 -0
- package/dist/who-can-D0QoYbEb.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-Bd1Tejur.d.ts +15 -0
- package/dist/wrap-gX61EtpB.js +27 -0
- package/package.json +140 -41
- 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 +129 -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 +19 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +13 -8
- 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 +18 -12
- package/skills/permdock-wire/references/adapters.md +146 -50
- package/skills/permdock-wire/references/policy-options.md +15 -6
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DbYAuNkG.js +0 -224
- package/dist/arazzo-C9chp3ST.js +0 -54
- package/dist/bind-C_ob3LKa.d.ts +0 -25
- package/dist/catalog-CRW5Mx_B.js +0 -2
- package/dist/catalog-CYj-mX2O.js +0 -48
- package/dist/catalog-DWF5cYqB.js +0 -55
- package/dist/cloud-CfwZ39Rl.js +0 -50
- package/dist/cloud-DWLXO2af.js +0 -118
- package/dist/collect-CHB22Sx4.js +0 -83
- package/dist/collect-DSWOk19R.js +0 -2
- package/dist/commands-BeaGNj_o.js +0 -97
- package/dist/config-ir40y8m0.js +0 -36
- package/dist/create-CMwIl-w2.js +0 -253
- package/dist/delegation-D8pUEuce.js +0 -103
- package/dist/diff-C9RDjjhs.js +0 -48
- package/dist/doctor-Djh6JDEk.js +0 -53
- package/dist/doctor-DvH0IQff.js +0 -1194
- package/dist/doctor-collect-CjdO0wQX.js +0 -665
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/evaluation-items-CfCCejQd.js +0 -40
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-BMl1RxoX.js +0 -26
- package/dist/grantee-Cv5Sogfv.js +0 -602
- 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-0nNqHspG.d.ts +0 -6
- package/dist/index-BNc7Wer_.d.ts +0 -483
- package/dist/index-C7Tw7MaW.d.ts +0 -201
- package/dist/instance-options-Dhhcnm3y.js +0 -22
- package/dist/load-DwJUafYN.js +0 -2
- package/dist/manifest-iaoBXHKc.js +0 -783
- package/dist/map-AcxK9o_D.js +0 -147
- package/dist/may-use-DndQ5tQ-.js +0 -77
- package/dist/openapi-CQTsgKoB.js +0 -164
- package/dist/permdock-CbgvLnuo.js +0 -3479
- package/dist/permissions-DVoF6dMt.js +0 -662
- package/dist/policy-xyWg7QdR.js +0 -1122
- package/dist/powersync-CrBX8hY6.js +0 -2
- package/dist/powersync-DE19b9dT.js +0 -62
- package/dist/protected-BdnIEFkY.d.ts +0 -27
- package/dist/protected-xAr24FEC.d.ts +0 -40
- package/dist/relations-cjOL01hZ.js +0 -505
- package/dist/rls-P-BeBx0n.js +0 -238
- package/dist/rls-graph-CHwx0V8q.js +0 -435
- package/dist/rls-ownership-DcYlZ09B.js +0 -843
- package/dist/rls-shared-Cewd_-zI.js +0 -495
- package/dist/rls-verify-CMv9H3wV.js +0 -746
- package/dist/run-BWc9qqvE.js +0 -174
- package/dist/server-DlZ28Oz5.js +0 -268
- package/dist/sink-B1fZzIMf.d.ts +0 -104
- package/dist/sink-Bd9PSyfq.js +0 -141
- package/dist/skills-C5CbhhpG.js +0 -56
- package/dist/snapshot-Enxd0n-s.js +0 -975
- package/dist/sql-xdg5f4Fi.js +0 -27
- package/dist/src-BDwEZWrZ.js +0 -568
- package/dist/store-jOBYpiXC.d.ts +0 -36
- package/dist/stores-C0IMQrGI.d.ts +0 -52
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-config-Bj3iDH2I.js +0 -472
- package/dist/supabase-hook-gd3s8bxB.js +0 -2
- package/dist/supabase-s4o9s1O1.js +0 -83
- package/dist/thenable-okc2xDsj.js +0 -10
- package/dist/types-BnIEz1sU.d.ts +0 -48
- package/dist/types-Bvc4oWT6.d.ts +0 -9
- package/dist/types-CKNSyIf_.d.ts +0 -52
- package/dist/types-Cq_H8N_X.d.ts +0 -197
- package/dist/usage-B0YuTQRO.js +0 -42
- package/dist/usage-DorAJiU_.js +0 -2
- package/dist/vocabulary-DA8a8zif.d.ts +0 -56
- package/dist/watch-BwxLTYMZ.js +0 -2
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { $n as Delegation, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, j as PolicyVocabulary, qn as Actor, rr as Principal } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { r as PermDock } from "./permdock-D7eeLJER.js";
|
|
4
|
+
import { n as DescribeMessages, t as DecisionDescription } from "./describe-BZUsixiL.js";
|
|
5
|
+
//#region src/client/request.d.ts
|
|
6
|
+
type StoreHeaders = Readonly<Record<string, string>>;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/client/store.d.ts
|
|
9
|
+
type ClientStoreOptions = {
|
|
10
|
+
readonly snapshot: Snapshot | string;
|
|
11
|
+
readonly endpoint?: string;
|
|
12
|
+
readonly snapshotUrl?: string;
|
|
13
|
+
readonly approvals?: string;
|
|
14
|
+
readonly tenant?: string;
|
|
15
|
+
readonly fetch?: typeof fetch;
|
|
16
|
+
/** Request headers, or a getter read on every request so a rotated token needs no new store. */
|
|
17
|
+
readonly headers?: StoreHeaders | (() => StoreHeaders | undefined);
|
|
18
|
+
readonly maxAge?: number;
|
|
19
|
+
readonly verifier?: TokenVerifier;
|
|
20
|
+
/** `raw` is the compact JWS the snapshot was verified from, so a signed snapshot can be persisted signed. */
|
|
21
|
+
readonly onSnapshot?: (snapshot: Snapshot, tenant: string | undefined, raw: string | undefined) => void;
|
|
22
|
+
readonly onClear?: () => void;
|
|
23
|
+
/** Called once per key the snapshot cannot answer when there is no `endpoint` to ask. */
|
|
24
|
+
readonly onServerOnly?: (permission: Permission) => void;
|
|
25
|
+
/**
|
|
26
|
+
* `true` while rendering on the server: endpoint checks answer `pending`
|
|
27
|
+
* without a request. Defaults to `typeof window === 'undefined'`.
|
|
28
|
+
*/
|
|
29
|
+
readonly server?: boolean;
|
|
30
|
+
/** Milliseconds between approval status polls. Defaults to 2000. */
|
|
31
|
+
readonly approvalInterval?: number;
|
|
32
|
+
/** Start `pending`: the snapshot arrives later through `track()`. */
|
|
33
|
+
readonly awaiting?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* The first snapshot that hydrates with a principal is a persisted copy:
|
|
36
|
+
* `stale` until a refresh or a `replace()` lands.
|
|
37
|
+
*/
|
|
38
|
+
readonly stale?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Reuse decisions for the same row object until the next microtask. Only for
|
|
41
|
+
* renderers that do not track the fields a check reads (React): Vue, Svelte
|
|
42
|
+
* and Solid would stop re-running when a reactive row changes in place.
|
|
43
|
+
*/
|
|
44
|
+
readonly passCache?: boolean;
|
|
45
|
+
};
|
|
46
|
+
type ClientStore = {
|
|
47
|
+
get(): ClientPermDock;
|
|
48
|
+
subscribe(listener: () => void): () => void;
|
|
49
|
+
permissionState(permission: Permission, data?: unknown): PermissionState;
|
|
50
|
+
requestApproval(decision: Decision, note?: string): Promise<void>;
|
|
51
|
+
/** Hydrate from a pushed snapshot; a compact JWS goes through the verifier. */
|
|
52
|
+
replace(value: unknown): void;
|
|
53
|
+
/** Stay `pending` until `value` settles, then hydrate; a rejection fails closed. */
|
|
54
|
+
follow(value: PromiseLike<Snapshot | string>): void;
|
|
55
|
+
/**
|
|
56
|
+
* `follow()` once per `value`, without suspending. A thenable React already
|
|
57
|
+
* settled (`status: 'fulfilled'`) hydrates at once.
|
|
58
|
+
*/
|
|
59
|
+
track(value: PromiseLike<Snapshot | string>): void;
|
|
60
|
+
/**
|
|
61
|
+
* The approval state for a decision. While something subscribes, an
|
|
62
|
+
* `approval-required` decision is polled at `<approvals>/<token>`.
|
|
63
|
+
*/
|
|
64
|
+
approvalState(decision: Decision): ApprovalState;
|
|
65
|
+
/**
|
|
66
|
+
* Hydrate from a resolved `snapshotPromise` during render. Idempotent per `source`;
|
|
67
|
+
* subscribers are notified in a microtask, never synchronously inside render.
|
|
68
|
+
*/
|
|
69
|
+
adopt(value: Snapshot | string, source: object): void;
|
|
70
|
+
snapshot(): Snapshot;
|
|
71
|
+
/** The tenant the store currently answers for. */
|
|
72
|
+
tenant(): string | undefined;
|
|
73
|
+
/** Stops polls, drops in-flight results and persistence; the store keeps answering from its last snapshot. */
|
|
74
|
+
dispose(): void;
|
|
75
|
+
};
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/client/types.d.ts
|
|
78
|
+
type ClientStatus = "ready" | "pending" | "stale" | "server-only";
|
|
79
|
+
type PermissionState = {
|
|
80
|
+
readonly allowed: boolean;
|
|
81
|
+
readonly status: ClientStatus;
|
|
82
|
+
readonly decision: Decision;
|
|
83
|
+
};
|
|
84
|
+
type PermissionSet = {
|
|
85
|
+
readonly granted: readonly Permission[];
|
|
86
|
+
get(permission: Permission): PermissionState | undefined;
|
|
87
|
+
};
|
|
88
|
+
type ClientPermDock<V extends PolicyVocabulary = PolicyVocabulary> = PermDock<V> & {
|
|
89
|
+
status(permission?: Permission, data?: unknown): ClientStatus;
|
|
90
|
+
invalidate(ref: Permission | {
|
|
91
|
+
readonly [key: string]: unknown;
|
|
92
|
+
}): void;
|
|
93
|
+
refresh(options?: {
|
|
94
|
+
readonly tenant?: string;
|
|
95
|
+
}): Promise<void>;
|
|
96
|
+
clear(): void;
|
|
97
|
+
subscribe(listener: () => void): () => void;
|
|
98
|
+
};
|
|
99
|
+
type ApprovalState = "not-needed" | "required" | "pending" | "approved" | "rejected" | "expired";
|
|
100
|
+
type ApprovalHandle = {
|
|
101
|
+
readonly state: ApprovalState;
|
|
102
|
+
readonly token: string | undefined;
|
|
103
|
+
readonly request: (note?: string) => Promise<void>;
|
|
104
|
+
};
|
|
105
|
+
type SubjectView = {
|
|
106
|
+
readonly principal: Principal | null;
|
|
107
|
+
readonly actor: Actor | undefined;
|
|
108
|
+
readonly delegation: Delegation | undefined;
|
|
109
|
+
readonly expiresAt: number | undefined;
|
|
110
|
+
readonly simulated: boolean;
|
|
111
|
+
};
|
|
112
|
+
type TenantView = {
|
|
113
|
+
readonly tenant: string | null;
|
|
114
|
+
readonly tenants: readonly string[];
|
|
115
|
+
readonly switchTo: (id: string) => Promise<void>;
|
|
116
|
+
readonly status: ClientStatus;
|
|
117
|
+
};
|
|
118
|
+
type FilterResult<T> = readonly T[] & {
|
|
119
|
+
readonly partial: boolean;
|
|
120
|
+
};
|
|
121
|
+
type RolesOptions = {
|
|
122
|
+
readonly tenant?: string;
|
|
123
|
+
readonly team?: string;
|
|
124
|
+
};
|
|
125
|
+
/** The provider options Vue, Svelte and Solid share; each adds its own reactive `snapshot`, `tenant`, `headers`, `verifier` and `defaults`. */
|
|
126
|
+
type ProviderOptionsBase = {
|
|
127
|
+
/**
|
|
128
|
+
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
129
|
+
* `false` never calls one: such a check is denied with reason `server-only`.
|
|
130
|
+
*/
|
|
131
|
+
readonly endpoint?: string | false;
|
|
132
|
+
/** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
|
|
133
|
+
readonly snapshotUrl?: string;
|
|
134
|
+
readonly approvals?: string;
|
|
135
|
+
/** Read on every request, so a new `fetch` applies without a new store. */
|
|
136
|
+
readonly fetch?: typeof fetch;
|
|
137
|
+
readonly maxAge?: number;
|
|
138
|
+
/** Localised text for the describe helper. */
|
|
139
|
+
readonly messages?: DescribeMessages;
|
|
140
|
+
/** Called with each snapshot the store accepts. */
|
|
141
|
+
readonly onSnapshot?: NonNullable<ClientStoreOptions["onSnapshot"]>;
|
|
142
|
+
/** Called when the store drops its snapshot. */
|
|
143
|
+
readonly onClear?: () => void;
|
|
144
|
+
/** Milliseconds between approval status polls. Defaults to 2000. */
|
|
145
|
+
readonly approvalInterval?: number;
|
|
146
|
+
};
|
|
147
|
+
/** How a control shows a permission it cannot use: hidden, or disabled with a reason. */
|
|
148
|
+
type GateMode = "hide" | "disable";
|
|
149
|
+
/**
|
|
150
|
+
* Everything a permission-gated control renders from, in one value: a
|
|
151
|
+
* button, a menu item or a link reads these fields and decides nothing
|
|
152
|
+
* itself. The client is a hint; the server checks again.
|
|
153
|
+
*/
|
|
154
|
+
type GateView = {
|
|
155
|
+
/** The decision granted the action. */
|
|
156
|
+
readonly allowed: boolean;
|
|
157
|
+
/** The snapshot is loading; render the control disabled, not hidden. */
|
|
158
|
+
readonly pending: boolean;
|
|
159
|
+
/** `mode: "hide"` and the action is not available: render nothing. */
|
|
160
|
+
readonly hidden: boolean;
|
|
161
|
+
/** The control cannot run the action now (denied, pending or awaiting approval). */
|
|
162
|
+
readonly disabled: boolean;
|
|
163
|
+
/** The decision needs a person's approval first; offer to request it. */
|
|
164
|
+
readonly needsApproval: boolean;
|
|
165
|
+
/** The plans that would grant the action, for an upgrade prompt; empty otherwise. */
|
|
166
|
+
readonly upgrade: readonly string[];
|
|
167
|
+
/** Title and detail for a tooltip or an accessible description. */
|
|
168
|
+
readonly reason: DecisionDescription;
|
|
169
|
+
readonly decision: Decision;
|
|
170
|
+
};
|
|
171
|
+
//#endregion
|
|
172
|
+
export { FilterResult as a, PermissionSet as c, RolesOptions as d, SubjectView as f, ClientStoreOptions as h, ClientStatus as i, PermissionState as l, ClientStore as m, ApprovalState as n, GateMode as o, TenantView as p, ClientPermDock as r, GateView as s, ApprovalHandle as t, ProviderOptionsBase as u };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Vt as Snapshot, dt as TokenVerifier, ot as SnapshotSource } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { n as DescribeMessages } from "./describe-BZUsixiL.js";
|
|
3
|
+
import { h as ClientStoreOptions } from "./types-BNORmDM8.js";
|
|
4
|
+
import { t as PermDockDefaults } from "./types-tIgIeIKJ.js";
|
|
5
|
+
import { ReactNode } from "react";
|
|
6
|
+
//#region src/react-native/types.d.ts
|
|
7
|
+
type SnapshotStorage = {
|
|
8
|
+
/** Names the implementation in errors and events. */
|
|
9
|
+
readonly name?: string;
|
|
10
|
+
getItem(key: string): string | null | Promise<string | null>;
|
|
11
|
+
setItem(key: string, value: string): void | Promise<void>;
|
|
12
|
+
removeItem(key: string): void | Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
type NativeRevalidate = "launch" | "focus" | number;
|
|
15
|
+
/**
|
|
16
|
+
* Calls `listener` when the app changes state; `active` is `false` when it
|
|
17
|
+
* goes to the background. A listener called without an argument counts as
|
|
18
|
+
* a return to the foreground.
|
|
19
|
+
*/
|
|
20
|
+
type SubscribeForeground = (listener: (active?: boolean) => void) => () => void;
|
|
21
|
+
/** Calls `listener` with `false` when the device loses connectivity and `true` when it returns. */
|
|
22
|
+
type SubscribeOnline = (listener: (online: boolean) => void) => () => void;
|
|
23
|
+
type ReactNativePermDockProviderProps = {
|
|
24
|
+
readonly storage: SnapshotStorage;
|
|
25
|
+
/**
|
|
26
|
+
* The signed-in principal's id, or `null` when nobody is signed in. Only a
|
|
27
|
+
* persisted snapshot for this id is read or written; `null` clears storage.
|
|
28
|
+
*/
|
|
29
|
+
readonly subjectId: string | null;
|
|
30
|
+
readonly snapshot?: Snapshot | string;
|
|
31
|
+
readonly snapshotUrl?: string;
|
|
32
|
+
/** Hydrates from the device's own rows (`localSnapshot`); with `snapshotUrl` too, the latest answer wins. */
|
|
33
|
+
readonly source?: SnapshotSource;
|
|
34
|
+
readonly endpoint?: string;
|
|
35
|
+
readonly approvals?: string;
|
|
36
|
+
readonly tenant?: string;
|
|
37
|
+
readonly revalidate?: NativeRevalidate;
|
|
38
|
+
readonly subscribeForeground?: SubscribeForeground;
|
|
39
|
+
readonly subscribeOnline?: SubscribeOnline;
|
|
40
|
+
readonly fetch?: typeof fetch;
|
|
41
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
42
|
+
readonly maxAge?: number;
|
|
43
|
+
readonly verifier?: TokenVerifier;
|
|
44
|
+
/** What every `<Protected>` below renders for a slot it leaves out. */
|
|
45
|
+
readonly defaults?: PermDockDefaults;
|
|
46
|
+
/** Localised text for `useDescribe()`. */
|
|
47
|
+
readonly messages?: DescribeMessages;
|
|
48
|
+
/** Called with each snapshot the store accepts, after it is persisted. */
|
|
49
|
+
readonly onSnapshot?: NonNullable<ClientStoreOptions["onSnapshot"]>;
|
|
50
|
+
/** Called when the store drops its snapshot, after storage is cleared. */
|
|
51
|
+
readonly onClear?: () => void;
|
|
52
|
+
/** Milliseconds between approval status polls. Defaults to 2000. */
|
|
53
|
+
readonly approvalInterval?: number;
|
|
54
|
+
readonly children: ReactNode;
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { SubscribeOnline as a, SubscribeForeground as i, ReactNativePermDockProviderProps as n, SnapshotStorage as r, NativeRevalidate as t };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Xt as DecisionEvent, j as PolicyVocabulary } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { r as PermDock } from "./permdock-D7eeLJER.js";
|
|
2
3
|
//#region src/otel/types.d.ts
|
|
3
4
|
declare const GENAI_SEMCONV_PIN = "1.37.0";
|
|
4
5
|
declare const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { dt as TokenVerifier, ir as Subject, ot as SnapshotSource, q as DecisionSink, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { o as PolicySource } from "./hosted-DBDX0M-P.js";
|
|
3
|
+
import { m as ApprovalStore, u as ApprovalRequest } from "./types-CCpc2Dcv.js";
|
|
4
|
+
import { a as CatalogDocument } from "./types-CZTnPFzM.js";
|
|
5
|
+
import { a as CatalogFinding } from "./sink-Bj_lDUDq.js";
|
|
6
|
+
//#region src/cloud/types.d.ts
|
|
7
|
+
type CloudEndpointOptions = {
|
|
8
|
+
readonly url?: string;
|
|
9
|
+
readonly environment?: string;
|
|
10
|
+
};
|
|
11
|
+
type CloudEndpoints = {
|
|
12
|
+
/** The environment URL, `<url>/v1/environments/<env>`: `iss` and `aud` of the policy document. */
|
|
13
|
+
readonly issuer: string;
|
|
14
|
+
/** The environment's JWK Set URL, for `joseTokenVerifier({ jwks })`. */
|
|
15
|
+
readonly jwks: string;
|
|
16
|
+
};
|
|
17
|
+
/** What every `permdock/cloud` client needs to reach one environment. */
|
|
18
|
+
type CloudConnectionOptions = CloudEndpointOptions & {
|
|
19
|
+
/** The environment key; defaults to `PERMDOCK_CLOUD_KEY`. */
|
|
20
|
+
readonly key?: string;
|
|
21
|
+
readonly fetch?: typeof fetch;
|
|
22
|
+
};
|
|
23
|
+
/** Who signs the `PermDock-Approver` token `approvals.resolve` sends. */
|
|
24
|
+
type CloudApproverOptions = {
|
|
25
|
+
/**
|
|
26
|
+
* Signs the token with a key the environment trusts as an issuer, such as
|
|
27
|
+
* `joseTokenSigner` over your own key. Never `cloudSigner`: a client key
|
|
28
|
+
* that could mint approver tokens could forge any approver.
|
|
29
|
+
*/
|
|
30
|
+
readonly signer: TokenSigner;
|
|
31
|
+
/** `aud` of the token; defaults to `<issuer>/approvals`, the environment URL plus `/approvals`. */
|
|
32
|
+
readonly audience?: string | readonly string[];
|
|
33
|
+
/**
|
|
34
|
+
* The `holder(permission)` approvers of `request` that `approver` holds,
|
|
35
|
+
* typically `approverPermissions(request, permdockFor(approver))`. Signed
|
|
36
|
+
* into the token as `permissions`; without it the verdict's own
|
|
37
|
+
* `permissions` are signed. A throw signs none.
|
|
38
|
+
*/
|
|
39
|
+
readonly permissions?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
|
|
40
|
+
/**
|
|
41
|
+
* The relation approvers of `request` that `approver` holds, typically
|
|
42
|
+
* `approverRelations(request, approver, { relations, permissions })`.
|
|
43
|
+
* Signed into the token as `relations`; without it the verdict's own
|
|
44
|
+
* `relations` are signed. A throw signs none.
|
|
45
|
+
*/
|
|
46
|
+
readonly relations?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
|
|
47
|
+
};
|
|
48
|
+
type CloudOptions = CloudConnectionOptions & {
|
|
49
|
+
/**
|
|
50
|
+
* Proves the approver on `approvals.resolve`. Without it, every resolve but
|
|
51
|
+
* a `system` rejection throws `approver-unauthenticated` and sends nothing.
|
|
52
|
+
*/
|
|
53
|
+
readonly approver?: CloudApproverOptions;
|
|
54
|
+
readonly flushAt?: number;
|
|
55
|
+
/** Most events the sink holds while the Cloud is unreachable (default 10 000); the oldest are dropped first. */
|
|
56
|
+
readonly capacity?: number;
|
|
57
|
+
readonly waitUntil?: (task: Promise<void>) => void;
|
|
58
|
+
/** The CloudEvents `source` of every event the sink sends, an absolute URI; defaults to the environment URL. */
|
|
59
|
+
readonly source?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Verifies the environment's signed policy document, typically
|
|
62
|
+
* `joseTokenVerifier({ jwks: cloudEndpoints().jwks })`. Without one,
|
|
63
|
+
* `policies.current()` stays `null`: an unverifiable document is never applied.
|
|
64
|
+
*/
|
|
65
|
+
readonly verifier?: TokenVerifier;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* What `POST /catalog` answers: `201` with the new version and the drift
|
|
69
|
+
* findings against the previous one, or `200` with `unchanged: true` when
|
|
70
|
+
* the fingerprint is already published.
|
|
71
|
+
*/
|
|
72
|
+
type CloudCatalogPush = {
|
|
73
|
+
readonly version: number;
|
|
74
|
+
readonly fingerprint: string;
|
|
75
|
+
readonly findings: readonly CatalogFinding[];
|
|
76
|
+
} | {
|
|
77
|
+
readonly version: number;
|
|
78
|
+
readonly fingerprint: string;
|
|
79
|
+
readonly unchanged: true;
|
|
80
|
+
};
|
|
81
|
+
type CloudCatalog = {
|
|
82
|
+
/**
|
|
83
|
+
* Posts the catalog, its `operations` included, to the environment.
|
|
84
|
+
* Throws when the Cloud refuses it or answers another shape. The Cloud
|
|
85
|
+
* shows and diffs it; it never decides with it.
|
|
86
|
+
*/
|
|
87
|
+
push(catalog: CatalogDocument): Promise<CloudCatalogPush>;
|
|
88
|
+
};
|
|
89
|
+
type CloudClient = CloudEndpoints & {
|
|
90
|
+
readonly approvals: ApprovalStore;
|
|
91
|
+
readonly sink: DecisionSink;
|
|
92
|
+
/**
|
|
93
|
+
* A `SnapshotSource` for the subject `token` proves: an `at+jwt` the
|
|
94
|
+
* environment issued, or one a trusted issuer registered for `subject`
|
|
95
|
+
* signed. Sent as `PermDock-Subject`; the Cloud never takes a subject from
|
|
96
|
+
* anything else.
|
|
97
|
+
*/
|
|
98
|
+
snapshotsFor(token: string): SnapshotSource;
|
|
99
|
+
readonly policies: PolicySource;
|
|
100
|
+
readonly catalog: CloudCatalog;
|
|
101
|
+
};
|
|
102
|
+
type CloudSignerOptions = CloudConnectionOptions & {
|
|
103
|
+
/** `aud` when a `sign` call names none; signing without either throws. */
|
|
104
|
+
readonly audience?: string | readonly string[];
|
|
105
|
+
};
|
|
106
|
+
//#endregion
|
|
107
|
+
export { CloudConnectionOptions as a, CloudOptions as c, CloudClient as i, CloudSignerOptions as l, CloudCatalog as n, CloudEndpointOptions as o, CloudCatalogPush as r, CloudEndpoints as s, CloudApproverOptions as t };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Cn as RelationGrantee, Rt as Instant, fn as Approver, ir as Subject, nr as Membership, o as ApprovalStage, on as WireDelegation, r as ApprovalMode, sr as AdapterId } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { V as AppData } from "./vocabulary-D6lPdb4Z.js";
|
|
2
3
|
//#region src/approvals/types.d.ts
|
|
3
4
|
type ApprovalStatus = "pending" | "approved" | "rejected" | "expired";
|
|
4
5
|
type ApprovalApprovers = {
|
|
@@ -13,9 +14,9 @@ type ApprovalApprovers = {
|
|
|
13
14
|
readonly staleOn?: "resource-change";
|
|
14
15
|
/** Distinct approvers of `by` needed before `status` becomes `approved`; absent means 1. */
|
|
15
16
|
readonly quorum?: number;
|
|
16
|
-
/** Who else may approve once the request has waited `after`
|
|
17
|
+
/** Who else may approve once the request has waited `after` seconds since `createdAt`. */
|
|
17
18
|
readonly escalation?: {
|
|
18
|
-
readonly after:
|
|
19
|
+
readonly after: number;
|
|
19
20
|
readonly to: Approver | readonly Approver[];
|
|
20
21
|
};
|
|
21
22
|
};
|
|
@@ -25,6 +26,43 @@ type ApprovalSignature = {
|
|
|
25
26
|
readonly at: string;
|
|
26
27
|
readonly stage?: number;
|
|
27
28
|
readonly vouched?: string;
|
|
29
|
+
/** The principal `by` approved for, when `by` acted under an `ApprovalDelegation`. */
|
|
30
|
+
readonly onBehalfOf?: string;
|
|
31
|
+
/** The `ApprovalDelegation` id `onBehalfOf` was read from. */
|
|
32
|
+
readonly delegation?: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* One out-of-office delegation: `delegate` may approve what `delegator`
|
|
36
|
+
* could approve, from `from` until `until`. Both instants are required, so
|
|
37
|
+
* a delegation cannot be open-ended. `permissions` and `resources` narrow
|
|
38
|
+
* it; absent, it covers every request. `tenant` holds it to one tenant.
|
|
39
|
+
*/
|
|
40
|
+
type ApprovalDelegation = {
|
|
41
|
+
readonly id: string;
|
|
42
|
+
readonly delegator: string;
|
|
43
|
+
readonly delegate: string;
|
|
44
|
+
readonly tenant?: string;
|
|
45
|
+
readonly permissions?: readonly string[];
|
|
46
|
+
readonly resources?: readonly string[];
|
|
47
|
+
/** RFC 3339. Inclusive. */
|
|
48
|
+
readonly from: string;
|
|
49
|
+
/** RFC 3339. Exclusive. */
|
|
50
|
+
readonly until: string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Active approval delegations for one delegate, a subject input the handler
|
|
54
|
+
* reads when the caller is not an approver on their own. A throw matches
|
|
55
|
+
* nobody. One hop: the handler never reads the delegator's own delegations.
|
|
56
|
+
*/
|
|
57
|
+
type ApprovalDelegationSource = {
|
|
58
|
+
/** Names the implementation in errors and events. */
|
|
59
|
+
readonly name?: string;
|
|
60
|
+
delegationsFor(query: {
|
|
61
|
+
readonly delegate: string;
|
|
62
|
+
readonly tenant?: string;
|
|
63
|
+
/** RFC 3339. The source returns delegations active at this instant. */
|
|
64
|
+
readonly at: string;
|
|
65
|
+
}): readonly ApprovalDelegation[] | Promise<readonly ApprovalDelegation[]>;
|
|
28
66
|
};
|
|
29
67
|
type ApprovalSubjectSummary = {
|
|
30
68
|
readonly principal: {
|
|
@@ -37,13 +75,13 @@ type ApprovalSubjectSummary = {
|
|
|
37
75
|
readonly kind: string;
|
|
38
76
|
};
|
|
39
77
|
readonly session?: string;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
readonly authorizationDetails?: readonly unknown[];
|
|
43
|
-
};
|
|
78
|
+
/** OAuth `scope` (space-separated) and RFC 9396 `authorization_details`. */
|
|
79
|
+
readonly delegation?: WireDelegation;
|
|
44
80
|
};
|
|
45
81
|
type ApprovalRequest = {
|
|
46
82
|
readonly v: 1;
|
|
83
|
+
/** The request id: the signature's `jti`. */
|
|
84
|
+
readonly id: string;
|
|
47
85
|
readonly token: string;
|
|
48
86
|
readonly permission: string;
|
|
49
87
|
readonly scope: string;
|
|
@@ -55,7 +93,7 @@ type ApprovalRequest = {
|
|
|
55
93
|
readonly membership?: Membership;
|
|
56
94
|
readonly approvers?: ApprovalApprovers;
|
|
57
95
|
readonly detail: string;
|
|
58
|
-
readonly adapter?:
|
|
96
|
+
readonly adapter?: AdapterId;
|
|
59
97
|
readonly createdAt: string;
|
|
60
98
|
readonly expiresAt: string;
|
|
61
99
|
readonly status: ApprovalStatus;
|
|
@@ -67,6 +105,8 @@ type ApprovalRequest = {
|
|
|
67
105
|
readonly vouched?: string;
|
|
68
106
|
readonly note?: string;
|
|
69
107
|
readonly consumedAt?: string;
|
|
108
|
+
/** The application's own data, set when the request opens; plain JSON, never read by a decision. */
|
|
109
|
+
readonly x?: AppData;
|
|
70
110
|
};
|
|
71
111
|
type ApprovalVerdict = {
|
|
72
112
|
readonly status: "approved" | "rejected";
|
|
@@ -87,6 +127,18 @@ type ApprovalVerdict = {
|
|
|
87
127
|
*/
|
|
88
128
|
readonly permissions?: readonly string[];
|
|
89
129
|
readonly vouched?: string;
|
|
130
|
+
/**
|
|
131
|
+
* Set when `by` is not an approver and acts for this principal under an
|
|
132
|
+
* `ApprovalDelegation`. Server-side input: the handler resolves the
|
|
133
|
+
* delegator, and `applyApprovalVerdict` checks them again. `relations`
|
|
134
|
+
* and `permissions` are that principal's facts, never the delegate's.
|
|
135
|
+
*/
|
|
136
|
+
readonly onBehalfOf?: {
|
|
137
|
+
readonly subject: Subject;
|
|
138
|
+
readonly delegation: string;
|
|
139
|
+
readonly relations?: readonly string[];
|
|
140
|
+
readonly permissions?: readonly string[];
|
|
141
|
+
};
|
|
90
142
|
};
|
|
91
143
|
type ApprovalListFilter = {
|
|
92
144
|
readonly status?: ApprovalStatus;
|
|
@@ -114,35 +166,43 @@ type ApprovalCancelMeta = {
|
|
|
114
166
|
readonly note?: string;
|
|
115
167
|
};
|
|
116
168
|
type ApprovalStore = {
|
|
169
|
+
/** Names the implementation in errors and events. */
|
|
170
|
+
readonly name?: string;
|
|
117
171
|
/**
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
* `
|
|
172
|
+
* Seconds a request opened against this store stays open when the
|
|
173
|
+
* caller sets no `ttl`; absent means `DEFAULT_APPROVAL_TTL`. A grant's
|
|
174
|
+
* `approval.ttl` still caps it.
|
|
121
175
|
*/
|
|
122
176
|
readonly ttl?: number;
|
|
123
177
|
create(request: ApprovalRequest): Promise<void> | void;
|
|
124
178
|
get(token: string): Promise<ApprovalRequest | null> | ApprovalRequest | null;
|
|
179
|
+
/**
|
|
180
|
+
* The request with this `id`, for `approvalsHandler`, which routes by id.
|
|
181
|
+
* Without it the handler pages through `list` to find the id.
|
|
182
|
+
*/
|
|
183
|
+
getById?(id: string): Promise<ApprovalRequest | null> | ApprovalRequest | null;
|
|
125
184
|
resolve(token: string, verdict: ApprovalVerdict): Promise<ApprovalRequest> | ApprovalRequest;
|
|
126
185
|
list(query: ApprovalListQuery): Promise<ApprovalPage> | ApprovalPage;
|
|
127
|
-
expire(now?:
|
|
186
|
+
expire(now?: Instant): Promise<number> | number;
|
|
128
187
|
/**
|
|
129
188
|
* Marks an approved, unexpired, unconsumed request consumed and returns it;
|
|
130
189
|
* returns `null` otherwise. Must be atomic: two concurrent calls for one
|
|
131
190
|
* token never both return the request.
|
|
132
191
|
*/
|
|
133
|
-
consume(token: string, now?:
|
|
192
|
+
consume(token: string, now?: Instant): Promise<ApprovalRequest | null> | ApprovalRequest | null;
|
|
134
193
|
cancel?(filter: ApprovalListFilter, meta: ApprovalCancelMeta): Promise<number> | number;
|
|
135
194
|
};
|
|
136
|
-
type
|
|
195
|
+
type ApprovalResumeFailureCause = "approval-not-found" | "approval-pending" | "approval-rejected" | "approval-expired" | "approval-consumed";
|
|
137
196
|
type ApprovalInspectResult = {
|
|
138
197
|
readonly ok: true;
|
|
139
198
|
readonly request: ApprovalRequest;
|
|
140
199
|
} | {
|
|
141
200
|
readonly ok: false;
|
|
142
|
-
readonly
|
|
201
|
+
readonly cause: ApprovalResumeFailureCause;
|
|
143
202
|
};
|
|
144
203
|
declare const APPROVAL_HEADER: "PermDock-Approval";
|
|
145
|
-
|
|
204
|
+
/** Seconds a request stays open when neither the store nor the call sets a `ttl`. */
|
|
205
|
+
declare const DEFAULT_APPROVAL_TTL: number;
|
|
146
206
|
/** The approvals a request needs in total: `approvers.quorum` (or 1), or the sum of its stages' quorums. */
|
|
147
207
|
declare function approvalQuorum(request: ApprovalRequest): number;
|
|
148
208
|
/**
|
|
@@ -154,4 +214,4 @@ declare function escalationOpenAt(request: ApprovalRequest): number | undefined;
|
|
|
154
214
|
/** The key a verdict's `relations` lists a relation approver under. */
|
|
155
215
|
declare function approverRelationKey(item: RelationGrantee): string;
|
|
156
216
|
//#endregion
|
|
157
|
-
export {
|
|
217
|
+
export { DEFAULT_APPROVAL_TTL as _, ApprovalDelegationSource as a, escalationOpenAt as b, ApprovalListQuery as c, ApprovalResumeFailureCause as d, ApprovalSignature as f, ApprovalVerdict as g, ApprovalSubjectSummary as h, ApprovalDelegation as i, ApprovalPage as l, ApprovalStore as m, ApprovalApprovers as n, ApprovalInspectResult as o, ApprovalStatus as p, ApprovalCancelMeta as r, ApprovalListFilter as s, APPROVAL_HEADER as t, ApprovalRequest as u, approvalQuorum as v, approverRelationKey as y };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { I as ResourceRelation } from "./vocabulary-D6lPdb4Z.js";
|
|
2
|
+
import { s as OperationMeta } from "./operations-CxybZErY.js";
|
|
2
3
|
//#region src/catalog/types.d.ts
|
|
3
4
|
type CatalogUsage = {
|
|
4
5
|
readonly file: string;
|
|
@@ -35,7 +36,8 @@ type CatalogBreakGlass = {
|
|
|
35
36
|
readonly overrides: readonly string[];
|
|
36
37
|
readonly purpose?: readonly string[];
|
|
37
38
|
readonly reason: boolean;
|
|
38
|
-
|
|
39
|
+
/** Seconds. */
|
|
40
|
+
readonly maxDuration?: number;
|
|
39
41
|
readonly obligations: readonly string[];
|
|
40
42
|
};
|
|
41
43
|
type CatalogApproval = "human" | {
|
|
@@ -48,9 +50,11 @@ type CatalogApproval = "human" | {
|
|
|
48
50
|
readonly distinct?: boolean;
|
|
49
51
|
readonly staleOn?: "resource-change";
|
|
50
52
|
readonly quorum?: number;
|
|
51
|
-
|
|
53
|
+
/** Seconds. */
|
|
54
|
+
readonly ttl?: number;
|
|
55
|
+
/** `after` is seconds from the request's creation. */
|
|
52
56
|
readonly escalation?: {
|
|
53
|
-
readonly after:
|
|
57
|
+
readonly after: number;
|
|
54
58
|
readonly to: unknown;
|
|
55
59
|
};
|
|
56
60
|
};
|
|
@@ -58,12 +62,26 @@ type CatalogResource = {
|
|
|
58
62
|
readonly id: string;
|
|
59
63
|
readonly schema: unknown;
|
|
60
64
|
readonly definedIn?: string;
|
|
65
|
+
/** `resource(…, { parent })`: the row field that holds the parent row's id. */
|
|
66
|
+
readonly parent?: {
|
|
67
|
+
readonly field: string;
|
|
68
|
+
readonly resource: string;
|
|
69
|
+
};
|
|
70
|
+
/** `resource(…, { links })`: to-one links `through` walks; absent when none. */
|
|
71
|
+
readonly links?: Readonly<Record<string, {
|
|
72
|
+
readonly field: string;
|
|
73
|
+
readonly resource: string;
|
|
74
|
+
}>>;
|
|
75
|
+
/** `'hide'` answers a denied check on a loaded row as if the row did not exist; absent for `'reveal'`. */
|
|
76
|
+
readonly disclosure?: "hide";
|
|
61
77
|
readonly relations?: Readonly<Record<string, ResourceRelation>>;
|
|
62
78
|
/** The row field an `approval: { staleOn: 'resource-change' }` binds to. */
|
|
63
79
|
readonly version?: string;
|
|
64
80
|
/** The boolean column that keeps ancestor grants out of a row. */
|
|
65
81
|
readonly restricted?: string;
|
|
66
82
|
readonly restrictedStops?: readonly string[];
|
|
83
|
+
/** `resource(…, { meta })`: titles plus the app's own `x`; absent when empty. */
|
|
84
|
+
readonly meta?: Readonly<Record<string, unknown>>;
|
|
67
85
|
};
|
|
68
86
|
type CatalogRole = {
|
|
69
87
|
readonly key: string;
|
|
@@ -86,7 +104,8 @@ type CatalogRole = {
|
|
|
86
104
|
};
|
|
87
105
|
/** A role activation as the catalog carries it. */
|
|
88
106
|
type CatalogActivation = {
|
|
89
|
-
|
|
107
|
+
/** Seconds. */
|
|
108
|
+
readonly maxDuration?: number;
|
|
90
109
|
readonly justification: "required" | "optional";
|
|
91
110
|
readonly approval?: boolean;
|
|
92
111
|
readonly assurance?: {
|
|
@@ -99,7 +118,8 @@ type CatalogActivation = {
|
|
|
99
118
|
type CatalogSupportAccess = {
|
|
100
119
|
readonly actorRequired: boolean;
|
|
101
120
|
readonly group: string;
|
|
102
|
-
|
|
121
|
+
/** Seconds. */
|
|
122
|
+
readonly durations: readonly number[];
|
|
103
123
|
};
|
|
104
124
|
/** One declared scope, in declaration order. */
|
|
105
125
|
type CatalogScope = {
|
|
@@ -107,10 +127,10 @@ type CatalogScope = {
|
|
|
107
127
|
readonly key: string;
|
|
108
128
|
readonly within?: string;
|
|
109
129
|
};
|
|
110
|
-
/** A grant's `validFrom` / `validUntil` window in
|
|
130
|
+
/** A grant's `validFrom` / `validUntil` window in RFC 3339. */
|
|
111
131
|
type CatalogValidity = {
|
|
112
|
-
readonly from?:
|
|
113
|
-
readonly until?:
|
|
132
|
+
readonly from?: string;
|
|
133
|
+
readonly until?: string;
|
|
114
134
|
};
|
|
115
135
|
/**
|
|
116
136
|
* One code grant as the catalog carries it: the normalised shape
|
|
@@ -141,11 +161,14 @@ type CatalogGrant = {
|
|
|
141
161
|
readonly requires?: string | readonly string[];
|
|
142
162
|
readonly limit?: {
|
|
143
163
|
readonly count: number;
|
|
144
|
-
|
|
164
|
+
/** Seconds. */
|
|
165
|
+
readonly per: number;
|
|
145
166
|
readonly mode?: "hard" | "soft";
|
|
146
167
|
};
|
|
147
168
|
/** Present when the grant is a closure, reads the relation graph or is opaque; `where` and `check` are then omitted. */
|
|
148
169
|
readonly portable?: false;
|
|
170
|
+
/** The grant's `meta`: a description plus the app's own `x`; absent when empty. */
|
|
171
|
+
readonly meta?: Readonly<Record<string, unknown>>;
|
|
149
172
|
};
|
|
150
173
|
/** `permissions.catalog.json`, validated by `schemas/catalog-v1.json`. */
|
|
151
174
|
type CatalogDocument = {
|
|
@@ -167,6 +190,22 @@ type CatalogDocument = {
|
|
|
167
190
|
readonly grants?: readonly CatalogGrant[];
|
|
168
191
|
/** The policy's standing delegations, canonically ordered; present when the policy declares any. */
|
|
169
192
|
readonly delegations?: readonly CatalogDelegation[];
|
|
193
|
+
/** The `defineOperations` map in definition order; present when the config names an `operations` module. */
|
|
194
|
+
readonly operations?: readonly CatalogOperation[];
|
|
195
|
+
/** The policy's coarse OAuth scopes, sorted by scope; present when the policy declares any. */
|
|
196
|
+
readonly oauthScopes?: readonly CatalogOAuthScope[];
|
|
197
|
+
};
|
|
198
|
+
/** One `definePolicy({ oauthScopes })` entry: the coarse scope an authorization server issues and the permission keys it covers, sorted by code point. */
|
|
199
|
+
type CatalogOAuthScope = {
|
|
200
|
+
readonly scope: string;
|
|
201
|
+
readonly permissions: readonly string[];
|
|
202
|
+
};
|
|
203
|
+
/** One `defineOperations` entry: its name, the permission keys it is bound to, and its meta. */
|
|
204
|
+
type CatalogOperation = {
|
|
205
|
+
readonly name: string;
|
|
206
|
+
readonly permission: string;
|
|
207
|
+
readonly results?: string;
|
|
208
|
+
readonly meta: OperationMeta;
|
|
170
209
|
};
|
|
171
210
|
/** One `definePolicy({ delegations })` entry: who hands over, to which actor, which permission keys, and when. */
|
|
172
211
|
type CatalogDelegation = {
|
|
@@ -180,4 +219,4 @@ type CatalogDelegation = {
|
|
|
180
219
|
readonly validity?: CatalogValidity;
|
|
181
220
|
};
|
|
182
221
|
//#endregion
|
|
183
|
-
export { CatalogDocument as a,
|
|
222
|
+
export { CatalogDocument as a, CatalogOperation as c, CatalogRole as d, CatalogScope as f, CatalogValidity as h, CatalogDelegation as i, CatalogPermission as l, CatalogUsage as m, CatalogApproval as n, CatalogGrant as o, CatalogSupportAccess as p, CatalogBreakGlass as r, CatalogOAuthScope as s, CatalogActivation as t, CatalogResource as u };
|