permdock 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -35
- package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
- package/dist/a2a/index.d.ts +8 -6
- package/dist/a2a/index.js +21 -31
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-B4R5fnMU.js +107 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.js +1 -0
- package/dist/ai-sdk/index.d.ts +18 -23
- package/dist/ai-sdk/index.js +38 -21
- package/dist/app-data-MuyzVqX8.js +60 -0
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-DJ6Yd5z1.js +995 -0
- package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
- package/dist/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
- package/dist/args-IIolxxKA.js +197 -0
- package/dist/astro/index.d.ts +43 -0
- package/dist/astro/index.js +27 -0
- package/dist/audience-Dg8XsRaO.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +228 -75
- package/dist/automation-BMZPIVUM.d.ts +114 -0
- package/dist/automation-DVjOckjV.js +157 -0
- package/dist/better-auth/index.d.ts +8 -6
- package/dist/better-auth/index.js +11 -23
- package/dist/better-supabase/index.d.ts +438 -86
- package/dist/better-supabase/index.js +1027 -184
- package/dist/bind--9EFVYWF.d.ts +38 -0
- package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/build-instance-BMnAudHn.js +52 -0
- package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
- package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
- package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
- package/dist/casbin-Cr7RLtA3.js +30 -0
- package/dist/casbin-Dyu2gnUD.js +234 -0
- package/dist/casl-64gpT-8x.js +24 -0
- package/dist/casl-DjEDhTCP.js +299 -0
- package/dist/catalog/index.d.ts +74 -2
- package/dist/catalog/index.js +51 -2
- package/dist/catalog-BECMPrwc.js +100 -0
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
- package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +224 -0
- package/dist/chat-sdk/index.d.ts +87 -0
- package/dist/chat-sdk/index.js +197 -0
- package/dist/claims-map-7oQ3ue4X.js +13 -0
- package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
- package/dist/claude-agent/index.d.ts +7 -14
- package/dist/claude-agent/index.js +26 -30
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +15 -45
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +20 -6
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +240 -347
- package/dist/cloud-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- package/dist/command-L8EstFNm.js +6 -0
- package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -2
- package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
- package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
- package/dist/completion-BqhRBJD8.js +143 -0
- package/dist/config-B46rm9sc.js +26 -0
- package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
- package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
- package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
- package/dist/constants-DcJABbLW.js +20 -0
- package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +18 -18
- package/dist/create-0VZ7Pdiu.d.ts +107 -0
- package/dist/create-BDS7wc3y.d.ts +138 -0
- package/dist/create-BFfm17UA.d.ts +110 -0
- package/dist/create-BWRSXgOF.js +403 -0
- package/dist/create-C3b4B5eF.js +130 -0
- package/dist/create-DnrmLnLW.js +323 -0
- package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/deciding-columns-Sq12mEA6.js +123 -0
- package/dist/delegation-DaXVdDhM.js +286 -0
- package/dist/delegation-input-FTxMK3ji.js +19 -0
- package/dist/delivery/index.d.ts +5 -0
- package/dist/delivery/index.js +5 -0
- package/dist/delivery-DCAgNyCn.js +499 -0
- package/dist/delivery-event-xX4obB8F.js +40 -0
- package/dist/denied-text-D8jDHgsl.d.ts +19 -0
- package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
- package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/doctor-DFjUxf2f.js +2361 -0
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +6 -14
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +14 -13
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/evaluate-_R8QkWaf.js +1732 -0
- package/dist/evaluations-16UqqQ6W.d.ts +32 -0
- package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +23 -29
- package/dist/event-time-CsegxXxB.js +23 -0
- package/dist/expiry-D4_YKRKD.js +52 -0
- package/dist/express/index.d.ts +13 -10
- package/dist/express/index.js +14 -12
- package/dist/fastify/index.d.ts +26 -13
- package/dist/fastify/index.js +17 -36
- package/dist/fetch-adapter-g0ypLkID.js +120 -0
- package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
- package/dist/fields-D9tPVUUS.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
- package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
- package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
- package/dist/grantee-Cn1HyUsI.js +254 -0
- package/dist/grantee-conditions-CcXf8hMM.js +271 -0
- package/dist/grantee-match-DHArqY82.js +142 -0
- package/dist/h3/index.d.ts +37 -0
- package/dist/h3/index.js +35 -0
- package/dist/headers-BIjfMaoC.js +8 -0
- package/dist/headers-CIbDTUTK.d.ts +7 -0
- package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +14 -13
- package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
- package/dist/hosted-DBDX0M-P.d.ts +78 -0
- package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
- package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
- package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
- package/dist/index-BcHcPyIo.d.ts +110 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-Chrs5fQ-.d.ts +210 -0
- package/dist/index-CxGUswIC.d.ts +431 -0
- package/dist/index-D8EovfsP.d.ts +91 -0
- package/dist/index-DOVf7RJv.d.ts +900 -0
- package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
- package/dist/index.d.ts +20 -14
- package/dist/index.js +33 -23
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
- package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +166 -145
- package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +6 -14
- package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
- package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
- package/dist/login-Dfe5RlYk.js +68 -0
- package/dist/login-imhuwvn3.js +254 -0
- package/dist/manifest-C8IzW3Do.js +42 -0
- package/dist/manifest-CtKR3GXL.js +370 -0
- package/dist/manifest-json-CAGzls-C.js +9 -0
- package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
- package/dist/manifest-schema-C0kK_8V0.js +399 -0
- package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
- package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
- package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
- package/dist/mcp/index.d.ts +36 -9
- package/dist/mcp/index.js +476 -448
- package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +20 -20
- package/dist/next/index.d.ts +40 -20
- package/dist/next/index.js +37 -39
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +10 -10
- package/dist/node/index.js +7 -9
- package/dist/ocsf-BFp-PZZA.js +126 -0
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +18 -25
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
- package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
- package/dist/openapi-ahr8rHu3.js +138 -0
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-CxybZErY.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +23 -20
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +53 -27
- package/dist/output-Dyw8fyPF.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/output-files-DhRBBE4n.js +138 -0
- package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
- package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
- package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
- package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
- package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
- package/dist/parse-request-D_tUXG6M.js +26 -0
- package/dist/paths-DXSHAMIa.js +42 -0
- package/dist/pdp/index.d.ts +7 -3
- package/dist/pdp/index.js +47 -29
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-B9JxkBwC.js +868 -0
- package/dist/permdock-D7eeLJER.d.ts +502 -0
- package/dist/permission-registry-Br4jSNVi.js +385 -0
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
- package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/policy-DLZJ5gAp.js +399 -0
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
- package/dist/postgrest-CW0IqC-U.js +566 -0
- package/dist/postgrest-NUqZT-RB.d.ts +100 -0
- package/dist/powersync-BHfuehf3.js +62 -0
- package/dist/powersync-CbzkqL_M.js +1 -0
- package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
- package/dist/preset/index.d.ts +146 -0
- package/dist/preset/index.js +1 -0
- package/dist/preset-DZdU0tne.js +1768 -0
- package/dist/principal-source-pHneukrx.js +103 -0
- package/dist/prisma/index.d.ts +6 -3
- package/dist/prisma/index.js +6 -12
- package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
- package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
- package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/protected-DEPHc2xV.d.ts +38 -0
- package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
- package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
- package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
- package/dist/pull-BgIfno6w.js +256 -0
- package/dist/pull-ByOks_Tg.js +1 -0
- package/dist/push-CmFVBOeI.js +116 -0
- package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
- package/dist/pushed-policy-DobP7AHI.js +238 -0
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +6 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -2
- package/dist/react-native/index.d.ts +24 -63
- package/dist/react-native/index.js +45 -27
- package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/relation-walk-3OyDBF0S.js +186 -0
- package/dist/relations-BnCWnJGI.js +163 -0
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/request-context-BTRTG7OT.js +71 -0
- package/dist/request-context-C2_1lchh.d.ts +5 -0
- package/dist/request-schema-CMreVuFM.js +148 -0
- package/dist/resend/index.d.ts +126 -0
- package/dist/resend/index.js +379 -0
- package/dist/resource-relations-D_jw0BFx.js +243 -0
- package/dist/retire-CALjIQ7e.js +240 -0
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BA8an5Ap.js +336 -0
- package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
- package/dist/role-builder-CXbis5-X.js +623 -0
- package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
- package/dist/run-CNsApDpd.js +1 -0
- package/dist/run-DOfMtc9V.js +723 -0
- package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
- package/dist/scan-BOI5tJ-6.js +29 -0
- package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
- package/dist/schema-yLuBWWsh.js +130 -0
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +1 -2
- package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
- package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
- package/dist/server/index.d.ts +13 -134
- package/dist/server/index.js +13 -10
- package/dist/server-DqCT4CgZ.js +453 -0
- package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/shared-CD11nBbC.js +304 -0
- package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/sink-Bj_lDUDq.d.ts +225 -0
- package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.js +269 -0
- package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
- package/dist/solid/index.d.ts +24 -25
- package/dist/solid/index.js +41 -11
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
- package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
- package/dist/sql-B5T1IL83.js +55 -0
- package/dist/src-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +440 -106
- package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
- package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
- package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
- package/dist/stores-ClZUgeoP.d.ts +30 -0
- package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
- package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
- package/dist/style-DiKWnAvn.js +1 -0
- package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
- package/dist/subject-BGoM5o8B.js +17 -0
- package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +13 -6
- package/dist/supabase/middleware.js +16 -11
- package/dist/supabase-9pqI57pW.js +92 -0
- package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
- package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +11 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +26 -12
- package/dist/svelte/runtime.d.ts +10 -3
- package/dist/svelte/runtime.js +4 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +5 -5
- package/dist/sveltekit/index.d.ts +51 -0
- package/dist/sveltekit/index.js +27 -0
- package/dist/tanstack-start/index.d.ts +51 -0
- package/dist/tanstack-start/index.js +40 -0
- package/dist/target-Bw37TFNA.js +51 -0
- package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +36 -316
- package/dist/testing/index.d.ts +391 -106
- package/dist/testing/index.js +4574 -1286
- package/dist/testing/saas/index.d.ts +9 -8
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -2
- package/dist/text-BMFRfBqc.js +8 -0
- package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
- package/dist/thenable-yD7SabqG.js +31 -0
- package/dist/time-DkWjdL98.js +71 -0
- package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
- package/dist/tool-refusal-CMLN5xhn.js +41 -0
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +18 -17
- package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
- package/dist/types-BNORmDM8.d.ts +172 -0
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
- package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
- package/dist/types-DX0LaKTb.d.ts +157 -0
- package/dist/types-DiQjupG2.d.ts +332 -0
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/types-_sHy8BQf.d.ts +65 -0
- package/dist/types-fbZ7JEXr.d.ts +89 -0
- package/dist/types-tIgIeIKJ.d.ts +66 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CHOtwL19.js +1 -0
- package/dist/usage-DHtE8j4E.js +32 -0
- package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
- package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
- package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
- package/dist/validity-CZ7-y0Cj.js +79 -0
- package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
- package/dist/verify-DbCL9bnB.js +1770 -0
- package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
- package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
- package/dist/vue/index.d.ts +25 -21
- package/dist/vue/index.js +25 -9
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/waiter-CKy4MQSY.d.ts +36 -0
- package/dist/watch-Cb-NcaUw.js +1 -0
- package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +13 -37
- package/dist/where-scope-Dv-WTP-w.js +306 -0
- package/dist/who-can-D0QoYbEb.js +364 -0
- package/dist/wire-delegation-Cv3W2eaM.js +36 -0
- package/dist/wire-denial-C7PaVYEM.js +27 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +223 -0
- package/dist/workflow-sdk/index.d.ts +56 -0
- package/dist/workflow-sdk/index.js +78 -0
- package/dist/wrap-Bd1Tejur.d.ts +15 -0
- package/dist/wrap-gX61EtpB.js +27 -0
- package/package.json +140 -41
- package/schemas/access-event-v1.json +118 -0
- package/schemas/approval-request-v1.json +34 -1
- package/schemas/approval-signature-v1.json +94 -0
- package/schemas/automation-event-v1.json +113 -0
- package/schemas/capability-v1.json +84 -0
- package/schemas/catalog-event-v1.json +87 -0
- package/schemas/catalog-v1.json +129 -12
- package/schemas/cli-commands-v1.json +164 -0
- package/schemas/cli-result-v1.json +96 -0
- package/schemas/cloud-api-v1.json +5407 -0
- package/schemas/connector-v1.json +408 -0
- package/schemas/credential-event-v1.json +81 -0
- package/schemas/credential-v1.json +134 -0
- package/schemas/decision-event-v1.json +288 -0
- package/schemas/delivery-event-v1.json +117 -0
- package/schemas/directory-event-v1.json +85 -0
- package/schemas/evidence-export-v1.json +54 -0
- package/schemas/membership-event-v1.json +93 -0
- package/schemas/policy-v1.json +68 -0
- package/schemas/pushed-policy-v1.json +236 -0
- package/schemas/run-v1.json +162 -0
- package/schemas/snapshot-v1.json +138 -0
- package/schemas/supabase-claims-v1.json +4 -4
- package/schemas/supabase-manifest-v1.json +5 -1
- package/schemas/support-session-v1.json +111 -0
- package/skills/permdock/SKILL.md +16 -12
- package/skills/permdock-agents/SKILL.md +40 -23
- package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
- package/skills/permdock-agents/references/runtimes.md +22 -18
- package/skills/permdock-approvals/SKILL.md +29 -13
- package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
- package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +5 -5
- package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +13 -8
- package/skills/permdock-data/references/relationships.md +3 -3
- package/skills/permdock-tenancy/SKILL.md +20 -7
- package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
- package/skills/permdock-wire/SKILL.md +18 -12
- package/skills/permdock-wire/references/adapters.md +146 -50
- package/skills/permdock-wire/references/policy-options.md +15 -6
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DbYAuNkG.js +0 -224
- package/dist/arazzo-C9chp3ST.js +0 -54
- package/dist/bind-C_ob3LKa.d.ts +0 -25
- package/dist/catalog-CRW5Mx_B.js +0 -2
- package/dist/catalog-CYj-mX2O.js +0 -48
- package/dist/catalog-DWF5cYqB.js +0 -55
- package/dist/cloud-CfwZ39Rl.js +0 -50
- package/dist/cloud-DWLXO2af.js +0 -118
- package/dist/collect-CHB22Sx4.js +0 -83
- package/dist/collect-DSWOk19R.js +0 -2
- package/dist/commands-BeaGNj_o.js +0 -97
- package/dist/config-ir40y8m0.js +0 -36
- package/dist/create-CMwIl-w2.js +0 -253
- package/dist/delegation-D8pUEuce.js +0 -103
- package/dist/diff-C9RDjjhs.js +0 -48
- package/dist/doctor-Djh6JDEk.js +0 -53
- package/dist/doctor-DvH0IQff.js +0 -1194
- package/dist/doctor-collect-CjdO0wQX.js +0 -665
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/evaluation-items-CfCCejQd.js +0 -40
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-BMl1RxoX.js +0 -26
- package/dist/grantee-Cv5Sogfv.js +0 -602
- package/dist/headers-BZSDieNT.js +0 -6
- package/dist/headers-Cf-zWvsO.d.ts +0 -6
- package/dist/ids-DC4V4CFu.js +0 -18
- package/dist/index-0nNqHspG.d.ts +0 -6
- package/dist/index-BNc7Wer_.d.ts +0 -483
- package/dist/index-C7Tw7MaW.d.ts +0 -201
- package/dist/instance-options-Dhhcnm3y.js +0 -22
- package/dist/load-DwJUafYN.js +0 -2
- package/dist/manifest-iaoBXHKc.js +0 -783
- package/dist/map-AcxK9o_D.js +0 -147
- package/dist/may-use-DndQ5tQ-.js +0 -77
- package/dist/openapi-CQTsgKoB.js +0 -164
- package/dist/permdock-CbgvLnuo.js +0 -3479
- package/dist/permissions-DVoF6dMt.js +0 -662
- package/dist/policy-xyWg7QdR.js +0 -1122
- package/dist/powersync-CrBX8hY6.js +0 -2
- package/dist/powersync-DE19b9dT.js +0 -62
- package/dist/protected-BdnIEFkY.d.ts +0 -27
- package/dist/protected-xAr24FEC.d.ts +0 -40
- package/dist/relations-cjOL01hZ.js +0 -505
- package/dist/rls-P-BeBx0n.js +0 -238
- package/dist/rls-graph-CHwx0V8q.js +0 -435
- package/dist/rls-ownership-DcYlZ09B.js +0 -843
- package/dist/rls-shared-Cewd_-zI.js +0 -495
- package/dist/rls-verify-CMv9H3wV.js +0 -746
- package/dist/run-BWc9qqvE.js +0 -174
- package/dist/server-DlZ28Oz5.js +0 -268
- package/dist/sink-B1fZzIMf.d.ts +0 -104
- package/dist/sink-Bd9PSyfq.js +0 -141
- package/dist/skills-C5CbhhpG.js +0 -56
- package/dist/snapshot-Enxd0n-s.js +0 -975
- package/dist/sql-xdg5f4Fi.js +0 -27
- package/dist/src-BDwEZWrZ.js +0 -568
- package/dist/store-jOBYpiXC.d.ts +0 -36
- package/dist/stores-C0IMQrGI.d.ts +0 -52
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-config-Bj3iDH2I.js +0 -472
- package/dist/supabase-hook-gd3s8bxB.js +0 -2
- package/dist/supabase-s4o9s1O1.js +0 -83
- package/dist/thenable-okc2xDsj.js +0 -10
- package/dist/types-BnIEz1sU.d.ts +0 -48
- package/dist/types-Bvc4oWT6.d.ts +0 -9
- package/dist/types-CKNSyIf_.d.ts +0 -52
- package/dist/types-Cq_H8N_X.d.ts +0 -197
- package/dist/usage-B0YuTQRO.js +0 -42
- package/dist/usage-DorAJiU_.js +0 -2
- package/dist/vocabulary-DA8a8zif.d.ts +0 -56
- package/dist/watch-BwxLTYMZ.js +0 -2
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
import { t as compact } from "./compact-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { n as
|
|
1
|
+
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { g as secondsOf } from "./time-DkWjdL98.js";
|
|
3
|
+
import { c as rowIdOf } from "./delegation-DaXVdDhM.js";
|
|
4
|
+
import { c as nowSeconds } from "./tenancy-DN2QAx9z.js";
|
|
5
|
+
import { n as payloadDigest } from "./token-BLZcjQgt.js";
|
|
6
|
+
import { n as parseSnapshot } from "./snapshot-CXUWfsNy.js";
|
|
7
|
+
import { s as snapshotClaim } from "./where-scope-Dv-WTP-w.js";
|
|
8
|
+
import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-D2lZt4Dd.js";
|
|
6
9
|
import { t as timeoutSignal } from "./timeout-D51niuQP.js";
|
|
10
|
+
//#region src/client/source.ts
|
|
11
|
+
/** A compact JWS: three non-empty dot-separated parts. */
|
|
12
|
+
function isJws(value) {
|
|
13
|
+
const parts = value.split(".");
|
|
14
|
+
return parts.length === 3 && parts.every((part) => part.length > 0);
|
|
15
|
+
}
|
|
16
|
+
function isPromiseLike(value) {
|
|
17
|
+
return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
7
20
|
//#region src/client/approvals.ts
|
|
8
21
|
/** Ceiling for the approval poll backoff after a failed status request. */
|
|
9
22
|
const APPROVAL_BACKOFF_CAP_MS = 6e4;
|
|
@@ -237,16 +250,6 @@ function storeRequest(fetchImpl, headers) {
|
|
|
237
250
|
});
|
|
238
251
|
}
|
|
239
252
|
//#endregion
|
|
240
|
-
//#region src/client/source.ts
|
|
241
|
-
/** A compact JWS: three non-empty dot-separated parts. */
|
|
242
|
-
function isJws(value) {
|
|
243
|
-
const parts = value.split(".");
|
|
244
|
-
return parts.length === 3 && parts.every((part) => part.length > 0);
|
|
245
|
-
}
|
|
246
|
-
function isPromiseLike(value) {
|
|
247
|
-
return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
|
|
248
|
-
}
|
|
249
|
-
//#endregion
|
|
250
253
|
//#region src/client/store.ts
|
|
251
254
|
function withTenant(source, tenant) {
|
|
252
255
|
if (tenant === void 0) return source;
|
|
@@ -380,11 +383,13 @@ function createClientStore(options) {
|
|
|
380
383
|
return "ready";
|
|
381
384
|
};
|
|
382
385
|
const isStale = () => {
|
|
383
|
-
const
|
|
384
|
-
|
|
386
|
+
const issuedAt = secondsOf(snapshot.issuedAt) ?? 0;
|
|
387
|
+
const expiresAt = secondsOf(snapshot.expiresAt);
|
|
388
|
+
const maxAge = issuedAt > 0 ? options.maxAge : void 0;
|
|
389
|
+
if (expiresAt === void 0 && maxAge === void 0) return false;
|
|
385
390
|
const now = nowSeconds();
|
|
386
|
-
if (
|
|
387
|
-
return maxAge !== void 0 && now -
|
|
391
|
+
if (expiresAt !== void 0 && expiresAt <= now) return true;
|
|
392
|
+
return maxAge !== void 0 && now - issuedAt > maxAge;
|
|
388
393
|
};
|
|
389
394
|
const serverOnly = () => {
|
|
390
395
|
hydrate(emptySnapshot());
|
|
@@ -401,8 +406,8 @@ function createClientStore(options) {
|
|
|
401
406
|
const verifyJws = async (raw) => {
|
|
402
407
|
if (options.verifier === void 0) return;
|
|
403
408
|
try {
|
|
404
|
-
const verified = await options.verifier.verify(raw, { typ: "permdock
|
|
405
|
-
return verified.ok ? verified.claims
|
|
409
|
+
const verified = await options.verifier.verify(raw, { typ: "vnd.permdock.snapshot+jwt" });
|
|
410
|
+
return verified.ok ? snapshotClaim(verified.claims) : void 0;
|
|
406
411
|
} catch {
|
|
407
412
|
return;
|
|
408
413
|
}
|
|
@@ -565,7 +570,7 @@ function createClientStore(options) {
|
|
|
565
570
|
signed = body;
|
|
566
571
|
body = await verifyJws(body);
|
|
567
572
|
ok = body !== void 0;
|
|
568
|
-
}
|
|
573
|
+
} else if (ok && options.verifier !== void 0) ok = false;
|
|
569
574
|
refreshing -= 1;
|
|
570
575
|
if (started !== generation || seq !== refreshSeq) {
|
|
571
576
|
emit();
|
|
@@ -692,6 +697,14 @@ function hintOnce() {
|
|
|
692
697
|
console.info(`PermDock: ${permission.key} needs the server (a closure, graph relation or period grant) and endpoint is false, so it is denied with reason server-only; check it on the server instead`);
|
|
693
698
|
};
|
|
694
699
|
}
|
|
700
|
+
/** Runs both hooks: the one the adapter needs first, then the provider option. */
|
|
701
|
+
function both(first, second) {
|
|
702
|
+
if (first === void 0 || second === void 0) return first ?? second;
|
|
703
|
+
return (...args) => {
|
|
704
|
+
first(...args);
|
|
705
|
+
second(...args);
|
|
706
|
+
};
|
|
707
|
+
}
|
|
695
708
|
function adapterStore(options, snapshot, native) {
|
|
696
709
|
return createClientStore(compact({
|
|
697
710
|
snapshot,
|
|
@@ -708,8 +721,9 @@ function adapterStore(options, snapshot, native) {
|
|
|
708
721
|
passCache: options.passCache,
|
|
709
722
|
server: native?.server,
|
|
710
723
|
stale: native?.stale,
|
|
711
|
-
onSnapshot: native?.onSnapshot,
|
|
712
|
-
onClear: native?.onClear
|
|
724
|
+
onSnapshot: both(native?.onSnapshot, options.onSnapshot),
|
|
725
|
+
onClear: both(native?.onClear, options.onClear),
|
|
726
|
+
approvalInterval: options.approvalInterval
|
|
713
727
|
}));
|
|
714
728
|
}
|
|
715
729
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as
|
|
2
|
-
import { n as providePermDock, t as getStore } from "./context-
|
|
1
|
+
import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, n as describeWith, o as permissionSet, r as filterResult, t as approvalHandle } from "./views-DTIIO-oQ.js";
|
|
2
|
+
import { n as getUi, r as providePermDock, t as getStore } from "./context-bbFHR-0D.js";
|
|
3
3
|
import { readable, toStore } from "svelte/store";
|
|
4
4
|
//#region src/svelte/stores.ts
|
|
5
5
|
function fromStore(store, compute) {
|
|
@@ -23,6 +23,10 @@ function setPermDock(options) {
|
|
|
23
23
|
function getPermDock() {
|
|
24
24
|
return sveltePermDock(getStore());
|
|
25
25
|
}
|
|
26
|
+
/** `describe` with the provider's `messages`; a call's own `messages` win. Call it during component init. */
|
|
27
|
+
function getDescribe() {
|
|
28
|
+
return describeWith(getUi().messages);
|
|
29
|
+
}
|
|
26
30
|
function permission(reference, data) {
|
|
27
31
|
return permissionFor(getStore(), reference, data);
|
|
28
32
|
}
|
|
@@ -84,4 +88,4 @@ function approvalFor(store, decision) {
|
|
|
84
88
|
return fromStore(store, () => approvalHandle(store, decision()));
|
|
85
89
|
}
|
|
86
90
|
//#endregion
|
|
87
|
-
export {
|
|
91
|
+
export { getDescribe as a, permission as c, setPermDock as d, subject as f, filtered as i, permissions as l, assignable as n, getPermDock as o, tenant as p, assignablePermissions as r, memberships as s, approval as t, roles as u };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Nn as Decision, nr as Membership } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { r as Role, w as Permission } from "./vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { r as DescribeOptions, t as DecisionDescription } from "./describe-BZUsixiL.js";
|
|
4
|
+
import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, l as PermissionState, p as TenantView, r as ClientPermDock, t as ApprovalHandle } from "./types-BNORmDM8.js";
|
|
5
|
+
import { n as SveltePermDockOptions } from "./types-fbZ7JEXr.js";
|
|
6
|
+
import { Readable } from "svelte/store";
|
|
7
|
+
//#region src/svelte/stores.d.ts
|
|
8
|
+
declare function setPermDock(options: SveltePermDockOptions): ClientPermDock;
|
|
9
|
+
declare function getPermDock(): ClientPermDock;
|
|
10
|
+
/** `describe` with the provider's `messages`; a call's own `messages` win. Call it during component init. */
|
|
11
|
+
declare function getDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
|
|
12
|
+
declare function permission(reference: Permission, data?: () => unknown): Readable<PermissionState>;
|
|
13
|
+
declare function permissions(references: () => readonly Permission[], data?: () => unknown): Readable<PermissionSet>;
|
|
14
|
+
declare function filtered<T>(reference: Permission<string, T, "instance">, rows: () => readonly T[]): Readable<FilterResult<T>>;
|
|
15
|
+
declare function tenant(): Readable<TenantView>;
|
|
16
|
+
declare function memberships(): Readable<readonly Membership[]>;
|
|
17
|
+
declare function roles(options?: () => RolesOptions): Readable<{
|
|
18
|
+
readonly roles: readonly Role[];
|
|
19
|
+
}>;
|
|
20
|
+
declare function assignable(): Readable<readonly Role[]>;
|
|
21
|
+
type AssignableOptions = {
|
|
22
|
+
readonly tenant?: string;
|
|
23
|
+
} | (() => {
|
|
24
|
+
readonly tenant?: string;
|
|
25
|
+
});
|
|
26
|
+
declare function assignablePermissions(options?: AssignableOptions): Readable<readonly Permission[]>;
|
|
27
|
+
declare function subject(): Readable<SubjectView>;
|
|
28
|
+
declare function approval(decision: () => Decision): Readable<ApprovalHandle>;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { getDescribe as a, permission as c, setPermDock as d, subject as f, filtered as i, permissions as l, assignable as n, getPermDock as o, tenant as p, assignablePermissions as r, memberships as s, approval as t, roles as u };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
|
|
2
|
+
import { o as ProtectOptions } from "./server-types-BLd4MnBX.js";
|
|
3
3
|
//#region src/server/stream.d.ts
|
|
4
4
|
type StreamProtectOptions = ProtectOptions & {
|
|
5
5
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as PermDockRevokedError } from "./errors-
|
|
1
|
+
import { r as PermDockRevokedError } from "./errors-BKy0EfhN.js";
|
|
2
2
|
//#region src/server/stream.ts
|
|
3
3
|
function isAsyncIterable(value) {
|
|
4
4
|
return value !== null && typeof value === "object" && typeof value[Symbol.asyncIterator] === "function";
|
|
@@ -22,6 +22,7 @@ async function* guardIterable(source, connection, options) {
|
|
|
22
22
|
const next = await Promise.race([iterator.next(), aborted]);
|
|
23
23
|
if (next.done === true) return next.value;
|
|
24
24
|
const row = options.unwrap === void 0 ? next.value : options.unwrap(next.value);
|
|
25
|
+
await Promise.race([connection.settled(), aborted]);
|
|
25
26
|
if (options.items === void 0 || connection.check(options.items, row).outcome === "granted") yield next.value;
|
|
26
27
|
}
|
|
27
28
|
} catch (error) {
|
|
@@ -49,6 +50,13 @@ function reloadAfter(loaded, load) {
|
|
|
49
50
|
}
|
|
50
51
|
/** WebSocket close code for a policy violation (RFC 6455 section 7.4.1). */
|
|
51
52
|
const POLICY_VIOLATION = 1008;
|
|
53
|
+
/**
|
|
54
|
+
* The close reason for a problem: its PermDock type URI, or its `detail`
|
|
55
|
+
* code for an `about:blank` one. RFC 6455 caps a reason at 123 bytes.
|
|
56
|
+
*/
|
|
57
|
+
function closeReason(problem) {
|
|
58
|
+
return problem.type === "about:blank" ? problem.detail : problem.type;
|
|
59
|
+
}
|
|
52
60
|
/** The Problem Details for an aborted connection signal. */
|
|
53
61
|
function revokedProblem(signal) {
|
|
54
62
|
const reason = signal.reason;
|
|
@@ -63,4 +71,4 @@ function onRevoked(connection, end) {
|
|
|
63
71
|
else connection.signal.addEventListener("abort", fire, { once: true });
|
|
64
72
|
}
|
|
65
73
|
//#endregion
|
|
66
|
-
export {
|
|
74
|
+
export { onRevoked as a, isAsyncIterable as i, closeReason as n, reloadAfter as o, guardIterable as r, POLICY_VIOLATION as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as createStyle, n as streamHasColors } from "./style-Uao76wO7.js";
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { styleText } from "node:util";
|
|
2
|
-
//#region src/cli/style.ts
|
|
2
|
+
//#region src/cli/core/style.ts
|
|
3
3
|
function createStyle(color) {
|
|
4
4
|
const paint = (format, text) => color ? styleText(format, text, { validateStream: false }) : text;
|
|
5
5
|
return {
|
|
6
6
|
color,
|
|
7
7
|
paint,
|
|
8
8
|
errorMark: color ? paint("red", "✖") : "error",
|
|
9
|
-
warnMark: color ? paint("yellow", "⚠") : "warn"
|
|
9
|
+
warnMark: color ? paint("yellow", "⚠") : "warn",
|
|
10
|
+
okMark: color ? paint("green", "✔") : "ok"
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/core/subject.ts
|
|
2
|
+
function isSubject(value) {
|
|
3
|
+
return value !== null && typeof value === "object" && "principal" in value && "context" in value && typeof value.context === "object";
|
|
4
|
+
}
|
|
5
|
+
function isActor(value) {
|
|
6
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
|
|
7
|
+
const record = value;
|
|
8
|
+
return typeof record.id === "string" && typeof record.kind === "string";
|
|
9
|
+
}
|
|
10
|
+
function anonymousSubject(context = {}) {
|
|
11
|
+
return Object.freeze({
|
|
12
|
+
principal: null,
|
|
13
|
+
context: Object.freeze({ ...context })
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { isActor as n, isSubject as r, anonymousSubject as t };
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
//#region src/conditions/peer.ts
|
|
3
|
+
/**
|
|
4
|
+
* Requires an optional peer through `node:module`. Feature-detected so the
|
|
5
|
+
* entry loads on runtimes without a Node module loader; there the caller
|
|
6
|
+
* injects the peer and `message` names the option that does it.
|
|
7
|
+
*/
|
|
8
|
+
function loadPeer(id, message) {
|
|
9
|
+
const loader = globalThis.process?.getBuiltinModule?.("node:module");
|
|
10
|
+
try {
|
|
11
|
+
if (loader === void 0) throw new Error("no module loader");
|
|
12
|
+
return loader.createRequire(import.meta.url)(id);
|
|
13
|
+
} catch {
|
|
14
|
+
throw new Error(message);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
1
18
|
//#region src/conditions/row-check.ts
|
|
2
19
|
const MISSING = Object.freeze({ found: false });
|
|
3
20
|
const GRANTED = Object.freeze({
|
|
@@ -24,9 +41,6 @@ function settingName(name, what) {
|
|
|
24
41
|
if (!NAME.test(name)) throw new Error(`PermDock: unsafe ${what} '${name}'`);
|
|
25
42
|
return name;
|
|
26
43
|
}
|
|
27
|
-
function isRecord(value) {
|
|
28
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29
|
-
}
|
|
30
44
|
function strings(value) {
|
|
31
45
|
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
32
46
|
}
|
|
@@ -120,9 +134,13 @@ function statementText(statement) {
|
|
|
120
134
|
for (const [index, part] of statement.strings.entries()) text = index === 0 ? part : `${text}$${String(index)}${part}`;
|
|
121
135
|
return text;
|
|
122
136
|
}
|
|
137
|
+
/** Strings as a template-strings array, for calling a `sql` tag directly. */
|
|
138
|
+
function templateOf(parts) {
|
|
139
|
+
return Object.assign([...parts], { raw: [...parts] });
|
|
140
|
+
}
|
|
123
141
|
/** A statement as a template-strings array, for `sql` tags. */
|
|
124
142
|
function statementTemplate(statement) {
|
|
125
|
-
return
|
|
143
|
+
return templateOf(statement.strings);
|
|
126
144
|
}
|
|
127
145
|
//#endregion
|
|
128
|
-
export {
|
|
146
|
+
export { rowCheckFrom as a, templateOf as i, statementText as n, rowCheckOf as o, subjectStatements as r, loadPeer as s, statementTemplate as t };
|
package/dist/supabase/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { a as
|
|
5
|
-
import { a as
|
|
1
|
+
import { Rt as Instant, ir as Subject } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { a as ApprovalDelegationSource, m as ApprovalStore, u as ApprovalRequest } from "../types-CCpc2Dcv.js";
|
|
3
|
+
import { a as SupabaseRpcClient, c as readSubjectRecord, i as SupabaseRpcCaller, n as PostgrestSourcesOptions, o as SupabaseRpcResult, r as SubjectRecord, s as postgrestSources, t as PostgrestSources } from "../postgrest-NUqZT-RB.js";
|
|
4
|
+
import { C as SupabaseClaimsSchema, E as supabaseClaims, S as SupabaseClaimsOptions, T as SupabasePermDockClaims, _ as SupabaseSuspendedMembership, a as SupabaseActorResult, b as SupabaseActClaim, c as SupabaseMembershipTable, d as SupabaseRealtime, f as SupabaseRlsConfig, g as SupabaseSubjectOptions, h as SupabaseStorage, i as SupabaseActor, l as SupabasePermissionRef, m as SupabaseSessionLike, n as RoleThrough, o as SupabaseDelegation, p as SupabaseRlsOptions, r as SupabaseActiveRow, s as SupabaseInclude, t as AuthorizeSqlOptions, u as SupabasePrincipal, v as SupabaseSuspendedScope, w as SupabaseMembershipClaim, x as SupabaseClaims, y as SupabaseSuspension } from "../types-CdlxsYQh.js";
|
|
5
|
+
import { a as SupabaseManifestHelper, c as SupabaseManifestRls, d as SupabaseManifestValue, f as parseSupabaseManifest, i as SupabaseManifestColumn, l as SupabaseManifestRole, n as SupabaseHookManifest, o as SupabaseManifestMembership, r as SupabaseManifestActiveRow, s as SupabaseManifestRequires, t as SupabaseHookClaim, u as SupabaseManifestThrough } from "../manifest-mx5ghSFM.js";
|
|
6
|
+
import { a as MembershipTableOptions, c as SupabasePostgres, d as supabasePostgresQuery, f as tableMembershipSource, i as MembershipSql, l as authzVersion, n as MembershipHolders, o as SqlMembershipSource, r as MembershipJunctionOptions, s as SqlQuery, t as AUTHZ_VERSION_TABLE, u as junctionMembershipSource } from "../sources-BV9j0DeZ.js";
|
|
6
7
|
import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-JqcRqyhK.js";
|
|
7
8
|
//#region src/supabase/capability.d.ts
|
|
8
9
|
type ExchangeCapabilityOptions = {
|
|
@@ -20,7 +21,7 @@ type ExchangeCapabilityOptions = {
|
|
|
20
21
|
readonly issuer?: string;
|
|
21
22
|
/** Lifetime in seconds, capped by the capability's own expiry. Default 300. */
|
|
22
23
|
readonly ttl?: number;
|
|
23
|
-
readonly now?:
|
|
24
|
+
readonly now?: Instant;
|
|
24
25
|
};
|
|
25
26
|
/**
|
|
26
27
|
* Exchanges a verified link subject (from `subjectFromCapability`) for a
|
|
@@ -30,109 +31,11 @@ type ExchangeCapabilityOptions = {
|
|
|
30
31
|
*/
|
|
31
32
|
export declare function exchangeCapability(subject: Subject, options: ExchangeCapabilityOptions): Promise<string | undefined>;
|
|
32
33
|
//#endregion
|
|
33
|
-
//#region src/supabase/postgrest.d.ts
|
|
34
|
-
/** What a supabase-js `rpc` call resolves to: `data` or an `error` with a message. */
|
|
35
|
-
type SupabaseRpcResult = {
|
|
36
|
-
readonly data: unknown;
|
|
37
|
-
readonly error: {
|
|
38
|
-
readonly message: string;
|
|
39
|
-
} | null;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* The part of a supabase-js client `postgrestSources` calls:
|
|
43
|
-
* `client.schema(name).rpc(fn, args)`. Pass a client that may execute the
|
|
44
|
-
* function, such as a `service_role` client after the grant the docs show.
|
|
45
|
-
*/
|
|
46
|
-
type SupabaseRpcClient = {
|
|
47
|
-
schema(name: string): {
|
|
48
|
-
rpc(fn: string, args: Readonly<Record<string, unknown>>): PromiseLike<SupabaseRpcResult>;
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
type SupabaseRpcCaller = {
|
|
52
|
-
schema(name: never): {
|
|
53
|
-
rpc(fn: never, args: never): PromiseLike<SupabaseRpcResult>;
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
type PostgrestSourcesOptions = {
|
|
57
|
-
/**
|
|
58
|
-
* The `supabase.hook.api` setting the hook file was generated with: the
|
|
59
|
-
* wrappers live in `schema` (default `public`) as `<prefix>subject_for`,
|
|
60
|
-
* `<prefix>members_of` and `<prefix>authz_version_for` (default prefix
|
|
61
|
-
* `permdock_`). It sets the defaults of `schema`, `fn`, `membersFn` and
|
|
62
|
-
* `versionFn`, which still override it.
|
|
63
|
-
*/
|
|
64
|
-
readonly api?: {
|
|
65
|
-
readonly schema?: string;
|
|
66
|
-
readonly prefix?: string;
|
|
67
|
-
};
|
|
68
|
-
/** Schema of the functions. Default `permdock`, where the hook generates `subject_for` and `members_of`. */
|
|
69
|
-
readonly schema?: string;
|
|
70
|
-
/** Function name, for a wrapper in an exposed schema. Default `subject_for`. */
|
|
71
|
-
readonly fn?: string;
|
|
72
|
-
readonly membersFn?: string;
|
|
73
|
-
/** The version-only function `memberships.version` calls. Default `authz_version_for`. */
|
|
74
|
-
readonly versionFn?: string;
|
|
75
|
-
/**
|
|
76
|
-
* The policy whose declared roles tell custom roles apart. With it,
|
|
77
|
-
* `customRoles` reads nothing while every role the subject holds is
|
|
78
|
-
* declared, and `memberships.version` reads the whole subject in one call
|
|
79
|
-
* when the token claims a custom role, which the custom roles need anyway.
|
|
80
|
-
*/
|
|
81
|
-
readonly policy?: Policy;
|
|
82
|
-
};
|
|
83
|
-
/** One user as `subject_for(p_user)` returns it. */
|
|
84
|
-
type SubjectRecord = {
|
|
85
|
-
readonly id: string;
|
|
86
|
-
/** `false` for a suspended user, who holds no roles or memberships. */
|
|
87
|
-
readonly active: boolean;
|
|
88
|
-
readonly roles: readonly string[];
|
|
89
|
-
readonly memberships: readonly Membership[];
|
|
90
|
-
readonly customRoles: readonly CustomRole[];
|
|
91
|
-
readonly authzVersion?: number;
|
|
92
|
-
};
|
|
93
|
-
type PostgrestSources = {
|
|
94
|
-
/**
|
|
95
|
-
* Memberships and the authorization version of any principal, and `list`,
|
|
96
|
-
* the live members of one scope instance through `members_of`, for
|
|
97
|
-
* `countHolders` and `whoCan`. Wrap it in `claimsFirst` to read only when
|
|
98
|
-
* the token was truncated.
|
|
99
|
-
*/
|
|
100
|
-
readonly memberships: MembershipSource & {
|
|
101
|
-
list(query: {
|
|
102
|
-
readonly scope: string;
|
|
103
|
-
readonly id: string;
|
|
104
|
-
}): Promise<MemberEntry[]>;
|
|
105
|
-
};
|
|
106
|
-
/** The custom roles `principal` holds, for `createPermDock`'s `customRoles`. */
|
|
107
|
-
customRoles(principal: {
|
|
108
|
-
readonly id: string;
|
|
109
|
-
}): RoleSource;
|
|
110
|
-
/** The subject the hook would mint for `userId`: anonymous when the user is unknown or suspended. */
|
|
111
|
-
subject(userId: string): Promise<Subject>;
|
|
112
|
-
/** The raw record, `undefined` for an unknown user. */
|
|
113
|
-
record(userId: string): Promise<SubjectRecord | undefined>;
|
|
114
|
-
};
|
|
115
|
-
/** Reads `subject_for`'s JSON; anything it cannot read is left out, and a malformed record is no record. */
|
|
116
|
-
export declare function readSubjectRecord(value: unknown): SubjectRecord | undefined;
|
|
117
|
-
/**
|
|
118
|
-
* Membership, custom-role and subject sources over the `subject_for(p_user)`,
|
|
119
|
-
* `authz_version_for(p_user)` and `members_of(p_scope, p_id)` functions
|
|
120
|
-
* `permdock supabase hook generate` writes, for a backend that reaches
|
|
121
|
-
* Postgres only through PostgREST. `memberships.version` reads only the
|
|
122
|
-
* version, so `claimsFirst` with `onStale: 'reread'` reads the full subject
|
|
123
|
-
* only for a stale token; when the version function is missing it falls back
|
|
124
|
-
* to `subject_for`. With `policy`, a token that claims a custom role has its
|
|
125
|
-
* subject read in one `subject_for` call instead, and custom roles are read
|
|
126
|
-
* only for a subject that holds one. Each user and each instance is read once per
|
|
127
|
-
* `postgrestSources` call, so create it per request or per job.
|
|
128
|
-
*/
|
|
129
|
-
export declare function postgrestSources(client: SupabaseRpcCaller, options?: PostgrestSourcesOptions): PostgrestSources;
|
|
130
|
-
//#endregion
|
|
131
34
|
//#region src/supabase/approval-store.d.ts
|
|
132
35
|
type SupabaseApprovalStoreOptions = {
|
|
133
36
|
/** Schema of the generated store functions (`rls.schema`). Default `permdock`. */
|
|
134
37
|
readonly schema?: string;
|
|
135
|
-
/**
|
|
38
|
+
/** Seconds a request stays open when the caller sets no `ttl`. */
|
|
136
39
|
readonly ttl?: number;
|
|
137
40
|
/**
|
|
138
41
|
* Runs once per stored request, after the call that stored it, with the
|
|
@@ -152,6 +55,20 @@ type SupabaseApprovalStoreOptions = {
|
|
|
152
55
|
*/
|
|
153
56
|
export declare function supabaseApprovalStore(client: SupabaseRpcCaller, options?: SupabaseApprovalStoreOptions): ApprovalStore;
|
|
154
57
|
//#endregion
|
|
58
|
+
//#region src/supabase/approval-delegations.d.ts
|
|
59
|
+
type TableApprovalDelegationSourceOptions = {
|
|
60
|
+
readonly query: SqlQuery;
|
|
61
|
+
/** Defaults to `permdock.approval_delegations`, the table `rls.approvals.delegations` generates. */
|
|
62
|
+
readonly table?: string;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Approval delegations (out-of-office covers) from the table
|
|
66
|
+
* `rls.approvals.delegations` generates, so `approvalsHandler` and
|
|
67
|
+
* `permdock_is_approver` read the same rows. A cover without a tenant
|
|
68
|
+
* applies everywhere; a malformed row is skipped.
|
|
69
|
+
*/
|
|
70
|
+
export declare function tableApprovalDelegationSource(options: TableApprovalDelegationSourceOptions): ApprovalDelegationSource;
|
|
71
|
+
//#endregion
|
|
155
72
|
//#region src/supabase/rls.d.ts
|
|
156
73
|
export declare function supabaseRls(options?: SupabaseRlsOptions): SupabaseRlsConfig;
|
|
157
74
|
/**
|
|
@@ -191,4 +108,4 @@ export declare function subjectFromSupabase(claims: unknown, options?: SupabaseS
|
|
|
191
108
|
*/
|
|
192
109
|
export declare function subjectFromSupabaseSession(session: SupabaseSessionLike | null | undefined, options?: SupabaseSubjectOptions): Subject<SupabasePrincipal>;
|
|
193
110
|
//#endregion
|
|
194
|
-
export { AUTHZ_VERSION_TABLE, type AuthorizeSqlOptions, type ExchangeCapabilityOptions, type MembershipHolders, type MembershipJunctionOptions, type MembershipSql, type MembershipTableOptions, type PostgrestSources, type PostgrestSourcesOptions, type RoleThrough, type SqlMembershipSource, type SqlQuery, type SubjectRecord, type SupabaseActClaim, type SupabaseActiveRow, type SupabaseActor, type SupabaseActorResult, type SupabaseApprovalStoreOptions, type SupabaseClaims, type SupabaseClaimsOptions, type SupabaseClaimsSchema, type SupabaseDelegation, type SupabaseHookClaim, type SupabaseHookManifest, type SupabaseInclude, type SupabaseManifestActiveRow, type SupabaseManifestColumn, type SupabaseManifestHelper, type SupabaseManifestMembership, type SupabaseManifestRequires, type SupabaseManifestRls, type SupabaseManifestRole, type SupabaseManifestThrough, type SupabaseManifestValue, type SupabaseMembershipClaim, type SupabaseMembershipTable, type SupabasePermDockClaims, type SupabasePermissionRef, type SupabasePostgres, type SupabasePrincipal, type SupabaseRealtime, type SupabaseRlsConfig, type SupabaseRlsOptions, type SupabaseRpcCaller, type SupabaseRpcClient, type SupabaseRpcResult, type SupabaseSessionLike, type SupabaseStorage, type SupabaseSubjectOptions, type SupabaseSuspendedMembership, type SupabaseSuspendedScope, type SupabaseSuspension, authzVersion,
|
|
111
|
+
export { AUTHZ_VERSION_TABLE, type AuthorizeSqlOptions, type ExchangeCapabilityOptions, type MembershipHolders, type MembershipJunctionOptions, type MembershipSql, type MembershipTableOptions, type PostgrestSources, type PostgrestSourcesOptions, type RoleThrough, type SqlMembershipSource, type SqlQuery, type SubjectRecord, type SupabaseActClaim, type SupabaseActiveRow, type SupabaseActor, type SupabaseActorResult, type SupabaseApprovalStoreOptions, type SupabaseClaims, type SupabaseClaimsOptions, type SupabaseClaimsSchema, type SupabaseDelegation, type SupabaseHookClaim, type SupabaseHookManifest, type SupabaseInclude, type SupabaseManifestActiveRow, type SupabaseManifestColumn, type SupabaseManifestHelper, type SupabaseManifestMembership, type SupabaseManifestRequires, type SupabaseManifestRls, type SupabaseManifestRole, type SupabaseManifestThrough, type SupabaseManifestValue, type SupabaseMembershipClaim, type SupabaseMembershipTable, type SupabasePermDockClaims, type SupabasePermissionRef, type SupabasePostgres, type SupabasePrincipal, type SupabaseRealtime, type SupabaseRlsConfig, type SupabaseRlsOptions, type SupabaseRpcCaller, type SupabaseRpcClient, type SupabaseRpcResult, type SupabaseSessionLike, type SupabaseStorage, type SupabaseSubjectOptions, type SupabaseSuspendedMembership, type SupabaseSuspendedScope, type SupabaseSuspension, type TableApprovalDelegationSourceOptions, authzVersion, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseTenantClaim, tableMembershipSource };
|
package/dist/supabase/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as supabaseClaims, i as supabaseApprovalStore, n as supabaseRls, o as exchangeCapability, r as tableApprovalDelegationSource, t as authorizeSql } from "../supabase-Dxlp8A94.js";
|
|
2
2
|
import { n as supabaseTenantClaim, t as supabaseMembershipsBudget } from "../budget-NbEtbJC_.js";
|
|
3
|
-
import {
|
|
4
|
-
import { a as
|
|
5
|
-
|
|
3
|
+
import { c as tableMembershipSource, i as authzVersion, o as junctionMembershipSource, s as supabasePostgresQuery, t as AUTHZ_VERSION_TABLE } from "../sources-vs5dGOsS.js";
|
|
4
|
+
import { a as delegationOf, c as subjectFromSupabaseSession, i as actorOf, n as postgrestSources, r as readSubjectRecord, s as subjectFromSupabase } from "../postgrest-CW0IqC-U.js";
|
|
5
|
+
import { t as parseSupabaseManifest } from "../manifest-C8IzW3Do.js";
|
|
6
|
+
export { AUTHZ_VERSION_TABLE, actorOf, authorizeSql, authzVersion, delegationOf, exchangeCapability, junctionMembershipSource, parseSupabaseManifest, postgrestSources, readSubjectRecord, subjectFromSupabase, subjectFromSupabaseSession, supabaseApprovalStore, supabaseClaims, supabaseMembershipsBudget, supabasePostgresQuery, supabaseRls, supabaseTenantClaim, tableApprovalDelegationSource, tableMembershipSource };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { T as Policy, ir as Subject, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { r as PermDock } from "../permdock-D7eeLJER.js";
|
|
4
|
+
import { t as InstanceOptions } from "../instance-options-Omfd793B.js";
|
|
5
|
+
import { t as RequestContext } from "../request-context-C2_1lchh.js";
|
|
6
|
+
import { i as OpenApiHooks } from "../server-types-BLd4MnBX.js";
|
|
7
|
+
import { n as ServerAdapterServices } from "../bind--9EFVYWF.js";
|
|
6
8
|
import { Middleware } from "@supabase/middleware";
|
|
7
9
|
//#region src/supabase/middleware.d.ts
|
|
8
10
|
/**
|
|
@@ -52,6 +54,11 @@ export type SupabaseMiddlewarePermDockOptions<TUser = unknown> = InstanceOptions
|
|
|
52
54
|
readonly secretKeys?: Readonly<Record<string, SupabaseSecretKey>>;
|
|
53
55
|
readonly subject: (ctx: SupabaseMiddlewareContext, request: Request) => TUser | Subject | null | Promise<TUser | Subject | null>;
|
|
54
56
|
readonly tenant?: string | ((ctx: SupabaseMiddlewareContext, request: Request) => string | undefined | Promise<string | undefined>);
|
|
57
|
+
/**
|
|
58
|
+
* Request values merged into `subject.context`, under `policy.context`.
|
|
59
|
+
* Only values the server derived belong here, never client input.
|
|
60
|
+
*/
|
|
61
|
+
readonly context?: (ctx: SupabaseMiddlewareContext, request: Request) => RequestContext | undefined | Promise<RequestContext | undefined>;
|
|
55
62
|
};
|
|
56
63
|
export type WithPermDockConfig = {
|
|
57
64
|
/** Run `protect` before the handler; a denial short-circuits with Problem Details. */
|
|
@@ -78,5 +85,5 @@ export type SupabaseMiddlewarePermDock<V extends PolicyVocabulary = PolicyVocabu
|
|
|
78
85
|
readonly permdockHandler: () => SupabaseMiddlewareHandler;
|
|
79
86
|
readonly openapi: OpenApiHooks;
|
|
80
87
|
};
|
|
81
|
-
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>,
|
|
88
|
+
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: SupabaseMiddlewarePermDockOptions<TUser>): SupabaseMiddlewarePermDock<V>;
|
|
82
89
|
//#endregion
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { t as compact } from "../compact-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
+
import { c as withApp } from "../permdock-B9JxkBwC.js";
|
|
3
|
+
import { t as composeWraps } from "../wrap-gX61EtpB.js";
|
|
4
|
+
import { r as credentialSubject } from "../credential-DM2um3ha.js";
|
|
5
|
+
import { a as methodNotAllowed } from "../problem-CTviyH5L.js";
|
|
6
|
+
import { r as instanceOptions } from "../build-instance-BMnAudHn.js";
|
|
7
|
+
import { t as createPermDock$1 } from "../create-DnrmLnLW.js";
|
|
8
|
+
import { n as attached } from "../bind-CZzhx-Vj.js";
|
|
7
9
|
import { defineMiddleware } from "@supabase/middleware";
|
|
8
10
|
//#region src/supabase/middleware.ts
|
|
9
11
|
const SECRET_KEY_NAME = /^[A-Za-z0-9_-]+$/u;
|
|
@@ -21,7 +23,7 @@ function secretKeySubjects(keys, permissions) {
|
|
|
21
23
|
roles: [...key.roles],
|
|
22
24
|
permissions: key.permissions.map((permission) => ({ permission: permission.key })),
|
|
23
25
|
createdBy: key.id,
|
|
24
|
-
createdAt:
|
|
26
|
+
createdAt: "1970-01-01T00:00:00.000Z",
|
|
25
27
|
name
|
|
26
28
|
};
|
|
27
29
|
subjects.set(name, credentialSubject(credential, { permissions }));
|
|
@@ -42,23 +44,26 @@ function secretKeySubject(subjects, ctx) {
|
|
|
42
44
|
const name = readString(ctx, "authKeyName");
|
|
43
45
|
return name === void 0 ? void 0 : subjects.get(name);
|
|
44
46
|
}
|
|
45
|
-
function createPermDock(policy,
|
|
47
|
+
function createPermDock(policy, given) {
|
|
48
|
+
const options = withApp(policy, given);
|
|
46
49
|
const contexts = /* @__PURE__ */ new WeakMap();
|
|
47
50
|
const tenantOption = options.tenant;
|
|
48
51
|
const contextFor = (request) => contexts.get(request) ?? { jwtClaims: null };
|
|
49
52
|
const secretKeys = secretKeySubjects(options.secretKeys, policy.permissions);
|
|
50
|
-
const kernel =
|
|
53
|
+
const kernel = createPermDock$1(policy, compact({
|
|
51
54
|
subject: (request) => {
|
|
52
55
|
const ctx = contextFor(request);
|
|
53
56
|
return secretKeySubject(secretKeys, ctx) ?? options.subject(ctx, request);
|
|
54
57
|
},
|
|
55
58
|
tenant: typeof tenantOption === "function" ? (request) => tenantOption(contextFor(request), request) : tenantOption,
|
|
59
|
+
context: options.context === void 0 ? void 0 : (request) => options.context?.(contextFor(request), request),
|
|
56
60
|
...instanceOptions(options),
|
|
57
61
|
store: options.store,
|
|
58
62
|
pdp: options.pdp,
|
|
59
63
|
webBotAuth: options.webBotAuth,
|
|
60
64
|
adapter: "supabase-middleware",
|
|
61
|
-
wrap: options.otel
|
|
65
|
+
wrap: composeWraps(options.otel, options.wrap),
|
|
66
|
+
deniedResponse: options.deniedResponse
|
|
62
67
|
}));
|
|
63
68
|
const bind = (request, ctx) => {
|
|
64
69
|
contexts.set(request, ctx);
|
|
@@ -69,7 +74,7 @@ function createPermDock(policy, options) {
|
|
|
69
74
|
run: (config) => async (request, ctx) => {
|
|
70
75
|
bind(request, ctx);
|
|
71
76
|
if (config?.protect === void 0 && config?.oauthScopes === void 0) {
|
|
72
|
-
const instance = await attached(() => kernel.
|
|
77
|
+
const instance = await attached(() => kernel.getPermDock(request));
|
|
73
78
|
return instance.ok ? { permdock: instance.permdock } : instance.response;
|
|
74
79
|
}
|
|
75
80
|
const loadData = config.data;
|