permdock 0.6.0 → 0.8.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 +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/checks-CGkP3Z7A.js +40 -0
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/connector-schema-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/pkce-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/prompt-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/sources-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/text-diff-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +308 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* What `permdock supabase inspect --json` prints and `--out` writes to
|
|
4
4
|
* `permdock.manifest.json`: the contract between the generated hook and SQL
|
|
5
|
-
* helpers and a package that writes policies or claims next to them.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* helpers and a package that writes policies or claims next to them. `version`
|
|
6
|
+
* is the major of this shape; a field is only ever added within it.
|
|
7
|
+
* `schemas/supabase-manifest-v1.json` is its JSON Schema.
|
|
8
8
|
*/
|
|
9
9
|
type SupabaseHookManifest = {
|
|
10
10
|
readonly $schema: "https://permdock.com/schemas/supabase-manifest-v1.json";
|
|
@@ -41,13 +41,23 @@ type SupabaseHookManifest = {
|
|
|
41
41
|
/**
|
|
42
42
|
* With `authzVersion`, the function that bumps the listed users' `authz_ver`,
|
|
43
43
|
* for a membership source outside the hook. It is `security definer` and no
|
|
44
|
-
* client role may execute it: call it from a trigger owned by the table's
|
|
44
|
+
* client role may execute it: call it from a trigger owned by the table's
|
|
45
|
+
* owner.
|
|
45
46
|
*/
|
|
46
47
|
readonly authzVersionBump?: {
|
|
47
48
|
readonly schema: string;
|
|
48
49
|
readonly function: "permdock_bump_authz_version_for";
|
|
49
50
|
readonly args: "p_users uuid[]";
|
|
50
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* The Management API fields that make a hosted project call the hook;
|
|
54
|
+
* `permdock supabase inspect` adds them.
|
|
55
|
+
*/
|
|
56
|
+
readonly managementApi?: {
|
|
57
|
+
readonly hook_custom_access_token_enabled: true;
|
|
58
|
+
readonly hook_custom_access_token_uri: string;
|
|
59
|
+
readonly jwt_exp: number;
|
|
60
|
+
};
|
|
51
61
|
/** The `supabase.hook.memberships` sources, in the order the hook reads them. */
|
|
52
62
|
readonly memberships: readonly SupabaseManifestMembership[];
|
|
53
63
|
readonly rls: SupabaseManifestRls;
|
|
@@ -67,6 +77,51 @@ type SupabaseHookManifest = {
|
|
|
67
77
|
* SDK that lacks one cannot serve this policy.
|
|
68
78
|
*/
|
|
69
79
|
readonly requires?: SupabaseManifestRequires;
|
|
80
|
+
/**
|
|
81
|
+
* The SQL names the generated RLS exposes, as `resolveNames` gives them.
|
|
82
|
+
* Absent from a manifest written before 0.8.
|
|
83
|
+
*/
|
|
84
|
+
readonly names?: SupabaseManifestNames;
|
|
85
|
+
};
|
|
86
|
+
/** The SQL helpers named after one scope, unqualified. */
|
|
87
|
+
type SupabaseManifestScopeNames = {
|
|
88
|
+
readonly permittedIds: string;
|
|
89
|
+
readonly permittedIdsFor: string;
|
|
90
|
+
readonly memberIds: string;
|
|
91
|
+
readonly memberIdsFor: string;
|
|
92
|
+
/**
|
|
93
|
+
* Only on the team scope (`team` or `teams`), for better-supabase's
|
|
94
|
+
* `teamIdsOf`.
|
|
95
|
+
*/
|
|
96
|
+
readonly memberIdsOf?: string;
|
|
97
|
+
readonly permittedUsers: string;
|
|
98
|
+
};
|
|
99
|
+
/** The SQL objects named after one resource, unqualified. */
|
|
100
|
+
type SupabaseManifestResourceNames = {
|
|
101
|
+
/** The table `rls.tables` maps, as written there. */
|
|
102
|
+
readonly table?: string;
|
|
103
|
+
/** Graph resources only: `permitted_<resource>_ids` and its restriction check. */
|
|
104
|
+
readonly permittedIds?: string;
|
|
105
|
+
readonly restricted?: string;
|
|
106
|
+
/** With `rls.rowHelpers` naming the resource. */
|
|
107
|
+
readonly rows?: string;
|
|
108
|
+
readonly row?: string;
|
|
109
|
+
/** With `rls.fields` and a mapped table. */
|
|
110
|
+
readonly visible?: string;
|
|
111
|
+
readonly visibleFields?: string;
|
|
112
|
+
readonly mask?: string;
|
|
113
|
+
};
|
|
114
|
+
type SupabaseManifestNames = {
|
|
115
|
+
readonly schema: string;
|
|
116
|
+
readonly gucPrefix: string;
|
|
117
|
+
readonly claims: {
|
|
118
|
+
readonly tenant: string;
|
|
119
|
+
readonly role: string;
|
|
120
|
+
};
|
|
121
|
+
/** The scope better-supabase reads as its teams, when one is declared. */
|
|
122
|
+
readonly teamScope?: string;
|
|
123
|
+
readonly scopes: Readonly<Record<string, SupabaseManifestScopeNames>>;
|
|
124
|
+
readonly resources: Readonly<Record<string, SupabaseManifestResourceNames>>;
|
|
70
125
|
};
|
|
71
126
|
type SupabaseManifestRequires = {
|
|
72
127
|
/** The capability-matrix release tag, `capability-matrix-v1.<minor>.<patch>`. */
|
|
@@ -88,30 +143,54 @@ type SupabaseManifestColumn = {
|
|
|
88
143
|
type SupabaseManifestValue = SupabaseManifestColumn | {
|
|
89
144
|
readonly value: string | readonly string[];
|
|
90
145
|
};
|
|
91
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* A column that references another table: the value (role key or user id) is
|
|
148
|
+
* `column` of `table`, matched on `id`.
|
|
149
|
+
*/
|
|
92
150
|
type SupabaseManifestThrough = {
|
|
93
151
|
readonly table: string;
|
|
94
152
|
readonly id: string;
|
|
95
153
|
readonly column: string;
|
|
96
154
|
};
|
|
97
|
-
/**
|
|
155
|
+
/**
|
|
156
|
+
* A role column (with `through` when it references a roles table), or the fixed
|
|
157
|
+
* roles every row holds.
|
|
158
|
+
*/
|
|
98
159
|
type SupabaseManifestRole = SupabaseManifestValue | (SupabaseManifestColumn & {
|
|
99
160
|
readonly through: SupabaseManifestThrough;
|
|
161
|
+
}) | (SupabaseManifestColumn & {
|
|
162
|
+
/**
|
|
163
|
+
* Each column value to the role key it stands for, or `null` for no role;
|
|
164
|
+
* an unlisted value is no role.
|
|
165
|
+
*/
|
|
166
|
+
readonly map: Readonly<Record<string, string | null>>;
|
|
100
167
|
});
|
|
101
168
|
/** One `tableMembershipSource` or `junctionMembershipSource` source. */
|
|
102
169
|
type SupabaseManifestMembership = {
|
|
103
170
|
/** `schema.table`, `public` when the source names no schema. */
|
|
104
171
|
readonly table: string;
|
|
105
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* The user id column, with `through` when it references the table that holds
|
|
174
|
+
* the user id.
|
|
175
|
+
*/
|
|
106
176
|
readonly user: SupabaseManifestColumn | (SupabaseManifestColumn & {
|
|
107
177
|
readonly through: SupabaseManifestThrough;
|
|
108
178
|
});
|
|
109
|
-
/**
|
|
179
|
+
/**
|
|
180
|
+
* A column for `tableMembershipSource`, the fixed scope for
|
|
181
|
+
* `junctionMembershipSource`.
|
|
182
|
+
*/
|
|
110
183
|
readonly scope: SupabaseManifestValue;
|
|
111
184
|
readonly id: SupabaseManifestColumn;
|
|
112
|
-
/**
|
|
185
|
+
/**
|
|
186
|
+
* A role column, the fixed roles every row holds, or several role columns
|
|
187
|
+
* whose keys the row holds together.
|
|
188
|
+
*/
|
|
113
189
|
readonly role: SupabaseManifestRole | readonly SupabaseManifestRole[];
|
|
114
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* A `jsonb` column of ancestor ids keyed by scope, or one column per ancestor
|
|
192
|
+
* scope.
|
|
193
|
+
*/
|
|
115
194
|
readonly within?: SupabaseManifestColumn | {
|
|
116
195
|
readonly columns: Readonly<Record<string, string>>;
|
|
117
196
|
};
|
|
@@ -126,10 +205,16 @@ type SupabaseManifestHelper = {
|
|
|
126
205
|
/** The argument list, `p_grant text`, or `''` for none. */
|
|
127
206
|
readonly args: string;
|
|
128
207
|
readonly returns: string;
|
|
129
|
-
/**
|
|
208
|
+
/**
|
|
209
|
+
* The roles granted `execute`; a field view `anon` reads adds `anon` to the
|
|
210
|
+
* `authenticated` ones.
|
|
211
|
+
*/
|
|
130
212
|
readonly execute: readonly string[];
|
|
131
213
|
};
|
|
132
|
-
/**
|
|
214
|
+
/**
|
|
215
|
+
* A table whose row says whether a user or a scope instance is active
|
|
216
|
+
* (`rls.suspension`); a missing row counts as suspended.
|
|
217
|
+
*/
|
|
133
218
|
type SupabaseManifestActiveRow = {
|
|
134
219
|
/** `schema.table`. */
|
|
135
220
|
readonly table: string;
|
|
@@ -140,12 +225,18 @@ type SupabaseManifestActiveRow = {
|
|
|
140
225
|
/** A status column; only a row whose value is in `active` is active. */
|
|
141
226
|
readonly status?: string;
|
|
142
227
|
readonly active?: readonly string[];
|
|
143
|
-
/**
|
|
228
|
+
/**
|
|
229
|
+
* A scope only: the permission keys members of a suspended instance still
|
|
230
|
+
* hold.
|
|
231
|
+
*/
|
|
144
232
|
readonly keep?: readonly string[];
|
|
145
233
|
};
|
|
146
234
|
type SupabaseManifestRls = {
|
|
147
235
|
readonly schema: string;
|
|
148
|
-
/**
|
|
236
|
+
/**
|
|
237
|
+
* Where the helpers read roles and memberships: the claims (`jwt`) or the
|
|
238
|
+
* tables (`database`).
|
|
239
|
+
*/
|
|
149
240
|
readonly mode: "jwt" | "database";
|
|
150
241
|
readonly tenantClaim: string;
|
|
151
242
|
/** The declared scopes, root first, with the Postgres type of their ids. */
|
|
@@ -155,13 +246,14 @@ type SupabaseManifestRls = {
|
|
|
155
246
|
readonly within?: string;
|
|
156
247
|
}[];
|
|
157
248
|
/**
|
|
158
|
-
* Every function `rls generate` writes for policies and trusted SQL to
|
|
159
|
-
*
|
|
160
|
-
* `permdock_user_id`, the caller's user id; in `database` mode
|
|
249
|
+
* Every function `rls generate` writes for policies and trusted SQL to call:
|
|
250
|
+
* `permdock_has`, `permitted_<scope>_ids`, `member_<scope>_ids` and
|
|
251
|
+
* `permdock_user_id`, the caller's user id; in `database` mode
|
|
252
|
+
* `permdock_has_for`, `permitted_<scope>_ids_for` and
|
|
161
253
|
* `member_<scope>_ids_for`; and when a role declares `assigns`,
|
|
162
254
|
* `permdock_can_assign`, `permdock_can_assign_any` and, with custom roles,
|
|
163
|
-
* `permdock_can_assign_custom_role`, each with its `_for` form where one
|
|
164
|
-
*
|
|
255
|
+
* `permdock_can_assign_custom_role`, each with its `_for` form where one is
|
|
256
|
+
* written. A helper whose `execute` is empty is for trusted SQL only.
|
|
165
257
|
*/
|
|
166
258
|
readonly helpers: readonly SupabaseManifestHelper[];
|
|
167
259
|
/**
|
|
@@ -170,7 +262,10 @@ type SupabaseManifestRls = {
|
|
|
170
262
|
* `memberships`.
|
|
171
263
|
*/
|
|
172
264
|
readonly memberships: readonly SupabaseManifestMembership[];
|
|
173
|
-
/**
|
|
265
|
+
/**
|
|
266
|
+
* Whether custom roles live in the helpers' tables (`rls.customRoles` in
|
|
267
|
+
* `database` mode).
|
|
268
|
+
*/
|
|
174
269
|
readonly customRoles?: boolean;
|
|
175
270
|
/** The global-roles table the hook and the `database` mode helpers read. */
|
|
176
271
|
readonly roles?: {
|
|
@@ -178,7 +273,10 @@ type SupabaseManifestRls = {
|
|
|
178
273
|
readonly user: SupabaseManifestColumn;
|
|
179
274
|
readonly role: SupabaseManifestRole | readonly SupabaseManifestRole[];
|
|
180
275
|
};
|
|
181
|
-
/**
|
|
276
|
+
/**
|
|
277
|
+
* `rls.suspension`: a suspended user, or a suspended scope instance, holds
|
|
278
|
+
* nothing but its scope's `keep`.
|
|
279
|
+
*/
|
|
182
280
|
readonly suspension?: {
|
|
183
281
|
readonly users?: SupabaseManifestActiveRow;
|
|
184
282
|
readonly scopes?: Readonly<Record<string, SupabaseManifestActiveRow>>;
|
|
@@ -187,13 +285,18 @@ type SupabaseManifestRls = {
|
|
|
187
285
|
};
|
|
188
286
|
};
|
|
189
287
|
/**
|
|
190
|
-
* `rls.assignments`: the tables whose client writes the assignment
|
|
191
|
-
*
|
|
192
|
-
*
|
|
288
|
+
* `rls.assignments`: the tables whose client writes the assignment triggers
|
|
289
|
+
* check against `permdock_can_assign_any`, so SQL writing rows there needs no
|
|
290
|
+
* role-ceiling check of its own.
|
|
193
291
|
*/
|
|
194
292
|
readonly assignments?: {
|
|
195
293
|
readonly tables: readonly string[];
|
|
196
294
|
};
|
|
295
|
+
/**
|
|
296
|
+
* `rls.tokenScopes`: the helpers narrow a delegated token by its `scope`
|
|
297
|
+
* claim through `permdock_token_scope_allows`.
|
|
298
|
+
*/
|
|
299
|
+
readonly tokenScopes?: boolean;
|
|
197
300
|
readonly apiKeys?: {
|
|
198
301
|
readonly claim: string;
|
|
199
302
|
readonly scopes: string;
|
|
@@ -202,12 +305,25 @@ type SupabaseManifestRls = {
|
|
|
202
305
|
readonly serviceRoles: readonly string[];
|
|
203
306
|
};
|
|
204
307
|
};
|
|
308
|
+
/**
|
|
309
|
+
* The manifest of a project in `rls.authorize: 'database'` mode without
|
|
310
|
+
* `supabase.hook`: no token hook, so no `hook`, `budget`, `claims`,
|
|
311
|
+
* `authzVersion` or hook `memberships`.
|
|
312
|
+
*/
|
|
313
|
+
type SupabaseDatabaseManifest = Omit<SupabaseHookManifest, "authzVersion" | "authzVersionBump" | "budget" | "claims" | "hook" | "managementApi" | "memberships">;
|
|
314
|
+
/**
|
|
315
|
+
* What `parseSupabaseManifest` returns: a manifest with or without the token
|
|
316
|
+
* hook.
|
|
317
|
+
*/
|
|
318
|
+
type SupabaseManifest = SupabaseDatabaseManifest | SupabaseHookManifest;
|
|
319
|
+
/** Whether the manifest describes a token hook. */
|
|
320
|
+
declare function hasTokenHook(manifest: SupabaseManifest): manifest is SupabaseHookManifest;
|
|
205
321
|
/**
|
|
206
322
|
* Reads a `permdock.manifest.json` document (parsed, or the JSON text) and
|
|
207
323
|
* validates it against `schemas/supabase-manifest-v1.json`. Returns a
|
|
208
|
-
* deep-frozen copy built from own keys; throws `PermDockValidationError`
|
|
209
|
-
*
|
|
324
|
+
* deep-frozen copy built from own keys; throws `PermDockValidationError` with
|
|
325
|
+
* every issue, so a manifest of another major is refused.
|
|
210
326
|
*/
|
|
211
|
-
declare function parseSupabaseManifest(json: unknown):
|
|
327
|
+
declare function parseSupabaseManifest(json: unknown): SupabaseManifest;
|
|
212
328
|
//#endregion
|
|
213
|
-
export {
|
|
329
|
+
export { hasTokenHook as _, SupabaseManifestActiveRow as a, SupabaseManifestMembership as c, SupabaseManifestResourceNames as d, SupabaseManifestRls as f, SupabaseManifestValue as g, SupabaseManifestThrough as h, SupabaseManifest as i, SupabaseManifestNames as l, SupabaseManifestScopeNames as m, SupabaseHookClaim as n, SupabaseManifestColumn as o, SupabaseManifestRole as p, SupabaseHookManifest as r, SupabaseManifestHelper as s, SupabaseDatabaseManifest as t, SupabaseManifestRequires as u, parseSupabaseManifest as v };
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { n as freezeDeep } from "./freeze-
|
|
1
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
2
2
|
//#region src/supabase/manifest-schema.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* `schemas/supabase-manifest-v1.json`, which `parseSupabaseManifest` checks
|
|
5
|
+
* against; a test keeps the two equal.
|
|
6
|
+
*/
|
|
4
7
|
const supabaseManifestSchema = freezeDeep({
|
|
5
8
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
6
9
|
$id: "https://permdock.com/schemas/supabase-manifest-v1.json",
|
|
@@ -10,13 +13,8 @@ const supabaseManifestSchema = freezeDeep({
|
|
|
10
13
|
required: [
|
|
11
14
|
"$schema",
|
|
12
15
|
"version",
|
|
13
|
-
"hook",
|
|
14
16
|
"helpers",
|
|
15
17
|
"tenantClaim",
|
|
16
|
-
"budget",
|
|
17
|
-
"claims",
|
|
18
|
-
"authzVersion",
|
|
19
|
-
"memberships",
|
|
20
18
|
"rls",
|
|
21
19
|
"decidingColumns",
|
|
22
20
|
"markers"
|
|
@@ -95,6 +93,24 @@ const supabaseManifestSchema = freezeDeep({
|
|
|
95
93
|
}
|
|
96
94
|
},
|
|
97
95
|
authzVersion: { type: "boolean" },
|
|
96
|
+
managementApi: {
|
|
97
|
+
description: "The Management API fields that make a hosted project call the generated hook, as `permdock supabase inspect` prints and `--out` writes them.",
|
|
98
|
+
type: "object",
|
|
99
|
+
required: [
|
|
100
|
+
"hook_custom_access_token_enabled",
|
|
101
|
+
"hook_custom_access_token_uri",
|
|
102
|
+
"jwt_exp"
|
|
103
|
+
],
|
|
104
|
+
properties: {
|
|
105
|
+
hook_custom_access_token_enabled: { const: true },
|
|
106
|
+
hook_custom_access_token_uri: { type: "string" },
|
|
107
|
+
jwt_exp: {
|
|
108
|
+
description: "The access token lifetime in seconds: `[auth] jwt_expiry` of `supabase/config.toml`, or 3600 when it is unset.",
|
|
109
|
+
type: "integer"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
additionalProperties: false
|
|
113
|
+
},
|
|
98
114
|
authzVersionBump: {
|
|
99
115
|
type: "object",
|
|
100
116
|
required: [
|
|
@@ -222,6 +238,7 @@ const supabaseManifestSchema = freezeDeep({
|
|
|
222
238
|
items: { type: "string" }
|
|
223
239
|
} }
|
|
224
240
|
},
|
|
241
|
+
tokenScopes: { type: "boolean" },
|
|
225
242
|
apiKeys: {
|
|
226
243
|
type: "object",
|
|
227
244
|
required: [
|
|
@@ -260,6 +277,44 @@ const supabaseManifestSchema = freezeDeep({
|
|
|
260
277
|
grants: { const: "v1" }
|
|
261
278
|
}
|
|
262
279
|
},
|
|
280
|
+
names: {
|
|
281
|
+
description: "The SQL names the generated RLS exposes to application SQL, unqualified, in `schema`: per scope and per resource, as `resolveNames` gives them. Absent from a manifest written before 0.8.",
|
|
282
|
+
type: "object",
|
|
283
|
+
required: [
|
|
284
|
+
"schema",
|
|
285
|
+
"gucPrefix",
|
|
286
|
+
"claims",
|
|
287
|
+
"scopes",
|
|
288
|
+
"resources"
|
|
289
|
+
],
|
|
290
|
+
properties: {
|
|
291
|
+
schema: { type: "string" },
|
|
292
|
+
gucPrefix: { type: "string" },
|
|
293
|
+
claims: {
|
|
294
|
+
type: "object",
|
|
295
|
+
required: ["tenant", "role"],
|
|
296
|
+
properties: {
|
|
297
|
+
tenant: { type: "string" },
|
|
298
|
+
role: { type: "string" }
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
teamScope: { type: "string" },
|
|
302
|
+
scopes: {
|
|
303
|
+
type: "object",
|
|
304
|
+
additionalProperties: {
|
|
305
|
+
type: "object",
|
|
306
|
+
additionalProperties: { type: "string" }
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
resources: {
|
|
310
|
+
type: "object",
|
|
311
|
+
additionalProperties: {
|
|
312
|
+
type: "object",
|
|
313
|
+
additionalProperties: { type: "string" }
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
},
|
|
263
318
|
requires: {
|
|
264
319
|
description: "The supabase/sdk capability-matrix feature ids the hook, the helpers and subjectFromSupabase depend on, as of the matrix release tag.",
|
|
265
320
|
type: "object",
|
|
@@ -349,7 +404,7 @@ const supabaseManifestSchema = freezeDeep({
|
|
|
349
404
|
},
|
|
350
405
|
helperName: {
|
|
351
406
|
type: "string",
|
|
352
|
-
pattern: "^(permdock_has(_for)?|permitted_[a-z][a-z0-9_]*_(ids|permission_keys)(_for)?|permitted_[a-z][a-z0-9_]*_users|member_[a-z][a-z0-9_]*_ids(_for)?|permdock_can_assign(_any|_custom_role)?(_for)?|permdock_api_key_allows|permdock_actor_may_write|permdock_is_approver|permdock_user_id)$"
|
|
407
|
+
pattern: "^(permdock_has(_for)?|permitted_[a-z][a-z0-9_]*_(ids|permission_keys)(_for)?|permitted_[a-z][a-z0-9_]*_users|member_[a-z][a-z0-9_]*_ids(_for|_of)?|permdock_can_assign(_any|_custom_role)?(_for)?|permdock_api_key_allows|permdock_token_scope_allows|permdock_actor_may_write|permdock_is_approver|permdock_user_id)$"
|
|
353
408
|
},
|
|
354
409
|
column: {
|
|
355
410
|
type: "object",
|
|
@@ -357,7 +412,23 @@ const supabaseManifestSchema = freezeDeep({
|
|
|
357
412
|
additionalProperties: false,
|
|
358
413
|
properties: { column: { $ref: "#/$defs/identifier" } }
|
|
359
414
|
},
|
|
360
|
-
role: { oneOf: [
|
|
415
|
+
role: { oneOf: [
|
|
416
|
+
{ $ref: "#/$defs/value" },
|
|
417
|
+
{ $ref: "#/$defs/through" },
|
|
418
|
+
{ $ref: "#/$defs/mapped" }
|
|
419
|
+
] },
|
|
420
|
+
mapped: {
|
|
421
|
+
type: "object",
|
|
422
|
+
required: ["column", "map"],
|
|
423
|
+
additionalProperties: false,
|
|
424
|
+
properties: {
|
|
425
|
+
column: { $ref: "#/$defs/identifier" },
|
|
426
|
+
map: {
|
|
427
|
+
type: "object",
|
|
428
|
+
additionalProperties: { type: ["string", "null"] }
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
},
|
|
361
432
|
user: { oneOf: [{ $ref: "#/$defs/column" }, { $ref: "#/$defs/through" }] },
|
|
362
433
|
through: {
|
|
363
434
|
type: "object",
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { n as freezeDeep } from "./freeze-
|
|
2
|
-
import { n as PermDockValidationError } from "./validation-error-
|
|
3
|
-
import { n as copyJson, t as checkSchema } from "./json-schema-
|
|
4
|
-
import { t as supabaseManifestSchema } from "./manifest-schema-
|
|
1
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
2
|
+
import { n as PermDockValidationError } from "./validation-error-CYg2kJEw.js";
|
|
3
|
+
import { n as copyJson, t as checkSchema } from "./json-schema-BPGa-RjQ.js";
|
|
4
|
+
import { t as supabaseManifestSchema } from "./manifest-schema-2r37XRhD.js";
|
|
5
5
|
//#region src/supabase/manifest.ts
|
|
6
|
+
/** Whether the manifest describes a token hook. */
|
|
7
|
+
function hasTokenHook(manifest) {
|
|
8
|
+
return "hook" in manifest;
|
|
9
|
+
}
|
|
6
10
|
/**
|
|
7
11
|
* Reads a `permdock.manifest.json` document (parsed, or the JSON text) and
|
|
8
12
|
* validates it against `schemas/supabase-manifest-v1.json`. Returns a
|
|
9
|
-
* deep-frozen copy built from own keys; throws `PermDockValidationError`
|
|
10
|
-
*
|
|
13
|
+
* deep-frozen copy built from own keys; throws `PermDockValidationError` with
|
|
14
|
+
* every issue, so a manifest of another major is refused.
|
|
11
15
|
*/
|
|
12
16
|
function parseSupabaseManifest(json) {
|
|
13
17
|
const issues = [];
|
|
@@ -39,4 +43,4 @@ function invalidManifest(issues) {
|
|
|
39
43
|
});
|
|
40
44
|
}
|
|
41
45
|
//#endregion
|
|
42
|
-
export { parseSupabaseManifest as t };
|
|
46
|
+
export { parseSupabaseManifest as n, hasTokenHook as t };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { n as isForbiddenKey, o as readPath } from "./paths-
|
|
4
|
-
import { n as expirySeconds } from "./expiry-
|
|
5
|
-
import { r as validateRecord } from "./thenable-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { n as isForbiddenKey, o as readPath } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { n as expirySeconds } from "./expiry-6XByK0dm.js";
|
|
5
|
+
import { r as validateRecord } from "./thenable-BNSM1U2R.js";
|
|
6
6
|
import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
|
|
7
|
-
import { t as readClaim } from "./claims-map-
|
|
8
|
-
import { t as clientNameOf } from "./clients-
|
|
7
|
+
import { t as readClaim } from "./claims-map-CKkoAAYF.js";
|
|
8
|
+
import { t as clientNameOf } from "./clients-DYr3U86j.js";
|
|
9
9
|
//#region src/jwt/map-claims.ts
|
|
10
10
|
/** OpenID Connect Core section 5.1: profile data the provider owns. */
|
|
11
11
|
const PROFILE_CLAIMS = [
|
|
@@ -180,7 +180,10 @@ function membershipsFromClaim(value) {
|
|
|
180
180
|
});
|
|
181
181
|
return out;
|
|
182
182
|
}
|
|
183
|
-
/**
|
|
183
|
+
/**
|
|
184
|
+
* Zitadel's `role -> { orgId: orgDomain }` form: string values and no `roles`
|
|
185
|
+
* key.
|
|
186
|
+
*/
|
|
184
187
|
function isRoleToOrganisations(value) {
|
|
185
188
|
const entries = Object.entries(value);
|
|
186
189
|
return entries.length > 0 && !("roles" in value) && entries.every(([key, item]) => typeof item === "string" && !isForbiddenKey(key));
|
|
@@ -338,19 +341,25 @@ function mapClaimsToSubject(claims, options) {
|
|
|
338
341
|
invalidChain: false
|
|
339
342
|
};
|
|
340
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* `true` when a verified token is not an OpenID Connect ID token for one of
|
|
346
|
+
* `clients`.
|
|
347
|
+
*/
|
|
348
|
+
function idTokenMismatch(claims, headerTyp, clients) {
|
|
349
|
+
const typ = headerTyp?.toLowerCase();
|
|
350
|
+
if (typ !== void 0 && typ !== "jwt" && typ !== "application/jwt") return true;
|
|
351
|
+
if (typeof claims.iat !== "number") return true;
|
|
352
|
+
const aud = claims.aud;
|
|
353
|
+
const audiences = Array.isArray(aud) ? aud : aud === void 0 ? [] : [aud];
|
|
354
|
+
const expected = clients === void 0 ? [] : typeof clients === "string" ? [clients] : clients;
|
|
355
|
+
const azp = claims["azp"];
|
|
356
|
+
if (azp === void 0) return audiences.length > 1;
|
|
357
|
+
return typeof azp !== "string" || !expected.includes(azp);
|
|
358
|
+
}
|
|
341
359
|
function acceptMismatch(claims, headerTyp, options, audience) {
|
|
342
360
|
const accept = options.accept ?? "access-token";
|
|
343
361
|
const typ = headerTyp?.toLowerCase();
|
|
344
|
-
if (accept === "id-token")
|
|
345
|
-
if (typ !== void 0 && typ !== "jwt" && typ !== "application/jwt") return true;
|
|
346
|
-
if (typeof claims.iat !== "number") return true;
|
|
347
|
-
const aud = claims.aud;
|
|
348
|
-
const audiences = Array.isArray(aud) ? aud : aud === void 0 ? [] : [aud];
|
|
349
|
-
const clients = audience === void 0 ? [] : typeof audience === "string" ? [audience] : audience;
|
|
350
|
-
const azp = claims["azp"];
|
|
351
|
-
if (azp === void 0) return audiences.length > 1;
|
|
352
|
-
return typeof azp !== "string" || !clients.includes(azp);
|
|
353
|
-
}
|
|
362
|
+
if (accept === "id-token") return idTokenMismatch(claims, headerTyp, audience);
|
|
354
363
|
if (options.profile === "fapi2" && typ !== "at+jwt") return true;
|
|
355
364
|
if (typeof claims["nonce"] === "string") return true;
|
|
356
365
|
if (audience !== void 0 && typeof claims.aud === "string") {
|
|
@@ -360,4 +369,4 @@ function acceptMismatch(claims, headerTyp, options, audience) {
|
|
|
360
369
|
return false;
|
|
361
370
|
}
|
|
362
371
|
//#endregion
|
|
363
|
-
export {
|
|
372
|
+
export { validateCustomClaims as i, idTokenMismatch as n, mapClaimsToSubject as r, acceptMismatch as t };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as PermDockValidationError } from "./validation-error-
|
|
3
|
-
import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "./errors-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { n as PermDockValidationError } from "./validation-error-CYg2kJEw.js";
|
|
3
|
+
import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "./errors-B6R_lg2a.js";
|
|
4
|
+
import { a as decisionResponse, l as problemResponse } from "./problem-BVLHFK33.js";
|
|
5
|
+
import { l as InvalidSignatureError } from "./evaluations-IBceAeKT.js";
|
|
6
6
|
//#region src/server/map-error.ts
|
|
7
7
|
/**
|
|
8
8
|
* Turns a thrown PermDock error into its Problem Details response, with the
|
|
9
|
-
* status, `WWW-Authenticate` and rate-limit fields `protect` sends for the
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* status, `WWW-Authenticate` and rate-limit fields `protect` sends for the same
|
|
10
|
+
* decision. Returns `undefined` for anything else so the framework's own error
|
|
11
|
+
* path takes over.
|
|
12
12
|
*/
|
|
13
13
|
function problemFromError(error, options = {}) {
|
|
14
14
|
if (error instanceof InvalidSignatureError) return error.response;
|
|
@@ -3,13 +3,25 @@ import { t as beforeFirst } from "./text-BMFRfBqc.js";
|
|
|
3
3
|
const HOOK_MARKER = "-- permdock:hook v1";
|
|
4
4
|
/** The first line of a `--grants-out` file. */
|
|
5
5
|
const GRANTS_MARKER = "-- permdock:grants v1";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* The first line of the `seeds` part: the `role_permissions` rows, a versioned
|
|
8
|
+
* migration.
|
|
9
|
+
*/
|
|
7
10
|
const SEEDS_MARKER = "-- permdock:seeds v1";
|
|
8
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* The first line of the `indexes` part: the indexes the policies and helpers
|
|
13
|
+
* read through.
|
|
14
|
+
*/
|
|
9
15
|
const INDEXES_MARKER = "-- permdock:indexes v1";
|
|
10
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* The first line of a `--backfill-out` migration: existing custom roles copied
|
|
18
|
+
* into the custom-role tables.
|
|
19
|
+
*/
|
|
11
20
|
const BACKFILL_MARKER = "-- permdock:backfill v1";
|
|
12
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* The first line of a `rls migrate --retire-out` migration: a materialised
|
|
23
|
+
* permissions table and its refresh triggers dropped.
|
|
24
|
+
*/
|
|
13
25
|
const RETIRE_MARKER = "-- permdock:retire v1";
|
|
14
26
|
const HOOK_LINE = /^-- permdock:hook v(?<version>[1-9]\d*)(?: (?<rest>.*))?$/u;
|
|
15
27
|
const GRANTS_LINE = /^-- permdock:grants v(?<version>[1-9]\d*)(?: (?<rest>.*))?$/u;
|
|
@@ -25,7 +37,10 @@ function pairs(rest) {
|
|
|
25
37
|
}
|
|
26
38
|
return fields;
|
|
27
39
|
}
|
|
28
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* The fields of a hook marker line, or undefined when `sql` does not start with
|
|
42
|
+
* one.
|
|
43
|
+
*/
|
|
29
44
|
function hookMarkerFields(sql) {
|
|
30
45
|
const line = firstLine(sql);
|
|
31
46
|
return line.startsWith(`-- permdock:hook v1 `) ? pairs(line.slice(20)) : void 0;
|