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,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region src/cli/supautils.ts
|
|
1
|
+
import { i as group, o as sqlStatements } from "./deciding-columns-Sq12mEA6.js";
|
|
2
|
+
//#region src/cli/sql/supautils.ts
|
|
3
3
|
/** `supautils.reserved_roles` of supabase/postgres 17.11.0.002 (supautils 3.4.4). */
|
|
4
4
|
const RESERVED_ROLES = /* @__PURE__ */ new Set([
|
|
5
5
|
"supabase_admin",
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
|
+
import { a as ownRecord } from "./paths-DXSHAMIa.js";
|
|
4
|
+
import { a as isId, r as idList } from "./expiry-D4_YKRKD.js";
|
|
5
|
+
import { n as internalsOf } from "./internals-Dk8A8fX3.js";
|
|
6
|
+
import { c as listPermissions, m as annotationsFor, n as findPermission } from "./permission-registry-Br4jSNVi.js";
|
|
7
|
+
import { g as secondsOf, l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
|
|
8
|
+
import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
|
|
9
|
+
import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
|
|
10
|
+
//#region src/core/support-session.ts
|
|
11
|
+
const DEFAULT_TTL = 3600;
|
|
12
|
+
const MAX_TTL = 86400;
|
|
13
|
+
const MAX_REASON = 1e3;
|
|
14
|
+
function isReason(value) {
|
|
15
|
+
return typeof value === "string" && value.trim().length > 0 && value.length <= MAX_REASON;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Validates an untrusted support-session record and returns a frozen copy
|
|
19
|
+
* with only the v1 fields, or `undefined`.
|
|
20
|
+
*/
|
|
21
|
+
function parseSupportSession(input) {
|
|
22
|
+
const value = ownRecord(input);
|
|
23
|
+
if (value === void 0 || value["v"] !== 1 || !isId(value["id"]) || !isId(value["principal"]) || !isId(value["actor"]) || value["principal"] === value["actor"] || !isId(value["tenant"]) || !isReason(value["reason"]) || !isRfc3339(value["startedAt"]) || !isRfc3339(value["expiresAt"])) return;
|
|
24
|
+
const permissions = idList(value["permissions"]);
|
|
25
|
+
const { approvedBy, reference } = value;
|
|
26
|
+
if (permissions === void 0 || (secondsOf(value["expiresAt"]) ?? 0) <= (secondsOf(value["startedAt"]) ?? 0) || approvedBy !== void 0 && (!isId(approvedBy) || approvedBy === value["actor"]) || reference !== void 0 && !isId(reference)) return;
|
|
27
|
+
return freezeDeep(compact({
|
|
28
|
+
v: 1,
|
|
29
|
+
id: value["id"],
|
|
30
|
+
principal: value["principal"],
|
|
31
|
+
actor: value["actor"],
|
|
32
|
+
tenant: value["tenant"],
|
|
33
|
+
reason: value["reason"],
|
|
34
|
+
permissions,
|
|
35
|
+
startedAt: value["startedAt"],
|
|
36
|
+
expiresAt: value["expiresAt"],
|
|
37
|
+
approvedBy,
|
|
38
|
+
reference
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
function denied(reason, detail) {
|
|
42
|
+
return freezeDeep({
|
|
43
|
+
outcome: "denied",
|
|
44
|
+
denials: [compact({
|
|
45
|
+
role: null,
|
|
46
|
+
reason,
|
|
47
|
+
detail
|
|
48
|
+
})]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function sessionToken(request, actor, tenant, permissions, ttl) {
|
|
52
|
+
return sha256Digest(canonicalJson({
|
|
53
|
+
t: "support-session",
|
|
54
|
+
id: request.id,
|
|
55
|
+
principal: request.principal,
|
|
56
|
+
actor,
|
|
57
|
+
tenant,
|
|
58
|
+
reason: request.reason,
|
|
59
|
+
permissions,
|
|
60
|
+
ttl,
|
|
61
|
+
reference: request.reference ?? null
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Decides whether the subject of `permdock` may start the support session
|
|
66
|
+
* in `request`. The actor must be a signed-in person acting for themselves
|
|
67
|
+
* (`exceeds-creator` otherwise), give a `reason` (`reason-required`), be a
|
|
68
|
+
* member of the tenant (`tenant-mismatch`) and be able to use every
|
|
69
|
+
* permission (`exceeds-creator`). Without `permissions` the session gets the
|
|
70
|
+
* actor's read-only permissions. The tenant's `supportSessions` policy then
|
|
71
|
+
* applies, and the result is `approval-required` until `approved` carries
|
|
72
|
+
* its token and `approvedBy` names someone other than the actor.
|
|
73
|
+
*/
|
|
74
|
+
/**
|
|
75
|
+
* Decides whether the subject of `permdock` may start the support session
|
|
76
|
+
* in `request` and returns the record to sign: a stated reason, membership
|
|
77
|
+
* of the tenant, the actor's own reach, the tenant's `supportSessions`
|
|
78
|
+
* policy and approval by someone else. An instance built from a snapshot
|
|
79
|
+
* denies with `unsupported`.
|
|
80
|
+
*/
|
|
81
|
+
function decideSupportSession(permdock, request, options = {}) {
|
|
82
|
+
const internals = internalsOf(permdock);
|
|
83
|
+
if (internals === void 0) return Promise.resolve(freezeDeep({
|
|
84
|
+
outcome: "denied",
|
|
85
|
+
denials: [{
|
|
86
|
+
role: null,
|
|
87
|
+
reason: "unsupported"
|
|
88
|
+
}]
|
|
89
|
+
}));
|
|
90
|
+
const settings = options.settings ?? internals.env.settings;
|
|
91
|
+
return decideSupportSessionWith(internals.instance, request, settings === void 0 ? options : {
|
|
92
|
+
...options,
|
|
93
|
+
settings
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async function decideSupportSessionWith(permdock, request, options) {
|
|
97
|
+
const actor = permdock.subject.principal;
|
|
98
|
+
if (actor === null) return denied("anonymous");
|
|
99
|
+
if (actor.kind !== void 0 && actor.kind !== "user") return denied("exceeds-creator", { creator: actor.kind });
|
|
100
|
+
if ("credential" in actor || "runTicket" in actor) return denied("exceeds-creator", { creator: "credential" in actor ? "credential" : "run" });
|
|
101
|
+
if (permdock.subject.actor !== void 0) return denied("exceeds-creator", { creator: "actor" });
|
|
102
|
+
if (!isReason(request.reason)) return denied("reason-required");
|
|
103
|
+
const ttl = request.expiresIn ?? DEFAULT_TTL;
|
|
104
|
+
if (!isId(request.id) || !isId(request.principal) || request.principal === actor.id || !Number.isSafeInteger(ttl) || ttl <= 0 || ttl > MAX_TTL || request.reference !== void 0 && !isId(request.reference)) return denied("validation");
|
|
105
|
+
const tenant = request.tenant ?? actor.tenant;
|
|
106
|
+
if (tenant === void 0) return denied("validation");
|
|
107
|
+
if (!permdock.tenants().includes(tenant)) return denied("tenant-mismatch", { tenant });
|
|
108
|
+
let policy;
|
|
109
|
+
if (options.settings !== void 0) try {
|
|
110
|
+
policy = (await options.settings.settingsFor(tenant))?.supportSessions;
|
|
111
|
+
} catch {
|
|
112
|
+
return denied("unsupported", { rule: "unavailable" });
|
|
113
|
+
}
|
|
114
|
+
if (policy?.disabled === true) return denied("unsupported", { rule: "disabled" });
|
|
115
|
+
if (policy?.maxTtl !== void 0 && ttl > policy.maxTtl) return denied("validation", { rule: "ttl" });
|
|
116
|
+
const leaves = request.permissions === void 0 ? listPermissions(permdock.permissions).filter((leaf) => annotationsFor(leaf).readOnlyHint && permdock.mayUse(leaf)) : request.permissions.map((permission) => findPermission(permdock.permissions, permission.key));
|
|
117
|
+
const keys = [];
|
|
118
|
+
for (const leaf of leaves) {
|
|
119
|
+
if (leaf === void 0) return denied("validation");
|
|
120
|
+
if (!permdock.mayUse(leaf)) return denied("exceeds-creator", { permission: leaf.key });
|
|
121
|
+
if (policy?.readOnly === true && !annotationsFor(leaf).readOnlyHint) return denied("not-delegated", {
|
|
122
|
+
permission: leaf.key,
|
|
123
|
+
rule: "read-only"
|
|
124
|
+
});
|
|
125
|
+
if (!keys.includes(leaf.key)) keys.push(leaf.key);
|
|
126
|
+
}
|
|
127
|
+
if (keys.length === 0) return denied("no-grant");
|
|
128
|
+
const token = sessionToken(request, actor.id, tenant, keys, ttl);
|
|
129
|
+
const approval = options.approval !== false;
|
|
130
|
+
const approved = approval && options.approved === token;
|
|
131
|
+
if (approved && (options.approvedBy === void 0 || options.approvedBy === actor.id)) return denied("approval", "approver-not-distinct");
|
|
132
|
+
const startedAt = nowSeconds(options.now);
|
|
133
|
+
const session = parseSupportSession(compact({
|
|
134
|
+
v: 1,
|
|
135
|
+
id: request.id,
|
|
136
|
+
principal: request.principal,
|
|
137
|
+
actor: actor.id,
|
|
138
|
+
tenant,
|
|
139
|
+
reason: request.reason,
|
|
140
|
+
permissions: keys,
|
|
141
|
+
startedAt: rfc3339(startedAt),
|
|
142
|
+
expiresAt: rfc3339(startedAt + ttl),
|
|
143
|
+
approvedBy: approved ? options.approvedBy : void 0,
|
|
144
|
+
reference: request.reference
|
|
145
|
+
}));
|
|
146
|
+
if (session === void 0) return denied("validation");
|
|
147
|
+
if (approval && !approved) return freezeDeep({
|
|
148
|
+
outcome: "approval-required",
|
|
149
|
+
session,
|
|
150
|
+
token
|
|
151
|
+
});
|
|
152
|
+
return freezeDeep({
|
|
153
|
+
outcome: "granted",
|
|
154
|
+
session
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
//#endregion
|
|
158
|
+
export { parseSupportSession as n, decideSupportSession as t };
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
getStore,
|
|
6
|
+
getUi,
|
|
6
7
|
scopedFor,
|
|
8
|
+
slotContent,
|
|
7
9
|
viewFor,
|
|
8
10
|
type ProtectedProps,
|
|
9
11
|
} from './runtime.js';
|
|
@@ -14,10 +16,12 @@
|
|
|
14
16
|
tenant,
|
|
15
17
|
children,
|
|
16
18
|
pending,
|
|
17
|
-
|
|
19
|
+
denied,
|
|
20
|
+
approval,
|
|
18
21
|
}: ProtectedProps = $props();
|
|
19
22
|
|
|
20
23
|
const store = getStore();
|
|
24
|
+
const { defaults } = getUi();
|
|
21
25
|
let tick = $state(0);
|
|
22
26
|
onDestroy(
|
|
23
27
|
store.subscribe(() => {
|
|
@@ -29,12 +33,15 @@
|
|
|
29
33
|
const generation = tick;
|
|
30
34
|
return viewFor(store, permission, data, scoped, generation);
|
|
31
35
|
});
|
|
36
|
+
const own = $derived({ pending, denied, approval });
|
|
32
37
|
</script>
|
|
33
38
|
|
|
34
39
|
{#if view.slot === 'pending'}
|
|
35
|
-
{@render pending?.()}
|
|
36
|
-
{:else if view.slot === '
|
|
37
|
-
{@render
|
|
40
|
+
{@render slotContent('pending', own, defaults)?.()}
|
|
41
|
+
{:else if view.slot === 'approval'}
|
|
42
|
+
{@render slotContent('approval', own, defaults)?.(view.decision)}
|
|
43
|
+
{:else if view.slot === 'denied'}
|
|
44
|
+
{@render slotContent('denied', own, defaults)?.(view.decision)}
|
|
38
45
|
{:else}
|
|
39
46
|
{@render children?.(view.decision)}
|
|
40
47
|
{/if}
|
package/dist/svelte/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { n as requiredPlans } from "../problem-details-
|
|
2
|
-
import { i as describe } from "../describe-
|
|
1
|
+
import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
|
|
2
|
+
import { i as describe } from "../describe-BZUsixiL.js";
|
|
3
3
|
import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
4
|
-
import { t as approvalHeaders } from "../headers-
|
|
5
|
-
import { a as FilterResult, c as SubjectView, i as ClientStatus, l as
|
|
6
|
-
import {
|
|
7
|
-
import { a as
|
|
4
|
+
import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
|
|
5
|
+
import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, p as TenantView, r as ClientPermDock, t as ApprovalHandle } from "../types-BNORmDM8.js";
|
|
6
|
+
import { n as SveltePermDockOptions, o as PermissionBoundaryProps, r as ProtectedProps, t as PermDockDefaults } from "../types-fbZ7JEXr.js";
|
|
7
|
+
import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-ClZUgeoP.js";
|
|
8
8
|
import { Component } from "svelte";
|
|
9
9
|
//#region src/svelte/index.d.ts
|
|
10
10
|
export declare const Protected: Component<ProtectedProps>;
|
|
11
11
|
export declare const PermissionBoundary: Component<PermissionBoundaryProps>;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type
|
|
13
|
+
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type RolesOptions, type SubjectView, type SveltePermDockOptions, type TenantView, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getDescribe, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
package/dist/svelte/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { r as requiredPlans } from "../problem-details-
|
|
2
|
-
import { t as describe } from "../describe-
|
|
3
|
-
import { t as approvalHeaders } from "../headers-BZSDieNT.js";
|
|
1
|
+
import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
|
|
2
|
+
import { t as describe } from "../describe-BybMRY7A.js";
|
|
4
3
|
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
|
|
5
|
+
import { u as slotContent } from "../views-DTIIO-oQ.js";
|
|
6
|
+
import { n as getUi, t as getStore } from "../context-bbFHR-0D.js";
|
|
7
|
+
import { n as viewFor, t as scopedFor } from "../runtime-D3VTAiCA.js";
|
|
8
|
+
import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-BbsD4fAR.js";
|
|
8
9
|
import "svelte/internal/disclose-version";
|
|
9
10
|
import * as $ from "svelte/internal/client";
|
|
10
11
|
import { onDestroy } from "svelte";
|
|
@@ -62,6 +63,7 @@ function PermissionBoundary$1($$anchor, $$props) {
|
|
|
62
63
|
function Protected$1($$anchor, $$props) {
|
|
63
64
|
$.push($$props, true);
|
|
64
65
|
const store = getStore();
|
|
66
|
+
const { defaults } = getUi();
|
|
65
67
|
let tick = $.state(0);
|
|
66
68
|
onDestroy(store.subscribe(() => {
|
|
67
69
|
$.set(tick, $.get(tick) + 1);
|
|
@@ -71,29 +73,41 @@ function Protected$1($$anchor, $$props) {
|
|
|
71
73
|
const generation = $.get(tick);
|
|
72
74
|
return viewFor(store, $$props.permission, $$props.data, $.get(scoped), generation);
|
|
73
75
|
});
|
|
76
|
+
const own = $.derived(() => ({
|
|
77
|
+
pending: $$props.pending,
|
|
78
|
+
denied: $$props.denied,
|
|
79
|
+
approval: $$props.approval
|
|
80
|
+
}));
|
|
74
81
|
var fragment = $.comment();
|
|
75
82
|
var node = $.first_child(fragment);
|
|
76
83
|
var consequent = ($$anchor) => {
|
|
77
84
|
var fragment_1 = $.comment();
|
|
78
85
|
var node_1 = $.first_child(fragment_1);
|
|
79
|
-
$.snippet(node_1, () =>
|
|
86
|
+
$.snippet(node_1, () => slotContent("pending", $.get(own), defaults) ?? $.noop);
|
|
80
87
|
$.append($$anchor, fragment_1);
|
|
81
88
|
};
|
|
82
89
|
var consequent_1 = ($$anchor) => {
|
|
83
90
|
var fragment_2 = $.comment();
|
|
84
91
|
var node_2 = $.first_child(fragment_2);
|
|
85
|
-
$.snippet(node_2, () =>
|
|
92
|
+
$.snippet(node_2, () => slotContent("approval", $.get(own), defaults) ?? $.noop, () => $.get(view).decision);
|
|
86
93
|
$.append($$anchor, fragment_2);
|
|
87
94
|
};
|
|
88
|
-
var
|
|
95
|
+
var consequent_2 = ($$anchor) => {
|
|
89
96
|
var fragment_3 = $.comment();
|
|
90
97
|
var node_3 = $.first_child(fragment_3);
|
|
91
|
-
$.snippet(node_3, () =>
|
|
98
|
+
$.snippet(node_3, () => slotContent("denied", $.get(own), defaults) ?? $.noop, () => $.get(view).decision);
|
|
92
99
|
$.append($$anchor, fragment_3);
|
|
93
100
|
};
|
|
101
|
+
var alternate = ($$anchor) => {
|
|
102
|
+
var fragment_4 = $.comment();
|
|
103
|
+
var node_4 = $.first_child(fragment_4);
|
|
104
|
+
$.snippet(node_4, () => $$props.children ?? $.noop, () => $.get(view).decision);
|
|
105
|
+
$.append($$anchor, fragment_4);
|
|
106
|
+
};
|
|
94
107
|
$.if(node, ($$render) => {
|
|
95
108
|
if ($.get(view).slot === "pending") $$render(consequent);
|
|
96
|
-
else if ($.get(view).slot === "
|
|
109
|
+
else if ($.get(view).slot === "approval") $$render(consequent_1, 1);
|
|
110
|
+
else if ($.get(view).slot === "denied") $$render(consequent_2, 2);
|
|
97
111
|
else $$render(alternate, -1);
|
|
98
112
|
});
|
|
99
113
|
$.append($$anchor, fragment);
|
|
@@ -104,4 +118,4 @@ function Protected$1($$anchor, $$props) {
|
|
|
104
118
|
const Protected = Protected$1;
|
|
105
119
|
const PermissionBoundary = PermissionBoundary$1;
|
|
106
120
|
//#endregion
|
|
107
|
-
export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
|
121
|
+
export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getDescribe, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
package/dist/svelte/runtime.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import { n as DescribeMessages } from "../describe-BZUsixiL.js";
|
|
1
2
|
import { n as boundaryDigest, r as boundaryFallback, t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
3
|
+
import { m as ClientStore } from "../types-BNORmDM8.js";
|
|
4
|
+
import { a as viewFor, i as scopedFor, o as PermissionBoundaryProps, r as ProtectedProps, s as slotContent, t as PermDockDefaults } from "../types-fbZ7JEXr.js";
|
|
4
5
|
//#region src/svelte/context.d.ts
|
|
6
|
+
/** The provider's `defaults` and `messages`. */
|
|
7
|
+
type PermDockUi = {
|
|
8
|
+
readonly defaults?: PermDockDefaults | undefined;
|
|
9
|
+
readonly messages?: DescribeMessages | undefined;
|
|
10
|
+
};
|
|
11
|
+
export declare function getUi(): PermDockUi;
|
|
5
12
|
export declare function getStore(): ClientStore;
|
|
6
13
|
//#endregion
|
|
7
|
-
export { type PermissionBoundaryProps, type PermissionBoundaryState, type ProtectedProps, boundaryDigest, boundaryFallback, scopedFor, viewFor };
|
|
14
|
+
export { type PermissionBoundaryProps, type PermissionBoundaryState, type ProtectedProps, boundaryDigest, boundaryFallback, scopedFor, slotContent, viewFor };
|
package/dist/svelte/runtime.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
|
|
2
|
+
import { u as slotContent } from "../views-DTIIO-oQ.js";
|
|
3
|
+
import { n as getUi, t as getStore } from "../context-bbFHR-0D.js";
|
|
4
|
+
import { n as viewFor, t as scopedFor } from "../runtime-D3VTAiCA.js";
|
|
5
|
+
export { boundaryDigest, boundaryFallback, getStore, getUi, scopedFor, slotContent, viewFor };
|
package/dist/svelte/source.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { n as requiredPlans } from "../problem-details-
|
|
2
|
-
import { i as describe } from "../describe-
|
|
1
|
+
import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
|
|
2
|
+
import { i as describe } from "../describe-BZUsixiL.js";
|
|
3
3
|
import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
4
|
-
import { t as approvalHeaders } from "../headers-
|
|
5
|
-
import { a as FilterResult, c as SubjectView, i as ClientStatus, l as
|
|
6
|
-
import {
|
|
7
|
-
import { a as
|
|
4
|
+
import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
|
|
5
|
+
import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, p as TenantView, r as ClientPermDock, t as ApprovalHandle } from "../types-BNORmDM8.js";
|
|
6
|
+
import { n as SveltePermDockOptions, o as PermissionBoundaryProps, r as ProtectedProps, t as PermDockDefaults } from "../types-fbZ7JEXr.js";
|
|
7
|
+
import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-ClZUgeoP.js";
|
|
8
8
|
import { Component } from "svelte";
|
|
9
9
|
//#region src/svelte/source.d.ts
|
|
10
10
|
export declare const Protected: Component<ProtectedProps>;
|
|
11
11
|
export declare const PermissionBoundary: Component<PermissionBoundaryProps>;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type
|
|
13
|
+
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type RolesOptions, type SubjectView, type SveltePermDockOptions, type TenantView, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getDescribe, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
package/dist/svelte/source.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { r as requiredPlans } from "../problem-details-
|
|
2
|
-
import { t as describe } from "../describe-
|
|
3
|
-
import { t as approvalHeaders } from "../headers-
|
|
4
|
-
import { a as
|
|
1
|
+
import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
|
|
2
|
+
import { t as describe } from "../describe-BybMRY7A.js";
|
|
3
|
+
import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
|
|
4
|
+
import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-BbsD4fAR.js";
|
|
5
5
|
import PermissionBoundaryComponent from "./PermissionBoundary.svelte";
|
|
6
6
|
import ProtectedComponent from "./Protected.svelte";
|
|
7
7
|
//#region src/svelte/source.ts
|
|
8
8
|
const Protected = ProtectedComponent;
|
|
9
9
|
const PermissionBoundary = PermissionBoundaryComponent;
|
|
10
10
|
//#endregion
|
|
11
|
-
export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
|
11
|
+
export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getDescribe, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { a as OperationInput, t as Operation } from "../operations-CxybZErY.js";
|
|
4
|
+
import { r as PermDock } from "../permdock-D7eeLJER.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
|
|
6
|
+
import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-qKJBuRqy.js";
|
|
7
|
+
import { RequestEvent } from "@sveltejs/kit";
|
|
8
|
+
//#region src/sveltekit/create.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* A `handle` hook. SvelteKit 2 exports `Handle` from `@sveltejs/kit` and
|
|
11
|
+
* SvelteKit 3 from `@sveltejs/kit/hooks`; this shape is assignable to both.
|
|
12
|
+
*/
|
|
13
|
+
type SvelteKitHandle = (input: {
|
|
14
|
+
readonly event: RequestEvent;
|
|
15
|
+
readonly resolve: (event: RequestEvent) => Promise<Response>;
|
|
16
|
+
}) => Promise<Response>;
|
|
17
|
+
type SvelteKitPermDockOptions<TUser = unknown> = FetchAdapterOptions<RequestEvent, TUser>;
|
|
18
|
+
/** What the adapter sets on `event.locals`. */
|
|
19
|
+
type SvelteKitPermDockLocals<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
20
|
+
readonly permdock: PermDock<V>;
|
|
21
|
+
readonly permdockData: TData;
|
|
22
|
+
};
|
|
23
|
+
/** The event a wrapped handler receives: the route's own event with typed `locals`. */
|
|
24
|
+
type SvelteKitPermDockEvent<TEvent extends RequestEvent = RequestEvent, TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TEvent & {
|
|
25
|
+
readonly locals: SvelteKitPermDockLocals<TData, V>;
|
|
26
|
+
};
|
|
27
|
+
/** Wraps a `+server.ts` handler; the route keeps its generated `RequestEvent` type. */
|
|
28
|
+
type SvelteKitGuarded<TData, V extends PolicyVocabulary = PolicyVocabulary> = <TEvent extends RequestEvent, R = Response>(handler: (event: SvelteKitPermDockEvent<TEvent, TData, V>) => R | Promise<R>) => (event: TEvent) => Promise<R | Response>;
|
|
29
|
+
type SvelteKitProtect<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
30
|
+
<T = unknown>(permission: Permission | null, data?: ContextReader<RequestEvent, T | null | undefined>, protectOptions?: ProtectOptions): SvelteKitGuarded<NonNullable<T>, V>;
|
|
31
|
+
<TOperation extends Operation>(operation: TOperation, input?: ContextReader<RequestEvent, OperationInput<TOperation>>, protectOptions?: ProtectOptions): SvelteKitGuarded<unknown, V>;
|
|
32
|
+
};
|
|
33
|
+
type SvelteKitPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
34
|
+
/** The `handle` hook: sets `event.locals.permdock`; a bad Web Bot Auth signature is a `401`. */
|
|
35
|
+
readonly middleware: () => SvelteKitHandle;
|
|
36
|
+
/** `export const DELETE = protect(permissions.post.delete, loadPost)(handler)`. */
|
|
37
|
+
readonly protect: SvelteKitProtect<V>;
|
|
38
|
+
/** Types `event.locals.permdock` for a handler and answers a thrown PermDock error with Problem Details. */
|
|
39
|
+
readonly withPermDock: SvelteKitGuarded<unknown, V>;
|
|
40
|
+
/** The instance for a `load` function, an action or a handler. */
|
|
41
|
+
readonly getPermDock: (event: RequestEvent) => Promise<PermDock<V>>;
|
|
42
|
+
/** The snapshot a layout `load` returns for `permdock/svelte`. */
|
|
43
|
+
readonly getSnapshot: (event: RequestEvent, query?: SnapshotQuery) => Promise<Snapshot>;
|
|
44
|
+
readonly connection: (event: RequestEvent, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
45
|
+
/** `export const { GET, POST } = permdockHandler()` in `src/routes/api/permdock/+server.ts`. */
|
|
46
|
+
readonly permdockHandler: () => PermDockHandlers<RequestEvent>;
|
|
47
|
+
readonly openapi: OpenApiHooks;
|
|
48
|
+
};
|
|
49
|
+
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: SvelteKitPermDockOptions<TUser>): SvelteKitPermDock<V>;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { type ContextReader, InvalidSignatureError, type PermDockHandlers, type ProtectTarget, type SvelteKitGuarded, type SvelteKitHandle, type SvelteKitPermDock, type SvelteKitPermDockEvent, type SvelteKitPermDockLocals, type SvelteKitPermDockOptions, type SvelteKitProtect, discoverViaSignatureAgent, webBotAuthVerifier };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
|
|
2
|
+
import { n as guardedRoute, r as instanceRoute, t as fetchAdapter } from "../fetch-adapter-g0ypLkID.js";
|
|
3
|
+
//#region src/sveltekit/create.ts
|
|
4
|
+
const route = {
|
|
5
|
+
context: (event) => event,
|
|
6
|
+
locals: (event) => event.locals
|
|
7
|
+
};
|
|
8
|
+
function createPermDock(policy, options) {
|
|
9
|
+
const adapter = fetchAdapter(policy, options, "sveltekit", (event) => event.request);
|
|
10
|
+
const middleware = () => async ({ event, resolve }) => {
|
|
11
|
+
const attached = await adapter.ensure(event.locals, event);
|
|
12
|
+
return attached.ok ? resolve(event) : attached.response;
|
|
13
|
+
};
|
|
14
|
+
const protect = ((target, data, protectOptions) => guardedRoute(adapter, route, target, data, protectOptions));
|
|
15
|
+
return {
|
|
16
|
+
middleware,
|
|
17
|
+
protect,
|
|
18
|
+
withPermDock: instanceRoute(adapter, route),
|
|
19
|
+
getPermDock: adapter.getPermDock,
|
|
20
|
+
getSnapshot: adapter.getSnapshot,
|
|
21
|
+
connection: adapter.connection,
|
|
22
|
+
permdockHandler: adapter.handlers,
|
|
23
|
+
openapi: adapter.kernel.openapi
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { T as Policy, Vt as Snapshot, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { a as OperationInput, t as Operation } from "../operations-CxybZErY.js";
|
|
4
|
+
import { r as PermDock } from "../permdock-D7eeLJER.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-BLd4MnBX.js";
|
|
6
|
+
import { a as ProtectTarget, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-qKJBuRqy.js";
|
|
7
|
+
import { RequestMiddleware, RequestMiddlewareAfterServer, createMiddleware } from "@tanstack/react-start";
|
|
8
|
+
//#region src/tanstack-start/create.d.ts
|
|
9
|
+
type TanStackStartPermDockOptions<TUser = unknown> = FetchAdapterOptions<Request, TUser>;
|
|
10
|
+
/** The server context `middleware()` adds for later middleware, server functions and server routes. */
|
|
11
|
+
type TanStackStartPermDockContext<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
12
|
+
readonly permdock: PermDock<V>;
|
|
13
|
+
};
|
|
14
|
+
/** The server context `protect` adds: the instance and the loaded row. */
|
|
15
|
+
type TanStackStartGuardedContext<TData = unknown, V extends PolicyVocabulary = PolicyVocabulary> = TanStackStartPermDockContext<V> & {
|
|
16
|
+
readonly permdockData: TData;
|
|
17
|
+
};
|
|
18
|
+
/** A request middleware for `createStart`'s `requestMiddleware`, a server route's `server.middleware` or a server function's `.middleware([...])`. */
|
|
19
|
+
type TanStackStartMiddleware<TContext> = RequestMiddlewareAfterServer<StartRegister, undefined, TContext>;
|
|
20
|
+
/** The register `createMiddleware` builds with; Start's middleware types are invariant in it. */
|
|
21
|
+
type StartRegister = ReturnType<typeof createMiddleware> extends RequestMiddleware<infer TRegister> ? TRegister : never;
|
|
22
|
+
type TanStackStartProtect<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
23
|
+
<T = unknown>(permission: Permission | null, data?: ContextReader<Request, T | null | undefined>, protectOptions?: ProtectOptions): TanStackStartMiddleware<TanStackStartGuardedContext<NonNullable<T>, V>>;
|
|
24
|
+
<TOperation extends Operation>(operation: TOperation, input?: ContextReader<Request, OperationInput<TOperation>>, protectOptions?: ProtectOptions): TanStackStartMiddleware<TanStackStartGuardedContext<unknown, V>>;
|
|
25
|
+
};
|
|
26
|
+
/** A server route handler: `server: { handlers: { GET } }`. */
|
|
27
|
+
type TanStackStartRouteHandler = (context: {
|
|
28
|
+
readonly request: Request;
|
|
29
|
+
}) => Promise<Response>;
|
|
30
|
+
/** The decision endpoint, one server route handler per method. */
|
|
31
|
+
type TanStackStartPermDockHandlers = {
|
|
32
|
+
readonly GET: TanStackStartRouteHandler;
|
|
33
|
+
readonly POST: TanStackStartRouteHandler;
|
|
34
|
+
};
|
|
35
|
+
type TanStackStartPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
36
|
+
/** Adds `context.permdock`; a bad Web Bot Auth signature is a `401`. */
|
|
37
|
+
readonly middleware: () => TanStackStartMiddleware<TanStackStartPermDockContext<V>>;
|
|
38
|
+
/** A refusal ends the request with Problem Details; a grant adds `context.permdock` and `context.permdockData`. */
|
|
39
|
+
readonly protect: TanStackStartProtect<V>;
|
|
40
|
+
/** The instance for a server function: `getPermDock(getRequest())`. */
|
|
41
|
+
readonly getPermDock: (request: Request) => Promise<PermDock<V>>;
|
|
42
|
+
/** The snapshot a route `loader` returns for `permdock/react`. */
|
|
43
|
+
readonly getSnapshot: (request: Request, query?: SnapshotQuery) => Promise<Snapshot>;
|
|
44
|
+
readonly connection: (request: Request, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
45
|
+
/** `server: { handlers: permdockHandler() }` on the `/api/permdock` route. */
|
|
46
|
+
readonly permdockHandler: () => TanStackStartPermDockHandlers;
|
|
47
|
+
readonly openapi: OpenApiHooks;
|
|
48
|
+
};
|
|
49
|
+
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: TanStackStartPermDockOptions<TUser>): TanStackStartPermDock<V>;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { type ContextReader, InvalidSignatureError, type ProtectTarget, type TanStackStartGuardedContext, type TanStackStartMiddleware, type TanStackStartPermDock, type TanStackStartPermDockContext, type TanStackStartPermDockHandlers, type TanStackStartPermDockOptions, type TanStackStartProtect, type TanStackStartRouteHandler, discoverViaSignatureAgent, webBotAuthVerifier };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
|
|
2
|
+
import { t as fetchAdapter } from "../fetch-adapter-g0ypLkID.js";
|
|
3
|
+
import { createMiddleware } from "@tanstack/react-start";
|
|
4
|
+
//#region src/tanstack-start/create.ts
|
|
5
|
+
function createPermDock(policy, options) {
|
|
6
|
+
const adapter = fetchAdapter(policy, options, "tanstack-start", (request) => request);
|
|
7
|
+
const middleware = () => createMiddleware().server(async ({ request, next }) => {
|
|
8
|
+
const attached = await adapter.attach(request);
|
|
9
|
+
if (!attached.ok) return attached.response;
|
|
10
|
+
const context = { permdock: attached.permdock };
|
|
11
|
+
return adapter.mapErrors(request, () => next({ context }));
|
|
12
|
+
});
|
|
13
|
+
const protect = ((target, data, protectOptions) => createMiddleware().server(async ({ request, next }) => {
|
|
14
|
+
const guard = await adapter.guard(target, data, request, protectOptions);
|
|
15
|
+
if (!guard.ok) return guard.response;
|
|
16
|
+
const context = {
|
|
17
|
+
permdock: guard.permdock,
|
|
18
|
+
permdockData: guard.data
|
|
19
|
+
};
|
|
20
|
+
return adapter.mapErrors(request, () => next({ context }));
|
|
21
|
+
}));
|
|
22
|
+
const handlers = () => {
|
|
23
|
+
const { GET, POST } = adapter.handlers();
|
|
24
|
+
return {
|
|
25
|
+
GET: ({ request }) => GET(request),
|
|
26
|
+
POST: ({ request }) => POST(request)
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
middleware,
|
|
31
|
+
protect,
|
|
32
|
+
getPermDock: adapter.getPermDock,
|
|
33
|
+
getSnapshot: adapter.getSnapshot,
|
|
34
|
+
connection: adapter.connection,
|
|
35
|
+
permdockHandler: handlers,
|
|
36
|
+
openapi: adapter.kernel.openapi
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, webBotAuthVerifier };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { a as ownRecord } from "./paths-DXSHAMIa.js";
|
|
2
|
+
import { n as sha256, t as bytesToBase64Url } from "./sha256-D9ihqmvd.js";
|
|
3
|
+
//#region src/delivery/target.ts
|
|
4
|
+
/**
|
|
5
|
+
* Whether `value` is a target the router checked for `channel`: a non-empty
|
|
6
|
+
* address and a granted decision. A transport calls it first and refuses
|
|
7
|
+
* anything else, so a hand-built recipient never reaches a provider.
|
|
8
|
+
*/
|
|
9
|
+
function isDeliveryTarget(value, channel) {
|
|
10
|
+
const record = ownRecord(value);
|
|
11
|
+
const address = record?.["address"];
|
|
12
|
+
return record?.["channel"] === channel && typeof address === "string" && address !== "" && ownRecord(record["decision"])?.["outcome"] === "granted";
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The idempotency key for one recipient of delivery `id`: `pdd_` and the
|
|
16
|
+
* base64url SHA-256 of the delivery id, channel and recipient. It fits the
|
|
17
|
+
* tag and header charsets of every provider, `[A-Za-z0-9_-]`.
|
|
18
|
+
*/
|
|
19
|
+
function idempotencyKeyFor(id, channel, recipient) {
|
|
20
|
+
return `pdd_${bytesToBase64Url(sha256(JSON.stringify([
|
|
21
|
+
id,
|
|
22
|
+
channel,
|
|
23
|
+
recipient
|
|
24
|
+
])))}`;
|
|
25
|
+
}
|
|
26
|
+
const ATOM = "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+";
|
|
27
|
+
const ADDR_SPEC = /* @__PURE__ */ new RegExp(`^${ATOM}(?:\\.${ATOM})*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$`, "u");
|
|
28
|
+
/**
|
|
29
|
+
* An RFC 5322 `addr-spec` in dot-atom form with a DNS domain, at most 254
|
|
30
|
+
* characters (RFC 5321 path limit). Quoted local parts, comments and
|
|
31
|
+
* domain literals are refused.
|
|
32
|
+
*/
|
|
33
|
+
function isAddrSpec(value) {
|
|
34
|
+
return value.length <= 254 && ADDR_SPEC.test(value);
|
|
35
|
+
}
|
|
36
|
+
/** A chat platform user id: printable, no whitespace, at most 256 characters. */
|
|
37
|
+
function isChatAddress(value) {
|
|
38
|
+
return /^[!-~]{1,256}$/u.test(value);
|
|
39
|
+
}
|
|
40
|
+
/** An absolute https URL with no credentials. */
|
|
41
|
+
function isWebhookAddress(value) {
|
|
42
|
+
let url;
|
|
43
|
+
try {
|
|
44
|
+
url = new URL(value);
|
|
45
|
+
} catch {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return url.protocol === "https:" && url.username === "" && url.password === "";
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { isWebhookAddress as a, isDeliveryTarget as i, isAddrSpec as n, isChatAddress as r, idempotencyKeyFor as t };
|