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,13 +1,14 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { a as
|
|
6
|
-
import {
|
|
2
|
+
import { d as isoNow, i as dateAt, p as nowSeconds, u as isoAt } from "./time-DkWjdL98.js";
|
|
3
|
+
import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
|
|
4
|
+
import { s as ApprovalError } from "./types-DqzsnlSA.js";
|
|
5
|
+
import { a as approvalPageSize, o as decodeApprovalCursor, s as encodeApprovalCursor, t as applyApprovalVerdict } from "./store-4u_hxjWa.js";
|
|
6
|
+
import { a as parseCapability } from "./capability-N1K9IpqS.js";
|
|
7
|
+
import { t as loadJose } from "./load-jose-DZ4dnjri.js";
|
|
7
8
|
import "./budget-NbEtbJC_.js";
|
|
8
|
-
import { a as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { a as quoteQualifiedTable, c as quoteSqlTable, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, u as sqlTextArray } from "./sql-B5T1IL83.js";
|
|
10
|
+
import { d as keptKeys, l as roleColumn } from "./sources-vs5dGOsS.js";
|
|
11
|
+
import { t as callRpc } from "./postgrest-CW0IqC-U.js";
|
|
11
12
|
//#region src/supabase/capability.ts
|
|
12
13
|
const DEFAULT_TTL = 300;
|
|
13
14
|
const MAX_TTL = 3600;
|
|
@@ -29,15 +30,19 @@ async function exchangeCapability(subject, options) {
|
|
|
29
30
|
if (principal === null || principal.kind !== "link") return;
|
|
30
31
|
const capability = parseCapability(principal["capability"]);
|
|
31
32
|
if (capability?.holder !== "link" || capability.id !== principal.id) return;
|
|
32
|
-
const now =
|
|
33
|
+
const now = nowSeconds(options.now);
|
|
33
34
|
const ttl = Math.min(Math.max(1, options.ttl ?? DEFAULT_TTL), MAX_TTL);
|
|
34
35
|
const exp = Math.min(now + ttl, Math.floor(capability.expiresAt));
|
|
35
36
|
if (exp <= now) return;
|
|
37
|
+
const { id: _id, expiresAt: _expiresAt, cnf: _cnf, ...claim } = capability;
|
|
36
38
|
const jose = await loadJose();
|
|
37
39
|
const key = isSecret(options.key) ? new TextEncoder().encode(options.key.secret) : await jose.importJWK(options.key, alg);
|
|
38
40
|
const jwt = new jose.SignJWT({
|
|
39
41
|
role: "anon",
|
|
40
|
-
capability
|
|
42
|
+
capability: {
|
|
43
|
+
...claim,
|
|
44
|
+
expires_at: exp
|
|
45
|
+
}
|
|
41
46
|
}).setProtectedHeader(secret ? {
|
|
42
47
|
alg: "HS256",
|
|
43
48
|
typ: "JWT"
|
|
@@ -93,14 +98,14 @@ function checkMembership(item, path, issues) {
|
|
|
93
98
|
"tenant",
|
|
94
99
|
"team",
|
|
95
100
|
"via",
|
|
96
|
-
"
|
|
101
|
+
"granted_by",
|
|
97
102
|
"reason"
|
|
98
103
|
]) optional(item, key, path, issues, isString, "a string");
|
|
99
104
|
optional(item, "within", path, issues, (value) => isRecord(value) && Object.values(value).every((id) => typeof id === "string"), "an object of string ids");
|
|
100
105
|
optional(item, "on", path, issues, (value) => isRecord(value) && typeof own(value, "resource") === "string" && typeof own(value, "id") === "string", "an object with string resource and id");
|
|
101
|
-
optional(item, "
|
|
106
|
+
optional(item, "expires_at", path, issues, (value) => typeof value === "number" && Number.isFinite(value), "a number of seconds since the epoch");
|
|
102
107
|
optional(item, "member", path, issues, (value) => isRecord(value) && typeof own(value, "group") === "string" && own(value, "group") !== "", "an object with a non-empty string group");
|
|
103
|
-
optional(item, "
|
|
108
|
+
optional(item, "managed_by", path, issues, (value) => value === "idp", "'idp'");
|
|
104
109
|
optional(item, "entitlements", path, issues, isStrings, "an array of strings");
|
|
105
110
|
optional(item, "keep", path, issues, isStrings, "an array of strings");
|
|
106
111
|
optional(item, "grants", path, issues, isRecord, "an object");
|
|
@@ -123,14 +128,20 @@ function checkPermDockClaims(record, tenantClaim, path, issues) {
|
|
|
123
128
|
optional(record, "attrs", path, issues, isRecord, "an object");
|
|
124
129
|
optional(record, "authz_ver", path, issues, (value) => Number.isInteger(value), "an integer");
|
|
125
130
|
}
|
|
126
|
-
/** The outer level's `kind`: none, `support` with a `session_id`, or `
|
|
131
|
+
/** The outer level's `kind`: none, `support` with a `session_id`, `impersonation`, or `agent` with optional `tools` and `read_only` and no `session_id`. */
|
|
127
132
|
function checkActKind(level, path, issues) {
|
|
128
133
|
const marked = own(level, "kind");
|
|
129
134
|
const kind = marked === void 0 && own(level, "session_id") !== void 0 ? "support" : marked;
|
|
130
135
|
optional(level, "reason", path, issues, isString, "a string");
|
|
131
136
|
if (kind === void 0 || kind === "impersonation") return;
|
|
137
|
+
if (kind === "agent") {
|
|
138
|
+
if (own(level, "session_id") !== void 0) issue(issues, [...path, "session_id"], "Expected no session_id on an agent level");
|
|
139
|
+
optional(level, "tools", path, issues, (value) => isStrings(value) && value.every((tool) => tool !== ""), "an array of non-empty strings");
|
|
140
|
+
optional(level, "read_only", path, issues, (value) => typeof value === "boolean", "a boolean");
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
132
143
|
if (kind !== "support") {
|
|
133
|
-
issue(issues, [...path, "kind"], "Expected 'support' or '
|
|
144
|
+
issue(issues, [...path, "kind"], "Expected 'support', 'impersonation' or 'agent'");
|
|
134
145
|
return;
|
|
135
146
|
}
|
|
136
147
|
const session = own(level, "session_id");
|
|
@@ -222,187 +233,6 @@ function supabaseClaims(options = {}) {
|
|
|
222
233
|
});
|
|
223
234
|
}
|
|
224
235
|
//#endregion
|
|
225
|
-
//#region src/supabase/postgrest.ts
|
|
226
|
-
function callRpc(client, schema, fn, args) {
|
|
227
|
-
return client.schema(schema).rpc(fn, args);
|
|
228
|
-
}
|
|
229
|
-
function strings(value) {
|
|
230
|
-
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
231
|
-
}
|
|
232
|
-
function grantOf(value) {
|
|
233
|
-
if (!isRecord(value) || typeof value["permission"] !== "string") return;
|
|
234
|
-
return compact({
|
|
235
|
-
permission: value["permission"],
|
|
236
|
-
effect: value["effect"] === "deny" ? "deny" : "allow",
|
|
237
|
-
level: typeof value["level"] === "string" ? value["level"] : void 0
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
function customRoleOf(value) {
|
|
241
|
-
if (!isRecord(value) || typeof value["name"] !== "string") return;
|
|
242
|
-
const grants = Array.isArray(value["grants"]) ? value["grants"].flatMap((item) => {
|
|
243
|
-
const grant = grantOf(item);
|
|
244
|
-
return grant === void 0 ? [] : [grant];
|
|
245
|
-
}) : [];
|
|
246
|
-
const includes = strings(value["includes"]);
|
|
247
|
-
const body = {
|
|
248
|
-
name: value["name"],
|
|
249
|
-
grants,
|
|
250
|
-
...includes.length === 0 ? {} : { includes }
|
|
251
|
-
};
|
|
252
|
-
if (value["scope"] === "global") return value["tenant"] === void 0 ? {
|
|
253
|
-
...body,
|
|
254
|
-
scope: "global"
|
|
255
|
-
} : void 0;
|
|
256
|
-
if (typeof value["tenant"] !== "string") return;
|
|
257
|
-
return compact({
|
|
258
|
-
...body,
|
|
259
|
-
tenant: value["tenant"],
|
|
260
|
-
scope: typeof value["scope"] === "string" ? value["scope"] : void 0,
|
|
261
|
-
id: typeof value["id"] === "string" ? value["id"] : void 0
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
function readMemberEntries(value) {
|
|
265
|
-
if (!Array.isArray(value)) return [];
|
|
266
|
-
return value.flatMap((item) => {
|
|
267
|
-
if (!isRecord(item) || !isRecord(item["principal"])) return [];
|
|
268
|
-
const id = item["principal"]["id"];
|
|
269
|
-
const [membership] = readMemberships([item["membership"]]).memberships;
|
|
270
|
-
return typeof id === "string" && id !== "" && membership !== void 0 ? [{
|
|
271
|
-
principal: { id },
|
|
272
|
-
membership
|
|
273
|
-
}] : [];
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
function versionOf(value) {
|
|
277
|
-
const version = typeof value === "string" ? Number(value) : value;
|
|
278
|
-
return typeof version === "number" && Number.isFinite(version) ? version : void 0;
|
|
279
|
-
}
|
|
280
|
-
/** Reads `subject_for`'s JSON; anything it cannot read is left out, and a malformed record is no record. */
|
|
281
|
-
function readSubjectRecord(value) {
|
|
282
|
-
if (!isRecord(value) || typeof value["id"] !== "string") return;
|
|
283
|
-
if (value["active"] !== true) return {
|
|
284
|
-
id: value["id"],
|
|
285
|
-
active: false,
|
|
286
|
-
roles: [],
|
|
287
|
-
memberships: [],
|
|
288
|
-
customRoles: []
|
|
289
|
-
};
|
|
290
|
-
const version = value["authzVersion"];
|
|
291
|
-
return compact({
|
|
292
|
-
id: value["id"],
|
|
293
|
-
active: true,
|
|
294
|
-
roles: strings(value["roles"]),
|
|
295
|
-
memberships: readMemberships(value["memberships"]).memberships,
|
|
296
|
-
customRoles: Array.isArray(value["customRoles"]) ? value["customRoles"].flatMap((item) => {
|
|
297
|
-
const role = customRoleOf(item);
|
|
298
|
-
return role === void 0 ? [] : [role];
|
|
299
|
-
}) : [],
|
|
300
|
-
authzVersion: typeof version === "number" && Number.isFinite(version) ? version : void 0
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Membership, custom-role and subject sources over the `subject_for(p_user)`,
|
|
305
|
-
* `authz_version_for(p_user)` and `members_of(p_scope, p_id)` functions
|
|
306
|
-
* `permdock supabase hook generate` writes, for a backend that reaches
|
|
307
|
-
* Postgres only through PostgREST. `memberships.version` reads only the
|
|
308
|
-
* version, so `claimsFirst` with `onStale: 'reread'` reads the full subject
|
|
309
|
-
* only for a stale token; when the version function is missing it falls back
|
|
310
|
-
* to `subject_for`. With `policy`, a token that claims a custom role has its
|
|
311
|
-
* subject read in one `subject_for` call instead, and custom roles are read
|
|
312
|
-
* only for a subject that holds one. Each user and each instance is read once per
|
|
313
|
-
* `postgrestSources` call, so create it per request or per job.
|
|
314
|
-
*/
|
|
315
|
-
function postgrestSources(client, options = {}) {
|
|
316
|
-
const api = options.api;
|
|
317
|
-
const names = api === void 0 ? void 0 : hookApiNames(api.prefix);
|
|
318
|
-
const schema = options.schema ?? (api === void 0 ? "permdock" : api.schema ?? "public");
|
|
319
|
-
const fn = options.fn ?? names?.subjectFor ?? "subject_for";
|
|
320
|
-
const membersFn = options.membersFn ?? names?.membersOf ?? "members_of";
|
|
321
|
-
const versionFn = options.versionFn ?? names?.authzVersionFor ?? "authz_version_for";
|
|
322
|
-
const declared = options.policy === void 0 ? void 0 : options.policy.index.declaredRoles;
|
|
323
|
-
const onlyDeclared = (held) => declared !== void 0 && held?.every((name) => declared.has(name)) === true;
|
|
324
|
-
const loaded = /* @__PURE__ */ new Map();
|
|
325
|
-
const versions = /* @__PURE__ */ new Map();
|
|
326
|
-
const listed = /* @__PURE__ */ new Map();
|
|
327
|
-
const list = (query) => {
|
|
328
|
-
const key = JSON.stringify([query.scope, query.id]);
|
|
329
|
-
const cached = listed.get(key);
|
|
330
|
-
if (cached !== void 0) return cached.then((entries) => [...entries]);
|
|
331
|
-
const pending = Promise.resolve(callRpc(client, schema, membersFn, {
|
|
332
|
-
p_scope: query.scope,
|
|
333
|
-
p_id: query.id
|
|
334
|
-
})).then((result) => {
|
|
335
|
-
if (result.error !== null) throw new Error(`PermDock: ${schema}.${membersFn} failed: ${result.error.message}`);
|
|
336
|
-
return readMemberEntries(result.data);
|
|
337
|
-
});
|
|
338
|
-
listed.set(key, pending);
|
|
339
|
-
return pending.then((entries) => [...entries]);
|
|
340
|
-
};
|
|
341
|
-
const record = (userId) => {
|
|
342
|
-
const cached = loaded.get(userId);
|
|
343
|
-
if (cached !== void 0) return cached;
|
|
344
|
-
const pending = Promise.resolve(callRpc(client, schema, fn, { p_user: userId })).then((result) => {
|
|
345
|
-
if (result.error !== null) throw new Error(`PermDock: ${schema}.${fn} failed: ${result.error.message}`);
|
|
346
|
-
return readSubjectRecord(result.data);
|
|
347
|
-
});
|
|
348
|
-
loaded.set(userId, pending);
|
|
349
|
-
return pending;
|
|
350
|
-
};
|
|
351
|
-
const version = (userId) => {
|
|
352
|
-
const read = loaded.get(userId);
|
|
353
|
-
if (read !== void 0) return read.then((found) => found?.authzVersion);
|
|
354
|
-
const cached = versions.get(userId);
|
|
355
|
-
if (cached !== void 0) return cached;
|
|
356
|
-
const pending = Promise.resolve(callRpc(client, schema, versionFn, { p_user: userId })).then((result) => result.error === null ? versionOf(result.data) : record(userId).then((found) => found?.authzVersion));
|
|
357
|
-
versions.set(userId, pending);
|
|
358
|
-
return pending;
|
|
359
|
-
};
|
|
360
|
-
const live = async (userId) => {
|
|
361
|
-
const found = await record(userId);
|
|
362
|
-
return found?.active === true ? found : void 0;
|
|
363
|
-
};
|
|
364
|
-
return {
|
|
365
|
-
memberships: {
|
|
366
|
-
async membershipsFor(principal) {
|
|
367
|
-
return [...(await live(principal.id))?.memberships ?? []];
|
|
368
|
-
},
|
|
369
|
-
version(principal) {
|
|
370
|
-
return declared !== void 0 && !onlyDeclared([...principal.roles ?? [], ...(principal.memberships ?? []).flatMap((membership) => membership.roles)]) ? record(principal.id).then((found) => found?.authzVersion) : version(principal.id);
|
|
371
|
-
},
|
|
372
|
-
list
|
|
373
|
-
},
|
|
374
|
-
customRoles(principal) {
|
|
375
|
-
return {
|
|
376
|
-
async rolesFor(tenant, context) {
|
|
377
|
-
if (onlyDeclared(context?.held)) return [];
|
|
378
|
-
return ((await live(principal.id))?.customRoles ?? []).filter((role) => role.tenant === tenant);
|
|
379
|
-
},
|
|
380
|
-
async globalRoles(context) {
|
|
381
|
-
if (onlyDeclared(context?.held)) return [];
|
|
382
|
-
return ((await live(principal.id))?.customRoles ?? []).filter((role) => role.scope === "global");
|
|
383
|
-
}
|
|
384
|
-
};
|
|
385
|
-
},
|
|
386
|
-
async subject(userId) {
|
|
387
|
-
const found = await live(userId);
|
|
388
|
-
if (found === void 0) return {
|
|
389
|
-
principal: null,
|
|
390
|
-
context: {}
|
|
391
|
-
};
|
|
392
|
-
return {
|
|
393
|
-
principal: compact({
|
|
394
|
-
id: found.id,
|
|
395
|
-
roles: found.roles,
|
|
396
|
-
memberships: found.memberships,
|
|
397
|
-
authzVersion: found.authzVersion
|
|
398
|
-
}),
|
|
399
|
-
context: {}
|
|
400
|
-
};
|
|
401
|
-
},
|
|
402
|
-
record
|
|
403
|
-
};
|
|
404
|
-
}
|
|
405
|
-
//#endregion
|
|
406
236
|
//#region src/supabase/approval-store.ts
|
|
407
237
|
/** A stored body as the request it is; the store wrote it from an `ApprovalRequest`. */
|
|
408
238
|
function requestOf(value) {
|
|
@@ -456,10 +286,10 @@ function supabaseApprovalStore(client, options = {}) {
|
|
|
456
286
|
if (written === null) throw new ApprovalError("approval-not-pending", "approval is not pending");
|
|
457
287
|
return written;
|
|
458
288
|
},
|
|
459
|
-
async consume(token, now
|
|
289
|
+
async consume(token, now) {
|
|
460
290
|
return requestOf(await call("permdock_approval_consume", {
|
|
461
291
|
p_token: token,
|
|
462
|
-
p_now: now.toISOString()
|
|
292
|
+
p_now: dateAt(now).toISOString()
|
|
463
293
|
}));
|
|
464
294
|
},
|
|
465
295
|
async list(query) {
|
|
@@ -483,8 +313,8 @@ function supabaseApprovalStore(client, options = {}) {
|
|
|
483
313
|
next: encodeApprovalCursor(last)
|
|
484
314
|
} : { items };
|
|
485
315
|
},
|
|
486
|
-
async expire(now
|
|
487
|
-
const count = await call("permdock_approval_expire", { p_now: now.toISOString() });
|
|
316
|
+
async expire(now) {
|
|
317
|
+
const count = await call("permdock_approval_expire", { p_now: dateAt(now).toISOString() });
|
|
488
318
|
return typeof count === "number" ? count : 0;
|
|
489
319
|
},
|
|
490
320
|
async cancel(filter, meta) {
|
|
@@ -492,13 +322,76 @@ function supabaseApprovalStore(client, options = {}) {
|
|
|
492
322
|
p_filter: filterOf(filter),
|
|
493
323
|
p_by: meta.by,
|
|
494
324
|
p_note: meta.note ?? null,
|
|
495
|
-
p_now: (
|
|
325
|
+
p_now: isoNow()
|
|
496
326
|
});
|
|
497
327
|
return typeof count === "number" ? count : 0;
|
|
498
328
|
}
|
|
499
329
|
};
|
|
500
330
|
}
|
|
501
331
|
//#endregion
|
|
332
|
+
//#region src/supabase/approval-delegations.ts
|
|
333
|
+
function rowsOf(result) {
|
|
334
|
+
return Array.isArray(result) ? result : result.rows;
|
|
335
|
+
}
|
|
336
|
+
function instant(value) {
|
|
337
|
+
if (value instanceof Date) return Number.isNaN(value.getTime()) ? void 0 : value.toISOString();
|
|
338
|
+
if (typeof value !== "string") return;
|
|
339
|
+
const ms = Date.parse(value);
|
|
340
|
+
return Number.isNaN(ms) ? void 0 : isoAt(ms);
|
|
341
|
+
}
|
|
342
|
+
function list(value) {
|
|
343
|
+
if (value === null || value === void 0) return;
|
|
344
|
+
if (!Array.isArray(value)) return false;
|
|
345
|
+
const items = [];
|
|
346
|
+
for (const item of value) {
|
|
347
|
+
if (typeof item !== "string") return false;
|
|
348
|
+
items.push(item);
|
|
349
|
+
}
|
|
350
|
+
return items;
|
|
351
|
+
}
|
|
352
|
+
function delegationOf(row) {
|
|
353
|
+
const { id, delegator, delegate, tenant } = row;
|
|
354
|
+
const from = instant(row["from"]);
|
|
355
|
+
const until = instant(row["until"]);
|
|
356
|
+
const permissions = list(row["permissions"]);
|
|
357
|
+
const resources = list(row["resources"]);
|
|
358
|
+
if (typeof id !== "string" || typeof delegator !== "string" || typeof delegate !== "string" || tenant !== null && typeof tenant !== "string" || from === void 0 || until === void 0 || permissions === false || resources === false) return;
|
|
359
|
+
return {
|
|
360
|
+
id,
|
|
361
|
+
delegator,
|
|
362
|
+
delegate,
|
|
363
|
+
...typeof tenant === "string" ? { tenant } : {},
|
|
364
|
+
...permissions === void 0 ? {} : { permissions },
|
|
365
|
+
...resources === void 0 ? {} : { resources },
|
|
366
|
+
from,
|
|
367
|
+
until
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Approval delegations (out-of-office covers) from the table
|
|
372
|
+
* `rls.approvals.delegations` generates, so `approvalsHandler` and
|
|
373
|
+
* `permdock_is_approver` read the same rows. A cover without a tenant
|
|
374
|
+
* applies everywhere; a malformed row is skipped.
|
|
375
|
+
*/
|
|
376
|
+
function tableApprovalDelegationSource(options) {
|
|
377
|
+
const table = quoteQualifiedTable(options.table ?? "permdock.approval_delegations");
|
|
378
|
+
return {
|
|
379
|
+
name: "table",
|
|
380
|
+
async delegationsFor(query) {
|
|
381
|
+
const values = [query.delegate, query.at];
|
|
382
|
+
let tenant = "d.tenant is null";
|
|
383
|
+
if (query.tenant !== void 0) {
|
|
384
|
+
values.push(query.tenant);
|
|
385
|
+
tenant = "(d.tenant is null or d.tenant = $3)";
|
|
386
|
+
}
|
|
387
|
+
return rowsOf(await options.query(`select d.id::text as id, d.delegator::text as delegator, d.delegate::text as delegate, d.tenant::text as tenant, d.permissions, d.resources, d."from", d."until" from ${table} d where d.delegate::text = $1 and d."from" <= $2::timestamptz and $2::timestamptz < d."until" and ${tenant} order by d.id`, values)).flatMap((row) => {
|
|
388
|
+
const entry = delegationOf(row);
|
|
389
|
+
return entry === void 0 ? [] : [entry];
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
//#endregion
|
|
502
395
|
//#region src/supabase/rls.ts
|
|
503
396
|
function isTable(value) {
|
|
504
397
|
return value !== null && typeof value === "object" && "table" in value && typeof value.table === "string";
|
|
@@ -656,9 +549,9 @@ ${tenantBranch}
|
|
|
656
549
|
and not ${global("deny")};
|
|
657
550
|
end;`;
|
|
658
551
|
}
|
|
659
|
-
/** A claim membership whose `
|
|
660
|
-
const CLAIM_UNEXPIRED = `case jsonb_typeof(m -> '
|
|
661
|
-
when 'number' then (m ->> '
|
|
552
|
+
/** A claim membership whose `expires_at` (epoch seconds) has passed no longer holds its roles. */
|
|
553
|
+
const CLAIM_UNEXPIRED = `case jsonb_typeof(m -> 'expires_at')
|
|
554
|
+
when 'number' then (m ->> 'expires_at')::numeric > extract(epoch from now())
|
|
662
555
|
else true
|
|
663
556
|
end`;
|
|
664
557
|
function jwtBody(q, scope, custom, suspension) {
|
|
@@ -757,4 +650,4 @@ grant execute on function ${signature} to authenticated;
|
|
|
757
650
|
`;
|
|
758
651
|
}
|
|
759
652
|
//#endregion
|
|
760
|
-
export {
|
|
653
|
+
export { supabaseClaims as a, supabaseApprovalStore as i, supabaseRls as n, exchangeCapability as o, tableApprovalDelegationSource as r, authorizeSql as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { i as runSupabase } from "./supabase-hook-DdDQhMlw.js";
|