permdock 0.4.0 → 0.6.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-DCYe60Pi.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-DvSSPQJX.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-p1PGoVjb.js +995 -0
- package/dist/arazzo-41WuzHou.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.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-DabClFLQ.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-BNM3TtDo.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-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
- package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -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-Bu_eDqYw.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.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-BoWglDPI.js +1 -0
- package/dist/catalog-DZVbrF-z.js +52 -0
- package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.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-ytQ3uviA.js +87 -0
- package/dist/codemod-5mpSpnUY.js +37 -0
- package/dist/codemod-ua2hHy7w.js +2084 -0
- package/dist/collect-Ci6akVwH.js +55 -0
- package/dist/collect-D7eQDffE.js +1 -0
- package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
- 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-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
- package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/completion-BTFrHZhX.js +143 -0
- package/dist/config-Bj2Ixq3d.js +26 -0
- package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- package/dist/create-B30OMUOJ.d.ts +107 -0
- package/dist/create-CBMmFie-.d.ts +138 -0
- package/dist/create-CGm28gyI.js +130 -0
- package/dist/create-CQWIpUG-.js +403 -0
- package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
- package/dist/create-D_NmPOdH.d.ts +110 -0
- package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-j6-rc37o.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-CiFQNuMV.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
- package/dist/diff-CmuSD3vc.js +37 -0
- package/dist/doctor-3ZqNHX_G.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.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-CWTY6uih.js +143 -0
- package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
- package/dist/evaluate-CNClBvcj.js +1785 -0
- package/dist/evaluations-C_1vdSZc.d.ts +32 -0
- package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.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-DD_gfmrC.js +120 -0
- package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
- package/dist/fields-OYG_JR78.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-CTCMsFZk.js} +55 -52
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.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-CBYVMjwh.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-B46-5LYE.js +315 -0
- package/dist/hosted-BPk51-kX.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-wyqXUyjm.js} +190 -53
- package/dist/index-B8YjkEZ4.d.ts +210 -0
- package/dist/index-C-6Letxg.d.ts +431 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
- package/dist/index-Cp_ilKi1.d.ts +91 -0
- package/dist/index-CueFnxQc.d.ts +110 -0
- package/dist/index-DuWxc5dt.d.ts +909 -0
- 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-BsVpyGIk.d.ts} +2 -2
- package/dist/instance-snapshot-BOEhcqIF.js +601 -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-D0NVb1cK.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-dvL2XEe1.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-Dr70oA_3.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-CIq4-E9F.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-C4dDTVEd.js +138 -0
- package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-X0VM7F3m.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-1im__-08.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-DqaJNJPn.js} +1045 -153
- 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-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
- package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +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-BrAscV28.js +868 -0
- package/dist/permdock-SV8ZINYT.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-BPxlwVhN.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
- package/dist/policies-DP2nqRoF.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
- package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
- package/dist/postgrest-CEgRbefE.d.ts +100 -0
- package/dist/postgrest-DAjUkF9w.js +575 -0
- package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
- package/dist/powersync-DISt6SUe.js +62 -0
- package/dist/powersync-MMJ2mI2q.js +1 -0
- 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-B45V5d2b.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-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
- package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
- package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
- package/dist/pull-CvpINcMK.js +1 -0
- package/dist/pull-jEwbf80J.js +256 -0
- package/dist/push-BD4f15co.js +116 -0
- package/dist/pushed-policy-CqtxkV4G.js +238 -0
- package/dist/pushed-policy-DCW91KQU.d.ts +57 -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 +29 -25
- 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-Bkm-Ne4l.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.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-BAqP4q66.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
- package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
- package/dist/run-CUKuz0A8.js +723 -0
- package/dist/run-DDwUaJDU.js +1 -0
- package/dist/run-ticket-DocwaTKn.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-BCXRuXca.js} +16 -14
- package/dist/scan-qvOe0hS3.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-C3WXAHZj.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
- package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-4-eQIRWf.d.ts +225 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-B7DkYg6g.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-PXI-vGpY.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-Xc4zkszI.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-Cu2m75uo.js +1860 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
- package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
- package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
- package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.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-By_frk3U.js +92 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
- package/dist/supabase-hook-CCw5m35C.js +1 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
- 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-8RnwUAvE.d.ts +107 -0
- package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
- package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
- package/dist/types-BtHtcKMr.d.ts +157 -0
- package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
- package/dist/types-C791HFu9.d.ts +332 -0
- package/dist/types-C863OQiR.d.ts +57 -0
- package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
- package/dist/types-C_IiEs64.d.ts +65 -0
- package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
- package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
- package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CRVl9V3t.js +32 -0
- package/dist/usage-CZpSQP6L.js +1 -0
- package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.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-BaAKx7t6.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-CN8H_9UF.d.ts} +67 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- package/dist/waiter-B986w1oK.d.ts +36 -0
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/watch--ovlPOc0.js +1 -0
- package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- package/dist/where-scope-C9vfEphl.js +306 -0
- package/dist/who-can-DWBAcaCQ.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-C5jC6sKI.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 +10 -9
- 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 +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/index-UdVQgq48.d.ts +0 -550
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { i as readAppData } from "./app-data-
|
|
3
|
-
import { a as
|
|
2
|
+
import { i as readAppData } from "./app-data-MuyzVqX8.js";
|
|
3
|
+
import { a as quoteQualifiedTable, c as quoteSqlTable, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, u as sqlTextArray } from "./sql-B5T1IL83.js";
|
|
4
4
|
//#region src/supabase/keep.ts
|
|
5
5
|
/** The permission keys of a suspended scope's `keep`, references read by `key`, sorted and unique. */
|
|
6
6
|
function keptKeys(row) {
|
|
@@ -12,111 +12,19 @@ function keptKeys(row) {
|
|
|
12
12
|
return [...new Set(valid)].toSorted();
|
|
13
13
|
}
|
|
14
14
|
//#endregion
|
|
15
|
-
//#region src/supabase/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Resolves the role sources of `table` (`schema.table`, or `public`). An
|
|
21
|
-
* unqualified `through` table is in `table`'s schema. `label` names the
|
|
22
|
-
* option in the error for an `on` that is not exactly one column; `prefix`
|
|
23
|
-
* starts every error. A row with several sources holds the union of their
|
|
24
|
-
* non-null keys.
|
|
25
|
-
*/
|
|
26
|
-
function roleColumn(role, table, alias, options) {
|
|
27
|
-
if (!isRoleList(role)) return singleRole(role, table, alias, options);
|
|
28
|
-
const prefix = options.prefix ?? "PermDock";
|
|
29
|
-
const parts = role.map((part, index) => singleRole(part, table, alias, {
|
|
30
|
-
...options,
|
|
31
|
-
label: `${options.label}[${String(index)}]`
|
|
32
|
-
}));
|
|
33
|
-
const [first] = parts;
|
|
34
|
-
if (first === void 0) throw new TypeError(`${prefix}: ${options.label} needs at least one role source`);
|
|
35
|
-
if (parts.length === 1) return first;
|
|
36
|
-
const rows = quoteSqlIdent(`${alias}r`, prefix);
|
|
37
|
-
const values = quoteSqlIdent(`${alias}v`, prefix);
|
|
38
|
-
const sql = `${rows}.permdock_role`;
|
|
39
|
-
return {
|
|
40
|
-
column: first.column,
|
|
41
|
-
sql,
|
|
42
|
-
join: `${options.indent === void 0 ? " " : `\n${options.indent}`}cross join lateral (select ${values}.role from (values ${parts.map((part) => `(${part.lookup})`).join(", ")}) ${values}(role) where ${values}.role is not null) ${rows}(permdock_role)`,
|
|
43
|
-
lookup: sql,
|
|
44
|
-
columns: [...new Set(parts.map((part) => part.column))],
|
|
45
|
-
throughs: parts.flatMap((part) => part.throughs),
|
|
46
|
-
lateral: true
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function singleRole(role, table, alias, options) {
|
|
50
|
-
const prefix = options.prefix ?? "PermDock";
|
|
51
|
-
const q = (name) => quoteSqlIdent(name, prefix);
|
|
52
|
-
if (typeof role === "string") return {
|
|
53
|
-
column: role,
|
|
54
|
-
sql: `${alias}.${q(role)}::text`,
|
|
55
|
-
join: "",
|
|
56
|
-
lookup: `${alias}.${q(role)}::text`,
|
|
57
|
-
columns: [role],
|
|
58
|
-
throughs: [],
|
|
59
|
-
lateral: false
|
|
60
|
-
};
|
|
61
|
-
const pairs = Object.entries(role.on);
|
|
62
|
-
const [pair] = pairs;
|
|
63
|
-
if (pair === void 0 || pairs.length !== 1) throw new TypeError(`${prefix}: ${options.label}.on must map exactly one column of ${table} to ${role.through}, for example ${options.example ?? "{ role_id: 'id' }"}`);
|
|
64
|
-
const [ref, id] = pair;
|
|
65
|
-
const schema = table.includes(".") ? table.split(".")[0] ?? "public" : "public";
|
|
66
|
-
const through = role.through.includes(".") ? role.through : `${schema}.${role.through}`;
|
|
67
|
-
const keys = options.joined ?? `${alias}k`;
|
|
68
|
-
const target = quoteSqlTable(through, prefix);
|
|
69
|
-
const keyed = {
|
|
70
|
-
table: through,
|
|
71
|
-
id,
|
|
72
|
-
key: role.column,
|
|
73
|
-
ref
|
|
74
|
-
};
|
|
75
|
-
return {
|
|
76
|
-
column: ref,
|
|
77
|
-
sql: `${keys}.${q(role.column)}::text`,
|
|
78
|
-
join: `${options.indent === void 0 ? " " : `\n${options.indent}`}join ${target} ${keys} on ${keys}.${q(id)} = ${alias}.${q(ref)}`,
|
|
79
|
-
lookup: `(select ${keys}.${q(role.column)}::text from ${target} ${keys} where ${keys}.${q(id)} = ${alias}.${q(ref)})`,
|
|
80
|
-
through: keyed,
|
|
81
|
-
columns: [ref],
|
|
82
|
-
throughs: [keyed],
|
|
83
|
-
lateral: false
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/** The manifest entry of one role source: the column, and the roles table it references. */
|
|
87
|
-
function sourceManifest(column, through) {
|
|
88
|
-
return through === void 0 ? { column } : {
|
|
89
|
-
column,
|
|
90
|
-
through: {
|
|
91
|
-
table: through.table,
|
|
92
|
-
id: through.id,
|
|
93
|
-
column: through.key
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
/** The manifest entry of a single-source column, such as a membership's user. */
|
|
98
|
-
function columnManifest(role) {
|
|
99
|
-
return sourceManifest(role.column, role.through);
|
|
100
|
-
}
|
|
101
|
-
/** The manifest entry of a role column, or one entry per source of a row with several. */
|
|
102
|
-
function roleManifest(role) {
|
|
103
|
-
if (!role.lateral) return sourceManifest(role.column, role.through);
|
|
104
|
-
return role.columns.map((column) => sourceManifest(column, role.throughs.find((through) => through.ref === column)));
|
|
105
|
-
}
|
|
106
|
-
//#endregion
|
|
107
|
-
//#region src/supabase/sources.ts
|
|
108
|
-
const ident = (name) => quoteSqlIdent(name);
|
|
109
|
-
const literal = quoteSqlLiteral;
|
|
15
|
+
//#region src/supabase/membership-sql.ts
|
|
16
|
+
const ident$1 = (name) => quoteSqlIdent(name);
|
|
17
|
+
const literal$1 = quoteSqlLiteral;
|
|
110
18
|
function col(name) {
|
|
111
|
-
return `m.${ident(name)}`;
|
|
19
|
+
return `m.${ident$1(name)}`;
|
|
112
20
|
}
|
|
113
21
|
function activeRow(row, id) {
|
|
114
|
-
const parts = [`s.${ident(row.id)}::text = (${id})::text`];
|
|
115
|
-
if (row.disabledAt !== void 0) parts.push(`s.${ident(row.disabledAt)} is null`);
|
|
22
|
+
const parts = [`s.${ident$1(row.id)}::text = (${id})::text`];
|
|
23
|
+
if (row.disabledAt !== void 0) parts.push(`s.${ident$1(row.disabledAt)} is null`);
|
|
116
24
|
if (row.status !== void 0) {
|
|
117
25
|
const values = row.active ?? [];
|
|
118
26
|
if (values.length === 0) throw new TypeError("PermDock: a suspension status column needs its active values");
|
|
119
|
-
parts.push(`s.${ident(row.status)}::text = any(array[${values.map(literal).join(", ")}]::text[])`);
|
|
27
|
+
parts.push(`s.${ident$1(row.status)}::text = any(array[${values.map(literal$1).join(", ")}]::text[])`);
|
|
120
28
|
}
|
|
121
29
|
if (row.disabledAt === void 0 && row.status === void 0) throw new TypeError("PermDock: a suspension table needs disabledAt or status");
|
|
122
30
|
return `exists (select 1 from ${quoteQualifiedTable(row.table)} s where ${parts.join(" and ")})`;
|
|
@@ -210,7 +118,7 @@ where ${where.join("\n and ")}
|
|
|
210
118
|
group by ${group.join(", ")}`;
|
|
211
119
|
}
|
|
212
120
|
function holdersOf(shape) {
|
|
213
|
-
const id = ident(shape.idColumn);
|
|
121
|
+
const id = ident$1(shape.idColumn);
|
|
214
122
|
return {
|
|
215
123
|
idType: `${quoteQualifiedTable(shape.table)}.${id}%type`,
|
|
216
124
|
id: (scope, row) => {
|
|
@@ -235,7 +143,7 @@ function sqlOf(shape) {
|
|
|
235
143
|
table: shape.table,
|
|
236
144
|
user: shape.user,
|
|
237
145
|
userThrough: shape.userThrough,
|
|
238
|
-
userType: shape.userThrough === void 0 ? `${quoteQualifiedTable(shape.table)}.${ident(shape.user)}%type` : `${quoteSqlTable(shape.userThrough.table)}.${ident(shape.userThrough.key)}%type`,
|
|
146
|
+
userType: shape.userThrough === void 0 ? `${quoteQualifiedTable(shape.table)}.${ident$1(shape.user)}%type` : `${quoteSqlTable(shape.userThrough.table)}.${ident$1(shape.userThrough.key)}%type`,
|
|
239
147
|
reads: [...new Set([suspension?.users, ...Object.values(suspension?.scopes ?? {})].flatMap((row) => row === void 0 ? [] : [row.table]))],
|
|
240
148
|
managed: shape.managedColumn,
|
|
241
149
|
through: shape.through,
|
|
@@ -251,6 +159,102 @@ function sqlOf(shape) {
|
|
|
251
159
|
list: (keep = keptSql(shape) !== void 0) => selectOf(shape, filters(shape, `${shape.scope} = $1::text and ${shape.id} = $2::text`), true, keep)
|
|
252
160
|
});
|
|
253
161
|
}
|
|
162
|
+
//#endregion
|
|
163
|
+
//#region src/supabase/roles.ts
|
|
164
|
+
function isRoleList(role) {
|
|
165
|
+
return Array.isArray(role);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Resolves the role sources of `table` (`schema.table`, or `public`). An
|
|
169
|
+
* unqualified `through` table is in `table`'s schema. `label` names the
|
|
170
|
+
* option in the error for an `on` that is not exactly one column; `prefix`
|
|
171
|
+
* starts every error. A row with several sources holds the union of their
|
|
172
|
+
* non-null keys.
|
|
173
|
+
*/
|
|
174
|
+
function roleColumn(role, table, alias, options) {
|
|
175
|
+
if (!isRoleList(role)) return singleRole(role, table, alias, options);
|
|
176
|
+
const prefix = options.prefix ?? "PermDock";
|
|
177
|
+
const parts = role.map((part, index) => singleRole(part, table, alias, {
|
|
178
|
+
...options,
|
|
179
|
+
label: `${options.label}[${String(index)}]`
|
|
180
|
+
}));
|
|
181
|
+
const [first] = parts;
|
|
182
|
+
if (first === void 0) throw new TypeError(`${prefix}: ${options.label} needs at least one role source`);
|
|
183
|
+
if (parts.length === 1) return first;
|
|
184
|
+
const rows = quoteSqlIdent(`${alias}r`, prefix);
|
|
185
|
+
const values = quoteSqlIdent(`${alias}v`, prefix);
|
|
186
|
+
const sql = `${rows}.permdock_role`;
|
|
187
|
+
return {
|
|
188
|
+
column: first.column,
|
|
189
|
+
sql,
|
|
190
|
+
join: `${options.indent === void 0 ? " " : `\n${options.indent}`}cross join lateral (select ${values}.role from (values ${parts.map((part) => `(${part.lookup})`).join(", ")}) ${values}(role) where ${values}.role is not null) ${rows}(permdock_role)`,
|
|
191
|
+
lookup: sql,
|
|
192
|
+
columns: [...new Set(parts.map((part) => part.column))],
|
|
193
|
+
throughs: parts.flatMap((part) => part.throughs),
|
|
194
|
+
lateral: true
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function singleRole(role, table, alias, options) {
|
|
198
|
+
const prefix = options.prefix ?? "PermDock";
|
|
199
|
+
const q = (name) => quoteSqlIdent(name, prefix);
|
|
200
|
+
if (typeof role === "string") return {
|
|
201
|
+
column: role,
|
|
202
|
+
sql: `${alias}.${q(role)}::text`,
|
|
203
|
+
join: "",
|
|
204
|
+
lookup: `${alias}.${q(role)}::text`,
|
|
205
|
+
columns: [role],
|
|
206
|
+
throughs: [],
|
|
207
|
+
lateral: false
|
|
208
|
+
};
|
|
209
|
+
const pairs = Object.entries(role.on);
|
|
210
|
+
const [pair] = pairs;
|
|
211
|
+
if (pair === void 0 || pairs.length !== 1) throw new TypeError(`${prefix}: ${options.label}.on must map exactly one column of ${table} to ${role.through}, for example ${options.example ?? "{ role_id: 'id' }"}`);
|
|
212
|
+
const [ref, id] = pair;
|
|
213
|
+
const schema = table.includes(".") ? table.split(".")[0] ?? "public" : "public";
|
|
214
|
+
const through = role.through.includes(".") ? role.through : `${schema}.${role.through}`;
|
|
215
|
+
const keys = options.joined ?? `${alias}k`;
|
|
216
|
+
const target = quoteSqlTable(through, prefix);
|
|
217
|
+
const keyed = {
|
|
218
|
+
table: through,
|
|
219
|
+
id,
|
|
220
|
+
key: role.column,
|
|
221
|
+
ref
|
|
222
|
+
};
|
|
223
|
+
return {
|
|
224
|
+
column: ref,
|
|
225
|
+
sql: `${keys}.${q(role.column)}::text`,
|
|
226
|
+
join: `${options.indent === void 0 ? " " : `\n${options.indent}`}join ${target} ${keys} on ${keys}.${q(id)} = ${alias}.${q(ref)}`,
|
|
227
|
+
lookup: `(select ${keys}.${q(role.column)}::text from ${target} ${keys} where ${keys}.${q(id)} = ${alias}.${q(ref)})`,
|
|
228
|
+
through: keyed,
|
|
229
|
+
columns: [ref],
|
|
230
|
+
throughs: [keyed],
|
|
231
|
+
lateral: false
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/** The manifest entry of one role source: the column, and the roles table it references. */
|
|
235
|
+
function sourceManifest(column, through) {
|
|
236
|
+
return through === void 0 ? { column } : {
|
|
237
|
+
column,
|
|
238
|
+
through: {
|
|
239
|
+
table: through.table,
|
|
240
|
+
id: through.id,
|
|
241
|
+
column: through.key
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/** The manifest entry of a single-source column, such as a membership's user. */
|
|
246
|
+
function columnManifest(role) {
|
|
247
|
+
return sourceManifest(role.column, role.through);
|
|
248
|
+
}
|
|
249
|
+
/** The manifest entry of a role column, or one entry per source of a row with several. */
|
|
250
|
+
function roleManifest(role) {
|
|
251
|
+
if (!role.lateral) return sourceManifest(role.column, role.through);
|
|
252
|
+
return role.columns.map((column) => sourceManifest(column, role.throughs.find((through) => through.ref === column)));
|
|
253
|
+
}
|
|
254
|
+
//#endregion
|
|
255
|
+
//#region src/supabase/sources.ts
|
|
256
|
+
const ident = (name) => quoteSqlIdent(name);
|
|
257
|
+
const literal = quoteSqlLiteral;
|
|
254
258
|
function isFixed(roles) {
|
|
255
259
|
return Array.isArray(roles);
|
|
256
260
|
}
|
|
@@ -335,11 +339,14 @@ function sourceOf(sql, query) {
|
|
|
335
339
|
}
|
|
336
340
|
/**
|
|
337
341
|
* `ctx.postgres` (from `withPostgresClient`) or `ctx.postgresAdmin` as a
|
|
338
|
-
* `SqlQuery` for `
|
|
342
|
+
* `SqlQuery` for `tableMembershipSource`, `junctionMembershipSource` and `supabaseApprovalStore`.
|
|
339
343
|
* `ctx.postgres` runs as the caller under RLS, so the membership tables must
|
|
340
344
|
* be readable by `authenticated`; `ctx.postgresAdmin` bypasses RLS.
|
|
341
345
|
*/
|
|
342
|
-
function
|
|
346
|
+
function optionalColumn(name, cast) {
|
|
347
|
+
return name === void 0 ? `null::${cast}` : `${col(name)}::${cast}`;
|
|
348
|
+
}
|
|
349
|
+
function supabasePostgresQuery(postgres) {
|
|
343
350
|
return (text, values) => postgres.queryRaw(text, [...values]);
|
|
344
351
|
}
|
|
345
352
|
/**
|
|
@@ -348,14 +355,13 @@ function fromSupabasePostgres(postgres) {
|
|
|
348
355
|
* `within`, `via`, expiry, owner and seat columns. Rows of the same instance
|
|
349
356
|
* merge into one membership.
|
|
350
357
|
*/
|
|
351
|
-
function
|
|
358
|
+
function tableMembershipSource(options) {
|
|
352
359
|
const c = options.columns ?? {};
|
|
353
360
|
const scope = `${col(c.scope ?? "scope")}::text`;
|
|
354
361
|
const id = `${col(c.id ?? "scope_id")}::text`;
|
|
355
362
|
const within = c.within === void 0 ? "null::jsonb" : col(c.within);
|
|
356
|
-
const
|
|
357
|
-
const
|
|
358
|
-
const role = memberRole(c.role ?? "role", options.table, "fromTable columns.role");
|
|
363
|
+
const user = memberUser(c.user ?? "user_id", options.table, "tableMembershipSource columns.user");
|
|
364
|
+
const role = memberRole(c.role ?? "role", options.table, "tableMembershipSource columns.role");
|
|
359
365
|
return sourceOf(sqlOf({
|
|
360
366
|
table: options.table,
|
|
361
367
|
join: `${user.column.join}${role.join}`,
|
|
@@ -368,13 +374,13 @@ function fromTable(options) {
|
|
|
368
374
|
id,
|
|
369
375
|
within,
|
|
370
376
|
roles: roleAgg(role),
|
|
371
|
-
via:
|
|
377
|
+
via: optionalColumn(c.via, "text"),
|
|
372
378
|
expiresAt: c.expiresAt,
|
|
373
379
|
disabledAt: c.disabledAt,
|
|
374
|
-
grantedBy:
|
|
375
|
-
reason:
|
|
376
|
-
memberGroup:
|
|
377
|
-
managed:
|
|
380
|
+
grantedBy: optionalColumn(c.grantedBy, "text"),
|
|
381
|
+
reason: optionalColumn(c.reason, "text"),
|
|
382
|
+
memberGroup: optionalColumn(c.group, "text"),
|
|
383
|
+
managed: optionalColumn(c.managedBy, "text"),
|
|
378
384
|
managedColumn: c.managedBy,
|
|
379
385
|
seats: c.seats === void 0 ? "null::jsonb" : `to_jsonb(${col(c.seats)})`,
|
|
380
386
|
x: c.x,
|
|
@@ -428,15 +434,15 @@ function fromTable(options) {
|
|
|
428
434
|
* membership of `scope`, with roles from a column or fixed (`['contact']`), a
|
|
429
435
|
* fixed `via`, and ancestor ids from `within` columns.
|
|
430
436
|
*/
|
|
431
|
-
function
|
|
437
|
+
function junctionMembershipSource(options) {
|
|
432
438
|
if (!/^[a-z][a-z0-9_]*$/u.test(options.scope)) throw new TypeError(`PermDock: unsafe scope name '${options.scope}'`);
|
|
433
439
|
const idColumn = options.id ?? `${options.scope}_id`;
|
|
434
440
|
const withinEntries = Object.entries(options.within ?? {});
|
|
435
441
|
const roles = options.roles;
|
|
436
442
|
const fixed = isFixed(roles) ? roles : void 0;
|
|
437
|
-
if (fixed?.length === 0) throw new TypeError("PermDock:
|
|
438
|
-
const role = isFixed(roles) ? void 0 : memberRole(typeof roles === "object" && "sources" in roles ? roles.sources : roles, options.table, "
|
|
439
|
-
const user = memberUser(options.user ?? "user_id", options.table, "
|
|
443
|
+
if (fixed?.length === 0) throw new TypeError("PermDock: junctionMembershipSource needs at least one role");
|
|
444
|
+
const role = isFixed(roles) ? void 0 : memberRole(typeof roles === "object" && "sources" in roles ? roles.sources : roles, options.table, "junctionMembershipSource roles");
|
|
445
|
+
const user = memberUser(options.user ?? "user_id", options.table, "junctionMembershipSource user");
|
|
440
446
|
const managedColumn = options.managedBy === void 0 ? void 0 : options.managedBy === "idp" ? "" : options.managedBy.column;
|
|
441
447
|
const groupColumn = options.group === void 0 || typeof options.group === "string" ? void 0 : options.group.column;
|
|
442
448
|
const shape = {
|
|
@@ -541,4 +547,4 @@ function authzVersion(options) {
|
|
|
541
547
|
};
|
|
542
548
|
}
|
|
543
549
|
//#endregion
|
|
544
|
-
export {
|
|
550
|
+
export { hookApiNames as a, tableMembershipSource as c, keptKeys as d, authzVersion as i, roleColumn as l, HOOK_API_SCHEMA as n, junctionMembershipSource as o, PERMDOCK_SCHEMA as r, supabasePostgresQuery as s, AUTHZ_VERSION_TABLE as t, roleManifest as u };
|
|
@@ -39,5 +39,17 @@ function quoteQualifiedTable(name, prefix = "PermDock") {
|
|
|
39
39
|
function sqlTextArray(values) {
|
|
40
40
|
return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteSqlLiteral).join(", ")}]::text[]`;
|
|
41
41
|
}
|
|
42
|
+
/** The SQL command a default verb runs: `read`, `list` and `get` select, `create` inserts, `update` and `delete` keep their name. */
|
|
43
|
+
function defaultSqlCommand(action) {
|
|
44
|
+
switch (action) {
|
|
45
|
+
case "read":
|
|
46
|
+
case "list":
|
|
47
|
+
case "get": return "select";
|
|
48
|
+
case "create": return "insert";
|
|
49
|
+
case "update": return "update";
|
|
50
|
+
case "delete": return "delete";
|
|
51
|
+
default: return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
42
54
|
//#endregion
|
|
43
|
-
export {
|
|
55
|
+
export { quoteQualifiedTable as a, quoteSqlTable as c, qualifySqlTable as i, sqlIdent as l, defaultSqlCommand as n, quoteSqlIdent as o, escapeSqlIdent as r, quoteSqlLiteral as s, SQL_IDENT as t, sqlTextArray as u };
|