permdock 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -35
- package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
- package/dist/a2a/index.d.ts +6 -6
- package/dist/a2a/index.js +14 -17
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-B4R5fnMU.js +107 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.js +1 -0
- package/dist/ai-sdk/index.d.ts +18 -35
- package/dist/ai-sdk/index.js +37 -23
- package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-DJ6Yd5z1.js +995 -0
- package/dist/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.js} +20 -14
- package/dist/args-IIolxxKA.js +197 -0
- package/dist/astro/index.d.ts +43 -0
- package/dist/astro/index.js +27 -0
- package/dist/audience-Dg8XsRaO.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +94 -79
- package/dist/automation-BMZPIVUM.d.ts +114 -0
- package/dist/automation-DVjOckjV.js +157 -0
- package/dist/better-auth/index.d.ts +8 -6
- package/dist/better-auth/index.js +9 -8
- package/dist/better-supabase/index.d.ts +357 -30
- package/dist/better-supabase/index.js +936 -194
- package/dist/{bind-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
- package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/{build-instance-DIIV9DbC.js → build-instance-BMnAudHn.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-BSslw1QV.d.ts} +44 -25
- package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
- package/dist/casbin-Cr7RLtA3.js +30 -0
- package/dist/casbin-Dyu2gnUD.js +234 -0
- package/dist/casl-64gpT-8x.js +24 -0
- package/dist/casl-DjEDhTCP.js +299 -0
- package/dist/catalog/index.d.ts +74 -2
- package/dist/catalog/index.js +51 -2
- package/dist/{catalog-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.js} +45 -23
- package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +224 -0
- package/dist/chat-sdk/index.d.ts +87 -0
- package/dist/chat-sdk/index.js +197 -0
- package/dist/claims-map-7oQ3ue4X.js +13 -0
- package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
- package/dist/claude-agent/index.d.ts +7 -14
- package/dist/claude-agent/index.js +24 -27
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +9 -14
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +19 -5
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +239 -340
- package/dist/cloud-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- package/dist/command-L8EstFNm.js +6 -0
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -2
- package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/{compile-CtTP7eur.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
- package/dist/completion-BqhRBJD8.js +143 -0
- package/dist/config-B46rm9sc.js +26 -0
- package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- package/dist/create-0VZ7Pdiu.d.ts +107 -0
- package/dist/create-BDS7wc3y.d.ts +138 -0
- package/dist/create-BFfm17UA.d.ts +110 -0
- package/dist/create-BWRSXgOF.js +403 -0
- package/dist/create-C3b4B5eF.js +130 -0
- package/dist/{create-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
- package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-DaXVdDhM.js +286 -0
- package/dist/delivery/index.d.ts +5 -0
- package/dist/delivery/index.js +5 -0
- package/dist/delivery-DCAgNyCn.js +499 -0
- package/dist/delivery-event-xX4obB8F.js +40 -0
- package/dist/{denied-text-DfRk15uw.d.ts → denied-text-D8jDHgsl.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.js} +245 -50
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +2 -2
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +13 -12
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/{errors-OD_4c__H.d.ts → errors-C2PXIv4c.d.ts} +2 -2
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/evaluate-_R8QkWaf.js +1732 -0
- package/dist/evaluations-16UqqQ6W.d.ts +32 -0
- package/dist/{evaluations-C9YJsv3H.js → evaluations-DZ2CbV5k.js} +145 -34
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +22 -28
- package/dist/event-time-CsegxXxB.js +23 -0
- package/dist/expiry-D4_YKRKD.js +52 -0
- package/dist/express/index.d.ts +13 -10
- package/dist/express/index.js +12 -11
- package/dist/fastify/index.d.ts +25 -22
- package/dist/fastify/index.js +13 -12
- package/dist/fetch-adapter-g0ypLkID.js +120 -0
- package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
- package/dist/fields-D9tPVUUS.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-D2lZt4Dd.js} +55 -52
- package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.js} +5 -4
- package/dist/h3/index.d.ts +37 -0
- package/dist/h3/index.js +35 -0
- package/dist/headers-BIjfMaoC.js +8 -0
- package/dist/headers-CIbDTUTK.d.ts +7 -0
- package/dist/{helpers-C9YmyBIa.js → helpers-DTcZOzhF.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-BZIAYvon.js +315 -0
- package/dist/hosted-DBDX0M-P.d.ts +78 -0
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
- package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
- package/dist/{import-BFIlhetD.js → import-DMmOG27O.js} +190 -53
- package/dist/index-BcHcPyIo.d.ts +110 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-Chrs5fQ-.d.ts +210 -0
- package/dist/index-CxGUswIC.d.ts +431 -0
- package/dist/index-D8EovfsP.d.ts +91 -0
- package/dist/{index-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
- package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
- package/dist/index.d.ts +19 -15
- package/dist/index.js +31 -21
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-plkrsAog.d.ts → instance-options-Omfd793B.d.ts} +2 -2
- package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +156 -135
- package/dist/{kernel-CB3LrIJM.js → kernel-5JatXyND.js} +52 -24
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +2 -2
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
- package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
- package/dist/login-Dfe5RlYk.js +68 -0
- package/dist/login-imhuwvn3.js +254 -0
- package/dist/manifest-C8IzW3Do.js +42 -0
- package/dist/manifest-CtKR3GXL.js +370 -0
- package/dist/manifest-json-CAGzls-C.js +9 -0
- package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
- package/dist/manifest-schema-C0kK_8V0.js +399 -0
- package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
- package/dist/{map-error-BE27PYkE.js → map-error-TCAdw-eW.js} +3 -3
- package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
- package/dist/mcp/index.d.ts +22 -12
- package/dist/mcp/index.js +57 -39
- package/dist/{migrate-BwlB5-Wk.js → migrate-BShP7Vf4.js} +53 -14
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +15 -14
- package/dist/next/index.d.ts +18 -21
- package/dist/next/index.js +13 -11
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +10 -10
- package/dist/node/index.js +7 -9
- package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +17 -24
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
- package/dist/{openapi-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
- package/dist/openapi-ahr8rHu3.js +138 -0
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-CxybZErY.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +20 -15
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +30 -7
- package/dist/output-Dyw8fyPF.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
- package/dist/{permission-keys-B26jeyUv.js → ownership-BatFgAA4.js} +1698 -869
- package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
- package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
- package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
- package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
- package/dist/parse-request-D_tUXG6M.js +26 -0
- package/dist/paths-DXSHAMIa.js +42 -0
- package/dist/pdp/index.d.ts +7 -3
- package/dist/pdp/index.js +45 -26
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-B9JxkBwC.js +868 -0
- package/dist/permdock-D7eeLJER.d.ts +502 -0
- package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-CCJ6lmxB.js → permissions-CZKiUfFM.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
- package/dist/postgrest-CW0IqC-U.js +566 -0
- package/dist/postgrest-NUqZT-RB.d.ts +100 -0
- package/dist/powersync-BHfuehf3.js +62 -0
- package/dist/powersync-CbzkqL_M.js +1 -0
- package/dist/{powersync-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
- package/dist/preset/index.d.ts +146 -0
- package/dist/preset/index.js +1 -0
- package/dist/preset-DZdU0tne.js +1768 -0
- package/dist/principal-source-pHneukrx.js +103 -0
- package/dist/prisma/index.d.ts +6 -3
- package/dist/prisma/index.js +2 -2
- package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
- package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
- package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/{protected-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
- package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
- package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
- package/dist/pull-BgIfno6w.js +256 -0
- package/dist/pull-ByOks_Tg.js +1 -0
- package/dist/push-CmFVBOeI.js +116 -0
- package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
- package/dist/pushed-policy-DobP7AHI.js +238 -0
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +6 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -2
- package/dist/react-native/index.d.ts +24 -72
- package/dist/react-native/index.js +24 -22
- package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
- package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-COpmZUfx.d.ts → replay-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.js} +3 -3
- package/dist/request-schema-CMreVuFM.js +148 -0
- package/dist/resend/index.d.ts +126 -0
- package/dist/resend/index.js +379 -0
- package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
- package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BA8an5Ap.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
- package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
- package/dist/run-CNsApDpd.js +1 -0
- package/dist/run-DOfMtc9V.js +723 -0
- package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DtaA4JuW.js → saas-FO-Q8oj0.js} +16 -14
- package/dist/scan-BOI5tJ-6.js +29 -0
- package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
- package/dist/schema-yLuBWWsh.js +130 -0
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +1 -2
- package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
- package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
- package/dist/server/index.d.ts +12 -143
- package/dist/server/index.js +12 -9
- package/dist/server-DqCT4CgZ.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
- package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/sink-Bj_lDUDq.d.ts +225 -0
- package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.js +269 -0
- package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
- package/dist/solid/index.d.ts +11 -12
- package/dist/solid/index.js +7 -7
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-Dljy06zL.d.ts → sources-BV9j0DeZ.d.ts} +7 -13
- package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
- package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
- package/dist/src-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
- package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
- package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
- package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.d.ts} +2 -2
- package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
- package/dist/style-DiKWnAvn.js +1 -0
- package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
- package/dist/subject-BGoM5o8B.js +17 -0
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +7 -6
- package/dist/supabase/middleware.js +13 -11
- package/dist/supabase-9pqI57pW.js +92 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +4 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +10 -10
- package/dist/svelte/runtime.d.ts +3 -3
- package/dist/svelte/runtime.js +3 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +4 -4
- package/dist/sveltekit/index.d.ts +51 -0
- package/dist/sveltekit/index.js +27 -0
- package/dist/tanstack-start/index.d.ts +51 -0
- package/dist/tanstack-start/index.js +40 -0
- package/dist/target-Bw37TFNA.js +51 -0
- package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +23 -287
- package/dist/testing/index.d.ts +311 -38
- package/dist/testing/index.js +3475 -201
- package/dist/testing/saas/index.d.ts +9 -8
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -2
- package/dist/text-BMFRfBqc.js +8 -0
- package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
- package/dist/thenable-yD7SabqG.js +31 -0
- package/dist/time-DkWjdL98.js +71 -0
- package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
- package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +16 -14
- package/dist/{types-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
- package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
- package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-CIlTojhq.d.ts → types-ClZaWzfb.d.ts} +9 -6
- package/dist/types-DX0LaKTb.d.ts +157 -0
- package/dist/types-DiQjupG2.d.ts +332 -0
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/types-_sHy8BQf.d.ts +65 -0
- package/dist/{types-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CHOtwL19.js +1 -0
- package/dist/usage-DHtE8j4E.js +32 -0
- package/dist/{usage-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
- package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
- package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
- package/dist/{verify-BztUB3GX.js → verify-DbCL9bnB.js} +645 -50
- package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
- package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-D6lPdb4Z.d.ts} +65 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/waiter-CKy4MQSY.d.ts +36 -0
- package/dist/watch-Cb-NcaUw.js +1 -0
- package/dist/{watch-zeucB7eF.js → watch-CszoTJMq.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- package/dist/where-scope-Dv-WTP-w.js +306 -0
- package/dist/who-can-D0QoYbEb.js +364 -0
- package/dist/wire-delegation-Cv3W2eaM.js +36 -0
- package/dist/wire-denial-C7PaVYEM.js +27 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +223 -0
- package/dist/workflow-sdk/index.d.ts +56 -0
- package/dist/workflow-sdk/index.js +78 -0
- package/dist/{wrap-Cr93qqdP.d.ts → wrap-Bd1Tejur.d.ts} +2 -1
- package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
- package/package.json +136 -37
- package/schemas/access-event-v1.json +118 -0
- package/schemas/approval-request-v1.json +34 -1
- package/schemas/approval-signature-v1.json +94 -0
- package/schemas/automation-event-v1.json +113 -0
- package/schemas/capability-v1.json +84 -0
- package/schemas/catalog-event-v1.json +87 -0
- package/schemas/catalog-v1.json +123 -12
- package/schemas/cli-commands-v1.json +164 -0
- package/schemas/cli-result-v1.json +96 -0
- package/schemas/cloud-api-v1.json +5407 -0
- package/schemas/connector-v1.json +408 -0
- package/schemas/credential-event-v1.json +81 -0
- package/schemas/credential-v1.json +134 -0
- package/schemas/decision-event-v1.json +288 -0
- package/schemas/delivery-event-v1.json +117 -0
- package/schemas/directory-event-v1.json +85 -0
- package/schemas/evidence-export-v1.json +54 -0
- package/schemas/membership-event-v1.json +93 -0
- package/schemas/policy-v1.json +68 -0
- package/schemas/pushed-policy-v1.json +236 -0
- package/schemas/run-v1.json +162 -0
- package/schemas/snapshot-v1.json +138 -0
- package/schemas/supabase-claims-v1.json +4 -4
- package/schemas/supabase-manifest-v1.json +5 -1
- package/schemas/support-session-v1.json +111 -0
- package/skills/permdock/SKILL.md +16 -12
- package/skills/permdock-agents/SKILL.md +40 -23
- package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
- package/skills/permdock-agents/references/runtimes.md +22 -18
- package/skills/permdock-approvals/SKILL.md +29 -13
- package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
- package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +5 -5
- package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +9 -8
- package/skills/permdock-data/references/relationships.md +3 -3
- package/skills/permdock-tenancy/SKILL.md +20 -7
- package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +5 -4
- package/skills/permdock-wire/SKILL.md +17 -11
- package/skills/permdock-wire/references/adapters.md +139 -51
- package/skills/permdock-wire/references/policy-options.md +5 -5
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DZL76lKW.js +0 -240
- package/dist/arazzo-CD8d0WLb.js +0 -54
- package/dist/catalog-6yWAX6Ps.js +0 -2
- package/dist/catalog-WHG4kBq7.js +0 -48
- package/dist/cloud-C7bSDgX4.js +0 -50
- package/dist/cloud-PeBN3IEn.js +0 -118
- package/dist/collect-Bw2Jdq1q.js +0 -2
- package/dist/collect-CQx4hX4N.js +0 -83
- package/dist/commands-Cpip4ULx.js +0 -97
- package/dist/config-DLt6BvV7.js +0 -36
- package/dist/diff-Cnghh_Ip.js +0 -48
- package/dist/doctor-CuVJvhV_.js +0 -53
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-fwfXN01n.js +0 -1016
- package/dist/headers-BZSDieNT.js +0 -6
- package/dist/headers-Cf-zWvsO.d.ts +0 -6
- package/dist/ids-DC4V4CFu.js +0 -18
- package/dist/index-DgM7w96K.d.ts +0 -6
- package/dist/index-Dz7didpC.d.ts +0 -201
- package/dist/load-B_shHrmd.js +0 -2
- package/dist/manifest-BngWKryL.js +0 -770
- package/dist/may-use-BOn_dR_w.js +0 -78
- package/dist/openapi-DcQ1Kg40.js +0 -164
- package/dist/ownership-BgnbOJFT.js +0 -851
- package/dist/permdock-L26udHSk.js +0 -3646
- package/dist/powersync-BFSbSElQ.js +0 -62
- package/dist/powersync-DCDgZgfZ.js +0 -2
- package/dist/rls-55DQTuf5.js +0 -250
- package/dist/run-DMcNW_8T.js +0 -174
- package/dist/server-ZYEHtNHS.js +0 -268
- package/dist/sink-BTtmfPnE.js +0 -141
- package/dist/sink-CPN4zLfs.d.ts +0 -104
- package/dist/skills-Dle4ZoLF.js +0 -56
- package/dist/snapshot-Dc9CHPME.js +0 -1078
- package/dist/src-Bb7no-hS.js +0 -639
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-Dbqr141s.js +0 -83
- package/dist/supabase-hook-BULg7Ut_.js +0 -2
- package/dist/thenable-QSmvt-vZ.js +0 -65
- package/dist/types-C0dee0Qf.d.ts +0 -197
- package/dist/types-DvupZE0w.d.ts +0 -9
- package/dist/usage-4G6t643F.js +0 -42
- package/dist/usage-iFLJ0-rr.js +0 -2
- package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
- package/dist/watch-C8TpsAl4.js +0 -2
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
|
|
3
|
+
import { a as describeError } from "./errors-CWTY6uih.js";
|
|
4
|
+
import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
|
|
5
|
+
import { s as cliVersion } from "./version-CEbQ5UeM.js";
|
|
6
|
+
import { a as formatCatalogJson } from "./catalog-doc-C9wjsfNY.js";
|
|
7
|
+
import { t as catalogPath } from "./catalog-path-CnI0XTFK.js";
|
|
8
|
+
import { t as parseSupabaseManifest } from "./manifest-C8IzW3Do.js";
|
|
9
|
+
import { t as parseCatalog } from "./parse-Cxq0WxrA.js";
|
|
10
|
+
import { t as POLICY_NOT_PUBLISHED } from "./problem-types-CJ2325SZ.js";
|
|
11
|
+
import { n as httpRequest, t as authFailure } from "./http-DXJ37RDA.js";
|
|
12
|
+
import { l as cloudUrl, n as cliRuntime, o as readAuth } from "./auth-DRLEizbL.js";
|
|
13
|
+
import { n as formatManifestJson } from "./manifest-json-CAGzls-C.js";
|
|
14
|
+
import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
15
|
+
import { relative, resolve } from "node:path";
|
|
16
|
+
//#region src/cli/cloud/projects.ts
|
|
17
|
+
function failure(json, command, code, problem) {
|
|
18
|
+
const { type, ...rest } = problem;
|
|
19
|
+
return {
|
|
20
|
+
ok: false,
|
|
21
|
+
result: {
|
|
22
|
+
code,
|
|
23
|
+
output: json ? JSON.stringify({
|
|
24
|
+
type: type ?? `https://permdock.com/docs/cli/errors#${problem.code}`,
|
|
25
|
+
...rest,
|
|
26
|
+
command,
|
|
27
|
+
exitCode: code
|
|
28
|
+
}, null, 2) : `${command}: ${problem.detail}`
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async function readProblemType(response) {
|
|
33
|
+
try {
|
|
34
|
+
const body = await response.json();
|
|
35
|
+
return isRecord(body) && typeof body["type"] === "string" ? body["type"] : void 0;
|
|
36
|
+
} catch {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function get(input, what) {
|
|
41
|
+
const response = await httpRequest(input.io, {
|
|
42
|
+
url: `${input.issuer}${input.path}`,
|
|
43
|
+
service: "PermDock Cloud",
|
|
44
|
+
headers: {
|
|
45
|
+
authorization: `Bearer ${input.bearer}`,
|
|
46
|
+
accept: "application/json"
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
if (response.ok) try {
|
|
50
|
+
return {
|
|
51
|
+
ok: true,
|
|
52
|
+
body: await response.json()
|
|
53
|
+
};
|
|
54
|
+
} catch {
|
|
55
|
+
return failure(input.json, input.command, 1, {
|
|
56
|
+
code: "request_failed",
|
|
57
|
+
title: "Unreadable Cloud answer",
|
|
58
|
+
status: response.status,
|
|
59
|
+
detail: `PermDock Cloud answered ${what} with a body that is not JSON`
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const type = await readProblemType(response);
|
|
63
|
+
if (response.status === 404 && type === "https://permdock.com/problems/policy-not-published") return failure(input.json, input.command, 1, {
|
|
64
|
+
code: "request_failed",
|
|
65
|
+
type: POLICY_NOT_PUBLISHED,
|
|
66
|
+
title: "Policy not published",
|
|
67
|
+
status: 404,
|
|
68
|
+
detail: "the project has no pushed catalog and policy yet; run permdock cloud push first"
|
|
69
|
+
});
|
|
70
|
+
const denied = authFailure(response, response.status === 401 ? "PermDock Cloud rejected the credential" : `the credential may not read ${what}; a PERMDOCK_CLOUD_TOKEN reads only its own environment`, [{
|
|
71
|
+
command: "permdock login",
|
|
72
|
+
when: "to log in on this machine"
|
|
73
|
+
}, {
|
|
74
|
+
command: "export PERMDOCK_CLOUD_TOKEN=<read-only key>",
|
|
75
|
+
when: "in CI"
|
|
76
|
+
}]);
|
|
77
|
+
if (denied !== void 0) throw denied;
|
|
78
|
+
const detail = response.status === 429 ? `PermDock Cloud rate-limited the request (HTTP 429); retry after ${response.headers.get("retry-after") ?? "a while"} seconds` : `PermDock Cloud answered ${what} with HTTP ${String(response.status)}`;
|
|
79
|
+
return failure(input.json, input.command, 1, {
|
|
80
|
+
code: "request_failed",
|
|
81
|
+
...type === void 0 ? {} : { type },
|
|
82
|
+
title: "PermDock Cloud request failed",
|
|
83
|
+
status: response.status,
|
|
84
|
+
detail
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function parseProjectPolicy(body) {
|
|
88
|
+
if (!isRecord(body) || body["v"] !== 1 || typeof body["project"] !== "string" || typeof body["version"] !== "number" || typeof body["fingerprint"] !== "string" || typeof body["permdockVersion"] !== "string" || !isRecord(body["catalog"]) || body["manifest"] !== void 0 && !isRecord(body["manifest"]) || body["policy"] !== void 0 && !isRecord(body["policy"])) return null;
|
|
89
|
+
return {
|
|
90
|
+
v: 1,
|
|
91
|
+
project: body["project"],
|
|
92
|
+
version: body["version"],
|
|
93
|
+
fingerprint: body["fingerprint"],
|
|
94
|
+
permdockVersion: body["permdockVersion"],
|
|
95
|
+
catalog: body["catalog"],
|
|
96
|
+
...isRecord(body["manifest"]) ? { manifest: body["manifest"] } : {},
|
|
97
|
+
...isRecord(body["policy"]) ? { policy: body["policy"] } : {}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async function projectPolicy(request, project) {
|
|
101
|
+
const fetched = await get({
|
|
102
|
+
...request,
|
|
103
|
+
path: `/v1/projects/${encodeURIComponent(project)}/policy`
|
|
104
|
+
}, `project ${project}`);
|
|
105
|
+
if (!fetched.ok) return fetched;
|
|
106
|
+
const value = parseProjectPolicy(fetched.body);
|
|
107
|
+
return value === null ? failure(request.json, request.command, 1, {
|
|
108
|
+
code: "request_failed",
|
|
109
|
+
title: "Unreadable project policy",
|
|
110
|
+
detail: `PermDock Cloud sent a project policy for ${project} that is not v1`
|
|
111
|
+
}) : {
|
|
112
|
+
ok: true,
|
|
113
|
+
value
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
async function listProjects(request) {
|
|
117
|
+
const fetched = await get({
|
|
118
|
+
...request,
|
|
119
|
+
path: "/v1/projects"
|
|
120
|
+
}, "the projects");
|
|
121
|
+
if (!fetched.ok) return fetched;
|
|
122
|
+
const items = isRecord(fetched.body) && Array.isArray(fetched.body["items"]) ? fetched.body["items"] : [];
|
|
123
|
+
const projects = [];
|
|
124
|
+
for (const item of items) if (isRecord(item) && typeof item["id"] === "string") projects.push({
|
|
125
|
+
id: item["id"],
|
|
126
|
+
...typeof item["name"] === "string" ? { name: item["name"] } : {}
|
|
127
|
+
});
|
|
128
|
+
return {
|
|
129
|
+
ok: true,
|
|
130
|
+
value: projects
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* `--project`, or with `PERMDOCK_CLOUD_TOKEN` the one project the token is
|
|
135
|
+
* pinned to, read from `GET /v1/projects`.
|
|
136
|
+
*/
|
|
137
|
+
async function resolveProject(request, flag, pinned) {
|
|
138
|
+
if (flag !== void 0) return {
|
|
139
|
+
ok: true,
|
|
140
|
+
value: flag
|
|
141
|
+
};
|
|
142
|
+
if (!pinned) return failure(request.json, request.command, 2, {
|
|
143
|
+
code: "usage",
|
|
144
|
+
title: "Missing project",
|
|
145
|
+
detail: "pass --project <id>"
|
|
146
|
+
});
|
|
147
|
+
const listed = await listProjects(request);
|
|
148
|
+
if (!listed.ok) return listed;
|
|
149
|
+
const [only, ...rest] = listed.value;
|
|
150
|
+
return only !== void 0 && rest.length === 0 ? {
|
|
151
|
+
ok: true,
|
|
152
|
+
value: only.id
|
|
153
|
+
} : failure(request.json, request.command, 2, {
|
|
154
|
+
code: "usage",
|
|
155
|
+
title: "Missing project",
|
|
156
|
+
detail: `PERMDOCK_CLOUD_TOKEN reads ${String(listed.value.length)} projects; pass --project <id>`
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//#endregion
|
|
160
|
+
//#region src/cli/cloud/pull.ts
|
|
161
|
+
const COMMAND = "permdock cloud pull";
|
|
162
|
+
/**
|
|
163
|
+
* The project's pushed policy, read with `PERMDOCK_CLOUD_TOKEN` or the stored
|
|
164
|
+
* login. Shared by `cloud pull` and `rls generate --project`.
|
|
165
|
+
*/
|
|
166
|
+
async function fetchProjectPolicy(input) {
|
|
167
|
+
const issuer = cloudUrl(input.url, input.env);
|
|
168
|
+
const auth = await readAuth(input.command, issuer, input.env, cliRuntime(input.io, input.env));
|
|
169
|
+
const request = {
|
|
170
|
+
issuer,
|
|
171
|
+
bearer: auth.bearer,
|
|
172
|
+
io: input.io,
|
|
173
|
+
json: input.json,
|
|
174
|
+
command: input.command
|
|
175
|
+
};
|
|
176
|
+
const project = await resolveProject(request, input.project, auth.source === "PERMDOCK_CLOUD_TOKEN");
|
|
177
|
+
if (!project.ok) return project;
|
|
178
|
+
return projectPolicy(request, project.value);
|
|
179
|
+
}
|
|
180
|
+
function snapshot(path) {
|
|
181
|
+
return {
|
|
182
|
+
path,
|
|
183
|
+
bytes: existsSync(path) ? readFileSync(path, "utf8") : null
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function restore(files) {
|
|
187
|
+
for (const file of files) if (file.bytes === null) rmSync(file.path, { force: true });
|
|
188
|
+
else writeFileEnsuringDir(file.path, file.bytes);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Writes the project's catalog and manifest with the writers `collect` and
|
|
192
|
+
* `supabase inspect --out` use, then re-reads the catalog and requires its
|
|
193
|
+
* fingerprint to match what the Cloud sent; a mismatch restores both files.
|
|
194
|
+
*/
|
|
195
|
+
async function runCloudPull(input) {
|
|
196
|
+
const fetched = await fetchProjectPolicy({
|
|
197
|
+
...input,
|
|
198
|
+
command: COMMAND
|
|
199
|
+
});
|
|
200
|
+
if (!fetched.ok) return fetched.result;
|
|
201
|
+
const pulled = fetched.value;
|
|
202
|
+
let catalog;
|
|
203
|
+
try {
|
|
204
|
+
catalog = parseCatalog(pulled.catalog);
|
|
205
|
+
} catch (error) {
|
|
206
|
+
return {
|
|
207
|
+
code: 1,
|
|
208
|
+
output: `${COMMAND}: the Cloud sent an invalid catalog: ${describeError(error)}`
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
let manifestText;
|
|
212
|
+
if (pulled.manifest !== void 0) try {
|
|
213
|
+
manifestText = formatManifestJson(parseSupabaseManifest(pulled.manifest));
|
|
214
|
+
} catch (error) {
|
|
215
|
+
return {
|
|
216
|
+
code: 1,
|
|
217
|
+
output: `${COMMAND}: the Cloud sent an invalid manifest: ${describeError(error)}`
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
const catalogFile = catalogPath(input.config, input.cwd);
|
|
221
|
+
const manifestFile = resolve(input.cwd, input.manifest ?? "permdock.manifest.json");
|
|
222
|
+
const before = [snapshot(catalogFile), ...manifestText === void 0 ? [] : [snapshot(manifestFile)]];
|
|
223
|
+
writeFileEnsuringDir(catalogFile, formatCatalogJson(catalog));
|
|
224
|
+
if (manifestText !== void 0) writeFileEnsuringDir(manifestFile, manifestText);
|
|
225
|
+
let written;
|
|
226
|
+
try {
|
|
227
|
+
written = catalogFingerprint(parseCatalog(readFileSync(catalogFile, "utf8")));
|
|
228
|
+
} catch {
|
|
229
|
+
written = "";
|
|
230
|
+
}
|
|
231
|
+
if (written !== pulled.fingerprint || catalog.fingerprint !== void 0 && catalog.fingerprint !== pulled.fingerprint) {
|
|
232
|
+
restore(before);
|
|
233
|
+
return {
|
|
234
|
+
code: 1,
|
|
235
|
+
output: `${COMMAND}: catalog fingerprint mismatch (Cloud ${pulled.fingerprint}, catalog ${catalog.fingerprint ?? "none"}, written ${written || "unreadable"}); restored the previous files`
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
const local = cliVersion();
|
|
239
|
+
if (pulled.permdockVersion !== local) input.io.stderr(`${COMMAND}: pushed by permdock@${pulled.permdockVersion}, pulled by permdock@${local}; regenerate the manifest locally if its shape changed`);
|
|
240
|
+
if (pulled.manifest === void 0) input.io.stderr(`${COMMAND}: the push carried no manifest; wrote the catalog only`);
|
|
241
|
+
const catalogRel = relative(input.cwd, catalogFile);
|
|
242
|
+
const manifestRel = manifestText === void 0 ? null : relative(input.cwd, manifestFile);
|
|
243
|
+
return {
|
|
244
|
+
code: 0,
|
|
245
|
+
output: input.json ? JSON.stringify({
|
|
246
|
+
project: pulled.project,
|
|
247
|
+
version: pulled.version,
|
|
248
|
+
fingerprint: pulled.fingerprint,
|
|
249
|
+
permdockVersion: pulled.permdockVersion,
|
|
250
|
+
catalog: catalogRel,
|
|
251
|
+
manifest: manifestRel
|
|
252
|
+
}) : `pulled ${pulled.project} version ${String(pulled.version)}: wrote ${catalogRel}${manifestRel === null ? "" : ` and ${manifestRel}`} (${pulled.fingerprint})`
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//#endregion
|
|
256
|
+
export { runCloudPull as n, fetchProjectPolicy as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { n as runCloudPull } from "./pull-BgIfno6w.js";
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
|
|
2
|
+
import { a as describeError } from "./errors-CWTY6uih.js";
|
|
3
|
+
import { s as cliVersion } from "./version-CEbQ5UeM.js";
|
|
4
|
+
import { i as loadConfiguredPolicy } from "./load-DFS_ry0W.js";
|
|
5
|
+
import { t as parseSupabaseManifest } from "./manifest-C8IzW3Do.js";
|
|
6
|
+
import { t as parseCatalog } from "./parse-Cxq0WxrA.js";
|
|
7
|
+
import { r as pushedPolicy } from "./pushed-policy-DobP7AHI.js";
|
|
8
|
+
import { n as runCatalog } from "./catalog-BECMPrwc.js";
|
|
9
|
+
import { n as httpRequest, t as authFailure } from "./http-DXJ37RDA.js";
|
|
10
|
+
import { a as pushAuth, l as cloudUrl, n as cliRuntime, u as firstNonEmpty } from "./auth-DRLEizbL.js";
|
|
11
|
+
import "./manifest-json-CAGzls-C.js";
|
|
12
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
13
|
+
import { resolve } from "node:path";
|
|
14
|
+
//#region src/cli/cloud/push.ts
|
|
15
|
+
/** `--manifest`, else `permdock.manifest.json` when it exists; a file that does not parse is an error. */
|
|
16
|
+
function readManifest(cwd, flag) {
|
|
17
|
+
const path = resolve(cwd, flag ?? "permdock.manifest.json");
|
|
18
|
+
if (!existsSync(path)) return flag === void 0 ? {
|
|
19
|
+
ok: true,
|
|
20
|
+
manifest: void 0
|
|
21
|
+
} : {
|
|
22
|
+
ok: false,
|
|
23
|
+
output: `permdock cloud push: ${flag} does not exist`
|
|
24
|
+
};
|
|
25
|
+
try {
|
|
26
|
+
return {
|
|
27
|
+
ok: true,
|
|
28
|
+
manifest: parseSupabaseManifest(readFileSync(path, "utf8"))
|
|
29
|
+
};
|
|
30
|
+
} catch (error) {
|
|
31
|
+
return {
|
|
32
|
+
ok: false,
|
|
33
|
+
output: `permdock cloud push: ${flag ?? "permdock.manifest.json"} is not a valid manifest: ${describeError(error)}`
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function runCloud(input) {
|
|
38
|
+
const manifest = readManifest(input.cwd, input.manifest);
|
|
39
|
+
if (!manifest.ok) return {
|
|
40
|
+
code: 2,
|
|
41
|
+
output: manifest.output
|
|
42
|
+
};
|
|
43
|
+
const built = await runCatalog({
|
|
44
|
+
cwd: input.cwd,
|
|
45
|
+
config: input.config,
|
|
46
|
+
format: "json",
|
|
47
|
+
from: void 0,
|
|
48
|
+
include: [],
|
|
49
|
+
now: input.now,
|
|
50
|
+
io: input.io
|
|
51
|
+
});
|
|
52
|
+
if (built.code !== 0) return {
|
|
53
|
+
code: built.code,
|
|
54
|
+
output: built.output
|
|
55
|
+
};
|
|
56
|
+
const catalog = parseCatalog(built.output);
|
|
57
|
+
const fingerprint = catalogFingerprint(catalog);
|
|
58
|
+
const loaded = await loadConfiguredPolicy(input.cwd, input.config.policy);
|
|
59
|
+
const policy = loaded === void 0 ? void 0 : pushedPolicy(loaded);
|
|
60
|
+
const hostable = catalog.permissions.filter((permission) => permission.hostable === true).map((permission) => permission.key);
|
|
61
|
+
const summary = {
|
|
62
|
+
fingerprint,
|
|
63
|
+
permissions: catalog.permissions.length,
|
|
64
|
+
hostable,
|
|
65
|
+
roles: (catalog.roles ?? []).length,
|
|
66
|
+
plans: (catalog.plans ?? []).length,
|
|
67
|
+
grants: policy?.grants.length ?? 0,
|
|
68
|
+
manifest: manifest.manifest !== void 0
|
|
69
|
+
};
|
|
70
|
+
const url = cloudUrl(input.url, input.env);
|
|
71
|
+
const environment = firstNonEmpty(input.project, input.env["PERMDOCK_CLOUD_ENV"], input.env["VERCEL_ENV"], "production");
|
|
72
|
+
const describe = (verb) => input.json ? JSON.stringify({
|
|
73
|
+
...summary,
|
|
74
|
+
environment,
|
|
75
|
+
status: verb
|
|
76
|
+
}) : `${verb} catalog ${fingerprint} (${String(summary.permissions)} permissions, ${String(hostable.length)} hostable${summary.manifest ? ", with manifest" : ""}) to ${environment}`;
|
|
77
|
+
if (input.dryRun) return {
|
|
78
|
+
code: 0,
|
|
79
|
+
output: describe("would push")
|
|
80
|
+
};
|
|
81
|
+
const auth = await pushAuth(url, input.env, cliRuntime(input.io, input.env));
|
|
82
|
+
const response = await httpRequest(input.io, {
|
|
83
|
+
url: `${url}/v1/environments/${encodeURIComponent(environment)}/catalog`,
|
|
84
|
+
method: "POST",
|
|
85
|
+
service: "PermDock Cloud",
|
|
86
|
+
headers: {
|
|
87
|
+
authorization: `Bearer ${auth.bearer}`,
|
|
88
|
+
"content-type": "application/json"
|
|
89
|
+
},
|
|
90
|
+
body: JSON.stringify({
|
|
91
|
+
fingerprint,
|
|
92
|
+
catalog,
|
|
93
|
+
...policy === void 0 ? {} : { policy },
|
|
94
|
+
...manifest.manifest === void 0 ? {} : { manifest: manifest.manifest },
|
|
95
|
+
permdockVersion: cliVersion()
|
|
96
|
+
})
|
|
97
|
+
});
|
|
98
|
+
const denied = authFailure(response, `PermDock Cloud rejected the ${auth.source === "login" ? "login" : "PERMDOCK_CLOUD_KEY"} for cloud push`, [{
|
|
99
|
+
command: "permdock login --scope catalog:write",
|
|
100
|
+
when: "to log in on this machine"
|
|
101
|
+
}, {
|
|
102
|
+
command: "export PERMDOCK_CLOUD_KEY=<write key>",
|
|
103
|
+
when: "in CI"
|
|
104
|
+
}]);
|
|
105
|
+
if (denied !== void 0) throw denied;
|
|
106
|
+
if (!response.ok) return {
|
|
107
|
+
code: 1,
|
|
108
|
+
output: `PermDock Cloud rejected the catalog: HTTP ${String(response.status)}`
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
code: 0,
|
|
112
|
+
output: describe("pushed")
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { runCloud };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Gt as SnapshotScope, H as WireValidity, T as Policy, _ as GrantLimit, a as ApprovalRequirement, bn as Grantee, jn as AppObligation, lr as Condition, u as BreakGlassSpec, v as GrantMeta } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
|
|
3
|
+
//#region src/catalog/pushed-policy.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* One code grant as `permdock cloud push` sends it. `portable: false` marks a
|
|
6
|
+
* grant a snapshot cannot evaluate; `closure: true` marks one whose condition
|
|
7
|
+
* is code, which `policyFromCatalog` turns into an allow that never matches
|
|
8
|
+
* and a deny that always applies.
|
|
9
|
+
*/
|
|
10
|
+
type PushedGrant = {
|
|
11
|
+
readonly permission: string;
|
|
12
|
+
readonly effect: "allow" | "deny";
|
|
13
|
+
readonly role: string | null;
|
|
14
|
+
readonly to: Grantee | readonly Grantee[];
|
|
15
|
+
readonly where?: Condition;
|
|
16
|
+
readonly check?: Condition;
|
|
17
|
+
readonly approval?: "human" | ApprovalRequirement;
|
|
18
|
+
/** A scope name or one resource; absent for a global grant. */
|
|
19
|
+
readonly scope?: string | {
|
|
20
|
+
readonly resource: string;
|
|
21
|
+
};
|
|
22
|
+
readonly portable?: false;
|
|
23
|
+
readonly closure?: true;
|
|
24
|
+
readonly fields?: readonly string[];
|
|
25
|
+
readonly limit?: GrantLimit;
|
|
26
|
+
readonly validity?: WireValidity;
|
|
27
|
+
readonly name?: string;
|
|
28
|
+
readonly purpose?: readonly string[];
|
|
29
|
+
readonly requires?: readonly string[];
|
|
30
|
+
/** The membership kind (`via`) the grant applies under. */
|
|
31
|
+
readonly viaOnly?: string;
|
|
32
|
+
readonly breakGlass?: BreakGlassSpec;
|
|
33
|
+
readonly obligations?: readonly AppObligation[];
|
|
34
|
+
readonly meta?: GrantMeta;
|
|
35
|
+
};
|
|
36
|
+
/** PushedPolicy v1: the `policy` of a `permdock cloud push` body, validated by `schemas/pushed-policy-v1.json`. */
|
|
37
|
+
type PushedPolicy = {
|
|
38
|
+
readonly v: 1;
|
|
39
|
+
/** The code policy's `fingerprint`. */
|
|
40
|
+
readonly fingerprint: string;
|
|
41
|
+
/** As a snapshot carries them; absent without declared scopes. */
|
|
42
|
+
readonly scopes?: readonly SnapshotScope[];
|
|
43
|
+
readonly grants: readonly PushedGrant[];
|
|
44
|
+
};
|
|
45
|
+
/** `schemas/pushed-policy-v1.json`; a test keeps the two equal. */
|
|
46
|
+
declare const PUSHED_POLICY_SCHEMA: JsonSchemaNode;
|
|
47
|
+
/** The code policy as `permdock cloud push` sends it; hosted grants are left out. */
|
|
48
|
+
declare function pushedPolicy(policy: Policy): PushedPolicy;
|
|
49
|
+
/**
|
|
50
|
+
* Validates a pushed policy (parsed, or the JSON text) against
|
|
51
|
+
* `schemas/pushed-policy-v1.json` and returns a deep-frozen copy. Throws
|
|
52
|
+
* `PermDockValidationError`, also for a `__proto__`, `constructor` or
|
|
53
|
+
* `prototype` key anywhere in it.
|
|
54
|
+
*/
|
|
55
|
+
declare function parsePushedPolicy(json: unknown): PushedPolicy;
|
|
56
|
+
//#endregion
|
|
57
|
+
export { pushedPolicy as a, parsePushedPolicy as i, PushedGrant as n, PushedPolicy as r, PUSHED_POLICY_SCHEMA as t };
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
|
+
import { n as PermDockValidationError } from "./validation-error-ZfUHbKvf.js";
|
|
4
|
+
import { n as RFC3339_PATTERN } from "./time-DkWjdL98.js";
|
|
5
|
+
import { i as wireValidity } from "./validity-CZ7-y0Cj.js";
|
|
6
|
+
import { n as snapshotScopes } from "./instance-snapshot-Cxq4ygFc.js";
|
|
7
|
+
import { n as copyJson, r as forbiddenKeyPath, t as checkSchema } from "./json-schema-B-vAwlde.js";
|
|
8
|
+
//#region src/catalog/pushed-policy.ts
|
|
9
|
+
const strings = {
|
|
10
|
+
type: "array",
|
|
11
|
+
items: { type: "string" }
|
|
12
|
+
};
|
|
13
|
+
const instant = {
|
|
14
|
+
type: "string",
|
|
15
|
+
format: "date-time",
|
|
16
|
+
pattern: RFC3339_PATTERN
|
|
17
|
+
};
|
|
18
|
+
const grantee = {
|
|
19
|
+
type: "object",
|
|
20
|
+
required: ["kind"]
|
|
21
|
+
};
|
|
22
|
+
const condition = {
|
|
23
|
+
type: "object",
|
|
24
|
+
required: ["op"]
|
|
25
|
+
};
|
|
26
|
+
/** `schemas/pushed-policy-v1.json`; a test keeps the two equal. */
|
|
27
|
+
const PUSHED_POLICY_SCHEMA = freezeDeep({
|
|
28
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
29
|
+
$id: "https://permdock.com/schemas/pushed-policy-v1.json",
|
|
30
|
+
title: "PushedPolicy v1",
|
|
31
|
+
type: "object",
|
|
32
|
+
required: [
|
|
33
|
+
"v",
|
|
34
|
+
"fingerprint",
|
|
35
|
+
"grants"
|
|
36
|
+
],
|
|
37
|
+
additionalProperties: false,
|
|
38
|
+
properties: {
|
|
39
|
+
v: { const: 1 },
|
|
40
|
+
fingerprint: {
|
|
41
|
+
type: "string",
|
|
42
|
+
minLength: 1
|
|
43
|
+
},
|
|
44
|
+
scopes: {
|
|
45
|
+
type: "array",
|
|
46
|
+
items: {
|
|
47
|
+
type: "object",
|
|
48
|
+
required: ["name", "key"],
|
|
49
|
+
properties: {
|
|
50
|
+
name: {
|
|
51
|
+
type: "string",
|
|
52
|
+
pattern: "^[a-z][a-z0-9_]*$"
|
|
53
|
+
},
|
|
54
|
+
key: { type: "string" },
|
|
55
|
+
within: { type: "string" },
|
|
56
|
+
resources: strings,
|
|
57
|
+
fields: {
|
|
58
|
+
type: "object",
|
|
59
|
+
additionalProperties: { type: "string" }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
grants: {
|
|
65
|
+
type: "array",
|
|
66
|
+
items: {
|
|
67
|
+
type: "object",
|
|
68
|
+
required: [
|
|
69
|
+
"permission",
|
|
70
|
+
"effect",
|
|
71
|
+
"role",
|
|
72
|
+
"to"
|
|
73
|
+
],
|
|
74
|
+
additionalProperties: false,
|
|
75
|
+
properties: {
|
|
76
|
+
permission: {
|
|
77
|
+
type: "string",
|
|
78
|
+
minLength: 1
|
|
79
|
+
},
|
|
80
|
+
effect: { enum: ["allow", "deny"] },
|
|
81
|
+
role: { type: ["string", "null"] },
|
|
82
|
+
to: { oneOf: [grantee, {
|
|
83
|
+
type: "array",
|
|
84
|
+
items: grantee
|
|
85
|
+
}] },
|
|
86
|
+
where: condition,
|
|
87
|
+
check: condition,
|
|
88
|
+
approval: { oneOf: [{ const: "human" }, { type: "object" }] },
|
|
89
|
+
scope: { oneOf: [{ type: "string" }, {
|
|
90
|
+
type: "object",
|
|
91
|
+
required: ["resource"],
|
|
92
|
+
additionalProperties: false,
|
|
93
|
+
properties: { resource: { type: "string" } }
|
|
94
|
+
}] },
|
|
95
|
+
portable: { const: false },
|
|
96
|
+
closure: { const: true },
|
|
97
|
+
fields: strings,
|
|
98
|
+
limit: {
|
|
99
|
+
type: "object",
|
|
100
|
+
required: ["count", "per"],
|
|
101
|
+
properties: {
|
|
102
|
+
count: {
|
|
103
|
+
type: "integer",
|
|
104
|
+
minimum: 0
|
|
105
|
+
},
|
|
106
|
+
per: {
|
|
107
|
+
type: "integer",
|
|
108
|
+
minimum: 1
|
|
109
|
+
},
|
|
110
|
+
mode: { enum: ["hard", "soft"] },
|
|
111
|
+
alertAt: { type: "number" }
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
validity: {
|
|
115
|
+
type: "object",
|
|
116
|
+
additionalProperties: false,
|
|
117
|
+
properties: {
|
|
118
|
+
from: instant,
|
|
119
|
+
until: instant
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
name: { type: "string" },
|
|
123
|
+
purpose: strings,
|
|
124
|
+
requires: strings,
|
|
125
|
+
viaOnly: { type: "string" },
|
|
126
|
+
breakGlass: {
|
|
127
|
+
type: "object",
|
|
128
|
+
required: [
|
|
129
|
+
"overrides",
|
|
130
|
+
"reason",
|
|
131
|
+
"obligations"
|
|
132
|
+
],
|
|
133
|
+
properties: {
|
|
134
|
+
overrides: strings,
|
|
135
|
+
purpose: strings,
|
|
136
|
+
reason: { type: "boolean" },
|
|
137
|
+
assurance: { type: "object" },
|
|
138
|
+
maxDuration: {
|
|
139
|
+
type: "integer",
|
|
140
|
+
minimum: 1
|
|
141
|
+
},
|
|
142
|
+
obligations: {
|
|
143
|
+
type: "array",
|
|
144
|
+
items: { enum: ["notify", "review"] }
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
obligations: {
|
|
149
|
+
type: "array",
|
|
150
|
+
items: {
|
|
151
|
+
type: "object",
|
|
152
|
+
required: ["kind", "name"],
|
|
153
|
+
properties: {
|
|
154
|
+
kind: { const: "app" },
|
|
155
|
+
name: { type: "string" }
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
meta: { type: "object" }
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
function pushedGrant(grant) {
|
|
166
|
+
return compact({
|
|
167
|
+
permission: grant.permission.key,
|
|
168
|
+
effect: grant.effect,
|
|
169
|
+
role: grant.role,
|
|
170
|
+
to: grant.to,
|
|
171
|
+
where: grant.where,
|
|
172
|
+
check: grant.check,
|
|
173
|
+
approval: grant.approval,
|
|
174
|
+
scope: grant.scope === "global" ? void 0 : typeof grant.scope === "string" ? grant.scope : { resource: grant.scope.resource },
|
|
175
|
+
portable: grant.portable ? void 0 : false,
|
|
176
|
+
closure: grant.closure === void 0 ? void 0 : true,
|
|
177
|
+
fields: grant.fields,
|
|
178
|
+
limit: grant.limit,
|
|
179
|
+
validity: wireValidity(grant.validity),
|
|
180
|
+
name: grant.name,
|
|
181
|
+
purpose: grant.purpose,
|
|
182
|
+
requires: grant.requires,
|
|
183
|
+
viaOnly: grant.viaOnly,
|
|
184
|
+
breakGlass: grant.breakGlass,
|
|
185
|
+
obligations: grant.obligations,
|
|
186
|
+
meta: grant.meta === void 0 || Object.keys(grant.meta).length === 0 ? void 0 : grant.meta
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/** The code policy as `permdock cloud push` sends it; hosted grants are left out. */
|
|
190
|
+
function pushedPolicy(policy) {
|
|
191
|
+
const scopes = snapshotScopes(policy);
|
|
192
|
+
return {
|
|
193
|
+
v: 1,
|
|
194
|
+
fingerprint: policy.fingerprint,
|
|
195
|
+
...scopes === void 0 ? {} : { scopes },
|
|
196
|
+
grants: policy.grants.filter((grant) => grant.hosted === void 0).map(pushedGrant)
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Validates a pushed policy (parsed, or the JSON text) against
|
|
201
|
+
* `schemas/pushed-policy-v1.json` and returns a deep-frozen copy. Throws
|
|
202
|
+
* `PermDockValidationError`, also for a `__proto__`, `constructor` or
|
|
203
|
+
* `prototype` key anywhere in it.
|
|
204
|
+
*/
|
|
205
|
+
function parsePushedPolicy(json) {
|
|
206
|
+
const issues = [];
|
|
207
|
+
let input = json;
|
|
208
|
+
if (typeof json === "string") try {
|
|
209
|
+
input = JSON.parse(json);
|
|
210
|
+
} catch {
|
|
211
|
+
issues.push({
|
|
212
|
+
message: "Expected JSON text",
|
|
213
|
+
path: []
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
const copy = issues.length === 0 ? copyJson(input, [], issues, /* @__PURE__ */ new Set()) : void 0;
|
|
217
|
+
if (issues.length === 0) checkSchema(PUSHED_POLICY_SCHEMA, copy, [], issues);
|
|
218
|
+
const unsafe = issues.length === 0 ? forbiddenKeyPath(copy) : void 0;
|
|
219
|
+
if (unsafe !== void 0) issues.push({
|
|
220
|
+
message: "Unsafe key",
|
|
221
|
+
path: [...unsafe]
|
|
222
|
+
});
|
|
223
|
+
const [first] = issues;
|
|
224
|
+
if (first !== void 0) {
|
|
225
|
+
const where = first.path === void 0 || first.path.length === 0 ? "" : ` at ${first.path.map(String).join(".")}`;
|
|
226
|
+
throw new PermDockValidationError({
|
|
227
|
+
code: "invalid-data",
|
|
228
|
+
permission: "",
|
|
229
|
+
resource: "",
|
|
230
|
+
boundary: "pushed-policy",
|
|
231
|
+
issues,
|
|
232
|
+
message: `PermDock: invalid pushed policy${where}: ${first.message}`
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
return freezeDeep(copy);
|
|
236
|
+
}
|
|
237
|
+
//#endregion
|
|
238
|
+
export { parsePushedPolicy as n, pushedPolicy as r, PUSHED_POLICY_SCHEMA as t };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as requiredPlans } from "../problem-details-
|
|
2
|
-
import { i as describe } from "../describe-
|
|
3
|
-
import { t as approvalHeaders } from "../headers-
|
|
4
|
-
import { a as
|
|
5
|
-
import { n as PermDockProviderProps, r as ProtectedProps, t as PermDockDefaults } from "../types-
|
|
6
|
-
import { a as useDescribe, c as
|
|
7
|
-
import { t as PermDockProvider } from "../provider-
|
|
8
|
-
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, PermDockProvider, type PermDockProviderProps, type PermissionSet, type PermissionState, Protected, type ProtectedProps, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };
|
|
1
|
+
import { n as requiredPlans } from "../problem-details-DXlt-vks.js";
|
|
2
|
+
import { i as describe } from "../describe-BZUsixiL.js";
|
|
3
|
+
import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
|
|
4
|
+
import { a as FilterResult, c as PermissionSet, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, o as GateMode, p as TenantView, r as ClientPermDock, s as GateView, t as ApprovalHandle } from "../types-BNORmDM8.js";
|
|
5
|
+
import { n as PermDockProviderProps, r as ProtectedProps, t as PermDockDefaults } from "../types-tIgIeIKJ.js";
|
|
6
|
+
import { a as useDescribe, c as useMemberships, d as usePermissions, f as useRoles, i as useAssignableRoles, l as usePermDock, m as useTenant, n as useApproval, o as useFilter, p as useSubject, r as useAssignablePermissions, s as useGate, t as Protected, u as usePermission } from "../protected-DEPHc2xV.js";
|
|
7
|
+
import { t as PermDockProvider } from "../provider-DMVt6yYn.js";
|
|
8
|
+
export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type GateMode, type GateView, type PermDockDefaults, PermDockProvider, type PermDockProviderProps, type PermissionSet, type PermissionState, Protected, type ProtectedProps, type SubjectView, type TenantView, approvalHeaders, describe, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useDescribe, useFilter, useGate, useMemberships, usePermDock, usePermission, usePermissions, useRoles, useSubject, useTenant };
|