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,7 +1,7 @@
|
|
|
1
|
-
import { t as packageRoot } from "./package-root-
|
|
1
|
+
import { t as packageRoot } from "./package-root-Dk_ETdkp.js";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
//#region src/cli/version.ts
|
|
4
|
+
//#region src/cli/core/version.ts
|
|
5
5
|
function cliVersion() {
|
|
6
6
|
return JSON.parse(readFileSync(join(packageRoot(), "package.json"), "utf8")).version;
|
|
7
7
|
}
|
|
@@ -13,5 +13,6 @@ const SUPABASE_MANIFEST_SCHEMA = "https://permdock.com/schemas/supabase-manifest
|
|
|
13
13
|
const USAGE_REPORT_SCHEMA = "https://permdock.com/schemas/usage-report-v1.json";
|
|
14
14
|
const DOCTOR_REPORT_SCHEMA = "https://permdock.com/schemas/doctor-report-v1.json";
|
|
15
15
|
const CONFIG_REPORT_SCHEMA = "https://permdock.com/schemas/config-report-v1.json";
|
|
16
|
+
const ARAZZO_REPORT_SCHEMA = "https://permdock.com/schemas/arazzo-report-v1.json";
|
|
16
17
|
//#endregion
|
|
17
|
-
export {
|
|
18
|
+
export { SUPABASE_MANIFEST_SCHEMA as a, generatorBanner as c, DOCTOR_REPORT_SCHEMA as i, CATALOG_SCHEMA as n, USAGE_REPORT_SCHEMA as o, CONFIG_REPORT_SCHEMA as r, cliVersion as s, ARAZZO_REPORT_SCHEMA as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { s as cliVersion } from "./version-CEbQ5UeM.js";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { r as requiredPlans } from "./problem-details-cn5X30gZ.js";
|
|
2
|
+
import { t as describe } from "./describe-BybMRY7A.js";
|
|
1
3
|
//#region src/client/views.ts
|
|
2
4
|
function permissionSet(store, permissions, data) {
|
|
3
5
|
const granted = [];
|
|
@@ -64,9 +66,15 @@ function protectedView(local, root, permission, data, scoped) {
|
|
|
64
66
|
slot: "pending"
|
|
65
67
|
};
|
|
66
68
|
const decision = state.decision;
|
|
69
|
+
if (decision.outcome === "approval-required") return {
|
|
70
|
+
allowed: false,
|
|
71
|
+
status: state.status,
|
|
72
|
+
decision,
|
|
73
|
+
slot: "approval"
|
|
74
|
+
};
|
|
67
75
|
if (!state.allowed || decision.outcome !== "granted") return {
|
|
68
76
|
...state,
|
|
69
|
-
slot: "
|
|
77
|
+
slot: "denied"
|
|
70
78
|
};
|
|
71
79
|
return {
|
|
72
80
|
allowed: true,
|
|
@@ -91,5 +99,36 @@ function approvalHandle(store, decision) {
|
|
|
91
99
|
request: (note) => store.requestApproval(decision, note)
|
|
92
100
|
};
|
|
93
101
|
}
|
|
102
|
+
function slotContent(slot, own, defaults) {
|
|
103
|
+
switch (slot) {
|
|
104
|
+
case "pending": return own.pending ?? defaults?.pending;
|
|
105
|
+
case "denied": return own.denied ?? defaults?.denied;
|
|
106
|
+
case "approval": return own.approval ?? own.denied ?? defaults?.approval ?? defaults?.denied;
|
|
107
|
+
default: return slot;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/** `describe` with the provider's `messages`; a call's own `messages` win. */
|
|
111
|
+
function describeWith(messages) {
|
|
112
|
+
return (decision, options) => describe(decision, messages === void 0 || options?.messages !== void 0 ? options : {
|
|
113
|
+
...options,
|
|
114
|
+
messages
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/** The `GateView` of a permission state; `describeDecision` localises the reason. */
|
|
118
|
+
function gateView(state, describeDecision, mode = "disable") {
|
|
119
|
+
const pending = state.status === "pending";
|
|
120
|
+
const needsApproval = state.decision.outcome === "approval-required";
|
|
121
|
+
const allowed = state.allowed && !pending;
|
|
122
|
+
return {
|
|
123
|
+
allowed,
|
|
124
|
+
pending,
|
|
125
|
+
hidden: mode === "hide" && !allowed && !pending && !needsApproval,
|
|
126
|
+
disabled: !allowed,
|
|
127
|
+
needsApproval,
|
|
128
|
+
upgrade: requiredPlans(state.decision),
|
|
129
|
+
reason: describeDecision(state.decision),
|
|
130
|
+
decision: state.decision
|
|
131
|
+
};
|
|
132
|
+
}
|
|
94
133
|
//#endregion
|
|
95
|
-
export {
|
|
134
|
+
export { livePermDock as a, rolesView as c, subjectView as d, tenantView as f, gateView as i, scopedTenant as l, describeWith as n, permissionSet as o, filterResult as r, protectedView as s, approvalHandle as t, slotContent as u };
|
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
-
//#region src/core/
|
|
2
|
+
//#region src/core/app-data.d.ts
|
|
3
|
+
/** A JSON value in an app `x` field. */
|
|
4
|
+
type MetaValue = string | number | boolean | null | readonly MetaValue[] | {
|
|
5
|
+
readonly [key: string]: MetaValue;
|
|
6
|
+
};
|
|
7
|
+
/** The default shape of an app `x` field: a plain JSON object. */
|
|
8
|
+
type AppData = Readonly<Record<string, MetaValue>>;
|
|
9
|
+
/**
|
|
10
|
+
* A Standard Schema for one kind of app data. It must validate synchronously;
|
|
11
|
+
* its output is the type PermDock gives the `x` field it checks.
|
|
12
|
+
*/
|
|
13
|
+
type AppDataSchema<X = AppData> = StandardSchemaV1<unknown, X>;
|
|
14
|
+
/** A leaf whose `meta.x` is typed by a schema; intersected so it stays assignable to the untyped leaf. */
|
|
15
|
+
type WithX<L, X> = [X] extends [never] ? L : L & {
|
|
16
|
+
readonly meta: {
|
|
17
|
+
readonly x?: Readonly<X>;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/core/brands.d.ts
|
|
3
22
|
declare const RESOURCE_BRAND: unique symbol;
|
|
23
|
+
/**
|
|
24
|
+
* Phantom key carrying a tree's resource `x` type for `getResource`. Exported
|
|
25
|
+
* as a type only, so a consumer's declaration emit can name it; it has no value.
|
|
26
|
+
*/
|
|
27
|
+
declare const RESOURCE_X: unique symbol;
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/core/permission-types.d.ts
|
|
4
30
|
/** `definePermissions` options. */
|
|
5
|
-
type
|
|
31
|
+
type PermissionsOptions<PX = never, RX = never> = {
|
|
6
32
|
/**
|
|
7
33
|
* Keys a permission used to have, mapped to its current key. Old keys are
|
|
8
34
|
* accepted wherever a key arrives as a string (stored custom roles, OAuth
|
|
@@ -10,6 +36,27 @@ type DefinePermissionsOptions = {
|
|
|
10
36
|
* the current leaf; code, decisions and audit only ever see the current key.
|
|
11
37
|
*/
|
|
12
38
|
readonly renamed?: Readonly<Record<string, string>>;
|
|
39
|
+
/**
|
|
40
|
+
* Standard Schemas for app data. `permission` checks every action's
|
|
41
|
+
* `meta.x` and types it on the leaves; `resource` checks every resource's
|
|
42
|
+
* `meta.x` and types it on `getResource`. Both validate synchronously at
|
|
43
|
+
* definition time and throw on invalid data.
|
|
44
|
+
*/
|
|
45
|
+
readonly x?: {
|
|
46
|
+
readonly permission?: AppDataSchema<PX>;
|
|
47
|
+
readonly resource?: AppDataSchema<RX>;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
/** A resource's metadata. PermDock carries it to the catalog and never reads `x`. */
|
|
51
|
+
type ResourceMeta<X = AppData> = {
|
|
52
|
+
readonly title?: string;
|
|
53
|
+
readonly description?: string;
|
|
54
|
+
/** Data the application owns. Plain JSON, typed by `definePermissions(…, { x: { resource } })`. */
|
|
55
|
+
readonly x?: X;
|
|
56
|
+
};
|
|
57
|
+
/** A tree whose resources carry `meta.x` of type `X`, read through `getResource`. */
|
|
58
|
+
type ResourceXTree<X> = {
|
|
59
|
+
readonly [RESOURCE_X]?: X;
|
|
13
60
|
};
|
|
14
61
|
type ActionMeta = {
|
|
15
62
|
readonly title?: string;
|
|
@@ -30,13 +77,9 @@ type ActionMeta = {
|
|
|
30
77
|
/**
|
|
31
78
|
* Data the application owns, such as a risk level or an undo window. Plain
|
|
32
79
|
* JSON; PermDock carries it on the leaf, the catalog and snapshots and
|
|
33
|
-
* never reads it.
|
|
80
|
+
* never reads it. `definePermissions(…, { x: { permission } })` types it.
|
|
34
81
|
*/
|
|
35
|
-
readonly x?:
|
|
36
|
-
};
|
|
37
|
-
/** A JSON value in `ActionMeta.x`. */
|
|
38
|
-
type MetaValue = string | number | boolean | null | readonly MetaValue[] | {
|
|
39
|
-
readonly [key: string]: MetaValue;
|
|
82
|
+
readonly x?: AppData;
|
|
40
83
|
};
|
|
41
84
|
type PermissionKind = "instance" | "collection";
|
|
42
85
|
type Permission<K extends string = string, T = unknown, Kind extends PermissionKind = PermissionKind> = {
|
|
@@ -159,6 +202,8 @@ type ResourceOptions<A extends ActionList | undefined = ActionList | undefined,
|
|
|
159
202
|
* it; it reaches only instance actions. Names match `^[a-z][a-z0-9_]*$`.
|
|
160
203
|
*/
|
|
161
204
|
readonly levels?: Readonly<Record<string, ResourceLevel>>;
|
|
205
|
+
/** Display text and app data for the resource; carried to the catalog, never read in evaluation. */
|
|
206
|
+
readonly meta?: ResourceMeta;
|
|
162
207
|
};
|
|
163
208
|
/** A level's row condition: `where` shorthand or a normalised `Condition`, checked by `definePolicy`. */
|
|
164
209
|
type ResourceLevel = Readonly<Record<string, unknown>>;
|
|
@@ -183,32 +228,78 @@ type ResourceNode<T = unknown> = {
|
|
|
183
228
|
readonly collectionActions: ReadonlySet<string>;
|
|
184
229
|
/** Declared level names to their raw condition; `definePolicy` normalises them. */
|
|
185
230
|
readonly levels?: Readonly<Record<string, ResourceLevel>>;
|
|
231
|
+
/** The resource's `meta`, when it declares one. */
|
|
232
|
+
readonly meta?: ResourceMeta;
|
|
186
233
|
};
|
|
187
234
|
type PermissionTree = {
|
|
188
235
|
readonly [key: string]: PermissionTree | Permission;
|
|
189
236
|
};
|
|
190
237
|
type ActionNames<A extends ActionList | undefined> = A extends readonly string[] ? A[number] : A extends Record<string, ActionMeta> ? keyof A & string : never;
|
|
191
|
-
type LeavesFrom<Prefix extends string, Names extends string, T, Kind extends PermissionKind> = [Names] extends [never] ? object : { readonly [K in Names]: Permission<Prefix extends "" ? K : `${Prefix}.${K}`, T, Kind>; };
|
|
192
|
-
type InferResourceLeaves<R extends ResourceInit, Prefix extends string> = R extends ResourceInit<infer T, infer A, infer C> ? LeavesFrom<Prefix, ActionNames<A>, T, "instance"> & LeavesFrom<Prefix, ActionNames<C>, T, "collection"> : object;
|
|
193
|
-
type InferPermissionTree<Input, Prefix extends string = ""> = Input extends ResourceInit ? InferResourceLeaves<Input, Prefix> : Input extends Record<string, unknown> ? { readonly [K in keyof Input & string]: InferPermissionTree<Input[K], Prefix extends "" ? K : `${Prefix}.${K}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
238
|
+
type LeavesFrom<Prefix extends string, Names extends string, T, Kind extends PermissionKind, X = never> = [Names] extends [never] ? object : { readonly [K in Names]: WithX<Permission<Prefix extends "" ? K : `${Prefix}.${K}`, T, Kind>, X>; };
|
|
239
|
+
type InferResourceLeaves<R extends ResourceInit, Prefix extends string, X = never> = R extends ResourceInit<infer T, infer A, infer C> ? LeavesFrom<Prefix, ActionNames<A>, T, "instance", X> & LeavesFrom<Prefix, ActionNames<C>, T, "collection", X> : object;
|
|
240
|
+
type InferPermissionTree<Input, Prefix extends string = "", X = never> = Input extends ResourceInit ? InferResourceLeaves<Input, Prefix, X> : Input extends Record<string, unknown> ? { readonly [K in keyof Input & string]: InferPermissionTree<Input[K], Prefix extends "" ? K : `${Prefix}.${K}`, X>; } : never;
|
|
241
|
+
//#endregion
|
|
242
|
+
//#region src/core/vocabulary.d.ts
|
|
243
|
+
declare const ROLE_KIND: "role";
|
|
244
|
+
declare const PLAN_KIND: "plan";
|
|
245
|
+
/** `defineRoles` and `definePlans` options. */
|
|
246
|
+
type VocabularyOptions<X = never> = {
|
|
247
|
+
/**
|
|
248
|
+
* A Standard Schema for every leaf's `meta.x`, validated synchronously at
|
|
249
|
+
* definition time. On a role tree it also checks the `meta.x` of custom
|
|
250
|
+
* roles a `CustomRoleSource` returns; an invalid one is dropped, not the role.
|
|
251
|
+
*/
|
|
252
|
+
readonly x?: AppDataSchema<X>;
|
|
253
|
+
};
|
|
205
254
|
/**
|
|
206
|
-
* A
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
* without it; when present it must be `instance` or `collection`.
|
|
255
|
+
* A role's metadata. `audience` names the surface its holders use (`'staff'`,
|
|
256
|
+
* `'portal'`, `'platform'`); `permdock.audiences()` lists the distinct
|
|
257
|
+
* audiences of the roles held in the active scope.
|
|
210
258
|
*/
|
|
211
|
-
|
|
212
|
-
|
|
259
|
+
type RoleMeta = ActionMeta & {
|
|
260
|
+
readonly audience?: string;
|
|
261
|
+
};
|
|
262
|
+
type Role<K extends string = string> = {
|
|
263
|
+
readonly key: K;
|
|
264
|
+
/** A declared scope name, or the `tenant` / `team` alias. */
|
|
265
|
+
readonly on?: string;
|
|
266
|
+
readonly assignable: boolean;
|
|
267
|
+
readonly meta: RoleMeta;
|
|
268
|
+
readonly kind: typeof ROLE_KIND;
|
|
269
|
+
};
|
|
270
|
+
type Plan<K extends string = string> = {
|
|
271
|
+
readonly key: K;
|
|
272
|
+
readonly meta: ActionMeta;
|
|
273
|
+
readonly kind: typeof PLAN_KIND;
|
|
274
|
+
};
|
|
275
|
+
type RoleInit = {
|
|
276
|
+
/** A declared scope name, or the `tenant` / `team` alias. */
|
|
277
|
+
readonly on?: string;
|
|
278
|
+
readonly assignable?: boolean;
|
|
279
|
+
readonly meta?: RoleMeta;
|
|
280
|
+
};
|
|
281
|
+
type PlanInit = {
|
|
282
|
+
readonly meta?: ActionMeta;
|
|
283
|
+
};
|
|
284
|
+
type RoleTree = {
|
|
285
|
+
readonly [key: string]: Role;
|
|
286
|
+
};
|
|
287
|
+
type PlanTree = {
|
|
288
|
+
readonly [key: string]: Plan;
|
|
289
|
+
};
|
|
290
|
+
type Vocabulary = {
|
|
291
|
+
readonly permissions?: unknown;
|
|
292
|
+
readonly roles?: RoleTree;
|
|
293
|
+
readonly plans?: PlanTree;
|
|
294
|
+
};
|
|
295
|
+
type InferRoleTree<Input, X = never> = { readonly [K in keyof Input & string]: WithX<Role<K>, X>; };
|
|
296
|
+
type InferPlanTree<Input, X = never> = { readonly [K in keyof Input & string]: WithX<Plan<K>, X>; };
|
|
297
|
+
declare function isRole(value: unknown): value is Role;
|
|
298
|
+
declare function isPlan(value: unknown): value is Plan;
|
|
299
|
+
declare function defineRoles<const Input extends Record<string, RoleInit>, X = never>(input: Input, options?: VocabularyOptions<X>): InferRoleTree<Input, X>;
|
|
300
|
+
declare function definePlans<const Input extends Record<string, PlanInit>, X = never>(input: Input, options?: VocabularyOptions<X>): InferPlanTree<Input, X>;
|
|
301
|
+
declare function listRoles(tree: RoleTree | undefined): readonly Role[];
|
|
302
|
+
declare function listPlans(tree: PlanTree | undefined): readonly Plan[];
|
|
303
|
+
declare function findRole(tree: RoleTree | undefined, key: string): Role | undefined;
|
|
213
304
|
//#endregion
|
|
214
|
-
export {
|
|
305
|
+
export { ResourceLevel as A, RESOURCE_X as B, InferPermissionTree as C, PermissionsOptions as D, PermissionTree as E, ResourceParent as F, AppDataSchema as H, ResourceRelation as I, ResourceRelationInput as L, ResourceMeta as M, ResourceNode as N, PrincipalRelation as O, ResourceOptions as P, ResourceRestricted as R, FieldRelation as S, PermissionKind as T, MetaValue as U, AppData as V, ComputedRelation as _, RoleTree as a, EdgeMatch as b, definePlans as c, isPlan as d, isRole as f, ActionMeta as g, ActionList as h, RoleMeta as i, ResourceLink as j, ResourceInit as k, defineRoles as l, listRoles as m, PlanTree as n, Vocabulary as o, listPlans as p, Role as r, VocabularyOptions as s, Plan as t, findRole as u, EdgeGroup as v, Permission as w, EdgeRelation as x, EdgeGroups as y, ResourceXTree as z };
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,36 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { i as describe } from "../describe-DMYiCjJV.js";
|
|
1
|
+
import { Mn as ApprovalRequiredDecision, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, nr as Membership } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { r as Role, w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
|
|
4
|
+
import { i as describe, r as DescribeOptions, t as DecisionDescription } from "../describe-BZUsixiL.js";
|
|
6
5
|
import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
|
|
7
|
-
import { t as approvalHeaders } from "../headers-
|
|
8
|
-
import { a as FilterResult, c as SubjectView, i as ClientStatus, l as
|
|
9
|
-
import { ComputedRef, DefineComponent, MaybeRefOrGetter, Plugin } from "vue";
|
|
6
|
+
import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
|
|
7
|
+
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, u as ProviderOptionsBase } from "../types-BNORmDM8.js";
|
|
8
|
+
import { ComputedRef, DefineComponent, MaybeRefOrGetter, Plugin, VNode } from "vue";
|
|
10
9
|
//#region src/vue/types.d.ts
|
|
11
|
-
type PermDockPluginOptions = {
|
|
10
|
+
type PermDockPluginOptions = ProviderOptionsBase & {
|
|
12
11
|
/**
|
|
13
12
|
* A ref or getter re-hydrates the store when it changes; a promise keeps
|
|
14
13
|
* the store `pending` until it settles (await the same promise in an async
|
|
15
14
|
* `setup` under `<Suspense>`).
|
|
16
15
|
*/
|
|
17
16
|
readonly snapshot: MaybeRefOrGetter<Snapshot | string> | PromiseLike<Snapshot | string>;
|
|
18
|
-
/**
|
|
19
|
-
* The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
|
|
20
|
-
* `false` never calls one: such a check is denied with reason `server-only`.
|
|
21
|
-
*/
|
|
22
|
-
readonly endpoint?: string | false;
|
|
23
|
-
/** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
|
|
24
|
-
readonly snapshotUrl?: string;
|
|
25
|
-
readonly approvals?: string;
|
|
26
17
|
/** A ref or getter switches the active tenant (`refresh({ tenant })`) when it changes. */
|
|
27
18
|
readonly tenant?: MaybeRefOrGetter<string | undefined>;
|
|
28
|
-
readonly fetch?: typeof fetch;
|
|
29
19
|
/** Read on every request: a ref or getter carries a rotated token without rebuilding the store. */
|
|
30
20
|
readonly headers?: MaybeRefOrGetter<Readonly<Record<string, string>> | undefined>;
|
|
31
|
-
readonly maxAge?: number;
|
|
32
21
|
/** Read on every verification; set it at install to verify signed snapshots. */
|
|
33
22
|
readonly verifier?: MaybeRefOrGetter<TokenVerifier | undefined>;
|
|
23
|
+
/** What every `<Protected>` renders for a slot it leaves out. */
|
|
24
|
+
readonly defaults?: PermDockDefaults;
|
|
25
|
+
};
|
|
26
|
+
type SlotOutput = VNode | VNode[] | string | null;
|
|
27
|
+
/** Render functions for the `<Protected>` slots a component leaves out; they get the slot props. */
|
|
28
|
+
type PermDockDefaults = {
|
|
29
|
+
readonly pending?: () => SlotOutput;
|
|
30
|
+
readonly denied?: (props: {
|
|
31
|
+
readonly decision: Decision;
|
|
32
|
+
}) => SlotOutput;
|
|
33
|
+
readonly approval?: (props: {
|
|
34
|
+
readonly decision: ApprovalRequiredDecision;
|
|
35
|
+
}) => SlotOutput;
|
|
34
36
|
};
|
|
35
37
|
//#endregion
|
|
36
38
|
//#region src/vue/composables.d.ts
|
|
@@ -44,7 +46,7 @@ export declare function usePermissions(permissions: MaybeRefOrGetter<readonly Pe
|
|
|
44
46
|
export declare function useFilter<T>(permission: Permission<string, T, "instance">, rows: MaybeRefOrGetter<readonly T[]>): ComputedRef<FilterResult<T>>;
|
|
45
47
|
export declare function useTenant(): ComputedRef<TenantView>;
|
|
46
48
|
export declare function useMemberships(): ComputedRef<readonly Membership[]>;
|
|
47
|
-
export declare function useRoles(options?: MaybeRefOrGetter<
|
|
49
|
+
export declare function useRoles(options?: MaybeRefOrGetter<RolesOptions>): ComputedRef<{
|
|
48
50
|
readonly roles: readonly Role[];
|
|
49
51
|
}>;
|
|
50
52
|
export declare function useAssignableRoles(): ComputedRef<readonly Role[]>;
|
|
@@ -53,6 +55,8 @@ export declare function useAssignablePermissions(options?: MaybeRefOrGetter<{
|
|
|
53
55
|
}>): ComputedRef<readonly Permission[]>;
|
|
54
56
|
export declare function useSubject(): ComputedRef<SubjectView>;
|
|
55
57
|
export declare function useApproval(decision: MaybeRefOrGetter<Decision>): ComputedRef<ApprovalHandle>;
|
|
58
|
+
/** `describe` with the plugin's `messages`; a call's own `messages` win. */
|
|
59
|
+
export declare function useDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
|
|
56
60
|
//#endregion
|
|
57
61
|
//#region src/vue/boundary.d.ts
|
|
58
62
|
/**
|
|
@@ -76,4 +80,4 @@ type ProtectedProps = {
|
|
|
76
80
|
};
|
|
77
81
|
export declare const Protected: DefineComponent<ProtectedProps>;
|
|
78
82
|
//#endregion
|
|
79
|
-
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockPluginOptions, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type
|
|
83
|
+
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermDockPluginOptions, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type RolesOptions, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans };
|
package/dist/vue/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { r as requiredPlans } from "../problem-details-
|
|
2
|
-
import { t as describe } from "../describe-
|
|
3
|
-
import { t as approvalHeaders } from "../headers-BZSDieNT.js";
|
|
4
|
-
import { i as isPromiseLike } from "../store-options-ByhZq1jV.js";
|
|
5
|
-
import { a as protectedView, c as subjectView, i as permissionSet, l as tenantView, n as filterResult, o as rolesView, r as livePermDock, s as scopedTenant, t as approvalHandle } from "../views-Soe7bGSC.js";
|
|
1
|
+
import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
|
|
2
|
+
import { t as describe } from "../describe-BybMRY7A.js";
|
|
6
3
|
import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
|
|
7
|
-
import {
|
|
4
|
+
import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
|
|
5
|
+
import { i as isPromiseLike } from "../store-options-BqEakYRa.js";
|
|
6
|
+
import { n as switchTenant, t as providerStore } from "../provider-store-B5Yrkhzr.js";
|
|
7
|
+
import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, l as scopedTenant, n as describeWith, o as permissionSet, r as filterResult, s as protectedView, t as approvalHandle, u as slotContent } from "../views-DTIIO-oQ.js";
|
|
8
8
|
import { computed, defineComponent, effectScope, getCurrentScope, inject, isRef, onErrorCaptured, onScopeDispose, provide, shallowRef, toValue, watch } from "vue";
|
|
9
9
|
//#region src/vue/context.ts
|
|
10
10
|
const permDockKey = Symbol("permdock");
|
|
11
|
+
const permDockUiKey = Symbol("permdock-ui");
|
|
11
12
|
//#endregion
|
|
12
13
|
//#region src/vue/composables.ts
|
|
13
14
|
function useStore() {
|
|
@@ -87,6 +88,10 @@ function useApproval(decision) {
|
|
|
87
88
|
return approvalHandle(store, toValue(decision));
|
|
88
89
|
});
|
|
89
90
|
}
|
|
91
|
+
/** `describe` with the plugin's `messages`; a call's own `messages` win. */
|
|
92
|
+
function useDescribe() {
|
|
93
|
+
return describeWith(inject(permDockUiKey, {}).messages);
|
|
94
|
+
}
|
|
90
95
|
//#endregion
|
|
91
96
|
//#region src/vue/boundary.ts
|
|
92
97
|
const boundaryKey = Symbol("permdock-boundary");
|
|
@@ -154,6 +159,10 @@ const permdockPlugin = { install(app, options) {
|
|
|
154
159
|
store.dispose();
|
|
155
160
|
});
|
|
156
161
|
app.provide(permDockKey, store);
|
|
162
|
+
app.provide(permDockUiKey, {
|
|
163
|
+
defaults: options.defaults,
|
|
164
|
+
messages: options.messages
|
|
165
|
+
});
|
|
157
166
|
} };
|
|
158
167
|
//#endregion
|
|
159
168
|
//#region src/vue/protected.ts
|
|
@@ -176,6 +185,7 @@ const Protected = defineComponent({
|
|
|
176
185
|
setup(props, { slots }) {
|
|
177
186
|
const local = usePermission(() => props.permission, () => props.data);
|
|
178
187
|
const root = usePermDock();
|
|
188
|
+
const { defaults } = inject(permDockUiKey, {});
|
|
179
189
|
const scoped = computed(() => scopedTenant(root, props.tenant));
|
|
180
190
|
return () => {
|
|
181
191
|
const view = protectedView({
|
|
@@ -183,9 +193,15 @@ const Protected = defineComponent({
|
|
|
183
193
|
status: local.status.value,
|
|
184
194
|
decision: local.decision.value
|
|
185
195
|
}, root, props.permission, props.data, scoped.value);
|
|
196
|
+
const own = {
|
|
197
|
+
pending: slots["pending"],
|
|
198
|
+
denied: slots["denied"],
|
|
199
|
+
approval: slots["approval"]
|
|
200
|
+
};
|
|
186
201
|
switch (view.slot) {
|
|
187
|
-
case "pending": return
|
|
188
|
-
case "
|
|
202
|
+
case "pending": return slotContent("pending", own, defaults)?.() ?? null;
|
|
203
|
+
case "denied": return slotContent("denied", own, defaults)?.({ decision: view.decision }) ?? null;
|
|
204
|
+
case "approval": return slotContent("approval", own, defaults)?.({ decision: view.decision }) ?? null;
|
|
189
205
|
case "default": return slots["default"]?.({ decision: view.decision }) ?? null;
|
|
190
206
|
default: return view;
|
|
191
207
|
}
|
|
@@ -193,4 +209,4 @@ const Protected = defineComponent({
|
|
|
193
209
|
}
|
|
194
210
|
});
|
|
195
211
|
//#endregion
|
|
196
|
-
export { PermissionBoundary, Protected, approvalHeaders, describe, permdockPlugin, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useFilter, useMemberships, usePermDock, usePermission, usePermissionBoundary, usePermissions, useRoles, useSubject, useTenant };
|
|
212
|
+
export { PermissionBoundary, Protected, approvalHeaders, describe, permdockPlugin, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useMemberships, usePermDock, usePermission, usePermissionBoundary, usePermissions, useRoles, useSubject, useTenant };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { f as nowMillis } from "./time-DkWjdL98.js";
|
|
2
|
+
//#region src/workflow/waiter.ts
|
|
3
|
+
const DEFAULT_INTERVAL = 5e3;
|
|
4
|
+
/**
|
|
5
|
+
* An in-process `ApprovalWaiter` that reads `store` every `interval`
|
|
6
|
+
* milliseconds. `wake` ends a wait in the same process at once. A store read
|
|
7
|
+
* that throws counts as still pending until the request expires.
|
|
8
|
+
*/
|
|
9
|
+
function pollingApprovalWaiter(options) {
|
|
10
|
+
const interval = options.interval ?? DEFAULT_INTERVAL;
|
|
11
|
+
if (!Number.isFinite(interval) || interval <= 0) throw new RangeError("PermDock: pollingApprovalWaiter interval must be a positive number");
|
|
12
|
+
const woken = /* @__PURE__ */ new Map();
|
|
13
|
+
const decided = async (token) => {
|
|
14
|
+
try {
|
|
15
|
+
return (await options.store.get(token))?.status !== "pending";
|
|
16
|
+
} catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
return Object.freeze({
|
|
21
|
+
wait(token, waitOptions = {}) {
|
|
22
|
+
const { signal, expiresAt } = waitOptions;
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
let timer;
|
|
25
|
+
const listeners = woken.get(token) ?? /* @__PURE__ */ new Set();
|
|
26
|
+
woken.set(token, listeners);
|
|
27
|
+
const finish = (error) => {
|
|
28
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
29
|
+
listeners.delete(done);
|
|
30
|
+
if (listeners.size === 0) woken.delete(token);
|
|
31
|
+
signal?.removeEventListener("abort", aborted);
|
|
32
|
+
if (error === void 0) resolve();
|
|
33
|
+
else reject(error);
|
|
34
|
+
};
|
|
35
|
+
const done = () => {
|
|
36
|
+
finish();
|
|
37
|
+
};
|
|
38
|
+
const aborted = () => {
|
|
39
|
+
const reason = signal?.reason;
|
|
40
|
+
finish(reason instanceof Error ? reason : new Error("PermDock: approval wait aborted", { cause: reason }));
|
|
41
|
+
};
|
|
42
|
+
if (signal?.aborted === true) {
|
|
43
|
+
aborted();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
listeners.add(done);
|
|
47
|
+
signal?.addEventListener("abort", aborted, { once: true });
|
|
48
|
+
const poll = async () => {
|
|
49
|
+
if (!listeners.has(done)) return;
|
|
50
|
+
if (expiresAt !== void 0 && expiresAt.epochMilliseconds <= nowMillis() || await decided(token)) {
|
|
51
|
+
finish();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (listeners.has(done)) timer = setTimeout(() => {
|
|
55
|
+
poll();
|
|
56
|
+
}, interval);
|
|
57
|
+
};
|
|
58
|
+
poll();
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
wake(token) {
|
|
62
|
+
for (const listener of woken.get(token) ?? []) listener();
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { pollingApprovalWaiter as t };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Rt as Instant } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { m as ApprovalStore } from "./types-CCpc2Dcv.js";
|
|
3
|
+
//#region src/workflow/waiter.d.ts
|
|
4
|
+
type ApprovalWaitOptions = {
|
|
5
|
+
/** When the approval request expires; the wait ends then whatever the store says. */
|
|
6
|
+
readonly expiresAt?: Instant;
|
|
7
|
+
/** Aborting rejects the wait with the signal's reason. */
|
|
8
|
+
readonly signal?: AbortSignal;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Suspends a run until an approval request is decided. `wait` resolves once
|
|
12
|
+
* the request is no longer pending, `wake` is called for its token, or it
|
|
13
|
+
* expires; it never says how the request was decided, so the caller always
|
|
14
|
+
* decides again with the token. A durable runner implements it with its own
|
|
15
|
+
* suspension primitive.
|
|
16
|
+
*/
|
|
17
|
+
type ApprovalWaiter = {
|
|
18
|
+
/** Names the implementation in errors and events. */
|
|
19
|
+
readonly name?: string;
|
|
20
|
+
wait(token: string, options?: ApprovalWaitOptions): Promise<void>;
|
|
21
|
+
/** Called after an approver resolves the request for `token`. */
|
|
22
|
+
wake(token: string): void | Promise<void>;
|
|
23
|
+
};
|
|
24
|
+
type PollingApprovalWaiterOptions = {
|
|
25
|
+
readonly store: ApprovalStore;
|
|
26
|
+
/** Milliseconds between reads of the store. Defaults to 5000. */
|
|
27
|
+
readonly interval?: number;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* An in-process `ApprovalWaiter` that reads `store` every `interval`
|
|
31
|
+
* milliseconds. `wake` ends a wait in the same process at once. A store read
|
|
32
|
+
* that throws counts as still pending until the request expires.
|
|
33
|
+
*/
|
|
34
|
+
declare function pollingApprovalWaiter(options: PollingApprovalWaiterOptions): ApprovalWaiter;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { pollingApprovalWaiter as i, ApprovalWaiter as n, PollingApprovalWaiterOptions as r, ApprovalWaitOptions as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { i as watchCollect } from "./watch-CszoTJMq.js";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { i as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { i as dateAt } from "./time-DkWjdL98.js";
|
|
2
|
+
import { a as describeError } from "./errors-CWTY6uih.js";
|
|
3
|
+
import { t as defaultSrcPath } from "./files-D_JIzUrP.js";
|
|
4
|
+
import { r as runCollect } from "./collect-CrZJJnEF.js";
|
|
5
|
+
import { n as isConfigFile, r as loadConfig } from "./config-bs_kZeYq.js";
|
|
5
6
|
import { watch } from "node:fs";
|
|
6
7
|
import { basename, dirname, relative, resolve, sep } from "node:path";
|
|
7
8
|
//#region src/cli/watch.ts
|
|
@@ -19,7 +20,7 @@ function within(dirs, file) {
|
|
|
19
20
|
return path !== "" && !path.startsWith("..") && !path.startsWith(sep);
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
|
-
async function collectOnce(cwd, options, check, fresh, configFile) {
|
|
23
|
+
async function collectOnce(cwd, options, check, fresh, configFile, now = () => dateAt()) {
|
|
23
24
|
const config = await loadConfig(cwd, configFile, { fresh });
|
|
24
25
|
const collect = {
|
|
25
26
|
...config.collect,
|
|
@@ -30,7 +31,7 @@ async function collectOnce(cwd, options, check, fresh, configFile) {
|
|
|
30
31
|
config,
|
|
31
32
|
collect,
|
|
32
33
|
check,
|
|
33
|
-
now:
|
|
34
|
+
now: now(),
|
|
34
35
|
fresh
|
|
35
36
|
});
|
|
36
37
|
const inputs = [
|
|
@@ -67,7 +68,7 @@ function createCollectScheduler(cwd, options, settings) {
|
|
|
67
68
|
async function run(check) {
|
|
68
69
|
const fresh = loaded;
|
|
69
70
|
loaded = true;
|
|
70
|
-
const result = await collectOnce(cwd, options, check, fresh, settings?.configFile);
|
|
71
|
+
const result = await collectOnce(cwd, options, check, fresh, settings?.configFile, settings?.now);
|
|
71
72
|
ignored = new Set(result.written);
|
|
72
73
|
inputs = result.inputs;
|
|
73
74
|
sources = result.sources;
|
|
@@ -124,5 +125,43 @@ function createCollectScheduler(cwd, options, settings) {
|
|
|
124
125
|
close
|
|
125
126
|
};
|
|
126
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* `collect --watch`: one collect now, then one per change until Ctrl-C.
|
|
130
|
+
* Under `--json` each collect is an NDJSON event on stdout; otherwise a
|
|
131
|
+
* line on stderr.
|
|
132
|
+
*/
|
|
133
|
+
async function watchCollect(ctx, overrides) {
|
|
134
|
+
const emit = (status, message) => {
|
|
135
|
+
if (ctx.json) ctx.io.stdout(`${JSON.stringify({
|
|
136
|
+
event: "collect",
|
|
137
|
+
status,
|
|
138
|
+
message,
|
|
139
|
+
at: dateAt().toISOString()
|
|
140
|
+
})}\n`);
|
|
141
|
+
else ctx.log(message);
|
|
142
|
+
};
|
|
143
|
+
const scheduler = createCollectScheduler(ctx.cwd, { collect: overrides }, {
|
|
144
|
+
...ctx.configFile === void 0 ? {} : { configFile: ctx.configFile },
|
|
145
|
+
report: (message) => {
|
|
146
|
+
emit(message === void 0 ? "success" : "error", message ?? "catalog updated");
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
try {
|
|
150
|
+
const message = await scheduler.run(false);
|
|
151
|
+
emit(message === void 0 ? "success" : "error", message ?? "catalog written");
|
|
152
|
+
} catch (error) {
|
|
153
|
+
emit("error", describeError(error));
|
|
154
|
+
}
|
|
155
|
+
scheduler.watch();
|
|
156
|
+
ctx.signal.addEventListener("abort", () => {
|
|
157
|
+
scheduler.close();
|
|
158
|
+
});
|
|
159
|
+
ctx.log("watching for changes; Ctrl-C to stop");
|
|
160
|
+
return {
|
|
161
|
+
code: 0,
|
|
162
|
+
output: "",
|
|
163
|
+
streamed: true
|
|
164
|
+
};
|
|
165
|
+
}
|
|
127
166
|
//#endregion
|
|
128
|
-
export { createCollectScheduler as n, report as r, collectOnce as t };
|
|
167
|
+
export { watchCollect as i, createCollectScheduler as n, report as r, collectOnce as t };
|
package/dist/webmcp/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Nn as Decision, Vt as Snapshot } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { E as PermissionTree, w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
3
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
4
|
//#region src/webmcp/types.d.ts
|
|
5
5
|
type WebMcpClientStatus = "ready" | "pending" | "stale" | "server-only";
|