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,12 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { T as isOperationEffect } from "./src-DLfUWFAI.js";
|
|
3
|
+
import { o as isPermission } from "./permission-registry-Br4jSNVi.js";
|
|
4
|
+
import { r as isOperationRisk } from "./permissions-B-wCP5ZC.js";
|
|
5
|
+
import { a as describeError, i as configError } from "./errors-CWTY6uih.js";
|
|
6
|
+
import { a as rel, r as listSourceFiles, s as writeFileEnsuringDir, t as defaultSrcPath } from "./files-D_JIzUrP.js";
|
|
7
|
+
import { a as formatCatalogJson, n as catalogForCompare, t as buildCatalog } from "./catalog-doc-C9wjsfNY.js";
|
|
8
|
+
import { a as loadModule, i as loadConfiguredPolicy, r as leavesOf, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
|
|
3
9
|
import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as shortDiff } from "./text-diff-BdkkYSbi.js";
|
|
7
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { t as shortDiff } from "./text-diff-BQcUapOb.js";
|
|
11
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
8
12
|
import { dirname, relative, resolve } from "node:path";
|
|
9
13
|
import { Visitor, parseSync, visitorKeys } from "oxc-parser";
|
|
14
|
+
//#region src/cli/catalog-operations.ts
|
|
15
|
+
function metaOf(name, value) {
|
|
16
|
+
const fail = (field) => {
|
|
17
|
+
throw configError(`PermDock CLI: operations.${name}.meta${field} is invalid`);
|
|
18
|
+
};
|
|
19
|
+
if (!isRecord(value)) return fail("");
|
|
20
|
+
const { risk, effects, title } = value;
|
|
21
|
+
if (risk !== void 0 && !isOperationRisk(risk)) return fail(".risk");
|
|
22
|
+
if (effects !== void 0 && (!Array.isArray(effects) || !effects.every(isOperationEffect))) return fail(".effects");
|
|
23
|
+
if (title !== void 0 && typeof title !== "string") return fail(".title");
|
|
24
|
+
return {
|
|
25
|
+
...risk === void 0 ? {} : { risk },
|
|
26
|
+
...effects === void 0 ? {} : { effects },
|
|
27
|
+
...title === void 0 ? {} : { title }
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The catalog entries of a `defineOperations` map, in definition order.
|
|
32
|
+
* Throws for a value that is not one, such as a module that exports the
|
|
33
|
+
* definitions object instead of the map.
|
|
34
|
+
*/
|
|
35
|
+
function catalogOperations(value) {
|
|
36
|
+
if (!isRecord(value)) throw configError("PermDock CLI: operations export is not an operation map");
|
|
37
|
+
const out = [];
|
|
38
|
+
for (const name of Object.keys(value)) {
|
|
39
|
+
const operation = value[name];
|
|
40
|
+
if (!isRecord(operation) || operation["name"] !== name || !isPermission(operation["permission"])) throw configError(`PermDock CLI: operations.${name} is not an operation; export the defineOperations result`);
|
|
41
|
+
const results = operation["results"];
|
|
42
|
+
if (results !== void 0 && !isPermission(results)) throw configError(`PermDock CLI: operations.${name}.results is not a permission`);
|
|
43
|
+
out.push({
|
|
44
|
+
name,
|
|
45
|
+
permission: operation["permission"].key,
|
|
46
|
+
...results === void 0 ? {} : { results: results.key },
|
|
47
|
+
meta: metaOf(name, operation["meta"])
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
/** The configured operations module's catalog entries; `undefined` without one. Throws when it is missing or does not load. */
|
|
53
|
+
async function loadConfiguredOperations(cwd, path, options) {
|
|
54
|
+
if (path === void 0) return;
|
|
55
|
+
const abs = resolve(cwd, path);
|
|
56
|
+
if (!existsSync(abs)) throw configError(`PermDock CLI: operations module not found: ${rel(cwd, abs)}`);
|
|
57
|
+
const mod = await loadModule(abs, options);
|
|
58
|
+
return catalogOperations(pickNamed(mod, ["operations"]));
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
10
61
|
//#region src/cli/scan.ts
|
|
11
62
|
/** oxc reports recoverable problems as `Warning` or `Advice`; only `Error` leaves the program incomplete. */
|
|
12
63
|
const PARSE_ERRORS = /* @__PURE__ */ new Set(["Error"]);
|
|
@@ -20,6 +71,7 @@ const CHECK_CALLS = /* @__PURE__ */ new Set([
|
|
|
20
71
|
"actions",
|
|
21
72
|
"usePermission",
|
|
22
73
|
"getPermission",
|
|
74
|
+
"requirePermission",
|
|
23
75
|
"protect",
|
|
24
76
|
"allow",
|
|
25
77
|
"deny",
|
|
@@ -83,7 +135,7 @@ function scanSources(cwd, files, knownKeys) {
|
|
|
83
135
|
const callee = calleeName(node.callee);
|
|
84
136
|
if (callee === "snapshot" || callee === "snapshotFor") snapshots.push({
|
|
85
137
|
file: fileRel,
|
|
86
|
-
line: lineAt(node.start
|
|
138
|
+
line: lineAt(node.start),
|
|
87
139
|
include: includeOf(node.arguments?.[callee === "snapshot" ? 0 : 2], isRoot)
|
|
88
140
|
});
|
|
89
141
|
}
|
|
@@ -223,7 +275,7 @@ function boundToRoot(name, ancestors, definitions, cache) {
|
|
|
223
275
|
}
|
|
224
276
|
function recordCall(node, parent, lineAt, fileRel, roots, definitionFiles, usages, unknown, dynamic, roleNames, planNames, _allowKeys, knownKeys) {
|
|
225
277
|
const callee = calleeName(node.callee);
|
|
226
|
-
const line = lineAt(node.start
|
|
278
|
+
const line = lineAt(node.start);
|
|
227
279
|
if (callee === "definePermissions" || callee === "defineRoles" || callee === "definePlans") {
|
|
228
280
|
const name = declaredName(parent);
|
|
229
281
|
if (name !== void 0) {
|
|
@@ -262,7 +314,7 @@ function recordMember(node, parent, lineAt, fileRel, isRoot, usages, unknown, dy
|
|
|
262
314
|
const root = rootName(node);
|
|
263
315
|
if (root !== void 0 && isRoot(root)) dynamic.push({
|
|
264
316
|
file: fileRel,
|
|
265
|
-
line: lineAt(node.start
|
|
317
|
+
line: lineAt(node.start),
|
|
266
318
|
call: callName(parent)
|
|
267
319
|
});
|
|
268
320
|
return;
|
|
@@ -276,7 +328,7 @@ function recordMember(node, parent, lineAt, fileRel, isRoot, usages, unknown, dy
|
|
|
276
328
|
const call = callName(parent);
|
|
277
329
|
const usage = {
|
|
278
330
|
file: fileRel,
|
|
279
|
-
line: lineAt(node.start
|
|
331
|
+
line: lineAt(node.start),
|
|
280
332
|
call
|
|
281
333
|
};
|
|
282
334
|
if (call === "allow") allowKeys.add(key);
|
|
@@ -422,8 +474,20 @@ async function runCollect(input) {
|
|
|
422
474
|
const knownKeys = new Set(leavesOf(tree).map((leaf) => leaf.key));
|
|
423
475
|
const scan = scanSources(input.cwd, files, knownKeys);
|
|
424
476
|
const policy = input.loadPolicy === void 0 ? await loadConfiguredPolicy(input.cwd, input.config.policy, load) : await input.loadPolicy();
|
|
477
|
+
let operations;
|
|
478
|
+
try {
|
|
479
|
+
operations = await loadConfiguredOperations(input.cwd, input.config.operations, load);
|
|
480
|
+
} catch (error) {
|
|
481
|
+
return {
|
|
482
|
+
code: 2,
|
|
483
|
+
document: void 0,
|
|
484
|
+
scan: void 0,
|
|
485
|
+
outPath,
|
|
486
|
+
message: describeError(error)
|
|
487
|
+
};
|
|
488
|
+
}
|
|
425
489
|
const generatedAt = input.now.toISOString();
|
|
426
|
-
const document = buildCatalog(tree, scan, generatedAt, policy);
|
|
490
|
+
const document = buildCatalog(tree, scan, generatedAt, policy, operations);
|
|
427
491
|
const next = formatCatalogJson(document);
|
|
428
492
|
if (input.check) {
|
|
429
493
|
if (!existsSync(outPath)) return {
|
|
@@ -436,7 +500,7 @@ async function runCollect(input) {
|
|
|
436
500
|
const current = readFileSync(outPath, "utf8");
|
|
437
501
|
const currentDoc = JSON.parse(current);
|
|
438
502
|
const onDisk = catalogForCompare(currentDoc);
|
|
439
|
-
const generated = catalogForCompare(input.scanPath === void 0 || samePaths(input.scanPath, srcPath) ? document : buildCatalog(tree, scanSources(input.cwd, listSourceFiles(input.cwd, srcPath), knownKeys), generatedAt, policy));
|
|
503
|
+
const generated = catalogForCompare(input.scanPath === void 0 || samePaths(input.scanPath, srcPath) ? document : buildCatalog(tree, scanSources(input.cwd, listSourceFiles(input.cwd, srcPath), knownKeys), generatedAt, policy, operations));
|
|
440
504
|
if (onDisk !== generated) {
|
|
441
505
|
const file = rel(input.cwd, outPath);
|
|
442
506
|
return {
|
|
@@ -455,8 +519,7 @@ async function runCollect(input) {
|
|
|
455
519
|
message: `catalog up to date: ${rel(input.cwd, outPath)}`
|
|
456
520
|
};
|
|
457
521
|
}
|
|
458
|
-
|
|
459
|
-
writeFileSync(outPath, next);
|
|
522
|
+
writeFileEnsuringDir(outPath, next);
|
|
460
523
|
const written = [outPath];
|
|
461
524
|
const barrel = input.collect.barrel ?? input.config.collect?.barrel;
|
|
462
525
|
if (barrel !== void 0 && barrel !== false) {
|
|
@@ -495,8 +558,7 @@ import { permissions as collected } from '${specifier.startsWith(".") ? specifie
|
|
|
495
558
|
|
|
496
559
|
export const permissions = mergePermissions(collected)
|
|
497
560
|
`;
|
|
498
|
-
|
|
499
|
-
writeFileSync(abs, body);
|
|
561
|
+
writeFileEnsuringDir(abs, body);
|
|
500
562
|
}
|
|
501
563
|
//#endregion
|
|
502
|
-
export { scanSources as i, guessPermissions as n, runCollect as r, barrelFile as t };
|
|
564
|
+
export { loadConfiguredOperations as a, scanSources as i, guessPermissions as n, runCollect as r, barrelFile as t };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { n as CliError } from "./errors-CWTY6uih.js";
|
|
2
|
+
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
3
|
+
import { o as fileOut, t as checkFlag } from "./flags-C3DktBDY.js";
|
|
4
|
+
//#region src/cli/commands/collect.ts
|
|
5
|
+
const collect = defineLeaf({
|
|
6
|
+
flags: {
|
|
7
|
+
...checkFlag,
|
|
8
|
+
src: {
|
|
9
|
+
type: "string",
|
|
10
|
+
repeatable: true,
|
|
11
|
+
description: "Source roots or globs",
|
|
12
|
+
valueHint: "path"
|
|
13
|
+
},
|
|
14
|
+
out: {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "Catalog file to write",
|
|
17
|
+
valueHint: "file"
|
|
18
|
+
},
|
|
19
|
+
watch: {
|
|
20
|
+
type: "boolean",
|
|
21
|
+
description: "Collect again when a source, config or policy file changes"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
async run(ctx, { flags }) {
|
|
25
|
+
const out = fileOut("collect", flags.out);
|
|
26
|
+
const overrides = {
|
|
27
|
+
...flags.src.length > 0 ? { srcPath: [...flags.src] } : {},
|
|
28
|
+
...out === void 0 ? {} : { out }
|
|
29
|
+
};
|
|
30
|
+
if (flags.watch) {
|
|
31
|
+
if (flags.check) throw new CliError("usage", "collect: --watch writes the catalog; drop --check", { code: "invalid_value" });
|
|
32
|
+
const { watchCollect } = await import("./watch-Cb-NcaUw.js");
|
|
33
|
+
return watchCollect(ctx, overrides);
|
|
34
|
+
}
|
|
35
|
+
const result = await (await import("./collect-FlXJlhus.js")).runCollect({
|
|
36
|
+
cwd: ctx.cwd,
|
|
37
|
+
config: ctx.config,
|
|
38
|
+
collect: overrides,
|
|
39
|
+
check: flags.check,
|
|
40
|
+
now: ctx.now,
|
|
41
|
+
io: ctx.io
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
code: result.code,
|
|
45
|
+
output: result.message,
|
|
46
|
+
...result.document === void 0 ? {} : { data: {
|
|
47
|
+
out: result.outPath,
|
|
48
|
+
permissions: result.document.permissions.length,
|
|
49
|
+
...flags.check ? { stale: result.code !== 0 } : {}
|
|
50
|
+
} }
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
//#endregion
|
|
55
|
+
export { collect };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { r as runCollect } from "./collect-CrZJJnEF.js";
|
|
@@ -15,5 +15,15 @@ function isReadonlyArray(value) {
|
|
|
15
15
|
function sole(items) {
|
|
16
16
|
return items.length === 1 ? items[0] : void 0;
|
|
17
17
|
}
|
|
18
|
+
/** A plain object: not `null` and not an array. */
|
|
19
|
+
function isRecord(value) {
|
|
20
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
21
|
+
}
|
|
22
|
+
/** The own entries of `record` whose key is not in `reserved`. */
|
|
23
|
+
function omitKeys(record, reserved) {
|
|
24
|
+
const out = {};
|
|
25
|
+
for (const [key, value] of Object.entries(record)) if (!reserved.has(key)) out[key] = value;
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
18
28
|
//#endregion
|
|
19
|
-
export { isReadonlyArray as n,
|
|
29
|
+
export { sole as a, omitKeys as i, isReadonlyArray as n, isRecord as r, compact as t };
|
package/dist/compile/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as GraphSqlPart, r as RelationsMapping, t as GraphSql } from "../graph-sql-B-dsAT6j.js";
|
|
2
|
-
import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-
|
|
2
|
+
import { a as CompiledWhere, c as compileWhere, i as CompiledSql, l as escapeLike, n as CompiledCompare, o as MembershipTable, r as CompiledExists, s as MembershipsMapping, t as CompileWhereOptions } from "../compile-Ckm2HqBZ.js";
|
|
3
3
|
export { type CompileWhereOptions, type CompiledCompare, type CompiledExists, type CompiledSql, type CompiledWhere, type GraphSql, type GraphSqlPart, type MembershipTable, type MembershipsMapping, type RelationsMapping, compileWhere, escapeLike };
|
package/dist/compile/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { compileWhere, escapeLike };
|
|
1
|
+
export { t as compileWhere, n as escapeLike } from "../compile-CMqMx_IN.js";
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { c as isConditionRef, i as resolveConditionRef, s as isConditionDate, u as parentHop } from "./refs-
|
|
4
|
-
import { n as PermDockValidationError } from "./validation-error-
|
|
5
|
-
import { t as expiredAt } from "./expiry-
|
|
6
|
-
import { c as
|
|
1
|
+
import { a as sole, n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { t as assertSafeKey } from "./paths-DXSHAMIa.js";
|
|
3
|
+
import { c as isConditionRef, i as resolveConditionRef, s as isConditionDate, u as parentHop } from "./refs-K6eWUJ0H.js";
|
|
4
|
+
import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
|
|
5
|
+
import { t as expiredAt } from "./expiry-D4_YKRKD.js";
|
|
6
|
+
import { a as expandRelation, c as isEdgeRelation, d as isSelfParented, l as isFieldRelation, o as groupEntries, p as restrictedFor, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
|
|
7
|
+
import { o as epochSeconds, t as INVALID_NOW } from "./time-DkWjdL98.js";
|
|
8
|
+
import { c as rootScope, d as scopeList, l as scopeChain, m as tenantOf, o as resolveScope, p as subjectMemberships } from "./scopes-CUPSjo9q.js";
|
|
9
|
+
import { t as isoInstant } from "./instant-BluqDvyS.js";
|
|
7
10
|
//#region src/conditions/graph-sql.ts
|
|
8
11
|
/** A Postgres identifier, schema-qualified names split on `.`. */
|
|
9
12
|
function quoteSqlName(name) {
|
|
@@ -338,8 +341,8 @@ function unwrap(value, subject) {
|
|
|
338
341
|
return isScalar(resolved) ? resolved : null;
|
|
339
342
|
}
|
|
340
343
|
if (isConditionDate(value)) {
|
|
341
|
-
const
|
|
342
|
-
return
|
|
344
|
+
const instant = isoInstant(value.date);
|
|
345
|
+
return instant === void 0 ? null : new Date(instant);
|
|
343
346
|
}
|
|
344
347
|
if (isReadonlyArray(value)) return value.map((item) => unwrap(item, subject));
|
|
345
348
|
return value;
|
|
@@ -495,7 +498,8 @@ function compileExists(condition, table, subject, now, mappings, scopes) {
|
|
|
495
498
|
}
|
|
496
499
|
function compileMemberOf(condition, options) {
|
|
497
500
|
assertSafeKey(condition.field, "condition field");
|
|
498
|
-
const now = options.now
|
|
501
|
+
const now = epochSeconds(options.now);
|
|
502
|
+
if (!Number.isFinite(now)) throw new TypeError(`PermDock: compileWhere ${INVALID_NOW.message}`);
|
|
499
503
|
const scopes = options.scopes ?? scopeList(void 0);
|
|
500
504
|
const scope = condition.scope === "resource" ? void 0 : resolveScope(scopes, condition.scope);
|
|
501
505
|
if (condition.scope !== "resource" && scope === void 0) return NEVER;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Rt as Instant, cn as Scope, ir as Subject, lr as Condition } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { N as ResourceNode } from "./vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { c as WhereResult } from "./permdock-D7eeLJER.js";
|
|
3
4
|
import { r as RelationsMapping, t as GraphSql } from "./graph-sql-B-dsAT6j.js";
|
|
4
5
|
//#region src/conditions/compile.d.ts
|
|
5
6
|
type MembershipTable = {
|
|
@@ -32,7 +33,8 @@ type MembershipsMapping = {
|
|
|
32
33
|
type CompileWhereOptions = {
|
|
33
34
|
readonly subject?: Subject;
|
|
34
35
|
readonly memberships?: MembershipsMapping;
|
|
35
|
-
|
|
36
|
+
/** The clock membership expiry is read at; a `Temporal.Instant` fits. Defaults to the current time. */
|
|
37
|
+
readonly now?: Instant;
|
|
36
38
|
/** The policy's scopes; `where()` results carry them. Defaults to the implicit `tenant` / `team` pair. */
|
|
37
39
|
readonly scopes?: readonly Scope[];
|
|
38
40
|
/** Where the relation graph lives; without it a `related` node is refused. */
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { n as CliError } from "./errors-CWTY6uih.js";
|
|
2
|
+
import { a as suggestion, o as GLOBAL_FLAGS } from "./args-IIolxxKA.js";
|
|
3
|
+
import { a as resolve } from "./manifest-CtKR3GXL.js";
|
|
4
|
+
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
5
|
+
//#region src/cli/core/completion.ts
|
|
6
|
+
const SHELLS = [
|
|
7
|
+
"bash",
|
|
8
|
+
"zsh",
|
|
9
|
+
"fish"
|
|
10
|
+
];
|
|
11
|
+
function flagNames(flags) {
|
|
12
|
+
return Object.entries(flags).filter(([, flag]) => flag.hidden !== true).map(([name]) => `--${name}`);
|
|
13
|
+
}
|
|
14
|
+
/** The flag `token` names when it waits for a separate value, as `--only` does and `--only=x` does not. */
|
|
15
|
+
function valueFlag(flags, token) {
|
|
16
|
+
if (token === void 0 || !token.startsWith("--") || token.includes("=")) return;
|
|
17
|
+
const flag = flags[token.slice(2)];
|
|
18
|
+
return flag === void 0 || flag.type === "boolean" ? void 0 : flag;
|
|
19
|
+
}
|
|
20
|
+
/** The positional the next bare word fills, after the words already typed past the leaf's path. */
|
|
21
|
+
function positionalAt(leaf, typed) {
|
|
22
|
+
let index = 0;
|
|
23
|
+
for (let i = 0; i < typed.length; i += 1) {
|
|
24
|
+
const token = typed[i] ?? "";
|
|
25
|
+
if (token === "--") return;
|
|
26
|
+
if (token.startsWith("-")) {
|
|
27
|
+
if (valueFlag({
|
|
28
|
+
...GLOBAL_FLAGS,
|
|
29
|
+
...leaf.flags
|
|
30
|
+
}, token) !== void 0) i += 1;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
index += 1;
|
|
34
|
+
}
|
|
35
|
+
const positionals = leaf.positionals ?? [];
|
|
36
|
+
const last = positionals.at(-1);
|
|
37
|
+
return positionals[index] ?? (last?.variadic === true ? last : void 0);
|
|
38
|
+
}
|
|
39
|
+
/** Values from `complete`, matched against what follows the last comma when the value is a list. */
|
|
40
|
+
async function valuesFor(complete, partial, list) {
|
|
41
|
+
const cut = list ? partial.lastIndexOf(",") + 1 : 0;
|
|
42
|
+
const head = partial.slice(0, cut);
|
|
43
|
+
const taken = head.split(",");
|
|
44
|
+
const tail = partial.slice(cut);
|
|
45
|
+
return (await complete()).filter((value) => value.startsWith(tail) && !taken.includes(value)).map((value) => head + value);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Candidates for the last word of `words`, the tokens typed after
|
|
49
|
+
* `permdock`. An empty list leaves the shell to complete file names.
|
|
50
|
+
*/
|
|
51
|
+
async function candidates(words) {
|
|
52
|
+
const partial = words.at(-1) ?? "";
|
|
53
|
+
const before = words.slice(0, -1);
|
|
54
|
+
const resolved = resolve(before);
|
|
55
|
+
if (resolved.kind === "group") {
|
|
56
|
+
if (resolved.unknown !== void 0) return [];
|
|
57
|
+
return (partial.startsWith("-") ? flagNames(GLOBAL_FLAGS) : resolved.entry.children.filter((child) => child.kind === "group" || child.hidden !== true).map((child) => child.name)).filter((name) => name.startsWith(partial));
|
|
58
|
+
}
|
|
59
|
+
const leaf = await resolved.entry.load();
|
|
60
|
+
const flags = {
|
|
61
|
+
...GLOBAL_FLAGS,
|
|
62
|
+
...leaf.flags
|
|
63
|
+
};
|
|
64
|
+
const flag = valueFlag(flags, before.at(-1));
|
|
65
|
+
if (flag?.type === "enum") return valuesFor(() => flag.options, partial, flag.repeatable === true);
|
|
66
|
+
if (flag?.type === "string") return flag.complete === void 0 ? [] : valuesFor(flag.complete, partial, flag.repeatable === true || flag.list === true);
|
|
67
|
+
if (partial.startsWith("-")) return flagNames(flags).filter((name) => name.startsWith(partial));
|
|
68
|
+
const positional = positionalAt(leaf, resolved.rest);
|
|
69
|
+
return positional?.complete === void 0 ? [] : valuesFor(positional.complete, partial, false);
|
|
70
|
+
}
|
|
71
|
+
const BASH = `# permdock completion for bash: eval "$(permdock completion bash)"
|
|
72
|
+
_permdock() {
|
|
73
|
+
local -a words=("\${COMP_WORDS[@]:1:COMP_CWORD}")
|
|
74
|
+
local IFS=$'\\n'
|
|
75
|
+
COMPREPLY=($(permdock __complete -- "\${words[@]}" 2>/dev/null))
|
|
76
|
+
if [ \${#COMPREPLY[@]} -eq 0 ]; then
|
|
77
|
+
COMPREPLY=($(compgen -f -- "\${COMP_WORDS[COMP_CWORD]}"))
|
|
78
|
+
fi
|
|
79
|
+
}
|
|
80
|
+
complete -o filenames -F _permdock permdock
|
|
81
|
+
`;
|
|
82
|
+
const ZSH = `#compdef permdock
|
|
83
|
+
# permdock completion for zsh: permdock completion zsh > "\${fpath[1]}/_permdock"
|
|
84
|
+
_permdock() {
|
|
85
|
+
local -a reply
|
|
86
|
+
reply=("\${(@f)$(permdock __complete -- "\${words[@]:1:CURRENT-1}" 2>/dev/null)}")
|
|
87
|
+
if (( \${#reply[@]} == 0 )) || [[ -z "\${reply[1]}" ]]; then
|
|
88
|
+
_files
|
|
89
|
+
else
|
|
90
|
+
compadd -a reply
|
|
91
|
+
fi
|
|
92
|
+
}
|
|
93
|
+
compdef _permdock permdock
|
|
94
|
+
`;
|
|
95
|
+
const FISH = `# permdock completion for fish: permdock completion fish > ~/.config/fish/completions/permdock.fish
|
|
96
|
+
function __permdock_complete
|
|
97
|
+
set -l words (commandline -opc)[2..-1] (commandline -ct)
|
|
98
|
+
permdock __complete -- $words 2>/dev/null
|
|
99
|
+
end
|
|
100
|
+
complete -c permdock -f -a '(__permdock_complete)'
|
|
101
|
+
`;
|
|
102
|
+
function completionScript(shell) {
|
|
103
|
+
switch (shell) {
|
|
104
|
+
case "bash": return BASH;
|
|
105
|
+
case "zsh": return ZSH;
|
|
106
|
+
case "fish": return FISH;
|
|
107
|
+
default: return shell;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
//#region src/cli/commands/completion.ts
|
|
112
|
+
const completion = defineLeaf({
|
|
113
|
+
positionals: [{
|
|
114
|
+
name: "shell",
|
|
115
|
+
description: "bash, zsh or fish",
|
|
116
|
+
required: true
|
|
117
|
+
}],
|
|
118
|
+
flags: {},
|
|
119
|
+
run(_ctx, { args }) {
|
|
120
|
+
const typed = args["shell"] ?? "";
|
|
121
|
+
const shell = SHELLS.find((name) => name === typed);
|
|
122
|
+
if (shell === void 0) throw new CliError("usage", `completion: unknown shell '${typed}'.${suggestion(typed, SHELLS)} Use bash, zsh or fish.`, { code: "invalid_value" });
|
|
123
|
+
return {
|
|
124
|
+
code: 0,
|
|
125
|
+
output: completionScript(shell),
|
|
126
|
+
data: { shell }
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
const complete = defineLeaf({
|
|
131
|
+
flags: {},
|
|
132
|
+
async run(ctx, { passthrough }) {
|
|
133
|
+
const found = await candidates(passthrough);
|
|
134
|
+
ctx.io.stdout(found.length === 0 ? "" : `${found.join("\n")}\n`);
|
|
135
|
+
return {
|
|
136
|
+
code: 0,
|
|
137
|
+
output: "",
|
|
138
|
+
streamed: true
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
//#endregion
|
|
143
|
+
export { complete, completion };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
+
import { a as failOnFlag } from "./flags-C3DktBDY.js";
|
|
3
|
+
//#region src/cli/commands/config.ts
|
|
4
|
+
const config = defineLeaf({
|
|
5
|
+
flags: {
|
|
6
|
+
print: {
|
|
7
|
+
type: "boolean",
|
|
8
|
+
description: "Print the effective config as JSON: the file, as written, and each default"
|
|
9
|
+
},
|
|
10
|
+
...failOnFlag
|
|
11
|
+
},
|
|
12
|
+
async run(ctx, { flags }) {
|
|
13
|
+
const { runConfig } = await import("./config-report-DUgj62Ai.js");
|
|
14
|
+
return runConfig({
|
|
15
|
+
cwd: ctx.cwd,
|
|
16
|
+
config: ctx.config,
|
|
17
|
+
file: ctx.configPath,
|
|
18
|
+
warnings: ctx.configWarnings,
|
|
19
|
+
print: flags.print,
|
|
20
|
+
json: ctx.json,
|
|
21
|
+
strict: flags["fail-on"] === "warning"
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
//#endregion
|
|
26
|
+
export { config };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { n as CliError } from "./errors-CWTY6uih.js";
|
|
2
3
|
import { existsSync } from "node:fs";
|
|
3
4
|
import { relative, resolve } from "node:path";
|
|
4
|
-
//#region src/cli/config-schema.ts
|
|
5
|
+
//#region src/cli/project/config-schema.ts
|
|
5
6
|
const SECTIONS = {
|
|
6
7
|
collect: {
|
|
7
8
|
srcPath: true,
|
|
@@ -25,6 +26,7 @@ const SECTIONS = {
|
|
|
25
26
|
teamType: true,
|
|
26
27
|
scopeTypes: true,
|
|
27
28
|
roleClaim: true,
|
|
29
|
+
roleValues: true,
|
|
28
30
|
gucPrefix: true,
|
|
29
31
|
out: true,
|
|
30
32
|
drizzle: true,
|
|
@@ -33,6 +35,8 @@ const SECTIONS = {
|
|
|
33
35
|
authorize: true,
|
|
34
36
|
policyPerRole: true,
|
|
35
37
|
customRoles: true,
|
|
38
|
+
triggers: true,
|
|
39
|
+
audit: true,
|
|
36
40
|
capabilities: true,
|
|
37
41
|
anonymousSignIns: true,
|
|
38
42
|
fields: true,
|
|
@@ -59,7 +63,10 @@ const SECTIONS = {
|
|
|
59
63
|
realtime: true,
|
|
60
64
|
storage: true
|
|
61
65
|
},
|
|
62
|
-
supabase: {
|
|
66
|
+
supabase: {
|
|
67
|
+
hook: true,
|
|
68
|
+
schemas: true
|
|
69
|
+
},
|
|
63
70
|
powersync: {
|
|
64
71
|
out: true,
|
|
65
72
|
resources: true,
|
|
@@ -79,11 +86,9 @@ const SECTIONS = {
|
|
|
79
86
|
const TOP_LEVEL = /* @__PURE__ */ new Set([
|
|
80
87
|
"permissions",
|
|
81
88
|
"policy",
|
|
89
|
+
"operations",
|
|
82
90
|
...Object.keys(SECTIONS)
|
|
83
91
|
]);
|
|
84
|
-
function isRecord(value) {
|
|
85
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
86
|
-
}
|
|
87
92
|
function isSection(key) {
|
|
88
93
|
return Object.hasOwn(SECTIONS, key);
|
|
89
94
|
}
|
|
@@ -101,7 +106,7 @@ function parseConfig(value, file) {
|
|
|
101
106
|
const warnings = [];
|
|
102
107
|
const unknown = (path, known) => `${file}: unknown key ${path}; PermDock reads ${[...known].join(", ")}`;
|
|
103
108
|
for (const [key, entry] of Object.entries(value)) {
|
|
104
|
-
if (key === "permissions" || key === "policy") {
|
|
109
|
+
if (key === "permissions" || key === "policy" || key === "operations") {
|
|
105
110
|
if (entry !== void 0 && typeof entry !== "string") throw new CliError("usage", `PermDock CLI: ${file}: ${key} must be a module path string`);
|
|
106
111
|
continue;
|
|
107
112
|
}
|
|
@@ -120,7 +125,7 @@ function parseConfig(value, file) {
|
|
|
120
125
|
};
|
|
121
126
|
}
|
|
122
127
|
//#endregion
|
|
123
|
-
//#region src/cli/config.ts
|
|
128
|
+
//#region src/cli/project/config.ts
|
|
124
129
|
const CONFIG_FILES = [
|
|
125
130
|
"permdock.config.ts",
|
|
126
131
|
"permdock.config.mts",
|
|
@@ -140,8 +145,8 @@ async function readConfig(cwd, fromFlag, options) {
|
|
|
140
145
|
warnings: [],
|
|
141
146
|
file: void 0
|
|
142
147
|
};
|
|
143
|
-
if (!existsSync(path)) throw new
|
|
144
|
-
const { loadModule, pickNamed } = await import("./load-
|
|
148
|
+
if (!existsSync(path)) throw new CliError("usage", `PermDock CLI: config file not found: ${path}`, { code: "config_not_found" });
|
|
149
|
+
const { loadModule, pickNamed } = await import("./load-BxEtwlBS.js");
|
|
145
150
|
return {
|
|
146
151
|
...parseConfig(pickNamed(await loadModule(path, options), ["default"]), relative(cwd, path).replaceAll("\\", "/")),
|
|
147
152
|
file: path
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as rel, t as defaultSrcPath } from "./files-D_JIzUrP.js";
|
|
2
|
+
import { r as CONFIG_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
|
|
3
|
+
import { n as guessPermissions, t as barrelFile } from "./collect-CrZJJnEF.js";
|
|
2
4
|
import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import "./
|
|
6
|
-
import { r as MIGRATION_DIRS } from "./supabase-config-Bj3iDH2I.js";
|
|
7
|
-
import { t as DEFAULT_SENSITIVE_ACTIONS } from "./doctor-collect-CjdO0wQX.js";
|
|
5
|
+
import "./sources-vs5dGOsS.js";
|
|
6
|
+
import { t as DOCS_BASE } from "./manifest-CtKR3GXL.js";
|
|
7
|
+
import { n as MIGRATION_DIRS, t as DEFAULT_SENSITIVE_ACTIONS } from "./constants-DcJABbLW.js";
|
|
8
8
|
//#region src/cli/config-report.ts
|
|
9
9
|
function configReport(input) {
|
|
10
10
|
const { cwd, config } = input;
|
|
@@ -31,13 +31,22 @@ function configReport(input) {
|
|
|
31
31
|
function runConfig(input) {
|
|
32
32
|
const report = configReport(input);
|
|
33
33
|
const code = input.strict && report.warnings.length > 0 ? 1 : 0;
|
|
34
|
+
const findings = report.warnings.map((warning) => ({
|
|
35
|
+
code: "config-warning",
|
|
36
|
+
severity: "warning",
|
|
37
|
+
message: warning,
|
|
38
|
+
...report.file === null ? {} : { file: report.file },
|
|
39
|
+
docs: `${DOCS_BASE}/config`
|
|
40
|
+
}));
|
|
34
41
|
if (input.print || input.json) return {
|
|
35
42
|
code,
|
|
36
|
-
output: `${JSON.stringify(report, null, 2)}\n
|
|
43
|
+
output: `${JSON.stringify(report, null, 2)}\n`,
|
|
44
|
+
findings
|
|
37
45
|
};
|
|
38
46
|
return {
|
|
39
47
|
code,
|
|
40
|
-
output: `${[report.file === null ? "no permdock.config file; every option takes its default" : `${report.file}: ${report.warnings.length === 0 ? "ok" : `${String(report.warnings.length)} warning${report.warnings.length === 1 ? "" : "s"}`}`, ...report.warnings.map((warning) => ` warn ${warning}`)].join("\n")}\n
|
|
48
|
+
output: `${[report.file === null ? "no permdock.config file; every option takes its default" : `${report.file}: ${report.warnings.length === 0 ? "ok" : `${String(report.warnings.length)} warning${report.warnings.length === 1 ? "" : "s"}`}`, ...report.warnings.map((warning) => ` warn ${warning}`)].join("\n")}\n`,
|
|
49
|
+
findings
|
|
41
50
|
};
|
|
42
51
|
}
|
|
43
52
|
//#endregion
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { t as compact } from "./compact-
|
|
2
|
-
import { r as PermDockRevokedError } from "./errors-
|
|
1
|
+
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { r as PermDockRevokedError } from "./errors-BKy0EfhN.js";
|
|
3
|
+
import { a as durationOf, o as epochSeconds } from "./time-DkWjdL98.js";
|
|
3
4
|
//#region src/server/connection.ts
|
|
4
5
|
/** `setTimeout` stores delays in a signed 32-bit integer. */
|
|
5
6
|
const MAX_DELAY = 2147483647;
|
|
@@ -52,7 +53,7 @@ async function openConnection(input) {
|
|
|
52
53
|
const controller = new AbortController();
|
|
53
54
|
const timers = /* @__PURE__ */ new Set();
|
|
54
55
|
const decideOptions = compact({
|
|
55
|
-
|
|
56
|
+
call: "adapter",
|
|
56
57
|
adapter: input.adapter
|
|
57
58
|
});
|
|
58
59
|
let unsubscribe;
|
|
@@ -123,7 +124,7 @@ async function openConnection(input) {
|
|
|
123
124
|
});
|
|
124
125
|
};
|
|
125
126
|
schedule = (permdock) => {
|
|
126
|
-
const now =
|
|
127
|
+
const now = epochSeconds();
|
|
127
128
|
const expiresAt = permdock.subject.expiresAt;
|
|
128
129
|
if (expiresAt !== void 0) {
|
|
129
130
|
if (expiresAt <= now) {
|
|
@@ -141,8 +142,8 @@ async function openConnection(input) {
|
|
|
141
142
|
}
|
|
142
143
|
const membership = nextMembershipExpiry(permdock, now);
|
|
143
144
|
if (membership !== void 0) after((membership - now) * 1e3, revalidate);
|
|
144
|
-
const every = input.options.revalidate;
|
|
145
|
-
if (every !== void 0
|
|
145
|
+
const every = durationOf(input.options.revalidate);
|
|
146
|
+
if (every !== void 0) after(every * 1e3, revalidate);
|
|
146
147
|
};
|
|
147
148
|
try {
|
|
148
149
|
current = await input.open();
|
|
@@ -184,6 +185,7 @@ async function openConnection(input) {
|
|
|
184
185
|
const permdock = live();
|
|
185
186
|
return permdock === void 0 ? [] : permdock.filter(permission, items, decideOptions);
|
|
186
187
|
},
|
|
188
|
+
settled: () => chain,
|
|
187
189
|
close() {
|
|
188
190
|
closed = true;
|
|
189
191
|
clear();
|