permdock 0.4.0 → 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/{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-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 -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-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/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.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-Dg8XsRaO.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-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 +9 -8
- package/dist/better-supabase/index.d.ts +357 -30
- package/dist/better-supabase/index.js +936 -194
- package/dist/{bind-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
- package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -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-BMnAudHn.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-BSslw1QV.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-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.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-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- 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-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/{compile-CtTP7eur.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-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- 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-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
- package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-DaXVdDhM.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-D8jDHgsl.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.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-OD_4c__H.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-C9YJsv3H.js → evaluations-DZ2CbV5k.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-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/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-D2lZt4Dd.js} +55 -52
- package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.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-DTcZOzhF.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-BZIAYvon.js +315 -0
- package/dist/hosted-DBDX0M-P.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-DMmOG27O.js} +190 -53
- 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-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
- package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
- 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-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-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-5JatXyND.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-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-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
- package/dist/{map-error-BE27PYkE.js → map-error-TCAdw-eW.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-BShP7Vf4.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-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
- 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 +20 -15
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +30 -7
- package/dist/output-Dyw8fyPF.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-BatFgAA4.js} +1698 -869
- 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-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
- package/dist/{parse-local-manifest-DvYUR0QL.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 +45 -26
- 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-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-CCJ6lmxB.js → permissions-CZKiUfFM.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
- 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-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
- 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-DXlt-vks.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-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
- package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
- package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
- 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 -72
- package/dist/react-native/index.js +24 -22
- 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-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.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-BA8an5Ap.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
- package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
- 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-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DtaA4JuW.js → saas-FO-Q8oj0.js} +16 -14
- package/dist/scan-BOI5tJ-6.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-DqCT4CgZ.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
- package/dist/{shared-JhMeOsDF.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-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.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-DqK9eDmM.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-BV9j0DeZ.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-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- 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-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
- package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
- package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
- package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.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-9pqI57pW.js +92 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
- 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-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
- package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
- package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-CIlTojhq.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-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
- 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-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.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-DbCL9bnB.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-D6lPdb4Z.d.ts} +65 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- 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-zeucB7eF.js → watch-CszoTJMq.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- 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-Cr93qqdP.d.ts → wrap-Bd1Tejur.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 +9 -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 +5 -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/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
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
import { $n as Delegation, Bn as LimitDetail, G as CustomRoleSourceFactory, Hn as Obligation, J as EntitlementSource, Nn as Decision, Q as LimitStore, Rn as ExplainedDecision, Rt as Instant, T as Policy, Un as Quota, Vt as Snapshot, W as CustomRoleSource, Xt as DecisionEvent, _ as GrantLimit, at as SettingsSource, cn as Scope, et as MembershipSource, h as Grant, i as ApprovalOption, ir as Subject, it as RelationSource, j as PolicyVocabulary, lr as Condition, nr as Membership, q as DecisionSink, qn as Actor, qt as AuthEvent, rr as Principal, sr as AdapterId, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { N as ResourceNode, V as AppData, a as RoleTree, n as PlanTree, r as Role, w as Permission } from "./vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { i as OperationEffect, s as OperationMeta, t as Operation, u as OperationRisk } from "./operations-CxybZErY.js";
|
|
4
|
+
import { i as HostedPolicies } from "./hosted-DBDX0M-P.js";
|
|
5
|
+
//#region src/core/approval-policies.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* One approval requirement kept as data, for a tenant or the whole platform.
|
|
8
|
+
* It adds to what the code requires and never removes a requirement.
|
|
9
|
+
*/
|
|
10
|
+
type ApprovalPolicy = {
|
|
11
|
+
/**
|
|
12
|
+
* The permission key; a former key from `renamed` resolves. Absent: every
|
|
13
|
+
* permission, which needs `risk` or `effects`.
|
|
14
|
+
*/
|
|
15
|
+
readonly permission?: string;
|
|
16
|
+
/** Matches an operation call whose `meta.risk` is one of these; a call that names no operation never matches. */
|
|
17
|
+
readonly risk?: readonly OperationRisk[];
|
|
18
|
+
/** Matches an operation call whose `meta.effects` includes one of these; a call that names no operation never matches. */
|
|
19
|
+
readonly effects?: readonly OperationEffect[];
|
|
20
|
+
/** Absent: every tenant. */
|
|
21
|
+
readonly tenant?: string;
|
|
22
|
+
/** Actor kinds it applies to (`['agent']`); absent: every call. A call without an actor never matches a list. */
|
|
23
|
+
readonly actors?: readonly string[];
|
|
24
|
+
/** A portable condition over the row; instance permissions only, since a collection action has no row. */
|
|
25
|
+
readonly where?: Condition;
|
|
26
|
+
/** A portable condition over the call's input (the proposed row). */
|
|
27
|
+
readonly check?: Condition;
|
|
28
|
+
/**
|
|
29
|
+
* The same shape as `allow(..., { approval })`. An `escalation` here widens
|
|
30
|
+
* only this entry's stages, never the code's.
|
|
31
|
+
*/
|
|
32
|
+
readonly approval: ApprovalOption;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Data-driven approval requirements, a subject input like `CustomRoleSource`:
|
|
36
|
+
* read once per instance for the subject's tenants (entries without a
|
|
37
|
+
* tenant always apply). A throw, a rejected promise or an invalid entry
|
|
38
|
+
* denies every call an allow would otherwise permit.
|
|
39
|
+
*/
|
|
40
|
+
type ApprovalPolicySource = {
|
|
41
|
+
/** Names the implementation in errors and events. */
|
|
42
|
+
readonly name?: string;
|
|
43
|
+
approvalPoliciesFor(query: {
|
|
44
|
+
readonly tenants: readonly string[];
|
|
45
|
+
}): readonly ApprovalPolicy[] | Promise<readonly ApprovalPolicy[]>;
|
|
46
|
+
};
|
|
47
|
+
/** The denial detail when an `ApprovalPolicySource` fails: every call an allow would grant denies with reason `approval`. */
|
|
48
|
+
/**
|
|
49
|
+
* The in-process `ApprovalPolicySource`, usable directly as the
|
|
50
|
+
* `approvalPolicies` option: it is the source and its feature at once.
|
|
51
|
+
*/
|
|
52
|
+
declare function memoryApprovalPolicySource(policies: readonly ApprovalPolicy[]): ApprovalPolicySource & ApprovalPolicies;
|
|
53
|
+
/** An entry checked against the policy and ready to match. */
|
|
54
|
+
type LoadedApprovalPolicy = {
|
|
55
|
+
readonly permission?: string;
|
|
56
|
+
readonly risk?: ReadonlySet<OperationRisk>;
|
|
57
|
+
readonly effects?: ReadonlySet<OperationEffect>;
|
|
58
|
+
readonly tenant?: string;
|
|
59
|
+
readonly actors?: ReadonlySet<string>;
|
|
60
|
+
readonly where?: Condition;
|
|
61
|
+
readonly check?: Condition;
|
|
62
|
+
readonly approval: NonNullable<Grant["approval"]>;
|
|
63
|
+
};
|
|
64
|
+
/** `"failed"`: the source threw or returned something that cannot be applied. */
|
|
65
|
+
/** What `tightenApproval` reads besides the code's approval. */
|
|
66
|
+
type TightenInput = Parameters<typeof tightenApproval>[2];
|
|
67
|
+
/**
|
|
68
|
+
* Approval policies loaded for an instance: the tightening the evaluator
|
|
69
|
+
* applies to each allow, or `"failed"` when the source threw or returned an
|
|
70
|
+
* invalid entry (every allow then denies).
|
|
71
|
+
*/
|
|
72
|
+
type LoadedApprovalPolicies = {
|
|
73
|
+
readonly tighten: (code: Grant["approval"], input: TightenInput) => Grant["approval"];
|
|
74
|
+
} | "failed";
|
|
75
|
+
/**
|
|
76
|
+
* Approval policies kept as data, as an instance option:
|
|
77
|
+
* `approvalPolicies: approvalPolicies(source)`. The loading and tightening
|
|
78
|
+
* code ships only with an app that imports this function.
|
|
79
|
+
*/
|
|
80
|
+
type ApprovalPolicies = {
|
|
81
|
+
readonly feature: "approval-policies";
|
|
82
|
+
readonly load: (policy: Policy, tenants: readonly string[], auth: AuthEvent[]) => LoadedApprovalPolicies | Promise<LoadedApprovalPolicies>;
|
|
83
|
+
};
|
|
84
|
+
declare function approvalPolicies(source: ApprovalPolicySource): ApprovalPolicies;
|
|
85
|
+
/**
|
|
86
|
+
* Why an `ApprovalPolicy` entry does not load. `unknown-permission`: the
|
|
87
|
+
* policy declares no such key (the entry applies to nothing). `invalid`: a
|
|
88
|
+
* field has the wrong shape or the approval option does not normalise.
|
|
89
|
+
* `where-on-collection`: `where` reads a row, which a collection action
|
|
90
|
+
* never has, so the entry could never match; use `check` over the input.
|
|
91
|
+
* `stale-on-without-version`: `staleOn` needs an instance permission whose
|
|
92
|
+
* resource declares `version`.
|
|
93
|
+
*/
|
|
94
|
+
type ApprovalPolicyProblem = "unknown-permission" | "invalid" | "where-on-collection" | "stale-on-without-version";
|
|
95
|
+
type ApprovalPolicyValidation = {
|
|
96
|
+
readonly ok: true;
|
|
97
|
+
} | {
|
|
98
|
+
readonly ok: false;
|
|
99
|
+
readonly problem: ApprovalPolicyProblem;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Checks one entry against the policy the way `approvalPoliciesFor` loads
|
|
103
|
+
* it, for an application to refuse a bad entry when it is saved instead of
|
|
104
|
+
* finding every call denied. Never throws.
|
|
105
|
+
*/
|
|
106
|
+
declare function validateApprovalPolicy(policy: Policy, entry: unknown): ApprovalPolicyValidation;
|
|
107
|
+
/**
|
|
108
|
+
* `code` with every matching entry added as further stages: the result
|
|
109
|
+
* needs all of them (`'sequential'` when any part is ordered), keeps the
|
|
110
|
+
* code's escalation, the shortest `ttl`, and `distinct` unless every part
|
|
111
|
+
* opts out. Without a matching entry, `code` unchanged.
|
|
112
|
+
*/
|
|
113
|
+
declare function tightenApproval(code: Grant["approval"], entries: readonly LoadedApprovalPolicy[], input: {
|
|
114
|
+
readonly permission: string;
|
|
115
|
+
readonly tenant: string | undefined;
|
|
116
|
+
readonly subject: Subject;
|
|
117
|
+
readonly current: unknown;
|
|
118
|
+
readonly next: unknown;
|
|
119
|
+
readonly now: number;
|
|
120
|
+
readonly scopes: readonly Scope[];
|
|
121
|
+
/** The meta of the operation the call decides, when it names one. */
|
|
122
|
+
readonly operation?: OperationMeta | undefined;
|
|
123
|
+
}): Grant["approval"];
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region src/core/limits.d.ts
|
|
126
|
+
declare function memoryLimitStore(): LimitStore & {
|
|
127
|
+
/** Live counters, for tests and diagnostics. */
|
|
128
|
+
size(): number;
|
|
129
|
+
};
|
|
130
|
+
type QuotaVerdict = {
|
|
131
|
+
readonly ok: true;
|
|
132
|
+
readonly quota?: Quota;
|
|
133
|
+
readonly obligations?: readonly Obligation[];
|
|
134
|
+
} | {
|
|
135
|
+
readonly ok: false;
|
|
136
|
+
readonly reason: "limit";
|
|
137
|
+
readonly detail: LimitDetail;
|
|
138
|
+
} | {
|
|
139
|
+
readonly ok: false;
|
|
140
|
+
readonly reason: "limit-unavailable";
|
|
141
|
+
};
|
|
142
|
+
/** What the quota stage of `evaluate` asks about one allow whose grant has a `limit`. */
|
|
143
|
+
type QuotaInput = {
|
|
144
|
+
readonly cache: Map<string, number>;
|
|
145
|
+
readonly limit: GrantLimit;
|
|
146
|
+
readonly permissionKey: string;
|
|
147
|
+
readonly subjectId: string;
|
|
148
|
+
readonly tenant: string | undefined;
|
|
149
|
+
readonly now: number;
|
|
150
|
+
readonly consume: boolean;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Grant limits as an instance option: `limits: limits(store)`. The counting
|
|
154
|
+
* code ships only with an app that imports this function; without it, a grant
|
|
155
|
+
* with a `limit` denies with `limit-unavailable`.
|
|
156
|
+
*/
|
|
157
|
+
type Limits = {
|
|
158
|
+
readonly feature: "limits";
|
|
159
|
+
readonly quota: (input: QuotaInput) => QuotaVerdict;
|
|
160
|
+
};
|
|
161
|
+
declare function limits(store: LimitStore): Limits;
|
|
162
|
+
//#endregion
|
|
163
|
+
//#region src/core/may-use.d.ts
|
|
164
|
+
type PermittedIdsOptions = {
|
|
165
|
+
readonly within?: string;
|
|
166
|
+
readonly conditioned?: boolean;
|
|
167
|
+
};
|
|
168
|
+
//#endregion
|
|
169
|
+
//#region src/core/principal-source.d.ts
|
|
170
|
+
/**
|
|
171
|
+
* An identity the application has linked to one of its principals: an email
|
|
172
|
+
* address or a chat platform user.
|
|
173
|
+
*/
|
|
174
|
+
type PrincipalIdentity = {
|
|
175
|
+
readonly kind: "email" | "chat";
|
|
176
|
+
/** The chat platform (`slack`, `teams`, …); absent for email. */
|
|
177
|
+
readonly provider?: string;
|
|
178
|
+
/** The address (RFC 5322 `addr-spec`) or the platform user id. Emails compare trimmed and case-insensitively. */
|
|
179
|
+
readonly value: string;
|
|
180
|
+
/** The chat workspace or team id. */
|
|
181
|
+
readonly workspace?: string;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Live principals by id, a subject input like `MembershipSource`. `null`, a
|
|
185
|
+
* throw or a rejection is no principal, and so is a missing
|
|
186
|
+
* `principalByIdentity`: every reader fails closed.
|
|
187
|
+
*/
|
|
188
|
+
type PrincipalSource<TPrincipal extends Principal = Principal> = {
|
|
189
|
+
/** Names the implementation in errors and events. */
|
|
190
|
+
readonly name?: string;
|
|
191
|
+
/** The principal as of this request, or `null` for one deleted, suspended or unknown. */
|
|
192
|
+
principal(id: string, options?: {
|
|
193
|
+
readonly tenant?: string;
|
|
194
|
+
}): TPrincipal | null | Promise<TPrincipal | null>;
|
|
195
|
+
/** The principal an app-owned identity link points to, or `null` when none does. */
|
|
196
|
+
principalByIdentity?(identity: PrincipalIdentity): TPrincipal | null | Promise<TPrincipal | null>;
|
|
197
|
+
};
|
|
198
|
+
/** One `memoryPrincipalSource` identity link: `identity` resolves to the principal with id `principal`. */
|
|
199
|
+
type PrincipalIdentityLink = {
|
|
200
|
+
readonly identity: PrincipalIdentity;
|
|
201
|
+
readonly principal: string;
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* In-process principals for tests and single-replica apps. `identities`
|
|
205
|
+
* links an email or chat identity to a principal id; each answer is a fresh
|
|
206
|
+
* frozen copy. `tenant` is not a filter, as for a database source.
|
|
207
|
+
*/
|
|
208
|
+
declare function memoryPrincipalSource<TPrincipal extends Principal>(input: {
|
|
209
|
+
readonly principals: readonly TPrincipal[];
|
|
210
|
+
readonly identities?: readonly PrincipalIdentityLink[];
|
|
211
|
+
}): PrincipalSource<TPrincipal> & {
|
|
212
|
+
principalByIdentity(identity: PrincipalIdentity): TPrincipal | null;
|
|
213
|
+
};
|
|
214
|
+
//#endregion
|
|
215
|
+
//#region src/core/validation.d.ts
|
|
216
|
+
type Boundary = "http-body" | "mcp-args" | "tool-args" | "decision-endpoint" | "manual";
|
|
217
|
+
//#endregion
|
|
218
|
+
//#region src/core/permdock.d.ts
|
|
219
|
+
type DecideOptions = {
|
|
220
|
+
/** `true` skips schema validation for a row the server loaded itself. Otherwise `data` is validated against the resource schema first (`validate: 'boundary'`), and a failure denies with reason `validation`. */
|
|
221
|
+
readonly trusted?: boolean;
|
|
222
|
+
/** Where untrusted data came from, reported on validation errors. Defaults to `'manual'`. */
|
|
223
|
+
readonly boundary?: Boundary;
|
|
224
|
+
/** Decision clock, for expiries and limits; a `Temporal.Instant` fits. Defaults to the current time. */
|
|
225
|
+
readonly now?: Instant;
|
|
226
|
+
/** The call that produced the decision, reported on the decision event. Defaults to `'decide'`. */
|
|
227
|
+
readonly call?: DecisionEvent["call"];
|
|
228
|
+
/** The adapter that made the call, reported on the decision event. */
|
|
229
|
+
readonly adapter?: AdapterId;
|
|
230
|
+
/** The model id the decision is about or that drove the call (`'openai/gpt-5'`), reported on the decision event. Never read when deciding. */
|
|
231
|
+
readonly model?: string;
|
|
232
|
+
/** Per-call unauthorized handler for `assert`; runs before instance and policy handlers. */
|
|
233
|
+
readonly onDenied?: (decision: Decision) => never | void;
|
|
234
|
+
/** The field being read or written; only grants whose `fields` cover it match. */
|
|
235
|
+
readonly field?: string;
|
|
236
|
+
/** `true` attaches a `trace` to the decision: the grants evaluated, matched and skipped. Off by default and free when off. */
|
|
237
|
+
readonly explain?: boolean;
|
|
238
|
+
/**
|
|
239
|
+
* A declared scope name: only memberships of that scope answer the check.
|
|
240
|
+
* Naming the first scope keeps nested memberships out of a tenant-level
|
|
241
|
+
* guard on a collection action. Global roles still apply; resource roles
|
|
242
|
+
* and memberships of other scopes are skipped with reason `scope`.
|
|
243
|
+
*/
|
|
244
|
+
readonly scope?: string;
|
|
245
|
+
/**
|
|
246
|
+
* The operation the call decides, for `ApprovalPolicySource` entries that
|
|
247
|
+
* match on `meta.risk` and `meta.effects`. Surfaces that decide an
|
|
248
|
+
* operation (agent tools, workflow steps, `protect(operation)`) pass it.
|
|
249
|
+
*/
|
|
250
|
+
readonly operation?: Pick<Operation, "name" | "meta">;
|
|
251
|
+
/**
|
|
252
|
+
* The arguments of the call being decided, such as a tool call's input. An
|
|
253
|
+
* `approval-required` token binds their digest, so an approval covers this
|
|
254
|
+
* call and no call with other arguments. Agent and MCP adapters pass the
|
|
255
|
+
* tool arguments. Never read when deciding.
|
|
256
|
+
*/
|
|
257
|
+
readonly args?: unknown;
|
|
258
|
+
/**
|
|
259
|
+
* The application's own data for the decision event (a request id, a
|
|
260
|
+
* route). Plain JSON; a value that is not is dropped. Never read when
|
|
261
|
+
* deciding.
|
|
262
|
+
*/
|
|
263
|
+
readonly x?: AppData;
|
|
264
|
+
};
|
|
265
|
+
type SimulateOptions = {
|
|
266
|
+
/** Decision clock for the whole batch: grant validity, membership expiry and limits are read as of this instant. Defaults to the current time. */
|
|
267
|
+
readonly now?: Instant;
|
|
268
|
+
};
|
|
269
|
+
type RowPair<T> = {
|
|
270
|
+
readonly current: T;
|
|
271
|
+
readonly next: T;
|
|
272
|
+
};
|
|
273
|
+
type WhereResult = {
|
|
274
|
+
readonly condition: Condition | {
|
|
275
|
+
readonly op: "or";
|
|
276
|
+
readonly conditions: readonly [];
|
|
277
|
+
};
|
|
278
|
+
readonly partial: boolean;
|
|
279
|
+
/**
|
|
280
|
+
* The subject `where()` was built for. `toWhere` reads its memberships for
|
|
281
|
+
* `memberOf` when no `subject` option is passed. Not enumerable, so it never
|
|
282
|
+
* serialises with the result.
|
|
283
|
+
*/
|
|
284
|
+
readonly subject?: Subject;
|
|
285
|
+
/** The policy's scopes, for `memberOf`; not enumerable either. */
|
|
286
|
+
readonly scopes?: readonly Scope[];
|
|
287
|
+
/** The policy's resource graph, for `related`; not enumerable either. */
|
|
288
|
+
readonly resources?: ReadonlyMap<string, ResourceNode>;
|
|
289
|
+
};
|
|
290
|
+
type SnapshotOptions = {
|
|
291
|
+
readonly include?: readonly (Permission | {
|
|
292
|
+
readonly [key: string]: unknown;
|
|
293
|
+
})[];
|
|
294
|
+
readonly tenants?: "all";
|
|
295
|
+
readonly signer?: TokenSigner;
|
|
296
|
+
readonly audience?: string | readonly string[];
|
|
297
|
+
};
|
|
298
|
+
type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
299
|
+
readonly can: {
|
|
300
|
+
(permission: Permission<string, unknown, "instance">, data: unknown, options?: DecideOptions): boolean;
|
|
301
|
+
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): boolean;
|
|
302
|
+
/**
|
|
303
|
+
* A permission held as `Permission` at run time (from a list, a catalog
|
|
304
|
+
* or `findPermission`), whose kind the type does not say: pass `data`,
|
|
305
|
+
* or `undefined` for a check without a row.
|
|
306
|
+
*/
|
|
307
|
+
(permission: Permission, data: unknown, options?: DecideOptions): boolean;
|
|
308
|
+
};
|
|
309
|
+
readonly decide: {
|
|
310
|
+
(permission: Permission<string, unknown, "instance">, data: unknown, options?: DecideOptions): Decision;
|
|
311
|
+
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): Decision;
|
|
312
|
+
/**
|
|
313
|
+
* A permission held as `Permission` at run time (from a list, a catalog
|
|
314
|
+
* or `findPermission`), whose kind the type does not say: pass `data`,
|
|
315
|
+
* or `undefined` for a check without a row.
|
|
316
|
+
*/
|
|
317
|
+
(permission: Permission, data: unknown, options?: DecideOptions): Decision;
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* `decide` for each row, in row order. Each row is its own call: a limit
|
|
321
|
+
* is consumed once per granted row, so rows past the cap are denied with
|
|
322
|
+
* `limit`, and each `approval-required` row carries its own token.
|
|
323
|
+
*/
|
|
324
|
+
readonly decideEach: (permission: Permission, rows: readonly unknown[], options?: DecideOptions) => readonly Decision[];
|
|
325
|
+
/**
|
|
326
|
+
* What `permission` on `row` decides for the principal `principalId`,
|
|
327
|
+
* loaded from `principals` in this instance's active tenant with no actor
|
|
328
|
+
* and no delegation. It grants this instance nothing, shares none of its
|
|
329
|
+
* caches and never consumes a limit. Denied with `anonymous` when there is
|
|
330
|
+
* no `principals`, no such principal or the source throws, and with
|
|
331
|
+
* `tenant-mismatch` when the principal is outside the active tenant.
|
|
332
|
+
*/
|
|
333
|
+
readonly decideFor: (principalId: string, permission: Permission, row?: unknown) => Promise<Decision>;
|
|
334
|
+
readonly assert: {
|
|
335
|
+
(permission: Permission<string, unknown, "instance">, data: unknown, options?: DecideOptions): Extract<Decision, {
|
|
336
|
+
readonly outcome: "granted";
|
|
337
|
+
}>;
|
|
338
|
+
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): Extract<Decision, {
|
|
339
|
+
readonly outcome: "granted";
|
|
340
|
+
}>;
|
|
341
|
+
/**
|
|
342
|
+
* A permission held as `Permission` at run time (from a list, a catalog
|
|
343
|
+
* or `findPermission`), whose kind the type does not say: pass `data`,
|
|
344
|
+
* or `undefined` for a check without a row.
|
|
345
|
+
*/
|
|
346
|
+
(permission: Permission, data: unknown, options?: DecideOptions): Extract<Decision, {
|
|
347
|
+
readonly outcome: "granted";
|
|
348
|
+
}>;
|
|
349
|
+
};
|
|
350
|
+
/**
|
|
351
|
+
* `decide` with `explain: true`: the same decision, with a `trace` that
|
|
352
|
+
* names the grants evaluated, the allows and denies that matched (so a
|
|
353
|
+
* `denied` says which deny won) and the grants passed over. Local
|
|
354
|
+
* computation only; the trace never reaches a `DecisionSink`.
|
|
355
|
+
*/
|
|
356
|
+
readonly explain: {
|
|
357
|
+
(permission: Permission<string, unknown, "instance">, data: unknown, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
358
|
+
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
359
|
+
(permission: Permission, data: unknown, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
360
|
+
};
|
|
361
|
+
readonly filter: <T>(permission: Permission<string, T, "instance">, rows: readonly T[], options?: DecideOptions) => T[];
|
|
362
|
+
readonly pick: <T>(permission: Permission<string, T, "instance">, row: T, options?: DecideOptions) => Partial<T>;
|
|
363
|
+
readonly where: (permission: Permission) => WhereResult;
|
|
364
|
+
readonly actions: (resource: Permission | {
|
|
365
|
+
readonly [key: string]: unknown;
|
|
366
|
+
}, data: unknown, options?: DecideOptions) => Permission[];
|
|
367
|
+
readonly simulate: {
|
|
368
|
+
(checks: readonly (readonly [Permission, unknown?])[], options?: SimulateOptions): Decision[];
|
|
369
|
+
(preview: {
|
|
370
|
+
readonly roles?: readonly (string | Role)[];
|
|
371
|
+
readonly memberships?: readonly Membership[];
|
|
372
|
+
readonly tenant?: string;
|
|
373
|
+
}): PermDock<V>;
|
|
374
|
+
};
|
|
375
|
+
readonly snapshot: {
|
|
376
|
+
(options?: SnapshotOptions & {
|
|
377
|
+
readonly signer?: undefined;
|
|
378
|
+
}): Snapshot;
|
|
379
|
+
(options: SnapshotOptions & {
|
|
380
|
+
readonly signer: TokenSigner;
|
|
381
|
+
}): Promise<string>;
|
|
382
|
+
(options?: SnapshotOptions): Snapshot | Promise<string>;
|
|
383
|
+
};
|
|
384
|
+
readonly on: (event: "decision" | "denied" | "approval" | "auth" | "error", handler: (payload: unknown) => void) => () => void;
|
|
385
|
+
readonly tenant: (id: string) => PermDock<V>;
|
|
386
|
+
readonly team: (id: string) => PermDock<V>;
|
|
387
|
+
readonly memberships: () => readonly Membership[];
|
|
388
|
+
readonly tenants: () => readonly string[];
|
|
389
|
+
/**
|
|
390
|
+
* Roles held in a tenant (the active one by default), or only on the
|
|
391
|
+
* memberships of one `scope` (and instance `id`). Ordered by rank: a role
|
|
392
|
+
* comes before the roles its `assigns` lists.
|
|
393
|
+
*/
|
|
394
|
+
readonly heldRoles: (options?: {
|
|
395
|
+
readonly tenant?: string;
|
|
396
|
+
readonly scope?: string;
|
|
397
|
+
readonly id?: string;
|
|
398
|
+
}) => readonly Role[];
|
|
399
|
+
/** The distinct `meta.audience` values of the roles held in the active tenant, in rank order. */
|
|
400
|
+
readonly audiences: () => readonly string[];
|
|
401
|
+
/**
|
|
402
|
+
* The roles the subject may hand out in a tenant (the active one by
|
|
403
|
+
* default), or with `scope: 'global'` the global roles it may hand out. A
|
|
404
|
+
* snapshot answers only the tenant form.
|
|
405
|
+
*/
|
|
406
|
+
readonly assignableRoles: (options?: {
|
|
407
|
+
readonly tenant?: string;
|
|
408
|
+
readonly scope?: "global";
|
|
409
|
+
}) => readonly Role[];
|
|
410
|
+
/**
|
|
411
|
+
* The custom-role ceiling the subject may hand out: in a tenant (empty
|
|
412
|
+
* without one), or with `scope: 'global'` for platform custom roles, the
|
|
413
|
+
* allows of assignable global roles the subject holds. A snapshot answers
|
|
414
|
+
* only the tenant form.
|
|
415
|
+
*/
|
|
416
|
+
readonly assignablePermissions: (options?: {
|
|
417
|
+
readonly tenant?: string;
|
|
418
|
+
readonly scope?: "global";
|
|
419
|
+
}) => readonly Permission[];
|
|
420
|
+
/**
|
|
421
|
+
* The levels of `permission` (`resource(…, { levels })`) the subject may
|
|
422
|
+
* hand out in a custom role: those it holds, or every level with
|
|
423
|
+
* `meta.manageRoles`. Empty when the permission is not assignable.
|
|
424
|
+
*/
|
|
425
|
+
readonly assignableLevels: (permission: Permission, options?: {
|
|
426
|
+
readonly tenant?: string;
|
|
427
|
+
readonly scope?: "global";
|
|
428
|
+
}) => readonly string[];
|
|
429
|
+
/**
|
|
430
|
+
* Whether `permission` could be granted to the subject for some row, within
|
|
431
|
+
* its delegation. A listing hint for tools and skills, never a decision.
|
|
432
|
+
*/
|
|
433
|
+
readonly mayUse: (permission: Permission) => boolean;
|
|
434
|
+
/**
|
|
435
|
+
* The instances of `scope` in which the subject holds `permission`, the
|
|
436
|
+
* in-process mirror of the SQL `permitted_<scope>_ids_by_permission`. A
|
|
437
|
+
* listing, never a decision: a row's own check still runs `can`.
|
|
438
|
+
*/
|
|
439
|
+
readonly permittedIds: (permission: Permission, scope: string, options?: PermittedIdsOptions) => readonly string[];
|
|
440
|
+
/**
|
|
441
|
+
* Loads the relation facts `permission` needs for `rows` into this
|
|
442
|
+
* instance's cache, so `can`, `decide` and `filter` answer synchronously
|
|
443
|
+
* over an async `RelationSource`. It never grants; a failed load leaves
|
|
444
|
+
* the checks denied with `relation-unavailable`.
|
|
445
|
+
*/
|
|
446
|
+
readonly prefetchRelations: (permission: Permission, rows: readonly unknown[]) => Promise<void>;
|
|
447
|
+
readonly roles: V["roles"] extends RoleTree ? V["roles"] : RoleTree;
|
|
448
|
+
readonly plans: V["plans"] extends PlanTree ? V["plans"] : PlanTree;
|
|
449
|
+
readonly permissions: V["permissions"] extends Policy["permissions"] ? V["permissions"] : Policy["permissions"];
|
|
450
|
+
readonly subject: Subject;
|
|
451
|
+
/**
|
|
452
|
+
* The same subject, tenant, team, actor, delegation, sink and limits with
|
|
453
|
+
* other sources: `customRoles`, `approvalPolicies` or `relations`. The
|
|
454
|
+
* sources it names are read again for the subject's tenants; the others
|
|
455
|
+
* keep what this instance loaded. Always a promise, since the sources it
|
|
456
|
+
* names may answer asynchronously.
|
|
457
|
+
*/
|
|
458
|
+
readonly derive: (options: DeriveOptions) => Promise<PermDock<V>>;
|
|
459
|
+
};
|
|
460
|
+
/** What `permdock.derive` may replace: the sources read after the subject is resolved. */
|
|
461
|
+
type DeriveOptions = Pick<PermDockOptions, "customRoles" | "approvalPolicies" | "relations" | "principals">;
|
|
462
|
+
type PermDockOptions = {
|
|
463
|
+
readonly tenant?: string;
|
|
464
|
+
/** One source, or several composed with `composeMemberships`. */
|
|
465
|
+
readonly memberships?: MembershipSource | readonly MembershipSource[];
|
|
466
|
+
readonly customRoles?: CustomRoleSource | CustomRoleSourceFactory;
|
|
467
|
+
/** Plans and seats from billing, merged into `principal.plans` for the active tenant. */
|
|
468
|
+
readonly entitlements?: EntitlementSource;
|
|
469
|
+
readonly actor?: Actor;
|
|
470
|
+
readonly delegation?: Delegation;
|
|
471
|
+
readonly sink?: DecisionSink;
|
|
472
|
+
/** Grant limits, `limits(store)`; without it a grant with a `limit` denies with `limit-unavailable`. */
|
|
473
|
+
readonly limits?: Limits;
|
|
474
|
+
readonly session?: string;
|
|
475
|
+
readonly expiresAt?: number;
|
|
476
|
+
/** Hosted grants, `hostedPolicies(source)`; `current()` is read once, when the instance is created. */
|
|
477
|
+
readonly policies?: HostedPolicies;
|
|
478
|
+
/** The object graph for `through` and edge-table relations; without it they deny with `relation-unavailable`. */
|
|
479
|
+
readonly relations?: RelationSource;
|
|
480
|
+
/** Approval requirements kept as data; they add to the code's and never remove one. A throw denies. */
|
|
481
|
+
readonly approvalPolicies?: ApprovalPolicies;
|
|
482
|
+
/** Other principals by id, for `decideFor`; asked with the active tenant. */
|
|
483
|
+
readonly principals?: PrincipalSource;
|
|
484
|
+
/** Tenant settings, read by `decideCredential` for the key's tenant; a call's own `settings` wins. */
|
|
485
|
+
readonly settings?: SettingsSource;
|
|
486
|
+
/**
|
|
487
|
+
* Request values an adapter's `context` hook derived on the server, merged
|
|
488
|
+
* into `subject.context`; keys from `policy.context` win on a clash.
|
|
489
|
+
*/
|
|
490
|
+
readonly context?: Readonly<Record<string, unknown>>;
|
|
491
|
+
};
|
|
492
|
+
/**
|
|
493
|
+
* The instance for `user`, built synchronously. Every input must answer
|
|
494
|
+
* synchronously: the subject mapper, `memberships`, `customRoles`,
|
|
495
|
+
* `entitlements`, `approvalPolicies` and the freshness check. One that
|
|
496
|
+
* answers with a Promise throws here; use `getPermDock` for those.
|
|
497
|
+
*/
|
|
498
|
+
declare function getPermDockSync<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: PermDockOptions): PermDock<V>;
|
|
499
|
+
/** The instance for `user`: waits for every source, then builds it. `getPermDockSync` is the synchronous twin. */
|
|
500
|
+
declare function getPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: PermDockOptions): Promise<PermDock<V>>;
|
|
501
|
+
//#endregion
|
|
502
|
+
export { ApprovalPolicyValidation as C, validateApprovalPolicy as E, ApprovalPolicySource as S, memoryApprovalPolicySource as T, limits as _, RowPair as a, ApprovalPolicy as b, WhereResult as c, PrincipalIdentity as d, PrincipalIdentityLink as f, Limits as g, PermittedIdsOptions as h, PermDockOptions as i, getPermDock as l, memoryPrincipalSource as m, DeriveOptions as n, SimulateOptions as o, PrincipalSource as p, PermDock as r, SnapshotOptions as s, DecideOptions as t, getPermDockSync as u, memoryLimitStore as v, approvalPolicies as w, ApprovalPolicyProblem as x, ApprovalPolicies as y };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
|
-
import {
|
|
4
|
-
import { r as parseAppData, t as assertAppData } from "./app-data-
|
|
5
|
-
import { f as normaliseRelation, h as restrictedStopsOf, i as assertIncludes, n as RESOURCE_NAME, r as assertGraphTargets, t as LEVEL_NAME } from "./resource-relations-
|
|
3
|
+
import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-DXSHAMIa.js";
|
|
4
|
+
import { r as parseAppData, t as assertAppData } from "./app-data-MuyzVqX8.js";
|
|
5
|
+
import { f as normaliseRelation, h as restrictedStopsOf, i as assertIncludes, n as RESOURCE_NAME, r as assertGraphTargets, t as LEVEL_NAME } from "./resource-relations-D_jw0BFx.js";
|
|
6
6
|
//#region src/core/brands.ts
|
|
7
7
|
const RESOURCE_BRAND = Symbol.for("permdock.resource");
|
|
8
8
|
const TREE_REGISTRY = Symbol.for("permdock.registry");
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
2
|
+
import { d as attachRegistry, p as walk, r as formerByKey, t as assertKeys } from "./permission-registry-Br4jSNVi.js";
|
|
3
|
+
import { r as assertGraphTargets } from "./resource-relations-D_jw0BFx.js";
|
|
4
|
+
//#region src/core/operation-risks.ts
|
|
5
|
+
/** Every `meta.risk` level, lowest first. */
|
|
6
|
+
const OPERATION_RISKS = Object.freeze([
|
|
7
|
+
"low",
|
|
8
|
+
"medium",
|
|
9
|
+
"high",
|
|
10
|
+
"critical"
|
|
11
|
+
]);
|
|
12
|
+
function isOperationRisk(value) {
|
|
13
|
+
return OPERATION_RISKS.some((risk) => risk === value);
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region src/core/permissions.ts
|
|
17
|
+
function definePermissions(input, options) {
|
|
18
|
+
const registry = /* @__PURE__ */ new Map();
|
|
19
|
+
const leaves = [];
|
|
20
|
+
const former = formerByKey(options?.renamed);
|
|
21
|
+
const tree = walk(input, [], registry, leaves, 0, {
|
|
22
|
+
former,
|
|
23
|
+
x: options?.x
|
|
24
|
+
});
|
|
25
|
+
assertKeys(leaves, former);
|
|
26
|
+
assertGraphTargets(registry);
|
|
27
|
+
return freezeDeep(attachRegistry(tree, registry, leaves));
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { OPERATION_RISKS as n, isOperationRisk as r, definePermissions as t };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { i as crud
|
|
2
|
-
import { _ as resource } from "./permission-registry-
|
|
3
|
-
import { f as definePlans, p as defineRoles } from "./grantee-
|
|
1
|
+
import { i as crud } from "./src-DLfUWFAI.js";
|
|
2
|
+
import { _ as resource } from "./permission-registry-Br4jSNVi.js";
|
|
3
|
+
import { f as definePlans, p as defineRoles } from "./grantee-Cn1HyUsI.js";
|
|
4
|
+
import { t as definePermissions } from "./permissions-B-wCP5ZC.js";
|
|
4
5
|
//#region src/testing/saas/schema.ts
|
|
5
6
|
function accepts(kind, value) {
|
|
6
7
|
switch (kind) {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as Role, t as Plan } from "./vocabulary-hhEFLFoL.js";
|
|
1
|
+
import { C as InferPermissionTree, k as ResourceInit, r as Role, t as Plan } from "./vocabulary-D6lPdb4Z.js";
|
|
3
2
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
3
|
//#region src/testing/saas/permissions.d.ts
|
|
5
4
|
declare const SaasProjectSchema: StandardSchemaV1<SaasProject>;
|