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
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { i as configError } from "./errors-CWTY6uih.js";
|
|
2
3
|
import { i as readJsonFile } from "./files-D_JIzUrP.js";
|
|
3
|
-
import { a as loadModule, s as pickNamed } from "./load-
|
|
4
|
+
import { a as loadModule, s as pickNamed } from "./load-DFS_ry0W.js";
|
|
4
5
|
import { existsSync } from "node:fs";
|
|
5
6
|
import { resolve } from "node:path";
|
|
6
7
|
//#region src/cli/fixtures.ts
|
|
7
8
|
function asFixtures(value) {
|
|
8
9
|
const list = Array.isArray(value) ? value : isRecord(value) && Array.isArray(value["fixtures"]) ? value["fixtures"] : void 0;
|
|
9
|
-
if (list === void 0) throw
|
|
10
|
+
if (list === void 0) throw configError("PermDock CLI: fixtures must be an array or { fixtures }");
|
|
10
11
|
return list.map((item, index) => {
|
|
11
|
-
if (!isRecord(item) || !isRecord(item["subject"]) || item["row"] === void 0) throw
|
|
12
|
+
if (!isRecord(item) || !isRecord(item["subject"]) || item["row"] === void 0) throw configError(`PermDock CLI: fixture ${index} needs subject and row`);
|
|
12
13
|
if (typeof item["action"] !== "string") throw new TypeError(`PermDock CLI: fixture ${index} needs action`);
|
|
13
14
|
if (typeof item["subject"]["id"] !== "string") throw new TypeError(`PermDock CLI: fixture ${index} subject needs id`);
|
|
14
15
|
const memberships = item["subject"]["memberships"];
|
|
15
|
-
if (memberships !== void 0 && !Array.isArray(memberships)) throw
|
|
16
|
+
if (memberships !== void 0 && !Array.isArray(memberships)) throw configError(`PermDock CLI: fixture ${index} subject.memberships must be an array`);
|
|
16
17
|
const tenant = item["subject"]["tenant"];
|
|
17
|
-
if (tenant !== void 0 && typeof tenant !== "string") throw
|
|
18
|
+
if (tenant !== void 0 && typeof tenant !== "string") throw configError(`PermDock CLI: fixture ${index} subject.tenant must be a string`);
|
|
18
19
|
const claims = item["subject"]["claims"];
|
|
19
|
-
if (claims !== void 0 && !isRecord(claims)) throw
|
|
20
|
+
if (claims !== void 0 && !isRecord(claims)) throw configError(`PermDock CLI: fixture ${index} subject.claims must be an object`);
|
|
20
21
|
return item;
|
|
21
22
|
});
|
|
22
23
|
}
|
|
@@ -28,7 +29,7 @@ function asCustomRoles(value) {
|
|
|
28
29
|
/** A `.json` file or a module exporting `fixtures` (or default) and optionally `customRoles`. */
|
|
29
30
|
async function loadFixtures(cwd, path) {
|
|
30
31
|
const abs = resolve(cwd, path);
|
|
31
|
-
if (!existsSync(abs)) throw
|
|
32
|
+
if (!existsSync(abs)) throw configError(`PermDock CLI: fixtures not found: ${path}`);
|
|
32
33
|
if (abs.endsWith(".json")) {
|
|
33
34
|
const parsed = readJsonFile(abs);
|
|
34
35
|
return {
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { n as CliError } from "./errors-CWTY6uih.js";
|
|
2
|
+
import { n as secretInput } from "./credentials-DPyHmYz5.js";
|
|
3
|
+
//#region src/cli/core/flags.ts
|
|
4
|
+
/** The flag vocabulary shared with better-supabase: one spelling per meaning. */
|
|
5
|
+
const dbUrlFlags = { "db-url-stdin": {
|
|
6
|
+
type: "boolean",
|
|
7
|
+
description: "Read the Postgres connection string from stdin (default $DATABASE_URL, then $SUPABASE_DB_URL)"
|
|
8
|
+
} };
|
|
9
|
+
const outFlag = { out: {
|
|
10
|
+
type: "string",
|
|
11
|
+
description: "File to write",
|
|
12
|
+
valueHint: "file"
|
|
13
|
+
} };
|
|
14
|
+
const checkFlag = { check: {
|
|
15
|
+
type: "boolean",
|
|
16
|
+
description: "Exit 1 when a file on disk is stale; write nothing"
|
|
17
|
+
} };
|
|
18
|
+
const dryRunFlag = { "dry-run": {
|
|
19
|
+
type: "boolean",
|
|
20
|
+
description: "Print what would change; write nothing"
|
|
21
|
+
} };
|
|
22
|
+
const forceFlag = { force: {
|
|
23
|
+
type: "boolean",
|
|
24
|
+
description: "Overwrite files PermDock did not write or that changed by hand"
|
|
25
|
+
} };
|
|
26
|
+
const policyFlag = { policy: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "Module exporting the policy (default policy in the config)",
|
|
29
|
+
valueHint: "module"
|
|
30
|
+
} };
|
|
31
|
+
const permissionsFlag = { permissions: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Module exporting the permissions (default permissions in the config)",
|
|
34
|
+
valueHint: "module"
|
|
35
|
+
} };
|
|
36
|
+
const failOnFlag = { "fail-on": {
|
|
37
|
+
type: "enum",
|
|
38
|
+
options: ["error", "warning"],
|
|
39
|
+
default: "error",
|
|
40
|
+
description: "Lowest finding severity that exits 1"
|
|
41
|
+
} };
|
|
42
|
+
const validatorFlag = { validator: {
|
|
43
|
+
type: "enum",
|
|
44
|
+
options: [
|
|
45
|
+
"zod",
|
|
46
|
+
"valibot",
|
|
47
|
+
"arktype"
|
|
48
|
+
],
|
|
49
|
+
description: "Schema library for the generated resources (default zod)"
|
|
50
|
+
} };
|
|
51
|
+
/**
|
|
52
|
+
* The connection string from `--db-url-stdin`, or, when the leaf needs one,
|
|
53
|
+
* `DATABASE_URL` then `SUPABASE_DB_URL`: the order better-supabase reads them.
|
|
54
|
+
*/
|
|
55
|
+
async function dbUrl(ctx, flags, options) {
|
|
56
|
+
const piped = await secretInput(ctx, {
|
|
57
|
+
flag: "db-url",
|
|
58
|
+
stdin: flags["db-url-stdin"]
|
|
59
|
+
});
|
|
60
|
+
if (piped !== void 0 || options?.required !== true) return piped;
|
|
61
|
+
for (const name of DB_URL_ENV) {
|
|
62
|
+
const value = ctx.env[name];
|
|
63
|
+
if (value !== void 0 && value !== "") {
|
|
64
|
+
ctx.addSecret(value);
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const DB_URL_ENV = ["DATABASE_URL", "SUPABASE_DB_URL"];
|
|
70
|
+
/** A string flag given with a value; a bare flag reads as `""`. */
|
|
71
|
+
function given(value) {
|
|
72
|
+
return value === void 0 || value === "" ? void 0 : value;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* `--out` for a command that only writes a file: `-` is refused instead of
|
|
76
|
+
* creating a file named `-`.
|
|
77
|
+
*/
|
|
78
|
+
function fileOut(command, value) {
|
|
79
|
+
if (value === "-") throw new CliError("usage", `${command}: --out - is not supported; name a file.`, {
|
|
80
|
+
code: "invalid_value",
|
|
81
|
+
extensions: { flag: "--out" }
|
|
82
|
+
});
|
|
83
|
+
return given(value);
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
export { failOnFlag as a, given as c, policyFlag as d, validatorFlag as f, dryRunFlag as i, outFlag as l, dbUrl as n, fileOut as o, dbUrlFlags as r, forceFlag as s, checkFlag as t, permissionsFlag as u };
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
|
-
import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
3
|
+
import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "./errors-BKy0EfhN.js";
|
|
4
|
+
import { o as sameId } from "./expiry-D4_YKRKD.js";
|
|
5
|
+
import { c as listPermissions } from "./permission-registry-Br4jSNVi.js";
|
|
6
|
+
import { g as secondsOf, o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
|
|
7
|
+
import { a as normalizeMemberships, d as scopeList, m as tenantOf, o as resolveScope, t as activeFor } from "./scopes-CUPSjo9q.js";
|
|
8
|
+
import { a as readOnlyActorRefuses, c as rowIdOf, l as rowValues, n as coveredByDelegation, u as evaluateCondition } from "./delegation-DaXVdDhM.js";
|
|
9
|
+
import { b as synthesiseRole, m as findRole, v as listRoles } from "./grantee-Cn1HyUsI.js";
|
|
10
|
+
import { a as grantCoversField, o as pickVisible, r as readWireValidity, t as isActive } from "./validity-CZ7-y0Cj.js";
|
|
11
|
+
import { c as nowSeconds, d as resolveActiveTenant, f as rowInScope, n as inTeam, r as isMembershipExpired, s as nestedAppliesWithoutRow } from "./tenancy-DN2QAx9z.js";
|
|
11
12
|
import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
|
|
12
|
-
import {
|
|
13
|
+
import { r as tokenPayload, t as decisionToken } from "./token-BLZcjQgt.js";
|
|
14
|
+
import { t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
|
|
15
|
+
import { n as matchGrantee } from "./grantee-match-DHArqY82.js";
|
|
13
16
|
import { t as resourceIdOf } from "./resource-ref-CaS9yVPi.js";
|
|
14
|
-
import { n as
|
|
17
|
+
import { a as deniedFor, n as mayUse, o as signSnapshot, r as permittedIds, t as whereFromGrants } from "./where-scope-Dv-WTP-w.js";
|
|
15
18
|
//#region src/core/snapshot-evaluate.ts
|
|
16
19
|
function coveredByInclude(snapshot, permission) {
|
|
17
20
|
const include = snapshot.include;
|
|
@@ -81,6 +84,8 @@ function conditionOk(grant, permission, current, next, subject, now, scopes) {
|
|
|
81
84
|
matched: false,
|
|
82
85
|
reason: "opaque-condition"
|
|
83
86
|
};
|
|
87
|
+
const deny = grant.effect === "deny";
|
|
88
|
+
let whereMatched;
|
|
84
89
|
if (grant.where !== void 0) {
|
|
85
90
|
if (permission.kind === "collection" || current === void 0) return {
|
|
86
91
|
matched: false,
|
|
@@ -90,17 +95,22 @@ function conditionOk(grant, permission, current, next, subject, now, scopes) {
|
|
|
90
95
|
matched: false,
|
|
91
96
|
reason: "opaque-condition"
|
|
92
97
|
};
|
|
93
|
-
|
|
98
|
+
whereMatched = evaluateCondition(grant.where, current, subject, now, scopes, void 0, onOpaque);
|
|
94
99
|
if (opaqueReached) return {
|
|
95
100
|
matched: false,
|
|
96
101
|
reason: "opaque-condition"
|
|
97
102
|
};
|
|
98
|
-
if (
|
|
103
|
+
if (whereMatched && deny) return { matched: true };
|
|
104
|
+
if (!whereMatched && !deny) return {
|
|
99
105
|
matched: false,
|
|
100
106
|
reason: "condition"
|
|
101
107
|
};
|
|
102
108
|
}
|
|
103
|
-
const check = grant.check;
|
|
109
|
+
const check = grant.check ?? (permission.action === "update" ? grant.where : void 0);
|
|
110
|
+
if (check === void 0 && whereMatched === false) return {
|
|
111
|
+
matched: false,
|
|
112
|
+
reason: "condition"
|
|
113
|
+
};
|
|
104
114
|
if (check !== void 0) {
|
|
105
115
|
if (check.op === "opaque") return {
|
|
106
116
|
matched: false,
|
|
@@ -135,7 +145,7 @@ function matchedOf(grant) {
|
|
|
135
145
|
});
|
|
136
146
|
}
|
|
137
147
|
function evaluateSnapshot(snapshot, subject, permission, data, team, options, outcomeOnly = false) {
|
|
138
|
-
let clock = options.now;
|
|
148
|
+
let clock = options.now === void 0 ? void 0 : epochSeconds(options.now);
|
|
139
149
|
const now = () => clock ??= nowSeconds();
|
|
140
150
|
const tracer = options.explain === true ? {
|
|
141
151
|
evaluated: 0,
|
|
@@ -175,6 +185,15 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
|
|
|
175
185
|
}],
|
|
176
186
|
alternatives: []
|
|
177
187
|
});
|
|
188
|
+
if (clock !== void 0 && !Number.isFinite(clock)) return done({
|
|
189
|
+
outcome: "denied",
|
|
190
|
+
denials: [{
|
|
191
|
+
role: null,
|
|
192
|
+
reason: "validation",
|
|
193
|
+
detail: INVALID_NOW
|
|
194
|
+
}],
|
|
195
|
+
alternatives: []
|
|
196
|
+
});
|
|
178
197
|
const { current, next } = rowValues(permission, data);
|
|
179
198
|
const scopes = scopeList(snapshot.scopes);
|
|
180
199
|
const denials = [];
|
|
@@ -192,7 +211,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
|
|
|
192
211
|
continue;
|
|
193
212
|
}
|
|
194
213
|
let scoped = scopeOk(snapshot, grant, permission, subject, permission.kind === "instance" ? current : next, team, now(), options.scope);
|
|
195
|
-
if (scoped.ok && permission.kind === "instance" && next !== current) scoped = scopeOk(snapshot, grant, permission, subject, next, team, now(), options.scope);
|
|
214
|
+
if (scoped.ok !== (grant.effect === "deny") && permission.kind === "instance" && next !== current) scoped = scopeOk(snapshot, grant, permission, subject, next, team, now(), options.scope);
|
|
196
215
|
if (!scoped.ok) {
|
|
197
216
|
denials.push(compact({
|
|
198
217
|
role: grant.role,
|
|
@@ -201,7 +220,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
|
|
|
201
220
|
}));
|
|
202
221
|
continue;
|
|
203
222
|
}
|
|
204
|
-
if (!isActive(grant.validity, now())) {
|
|
223
|
+
if (!isActive(readWireValidity(grant.validity, grant.effect), now())) {
|
|
205
224
|
if (grant.effect === "allow") denials.push({
|
|
206
225
|
role: grant.role,
|
|
207
226
|
reason: "inactive-grant",
|
|
@@ -278,7 +297,7 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
|
|
|
278
297
|
alternatives: []
|
|
279
298
|
});
|
|
280
299
|
}
|
|
281
|
-
if (snapshot.delegated !== void 0 && !snapshot.delegated.includes(permission.key)) return done({
|
|
300
|
+
if (snapshot.delegated !== void 0 && !snapshot.delegated.includes(permission.key) || readOnlyActorRefuses(subject.actor, permission)) return done({
|
|
282
301
|
outcome: "denied",
|
|
283
302
|
denials: [{
|
|
284
303
|
role: null,
|
|
@@ -301,8 +320,8 @@ function evaluateSnapshot(snapshot, subject, permission, data, team, options, ou
|
|
|
301
320
|
resourceId,
|
|
302
321
|
principal: subject.principal,
|
|
303
322
|
actor: subject.actor,
|
|
304
|
-
fingerprint: `snapshot:${
|
|
305
|
-
payload: resourceId
|
|
323
|
+
fingerprint: `snapshot:${snapshot.issuedAt}`,
|
|
324
|
+
payload: tokenPayload(resourceId, next ?? current, options.args)
|
|
306
325
|
});
|
|
307
326
|
const grant = matchedOf(matched);
|
|
308
327
|
if (requiresApproval(matched.approval)) return done({
|
|
@@ -344,9 +363,9 @@ function subjectFromSnapshot(snapshot, tenant) {
|
|
|
344
363
|
...principal,
|
|
345
364
|
tenant: nextTenant
|
|
346
365
|
}),
|
|
347
|
-
delegation: snapshot.subject.delegation,
|
|
366
|
+
delegation: fromWireDelegation(snapshot.subject.delegation),
|
|
348
367
|
context: snapshot.subject.context,
|
|
349
|
-
expiresAt: snapshot.expiresAt
|
|
368
|
+
expiresAt: secondsOf(snapshot.expiresAt)
|
|
350
369
|
}));
|
|
351
370
|
}
|
|
352
371
|
/**
|
|
@@ -415,12 +434,18 @@ function fromSnapshot(snapshot, options = {}) {
|
|
|
415
434
|
});
|
|
416
435
|
const explain = ((permission, data, decideOptions) => run(permission, data, {
|
|
417
436
|
...decideOptions,
|
|
418
|
-
|
|
437
|
+
call: decideOptions?.call ?? "explain",
|
|
419
438
|
explain: true
|
|
420
439
|
}));
|
|
421
440
|
const instance = {
|
|
422
441
|
can,
|
|
423
442
|
decide,
|
|
443
|
+
decideEach(permission, rows, decideOptions) {
|
|
444
|
+
return Object.freeze(rows.map((row) => run(permission, row, decideOptions)));
|
|
445
|
+
},
|
|
446
|
+
decideFor(_principalId, permission) {
|
|
447
|
+
return Promise.resolve(deniedFor(permission, "unsupported"));
|
|
448
|
+
},
|
|
424
449
|
assert,
|
|
425
450
|
explain,
|
|
426
451
|
permissions: {},
|
|
@@ -448,7 +473,6 @@ function fromSnapshot(snapshot, options = {}) {
|
|
|
448
473
|
},
|
|
449
474
|
simulate: ((input, simulateOptions) => {
|
|
450
475
|
if (Array.isArray(input)) return input.map(([permission, data]) => run(permission, data, compact({ now: simulateOptions?.now })));
|
|
451
|
-
if (isArazzoSimulateInput(input)) return simulateArazzo(input, input.permissions, (permission, data) => run(permission, data));
|
|
452
476
|
const preview = input;
|
|
453
477
|
const previewRoles = preview.roles?.map((item) => typeof item === "string" ? item : item.key);
|
|
454
478
|
return fromSnapshot(freezeDeep({
|
|
@@ -465,7 +489,7 @@ function fromSnapshot(snapshot, options = {}) {
|
|
|
465
489
|
}
|
|
466
490
|
}), options);
|
|
467
491
|
}),
|
|
468
|
-
snapshot: ((signing) => signing?.signer === void 0 ? snapshot : signSnapshot(snapshot, signing.signer, signing.audience)),
|
|
492
|
+
snapshot: ((signing) => signing?.signer === void 0 ? snapshot : signSnapshot(snapshot, signing.signer, compact({ audience: signing.audience }))),
|
|
469
493
|
on() {
|
|
470
494
|
return () => void 0;
|
|
471
495
|
},
|
|
@@ -507,38 +531,17 @@ function fromSnapshot(snapshot, options = {}) {
|
|
|
507
531
|
}
|
|
508
532
|
return out;
|
|
509
533
|
},
|
|
510
|
-
|
|
534
|
+
prefetchRelations() {
|
|
511
535
|
return Promise.resolve();
|
|
512
536
|
},
|
|
513
|
-
|
|
514
|
-
return
|
|
515
|
-
permission: permission.key,
|
|
516
|
-
holders: [],
|
|
517
|
-
complete: false
|
|
518
|
-
}));
|
|
537
|
+
mayUse(permission) {
|
|
538
|
+
return mayUse(instance, permission);
|
|
519
539
|
},
|
|
520
|
-
|
|
521
|
-
return
|
|
522
|
-
outcome: "denied",
|
|
523
|
-
change,
|
|
524
|
-
denials: [{
|
|
525
|
-
role: null,
|
|
526
|
-
reason: "unsupported"
|
|
527
|
-
}]
|
|
528
|
-
});
|
|
540
|
+
permittedIds(permission, scope, query) {
|
|
541
|
+
return permittedIds(instance, permission, scope, query);
|
|
529
542
|
},
|
|
530
543
|
derive() {
|
|
531
|
-
return instance;
|
|
532
|
-
},
|
|
533
|
-
activate() {
|
|
534
|
-
return freezeDeep({
|
|
535
|
-
outcome: "denied",
|
|
536
|
-
denials: [{
|
|
537
|
-
role: null,
|
|
538
|
-
reason: "unsupported"
|
|
539
|
-
}],
|
|
540
|
-
alternatives: []
|
|
541
|
-
});
|
|
544
|
+
return Promise.resolve(instance);
|
|
542
545
|
},
|
|
543
546
|
assignableRoles(query) {
|
|
544
547
|
if (query?.scope === "global") return [];
|
|
@@ -566,7 +569,7 @@ function fromSnapshot(snapshot, options = {}) {
|
|
|
566
569
|
function emptySnapshot() {
|
|
567
570
|
return freezeDeep({
|
|
568
571
|
v: 1,
|
|
569
|
-
issuedAt:
|
|
572
|
+
issuedAt: "1970-01-01T00:00:00.000Z",
|
|
570
573
|
subject: {
|
|
571
574
|
principal: null,
|
|
572
575
|
context: {}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep, t as freezeCopy } from "./freeze-CrU8nQeX.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { i as ownKeys, n as isForbiddenKey, t as assertSafeKey } from "./paths-DXSHAMIa.js";
|
|
4
|
+
import { c as listPermissions, o as isPermission } from "./permission-registry-Br4jSNVi.js";
|
|
5
|
+
import { i as readAppData, r as parseAppData, t as assertAppData } from "./app-data-MuyzVqX8.js";
|
|
6
6
|
//#region src/core/vocabulary.ts
|
|
7
7
|
const ROLE_KIND = "role";
|
|
8
8
|
const PLAN_KIND = "plan";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { a as sole, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { c as
|
|
3
|
-
import {
|
|
2
|
+
import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, m as restrictedStops, p as restrictedFor, s as isComputedRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
|
|
3
|
+
import { d as isoNow } from "./time-DkWjdL98.js";
|
|
4
|
+
import { c as rootScope, d as scopeList, o as resolveScope } from "./scopes-CUPSjo9q.js";
|
|
4
5
|
//#region src/core/grantee-conditions.ts
|
|
5
6
|
/**
|
|
6
7
|
* Where a graph relation starts on the row: its own id when the relation is
|
|
@@ -196,7 +197,7 @@ function relationCondition(grantee, resource, scopes = scopeList(void 0), option
|
|
|
196
197
|
field: spec.principal,
|
|
197
198
|
value: { ref: "principal.id" }
|
|
198
199
|
};
|
|
199
|
-
const period = periodConditions(spec, options.now ?? { date: (
|
|
200
|
+
const period = periodConditions(spec, options.now ?? { date: isoNow() });
|
|
200
201
|
return period.length === 0 ? owner : {
|
|
201
202
|
op: "and",
|
|
202
203
|
conditions: [owner, ...period]
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { u as isoAt } from "./time-DkWjdL98.js";
|
|
3
|
+
import { d as scopeList, t as activeFor } from "./scopes-CUPSjo9q.js";
|
|
4
|
+
import { o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
|
|
5
|
+
import { r as relationCondition, t as inheritCondition } from "./grantee-conditions-CcXf8hMM.js";
|
|
5
6
|
//#region src/core/grantee-match.ts
|
|
6
7
|
function combineWhere(left, right) {
|
|
7
8
|
if (left === void 0) return right;
|
|
@@ -79,7 +80,7 @@ function matchOne(grantee, subject, now, resource, scopes, resources) {
|
|
|
79
80
|
};
|
|
80
81
|
const where = relationCondition(grantee, resource, scopes, {
|
|
81
82
|
resources,
|
|
82
|
-
now: { date: (
|
|
83
|
+
now: { date: isoAt(now * 1e3) }
|
|
83
84
|
});
|
|
84
85
|
if (where === void 0 && resource !== void 0) return {
|
|
85
86
|
matched: false,
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { r as PermDock } from "../permdock-D7eeLJER.js";
|
|
3
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
|
|
4
|
+
import { a as ProtectTarget, n as FetchAdapterOptions, r as FetchProtect, t as ContextReader } from "../fetch-adapter-qKJBuRqy.js";
|
|
5
|
+
import { EventHandler, H3Event, H3EventContext, Middleware } from "h3";
|
|
6
|
+
//#region src/h3/create.d.ts
|
|
7
|
+
type H3PermDockOptions<TUser = unknown> = FetchAdapterOptions<H3Event, TUser>;
|
|
8
|
+
/** `event.context` once `middleware()` or `protect` ran: the instance and the loaded row. */
|
|
9
|
+
type H3PermDockContext<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = H3EventContext & {
|
|
10
|
+
readonly permdock: PermDock<V>;
|
|
11
|
+
readonly permdockData: TData;
|
|
12
|
+
};
|
|
13
|
+
/** The event `withPermDock` hands its handler. */
|
|
14
|
+
type H3PermDockEvent<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = H3Event & {
|
|
15
|
+
readonly context: H3PermDockContext<TData, V>;
|
|
16
|
+
};
|
|
17
|
+
type H3PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
18
|
+
/** Global or route middleware that sets `event.context.permdock`. */
|
|
19
|
+
readonly middleware: () => Middleware;
|
|
20
|
+
/** Route middleware: a refusal short-circuits with Problem Details. */
|
|
21
|
+
readonly protect: FetchProtect<H3Event, Middleware>;
|
|
22
|
+
readonly getPermDock: (event: H3Event) => Promise<PermDock<V>>;
|
|
23
|
+
readonly getSnapshot: (event: H3Event, query?: SnapshotQuery) => Promise<Snapshot>;
|
|
24
|
+
/**
|
|
25
|
+
* Types `event.context.permdock` and `permdockData` for the handler, builds
|
|
26
|
+
* the instance when no middleware set it, and answers a thrown PermDock
|
|
27
|
+
* error with Problem Details.
|
|
28
|
+
*/
|
|
29
|
+
readonly withPermDock: <TData = unknown>(handler: (event: H3PermDockEvent<TData, V>) => unknown) => EventHandler;
|
|
30
|
+
readonly connection: (event: H3Event, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
31
|
+
/** The decision endpoint: `app.all('/api/permdock', permdockHandler())`. */
|
|
32
|
+
readonly permdockHandler: () => EventHandler;
|
|
33
|
+
readonly openapi: OpenApiHooks;
|
|
34
|
+
};
|
|
35
|
+
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: H3PermDockOptions<TUser>): H3PermDock<V>;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { type ContextReader, type H3PermDock, type H3PermDockContext, type H3PermDockEvent, type H3PermDockOptions, InvalidSignatureError, type ProtectTarget, discoverViaSignatureAgent, webBotAuthVerifier };
|
package/dist/h3/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
|
|
2
|
+
import { i as decorate } from "../bind-CZzhx-Vj.js";
|
|
3
|
+
import { t as fetchAdapter } from "../fetch-adapter-g0ypLkID.js";
|
|
4
|
+
//#region src/h3/create.ts
|
|
5
|
+
function createPermDock(policy, options) {
|
|
6
|
+
const adapter = fetchAdapter(policy, options, "h3", (event) => event.req);
|
|
7
|
+
const middleware = () => async (event, next) => {
|
|
8
|
+
const attached = await adapter.ensure(event.context, event);
|
|
9
|
+
if (!attached.ok) return attached.response;
|
|
10
|
+
return adapter.mapErrors(event, next);
|
|
11
|
+
};
|
|
12
|
+
const protect = ((target, data, protectOptions) => async (event, next) => {
|
|
13
|
+
const guard = await adapter.guard(target, data, event, protectOptions);
|
|
14
|
+
if (!guard.ok) return guard.response;
|
|
15
|
+
decorate(event.context, guard.permdock, guard.data);
|
|
16
|
+
return adapter.mapErrors(event, next);
|
|
17
|
+
});
|
|
18
|
+
const withPermDock = (handler) => async (event) => {
|
|
19
|
+
const attached = await adapter.ensure(event.context, event);
|
|
20
|
+
if (!attached.ok) return attached.response;
|
|
21
|
+
return adapter.mapErrors(event, () => handler(event));
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
middleware,
|
|
25
|
+
protect,
|
|
26
|
+
getPermDock: adapter.getPermDock,
|
|
27
|
+
getSnapshot: adapter.getSnapshot,
|
|
28
|
+
withPermDock,
|
|
29
|
+
connection: adapter.connection,
|
|
30
|
+
permdockHandler: () => adapter.handler(),
|
|
31
|
+
openapi: adapter.kernel.openapi
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { t as approvalHeaderValue } from "./approval-header-CJACtHkv.js";
|
|
2
|
+
//#region src/client/headers.ts
|
|
3
|
+
/** The `PermDock-Approval` header for a resume; a `TypeError` for a token that is not an RFC 9651 sf-token. */
|
|
4
|
+
function approvalHeaders(token) {
|
|
5
|
+
return { "PermDock-Approval": approvalHeaderValue(token) };
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { approvalHeaders as t };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region src/client/headers.d.ts
|
|
2
|
+
/** The `PermDock-Approval` header for a resume; a `TypeError` for a token that is not an RFC 9651 sf-token. */
|
|
3
|
+
declare function approvalHeaders(token: string): {
|
|
4
|
+
readonly "PermDock-Approval": string;
|
|
5
|
+
};
|
|
6
|
+
//#endregion
|
|
7
|
+
export { approvalHeaders as t };
|