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
|
@@ -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 { r as validateRecord } from "./thenable-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { r as validateRecord } from "./thenable-BNSM1U2R.js";
|
|
4
4
|
import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
|
|
5
|
-
import { t as readClaim } from "./claims-map-
|
|
6
|
-
import { t as clientNameOf } from "./clients-
|
|
7
|
-
import "./budget-
|
|
8
|
-
import { a as hookApiNames } from "./sources-
|
|
5
|
+
import { t as readClaim } from "./claims-map-CKkoAAYF.js";
|
|
6
|
+
import { t as clientNameOf } from "./clients-DYr3U86j.js";
|
|
7
|
+
import "./budget-BELja5A9.js";
|
|
8
|
+
import { a as hookApiNames } from "./sources-CMAM-2A3.js";
|
|
9
9
|
//#region src/supabase/subject.ts
|
|
10
10
|
const REGISTERED = /* @__PURE__ */ new Set([
|
|
11
11
|
"sub",
|
|
@@ -28,14 +28,20 @@ const REGISTERED = /* @__PURE__ */ new Set([
|
|
|
28
28
|
"client_id",
|
|
29
29
|
"scope"
|
|
30
30
|
]);
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Top-level first, then `app_metadata`. `null` counts as absent: the RBAC hook
|
|
33
|
+
* writes `null` for a user with no role row.
|
|
34
|
+
*/
|
|
32
35
|
function claimNamed(claims, name) {
|
|
33
36
|
const top = Object.hasOwn(claims, name) ? claims[name] : void 0;
|
|
34
37
|
if (top !== void 0 && top !== null) return top;
|
|
35
38
|
const meta = claims["app_metadata"];
|
|
36
39
|
if (isRecord(meta) && Object.hasOwn(meta, name)) return meta[name] ?? void 0;
|
|
37
40
|
}
|
|
38
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* A `ClaimPath`: a name read at the top level, then in `app_metadata`; or a
|
|
43
|
+
* function over the claims.
|
|
44
|
+
*/
|
|
39
45
|
function claimAt(claims, path) {
|
|
40
46
|
return typeof path === "string" ? claimNamed(claims, path) : readClaim(claims, path);
|
|
41
47
|
}
|
|
@@ -45,7 +51,10 @@ function asRoles(value, declared) {
|
|
|
45
51
|
const allowed = new Set(declared);
|
|
46
52
|
return raw.filter((role) => allowed.has(role));
|
|
47
53
|
}
|
|
48
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Reads the `memberships` claim; an entry it cannot read is dropped and its
|
|
56
|
+
* index reported.
|
|
57
|
+
*/
|
|
49
58
|
function readMemberships(value) {
|
|
50
59
|
if (!Array.isArray(value)) return {
|
|
51
60
|
memberships: [],
|
|
@@ -106,7 +115,10 @@ function memberOf(value) {
|
|
|
106
115
|
function asStrings(value) {
|
|
107
116
|
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
108
117
|
}
|
|
109
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* `claims[plans][tenant]`: only the active tenant's entry, never another
|
|
120
|
+
* tenant's.
|
|
121
|
+
*/
|
|
110
122
|
function plansFor(claims, name, tenant) {
|
|
111
123
|
if (name === void 0 || tenant === void 0) return [];
|
|
112
124
|
const byTenant = claimAt(claims, name);
|
|
@@ -127,11 +139,13 @@ function isToolList(value) {
|
|
|
127
139
|
return Array.isArray(value) && value.every((tool) => typeof tool === "string" && tool !== "");
|
|
128
140
|
}
|
|
129
141
|
/**
|
|
130
|
-
* The outer `act` level by its `kind`, the marker a support tool writes: none
|
|
131
|
-
* or agent chain, `support` a support session (with
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
142
|
+
* The outer `act` level by its `kind`, the marker a support tool writes: none
|
|
143
|
+
* is an OAuth client or agent chain, `support` a support session (with
|
|
144
|
+
* `session_id`), `impersonation` an admin acting as the user, `agent` an agent
|
|
145
|
+
* run with the `tools` it may call. Any other `kind`, a support level without
|
|
146
|
+
* `session_id`, and an agent level with `session_id`, `tools` that are not
|
|
147
|
+
* non-empty strings or a `read_only` that is not a boolean are invalid, as
|
|
148
|
+
* better-supabase reads them.
|
|
135
149
|
*/
|
|
136
150
|
function actingParty(outer, id) {
|
|
137
151
|
const marked = Object.hasOwn(outer, "kind") ? outer["kind"] : void 0;
|
|
@@ -214,14 +228,15 @@ function readActor(claims) {
|
|
|
214
228
|
return NO_ACTOR;
|
|
215
229
|
}
|
|
216
230
|
/**
|
|
217
|
-
* Who acts for the user: the outermost `sub` of an RFC 8693 `act` chain (the
|
|
218
|
-
* actor; nested levels are prior actors, kept on `chain` for audit),
|
|
219
|
-
* OAuth `client_id` of a third-party app. The outer level's `kind`
|
|
220
|
-
* none is `oauth-client`, `support` a support session,
|
|
221
|
-
*
|
|
222
|
-
* `
|
|
223
|
-
*
|
|
224
|
-
*
|
|
231
|
+
* Who acts for the user: the outermost `sub` of an RFC 8693 `act` chain (the
|
|
232
|
+
* current actor; nested levels are prior actors, kept on `chain` for audit),
|
|
233
|
+
* else the OAuth `client_id` of a third-party app. The outer level's `kind`
|
|
234
|
+
* names the actor: none is `oauth-client`, `support` a support session,
|
|
235
|
+
* `impersonation` an admin acting as the user. Reads only `act` and
|
|
236
|
+
* `client_id`; the caller applies the role rule first (`anon` and
|
|
237
|
+
* `service_role` are anonymous and carry no actor). An `act` that is not a
|
|
238
|
+
* chain of objects each with a non-empty `sub`, that names another `kind`, or a
|
|
239
|
+
* support level without `session_id`, is `{ ok: false }` and must deny.
|
|
225
240
|
*/
|
|
226
241
|
function actorOf(claims) {
|
|
227
242
|
try {
|
|
@@ -370,8 +385,9 @@ function subjectFromSupabase(claims, options = {}) {
|
|
|
370
385
|
}
|
|
371
386
|
}
|
|
372
387
|
/**
|
|
373
|
-
* A verified session object (`{ kind, claims }`) in, `Subject` out.
|
|
374
|
-
*
|
|
388
|
+
* A verified session object (`{ kind, claims }`) in, `Subject` out. Only `kind:
|
|
389
|
+
* 'user'` sessions map; `anon`, `service`, `invalid` and anything else are
|
|
390
|
+
* anonymous.
|
|
375
391
|
*/
|
|
376
392
|
function subjectFromSupabaseSession(session, options = {}) {
|
|
377
393
|
try {
|
|
@@ -442,7 +458,10 @@ function versionOf(value) {
|
|
|
442
458
|
const version = typeof value === "string" ? Number(value) : value;
|
|
443
459
|
return typeof version === "number" && Number.isFinite(version) ? version : void 0;
|
|
444
460
|
}
|
|
445
|
-
/**
|
|
461
|
+
/**
|
|
462
|
+
* Reads `subject_for`'s JSON; anything it cannot read is left out, and a
|
|
463
|
+
* malformed record is no record.
|
|
464
|
+
*/
|
|
446
465
|
function readSubjectRecord(value) {
|
|
447
466
|
if (!isRecord(value) || typeof value["id"] !== "string") return;
|
|
448
467
|
if (value["active"] !== true) return {
|
|
@@ -462,20 +481,21 @@ function readSubjectRecord(value) {
|
|
|
462
481
|
const role = customRoleOf(item);
|
|
463
482
|
return role === void 0 ? [] : [role];
|
|
464
483
|
}) : [],
|
|
465
|
-
authzVersion: typeof version === "number" && Number.isFinite(version) ? version : void 0
|
|
484
|
+
authzVersion: typeof version === "number" && Number.isFinite(version) ? version : void 0,
|
|
485
|
+
claims: isRecord(value["claims"]) && Object.keys(value["claims"]).length > 0 ? value["claims"] : void 0
|
|
466
486
|
});
|
|
467
487
|
}
|
|
468
488
|
/**
|
|
469
489
|
* Membership, custom-role and subject sources over the `subject_for(p_user)`,
|
|
470
490
|
* `authz_version_for(p_user)` and `members_of(p_scope, p_id)` functions
|
|
471
|
-
* `permdock supabase hook generate` writes, for a backend that reaches
|
|
472
|
-
*
|
|
473
|
-
*
|
|
474
|
-
*
|
|
475
|
-
*
|
|
491
|
+
* `permdock supabase hook generate` writes, for a backend that reaches Postgres
|
|
492
|
+
* only through PostgREST. `memberships.version` reads only the version, so
|
|
493
|
+
* `claimsFirst` with `onStale: 'reread'` reads the full subject only for a
|
|
494
|
+
* stale token; when the version function is missing it falls back to
|
|
495
|
+
* `subject_for`. With `policy`, a token that claims a custom role has its
|
|
476
496
|
* subject read in one `subject_for` call instead, and custom roles are read
|
|
477
|
-
* only for a subject that holds one. Each user and each instance is read once
|
|
478
|
-
* `postgrestSources` call, so create it per request or per job.
|
|
497
|
+
* only for a subject that holds one. Each user and each instance is read once
|
|
498
|
+
* per `postgrestSources` call, so create it per request or per job.
|
|
479
499
|
*/
|
|
480
500
|
function postgrestSources(client, options = {}) {
|
|
481
501
|
const api = options.api;
|
|
@@ -534,7 +554,10 @@ function postgrestSources(client, options = {}) {
|
|
|
534
554
|
version(principal) {
|
|
535
555
|
return declared !== void 0 && !onlyDeclared([...principal.roles ?? [], ...(principal.memberships ?? []).flatMap((membership) => membership.roles)]) ? record(principal.id).then((found) => found?.authzVersion) : version(principal.id);
|
|
536
556
|
},
|
|
537
|
-
list
|
|
557
|
+
list,
|
|
558
|
+
async globalRolesFor(principal) {
|
|
559
|
+
return [...(await live(principal.id))?.roles ?? []];
|
|
560
|
+
}
|
|
538
561
|
},
|
|
539
562
|
customRoles(principal) {
|
|
540
563
|
return {
|
|
@@ -563,11 +586,40 @@ function postgrestSources(client, options = {}) {
|
|
|
563
586
|
id: found.id,
|
|
564
587
|
roles: found.roles,
|
|
565
588
|
memberships: found.memberships,
|
|
566
|
-
authzVersion: found.authzVersion
|
|
589
|
+
authzVersion: found.authzVersion,
|
|
590
|
+
claims: found.claims
|
|
567
591
|
}),
|
|
568
592
|
context: {}
|
|
569
593
|
};
|
|
570
594
|
},
|
|
595
|
+
async refresh(subject) {
|
|
596
|
+
const current = subject.principal;
|
|
597
|
+
if (current === null) return subject;
|
|
598
|
+
const found = await live(current.id);
|
|
599
|
+
if (found === void 0) {
|
|
600
|
+
const { stale: _stale, ...kept } = subject;
|
|
601
|
+
return {
|
|
602
|
+
...kept,
|
|
603
|
+
principal: null
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
const { membershipsTruncated: _truncated, ...rest } = current;
|
|
607
|
+
const { stale: _stale, ...kept } = subject;
|
|
608
|
+
const principal = compact({
|
|
609
|
+
...rest,
|
|
610
|
+
roles: found.roles,
|
|
611
|
+
memberships: found.memberships,
|
|
612
|
+
authzVersion: found.authzVersion,
|
|
613
|
+
claims: found.claims === void 0 ? rest["claims"] : {
|
|
614
|
+
...isRecord(rest["claims"]) ? rest["claims"] : {},
|
|
615
|
+
...found.claims
|
|
616
|
+
}
|
|
617
|
+
});
|
|
618
|
+
return {
|
|
619
|
+
...kept,
|
|
620
|
+
principal
|
|
621
|
+
};
|
|
622
|
+
},
|
|
571
623
|
record
|
|
572
624
|
};
|
|
573
625
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { $ as MemberEntry, T as Policy, W as CustomRoleSource,
|
|
1
|
+
import { $ as MemberEntry, T as Policy, W as CustomRoleSource, et as MembershipSource, lr as Subject, or as Membership, sr as Principal, tr as CustomRole } from "./policy-types-CCiDRZBH.js";
|
|
2
2
|
//#region src/supabase/postgrest.d.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* What a supabase-js `rpc` call resolves to: `data` or an `error` with a
|
|
5
|
+
* message.
|
|
6
|
+
*/
|
|
4
7
|
type SupabaseRpcResult = {
|
|
5
8
|
readonly data: unknown;
|
|
6
9
|
readonly error: {
|
|
@@ -13,13 +16,13 @@ type SupabaseRpcResult = {
|
|
|
13
16
|
* function, such as a `service_role` client after the grant the docs show.
|
|
14
17
|
*/
|
|
15
18
|
type SupabaseRpcClient = {
|
|
16
|
-
schema(name: string)
|
|
17
|
-
rpc(fn: string, args: Readonly<Record<string, unknown>>)
|
|
19
|
+
schema: (name: string) => {
|
|
20
|
+
rpc: (fn: string, args: Readonly<Record<string, unknown>>) => PromiseLike<SupabaseRpcResult>;
|
|
18
21
|
};
|
|
19
22
|
};
|
|
20
23
|
type SupabaseRpcCaller = {
|
|
21
|
-
schema(name: never)
|
|
22
|
-
rpc(fn: never, args: never)
|
|
24
|
+
schema: (name: never) => {
|
|
25
|
+
rpc: (fn: never, args: never) => PromiseLike<SupabaseRpcResult>;
|
|
23
26
|
};
|
|
24
27
|
};
|
|
25
28
|
type PostgrestSourcesOptions = {
|
|
@@ -34,18 +37,24 @@ type PostgrestSourcesOptions = {
|
|
|
34
37
|
readonly schema?: string;
|
|
35
38
|
readonly prefix?: string;
|
|
36
39
|
};
|
|
37
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Schema of the functions. Default `permdock`, where the hook generates
|
|
42
|
+
* `subject_for` and `members_of`.
|
|
43
|
+
*/
|
|
38
44
|
readonly schema?: string;
|
|
39
45
|
/** Function name, for a wrapper in an exposed schema. Default `subject_for`. */
|
|
40
46
|
readonly fn?: string;
|
|
41
47
|
readonly membersFn?: string;
|
|
42
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* The version-only function `memberships.version` calls. Default
|
|
50
|
+
* `authz_version_for`.
|
|
51
|
+
*/
|
|
43
52
|
readonly versionFn?: string;
|
|
44
53
|
/**
|
|
45
54
|
* The policy whose declared roles tell custom roles apart. With it,
|
|
46
|
-
* `customRoles` reads nothing while every role the subject holds is
|
|
47
|
-
*
|
|
48
|
-
*
|
|
55
|
+
* `customRoles` reads nothing while every role the subject holds is declared,
|
|
56
|
+
* and `memberships.version` reads the whole subject in one call when the
|
|
57
|
+
* token claims a custom role, which the custom roles need anyway.
|
|
49
58
|
*/
|
|
50
59
|
readonly policy?: Policy;
|
|
51
60
|
};
|
|
@@ -58,42 +67,63 @@ type SubjectRecord = {
|
|
|
58
67
|
readonly memberships: readonly Membership[];
|
|
59
68
|
readonly customRoles: readonly CustomRole[];
|
|
60
69
|
readonly authzVersion?: number;
|
|
70
|
+
/**
|
|
71
|
+
* The token claims the hook adds besides the memberships: `team_ids` and each
|
|
72
|
+
* `supabase.hook.claims` entry.
|
|
73
|
+
*/
|
|
74
|
+
readonly claims?: Readonly<Record<string, unknown>>;
|
|
61
75
|
};
|
|
62
76
|
type PostgrestSources = {
|
|
63
77
|
/**
|
|
64
|
-
* Memberships and the authorization version of any principal, and `list`,
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
78
|
+
* Memberships and the authorization version of any principal, and `list`, the
|
|
79
|
+
* live members of one scope instance through `members_of`, for `countHolders`
|
|
80
|
+
* and `whoCan`. Wrap it in `claimsFirst` to read only when the token was
|
|
81
|
+
* truncated.
|
|
68
82
|
*/
|
|
69
83
|
readonly memberships: MembershipSource & {
|
|
70
|
-
list(query: {
|
|
84
|
+
list: (query: {
|
|
71
85
|
readonly scope: string;
|
|
72
86
|
readonly id: string;
|
|
73
|
-
})
|
|
87
|
+
}) => Promise<MemberEntry[]>;
|
|
74
88
|
};
|
|
75
89
|
/** The custom roles `principal` holds, for `createPermDock`'s `customRoles`. */
|
|
76
|
-
customRoles(principal: {
|
|
90
|
+
customRoles: (principal: {
|
|
77
91
|
readonly id: string;
|
|
78
|
-
})
|
|
79
|
-
/**
|
|
80
|
-
|
|
92
|
+
}) => CustomRoleSource;
|
|
93
|
+
/**
|
|
94
|
+
* The subject the hook would mint for `userId`: anonymous when the user is
|
|
95
|
+
* unknown or suspended.
|
|
96
|
+
*/
|
|
97
|
+
subject: (userId: string) => Promise<Subject>;
|
|
98
|
+
/**
|
|
99
|
+
* `subject` with its principal read again: roles, memberships and
|
|
100
|
+
* authorization version come from the database, the token's other claims
|
|
101
|
+
* stay, and `actor`, `delegation`, `session`, `expiresAt` and the context are
|
|
102
|
+
* kept as they were, so a refreshed OAuth client keeps its ceiling. An
|
|
103
|
+
* unknown or suspended user becomes a subject with no principal that still
|
|
104
|
+
* carries the actor and delegation. A subject with no principal is returned
|
|
105
|
+
* as is.
|
|
106
|
+
*/
|
|
107
|
+
refresh: <P extends Principal>(subject: Subject<P>) => Promise<Subject<P>>;
|
|
81
108
|
/** The raw record, `undefined` for an unknown user. */
|
|
82
|
-
record(userId: string)
|
|
109
|
+
record: (userId: string) => Promise<SubjectRecord | undefined>;
|
|
83
110
|
};
|
|
84
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* Reads `subject_for`'s JSON; anything it cannot read is left out, and a
|
|
113
|
+
* malformed record is no record.
|
|
114
|
+
*/
|
|
85
115
|
declare function readSubjectRecord(value: unknown): SubjectRecord | undefined;
|
|
86
116
|
/**
|
|
87
117
|
* Membership, custom-role and subject sources over the `subject_for(p_user)`,
|
|
88
118
|
* `authz_version_for(p_user)` and `members_of(p_scope, p_id)` functions
|
|
89
|
-
* `permdock supabase hook generate` writes, for a backend that reaches
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
119
|
+
* `permdock supabase hook generate` writes, for a backend that reaches Postgres
|
|
120
|
+
* only through PostgREST. `memberships.version` reads only the version, so
|
|
121
|
+
* `claimsFirst` with `onStale: 'reread'` reads the full subject only for a
|
|
122
|
+
* stale token; when the version function is missing it falls back to
|
|
123
|
+
* `subject_for`. With `policy`, a token that claims a custom role has its
|
|
94
124
|
* subject read in one `subject_for` call instead, and custom roles are read
|
|
95
|
-
* only for a subject that holds one. Each user and each instance is read once
|
|
96
|
-
* `postgrestSources` call, so create it per request or per job.
|
|
125
|
+
* only for a subject that holds one. Each user and each instance is read once
|
|
126
|
+
* per `postgrestSources` call, so create it per request or per job.
|
|
97
127
|
*/
|
|
98
128
|
declare function postgrestSources(client: SupabaseRpcCaller, options?: PostgrestSourcesOptions): PostgrestSources;
|
|
99
129
|
//#endregion
|