permdock 0.7.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.
Files changed (483) hide show
  1. package/README.md +1 -3
  2. package/dist/a2a/index.d.ts +7 -7
  3. package/dist/a2a/index.js +8 -8
  4. package/dist/action-result-CL-QCITA.d.ts +19 -0
  5. package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
  6. package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-BLs67P1l.js} +5 -5
  7. package/dist/agent/index.d.ts +2 -2
  8. package/dist/agent/index.js +1 -1
  9. package/dist/ai-sdk/index.d.ts +19 -13
  10. package/dist/ai-sdk/index.js +6 -6
  11. package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
  12. package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
  13. package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
  14. package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
  15. package/dist/approvals/index.d.ts +4 -4
  16. package/dist/approvals/index.js +6 -6
  17. package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
  18. package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
  19. package/dist/{arazzo-ClrF3PVb.js → arazzo-3RhGfkAK.js} +2 -2
  20. package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.js} +6 -6
  21. package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
  22. package/dist/astro/index.d.ts +30 -12
  23. package/dist/astro/index.js +2 -2
  24. package/dist/{audience-BrMs8c4o.js → audience-BAkBDMqn.js} +8 -8
  25. package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
  26. package/dist/authzen/index.d.ts +34 -28
  27. package/dist/authzen/index.js +23 -20
  28. package/dist/{automation-DOtAFWdy.d.ts → automation-DqEoWHBc.d.ts} +42 -32
  29. package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
  30. package/dist/better-auth/index.d.ts +2 -2
  31. package/dist/better-auth/index.js +13 -7
  32. package/dist/better-supabase/index.d.ts +357 -227
  33. package/dist/better-supabase/index.js +219 -140
  34. package/dist/{bind-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
  35. package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
  36. package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
  37. package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
  38. package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
  39. package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
  40. package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
  41. package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
  42. package/dist/{build-instance-DxE7czo9.js → build-instance-CNWaYJyr.js} +3 -3
  43. package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
  44. package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
  45. package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
  46. package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
  47. package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
  48. package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
  49. package/dist/catalog/index.d.ts +51 -30
  50. package/dist/catalog/index.js +18 -15
  51. package/dist/{catalog-D69WhFii.js → catalog-BFpz2EmT.js} +20 -19
  52. package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.js} +3 -3
  53. package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
  54. package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
  55. package/dist/catalog-mRQQQhNK.js +1 -0
  56. package/dist/catalog-operations-Dadrl7Z-.js +60 -0
  57. package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
  58. package/dist/chat/index.d.ts +1 -1
  59. package/dist/chat/index.js +13 -10
  60. package/dist/chat-sdk/index.d.ts +44 -26
  61. package/dist/chat-sdk/index.js +17 -17
  62. package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
  63. package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
  64. package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
  65. package/dist/claude-agent/index.d.ts +6 -6
  66. package/dist/claude-agent/index.js +6 -3
  67. package/dist/clerk/index.d.ts +11 -7
  68. package/dist/clerk/index.js +6 -6
  69. package/dist/cli/bin.js +4 -4
  70. package/dist/cli/index.d.ts +82 -7
  71. package/dist/cli/index.js +6 -6
  72. package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
  73. package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
  74. package/dist/cloud/index.d.ts +84 -52
  75. package/dist/cloud/index.js +53 -39
  76. package/dist/{cloud-CO8pYtwr.js → cloud-BFlGMaak.js} +4 -5
  77. package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
  78. package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
  79. package/dist/collect-B5BL3klN.js +1 -0
  80. package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
  81. package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
  82. package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
  83. package/dist/compile/index.d.ts +2 -2
  84. package/dist/compile/index.js +1 -1
  85. package/dist/{compile-COM2VKuN.d.ts → compile-BFzysW3o.d.ts} +36 -12
  86. package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
  87. package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
  88. package/dist/config-BwPBfN0t.js +108 -0
  89. package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
  90. package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.js} +9 -6
  91. package/dist/config-shape-ykV0Vm2n.js +134 -0
  92. package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
  93. package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
  94. package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
  95. package/dist/convex/index.d.ts +13 -7
  96. package/dist/convex/index.js +9 -6
  97. package/dist/{core-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
  98. package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
  99. package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
  100. package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
  101. package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
  102. package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
  103. package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
  104. package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
  105. package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
  106. package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
  107. package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
  108. package/dist/delivery/index.d.ts +4 -4
  109. package/dist/delivery/index.js +5 -5
  110. package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
  111. package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
  112. package/dist/denied-text-CHNlVInN.d.ts +22 -0
  113. package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
  114. package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
  115. package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
  116. package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
  117. package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
  118. package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
  119. package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
  120. package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.js} +4 -4
  121. package/dist/drizzle/index.d.ts +33 -19
  122. package/dist/drizzle/index.js +17 -9
  123. package/dist/elysia/index.d.ts +17 -11
  124. package/dist/elysia/index.js +5 -5
  125. package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
  126. package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
  127. package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
  128. package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
  129. package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
  130. package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
  131. package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
  132. package/dist/eve/index.d.ts +9 -6
  133. package/dist/eve/index.js +4 -4
  134. package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
  135. package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
  136. package/dist/express/index.d.ts +9 -6
  137. package/dist/express/index.js +9 -6
  138. package/dist/fastify/index.d.ts +16 -10
  139. package/dist/fastify/index.js +8 -5
  140. package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
  141. package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.js} +14 -11
  142. package/dist/fields-D0vUI6dq.js +498 -0
  143. package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
  144. package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
  145. package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
  146. package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
  147. package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
  148. package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
  149. package/dist/gen-B5kvbAoZ.js +58 -0
  150. package/dist/gen-DWCYcMQM.js +827 -0
  151. package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
  152. package/dist/generate-CezbCaTI.js +275 -0
  153. package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
  154. package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
  155. package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
  156. package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
  157. package/dist/h3/index.d.ts +10 -7
  158. package/dist/h3/index.js +3 -3
  159. package/dist/headers-B9jQxjtW.d.ts +10 -0
  160. package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
  161. package/dist/hono/index.d.ts +16 -10
  162. package/dist/hono/index.js +5 -5
  163. package/dist/{hosted-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
  164. package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
  165. package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
  166. package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
  167. package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
  168. package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
  169. package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
  170. package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
  171. package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
  172. package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
  173. package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
  174. package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
  175. package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
  176. package/dist/index.d.ts +22 -22
  177. package/dist/index.js +33 -33
  178. package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
  179. package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
  180. package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
  181. package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
  182. package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
  183. package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
  184. package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
  185. package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
  186. package/dist/jwt/index.d.ts +57 -27
  187. package/dist/jwt/index.js +24 -21
  188. package/dist/{kernel-DVExUwkp.js → kernel-C-fYydV2.js} +32 -23
  189. package/dist/kysely/index.d.ts +49 -33
  190. package/dist/kysely/index.js +9 -7
  191. package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
  192. package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
  193. package/dist/load-Dm0pSYH3.js +1 -0
  194. package/dist/{login-ClSJh5t5.js → login-D-8tMqzo.js} +4 -4
  195. package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
  196. package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.js} +49 -38
  197. package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
  198. package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
  199. package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
  200. package/dist/{map-claims-etGIS_Dv.js → map-claims-BNWCJtmP.js} +14 -8
  201. package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
  202. package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
  203. package/dist/mcp/index.d.ts +114 -61
  204. package/dist/mcp/index.js +70 -40
  205. package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
  206. package/dist/module-values-BJTBdo6y.js +107 -0
  207. package/dist/nest/index.d.ts +23 -13
  208. package/dist/nest/index.js +18 -11
  209. package/dist/next/client.d.ts +5 -2
  210. package/dist/next/client.js +1 -1
  211. package/dist/next/index.d.ts +72 -26
  212. package/dist/next/index.js +110 -6
  213. package/dist/next/plugin.d.ts +1 -1
  214. package/dist/next/plugin.js +4 -3
  215. package/dist/node/index.d.ts +5 -5
  216. package/dist/node/index.js +3 -3
  217. package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
  218. package/dist/openai/index.d.ts +13 -7
  219. package/dist/openai/index.js +3 -3
  220. package/dist/openapi/index.d.ts +51 -30
  221. package/dist/openapi/index.js +2 -2
  222. package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
  223. package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
  224. package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
  225. package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
  226. package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
  227. package/dist/orpc/index.d.ts +68 -14
  228. package/dist/orpc/index.js +62 -13
  229. package/dist/otel/index.d.ts +7 -4
  230. package/dist/otel/index.js +8 -5
  231. package/dist/output-files-BHOIlrfD.js +1 -0
  232. package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
  233. package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
  234. package/dist/ownership-B4L59T9u.js +1054 -0
  235. package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
  236. package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
  237. package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
  238. package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
  239. package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
  240. package/dist/pdp/index.d.ts +9 -6
  241. package/dist/pdp/index.js +20 -13
  242. package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
  243. package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
  244. package/dist/{permdock-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
  245. package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
  246. package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
  247. package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
  248. package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
  249. package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
  250. package/dist/{permissions-DArULThq.js → permissions-mDcTWoBs.js} +8 -5
  251. package/dist/pg-DQTqRrou.js +60 -0
  252. package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
  253. package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
  254. package/dist/{policy-B7dg_yzu.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
  255. package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
  256. package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CJgOm6aq.js} +28 -25
  257. package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
  258. package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-CCiDRZBH.d.ts} +738 -349
  259. package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
  260. package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
  261. package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
  262. package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
  263. package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
  264. package/dist/powersync-Djf-zCpB.js +1 -0
  265. package/dist/preset/index.d.ts +38 -28
  266. package/dist/preset/index.js +1 -1
  267. package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
  268. package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
  269. package/dist/prisma/index.d.ts +69 -41
  270. package/dist/prisma/index.js +21 -17
  271. package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
  272. package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
  273. package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
  274. package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
  275. package/dist/protected-action-BE7N_Luo.d.ts +58 -0
  276. package/dist/protected-action-DUYqb-Ma.js +80 -0
  277. package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
  278. package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
  279. package/dist/{provider-Csk-THAn.d.ts → provider-DXfq5c2d.d.ts} +1 -1
  280. package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
  281. package/dist/pull-B65ndFNZ.js +1 -0
  282. package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
  283. package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
  284. package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
  285. package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
  286. package/dist/react/index.d.ts +9 -8
  287. package/dist/react/index.js +7 -6
  288. package/dist/react/provider-client.d.ts +1 -1
  289. package/dist/react/provider-client.js +1 -1
  290. package/dist/react-native/index.d.ts +94 -55
  291. package/dist/react-native/index.js +200 -61
  292. package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
  293. package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
  294. package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
  295. package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
  296. package/dist/{replay-DCDD_ZfL.d.ts → replay-DNftIb_R.d.ts} +1 -1
  297. package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.js} +8 -8
  298. package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
  299. package/dist/resend/index.d.ts +34 -28
  300. package/dist/resend/index.js +29 -29
  301. package/dist/resolve-names-CF7xXLSG.js +201 -0
  302. package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
  303. package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
  304. package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
  305. package/dist/{rls-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
  306. package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
  307. package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
  308. package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
  309. package/dist/{rpc-Bk1bE-ch.js → rpc-fNqAIqQk.js} +8 -5
  310. package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
  311. package/dist/run-D-JE8QWb.js +1 -0
  312. package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.d.ts} +29 -14
  313. package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
  314. package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
  315. package/dist/{saas-Az_Kz-4D.js → saas-iWnUdwCt.js} +42 -29
  316. package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
  317. package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
  318. package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.js} +8 -4
  319. package/dist/scim/index.d.ts +2 -2
  320. package/dist/scim/index.js +2 -2
  321. package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
  322. package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
  323. package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
  324. package/dist/server/index.d.ts +11 -11
  325. package/dist/server/index.js +12 -12
  326. package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
  327. package/dist/{server-types-C4gZUEZy.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
  328. package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
  329. package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
  330. package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
  331. package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
  332. package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
  333. package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
  334. package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
  335. package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
  336. package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
  337. package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
  338. package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
  339. package/dist/solid/index.d.ts +55 -16
  340. package/dist/solid/index.js +46 -12
  341. package/dist/solid-start/index.d.ts +30 -12
  342. package/dist/solid-start/index.js +3 -3
  343. package/dist/{sources-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
  344. package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
  345. package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
  346. package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
  347. package/dist/{src-DLFrtrrC.js → src-DZ0l9UAg.js} +190 -100
  348. package/dist/ssf/index.d.ts +3 -3
  349. package/dist/ssf/index.js +47 -35
  350. package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
  351. package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
  352. package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
  353. package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
  354. package/dist/stores-C0Kta5Ft.d.ts +59 -0
  355. package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
  356. package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
  357. package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
  358. package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
  359. package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
  360. package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
  361. package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
  362. package/dist/supabase/index.d.ts +48 -38
  363. package/dist/supabase/index.js +5 -5
  364. package/dist/supabase/middleware.d.ts +19 -13
  365. package/dist/supabase/middleware.js +7 -7
  366. package/dist/{supabase--0aJdLEd.js → supabase-BL1qJzzY.js} +79 -35
  367. package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
  368. package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
  369. package/dist/supabase-hook-H-MtE9Wd.js +1 -0
  370. package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
  371. package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
  372. package/dist/svelte/PermissionBoundary.svelte +2 -6
  373. package/dist/svelte/Protected.svelte +2 -8
  374. package/dist/svelte/index.d.ts +9 -8
  375. package/dist/svelte/index.js +10 -9
  376. package/dist/svelte/runtime.d.ts +4 -4
  377. package/dist/svelte/runtime.js +4 -4
  378. package/dist/svelte/source.d.ts +9 -8
  379. package/dist/svelte/source.js +6 -5
  380. package/dist/sveltekit/index.d.ts +30 -12
  381. package/dist/sveltekit/index.js +2 -2
  382. package/dist/{ownership-Z2LpxsGa.js → tables-DeMNEy6V.js} +641 -1104
  383. package/dist/tanstack-start/index.d.ts +22 -10
  384. package/dist/tanstack-start/index.js +2 -2
  385. package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
  386. package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
  387. package/dist/terminal/index.d.ts +23 -14
  388. package/dist/terminal/index.js +17 -20
  389. package/dist/testing/core.d.ts +1 -1
  390. package/dist/testing/core.js +1 -1
  391. package/dist/testing/fixtures/index.d.ts +8 -5
  392. package/dist/testing/fixtures/index.js +78 -17
  393. package/dist/testing/index.d.ts +224 -141
  394. package/dist/testing/index.js +299 -234
  395. package/dist/testing/saas/index.d.ts +43 -27
  396. package/dist/testing/saas/index.js +2 -2
  397. package/dist/testing/saas/permissions.d.ts +1 -1
  398. package/dist/testing/saas/permissions.js +1 -1
  399. package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
  400. package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
  401. package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
  402. package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
  403. package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
  404. package/dist/trpc/index.d.ts +11 -8
  405. package/dist/trpc/index.js +15 -9
  406. package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
  407. package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
  408. package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
  409. package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
  410. package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
  411. package/dist/types-B_d_g7T3.d.ts +262 -0
  412. package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
  413. package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
  414. package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
  415. package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
  416. package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
  417. package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
  418. package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
  419. package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
  420. package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
  421. package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
  422. package/dist/unplugin/index.d.ts +1 -1
  423. package/dist/unplugin/index.js +2 -2
  424. package/dist/usage-CYeXek0p.js +1 -0
  425. package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
  426. package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.js} +2 -2
  427. package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
  428. package/dist/{validation-error-CQpoquwj.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
  429. package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
  430. package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
  431. package/dist/{verify-pe8rL_Qw.js → verify-DZeqoWu5.js} +148 -487
  432. package/dist/version-DMQ0dnN5.js +48 -0
  433. package/dist/version-DizhmD72.js +1 -0
  434. package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
  435. package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
  436. package/dist/vue/index.d.ts +71 -22
  437. package/dist/vue/index.js +50 -13
  438. package/dist/{waiter-DwEyouan.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
  439. package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
  440. package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
  441. package/dist/watch-DB42U1ib.js +1 -0
  442. package/dist/webmcp/index.d.ts +11 -11
  443. package/dist/webmcp/index.js +8 -5
  444. package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
  445. package/dist/{who-can-BwNsI_Js.js → who-can-rI7dCR9Q.js} +23 -20
  446. package/dist/workflow/index.d.ts +3 -3
  447. package/dist/workflow/index.js +13 -13
  448. package/dist/workflow-sdk/index.d.ts +19 -13
  449. package/dist/workflow-sdk/index.js +6 -6
  450. package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
  451. package/dist/{wrap-B6R0cMRL.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
  452. package/package.json +7 -7
  453. package/schemas/catalog-v1.json +3 -0
  454. package/schemas/supabase-manifest-v1.json +33 -1
  455. package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
  456. package/skills/permdock-data/references/queries-and-rls.md +2 -1
  457. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
  458. package/skills/permdock-wire/references/adapters.md +14 -22
  459. package/dist/catalog-BCCjSAdH.js +0 -1
  460. package/dist/collect-k_Dulxr5.js +0 -1
  461. package/dist/config-CoQHDrDi.js +0 -166
  462. package/dist/denied-text-D4qkEtFz.d.ts +0 -19
  463. package/dist/fields-ClcQLrVc.js +0 -238
  464. package/dist/generate-CNU1pIOo.js +0 -171
  465. package/dist/headers-BIjfMaoC.js +0 -8
  466. package/dist/headers-CIbDTUTK.d.ts +0 -7
  467. package/dist/load-DrMHXzgN.js +0 -1
  468. package/dist/output-files-DPAY7-GX.js +0 -1
  469. package/dist/package-root-Dk_ETdkp.js +0 -31
  470. package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
  471. package/dist/policies-B2lZIurj.js +0 -295
  472. package/dist/powersync-CExtTLyA.js +0 -1
  473. package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
  474. package/dist/protected-BwZYL1X_.d.ts +0 -39
  475. package/dist/pull-Cty6Ovyu.js +0 -1
  476. package/dist/run-Bz7DXGEv.js +0 -1
  477. package/dist/stores-BAZwSYZA.d.ts +0 -31
  478. package/dist/supabase-hook-DJxC4PoP.js +0 -1
  479. package/dist/types-CKV71kKh.d.ts +0 -172
  480. package/dist/usage-y-kBNdqs.js +0 -1
  481. package/dist/version-CEbQ5UeM.js +0 -18
  482. package/dist/version-DXkYUISx.js +0 -1
  483. package/dist/watch-Bd9mx3rd.js +0 -1
@@ -1,9 +1,9 @@
1
- import { n as RoleMap, r as RoleThrough } from "./types-BfVmNJO5.js";
2
- import { s as SqlMembershipSource } from "./sources-DEEuGb8S.js";
1
+ import { n as RoleMap, r as RoleThrough } from "./types-ah9NlU6j.js";
2
+ import { s as SqlMembershipSource } from "./sources-B1Os_YUu.js";
3
3
  //#region src/cli/core/errors.d.ts
4
4
  /**
5
- * 0 success, 1 failure, 2 usage, 3 action required, 130 interrupted (SIGINT
6
- * or a cancelled prompt), 143 terminated (SIGTERM).
5
+ * 0 success, 1 failure, 2 usage, 3 action required, 130 interrupted (SIGINT or
6
+ * a cancelled prompt), 143 terminated (SIGTERM).
7
7
  */
8
8
  type ExitCode = 0 | 1 | 2 | 3 | 130 | 143;
9
9
  //#endregion
@@ -26,12 +26,11 @@ type RlsMembershipTable = {
26
26
  * several of them: the row holds every non-null key.
27
27
  */
28
28
  readonly role: string | RoleMap | RoleThrough | readonly (string | RoleMap | RoleThrough)[];
29
- /** Per scope name, the column holding that scope's id: the table's own scope and its ancestors. */
29
+ /**
30
+ * Per scope name, the column holding that scope's id: the table's own scope
31
+ * and its ancestors.
32
+ */
30
33
  readonly columns?: Readonly<Record<string, string>>;
31
- /** Column of the first scope's id; shorthand for `columns[<first scope>]`. */
32
- readonly tenant?: string;
33
- /** Column of the second scope's id; shorthand for `columns[<second scope>]`. */
34
- readonly team?: string;
35
34
  readonly id?: string;
36
35
  readonly expiresAt?: string;
37
36
  readonly disabledAt?: string;
@@ -46,13 +45,12 @@ type RlsMembershipTable = {
46
45
  type RlsMemberships = {
47
46
  /** The membership table of each named scope. */
48
47
  readonly scopes?: Readonly<Record<string, RlsMembershipTable>>;
49
- /** The first scope's table; shorthand for `scopes[<first scope>]`. */
50
- readonly tenant?: RlsMembershipTable;
51
- /** The second scope's table; shorthand for `scopes[<second scope>]`. */
52
- readonly team?: RlsMembershipTable;
53
48
  readonly resource?: Readonly<Record<string, RlsMembershipTable>>;
54
49
  };
55
- /** A table whose row says whether a user or a scope instance is active. A missing row counts as suspended. */
50
+ /**
51
+ * A table whose row says whether a user or a scope instance is active. A
52
+ * missing row counts as suspended.
53
+ */
56
54
  type RlsActiveRow = {
57
55
  readonly table: string;
58
56
  /** Column holding the user id or the scope instance id. */
@@ -63,7 +61,10 @@ type RlsActiveRow = {
63
61
  readonly status?: string;
64
62
  readonly active?: readonly string[];
65
63
  };
66
- /** A scope's active-row table, with the permissions its suspended instances keep. */
64
+ /**
65
+ * A scope's active-row table, with the permissions its suspended instances
66
+ * keep.
67
+ */
67
68
  type RlsSuspendedScope = RlsActiveRow & {
68
69
  /**
69
70
  * Permissions (references or keys) members of a suspended instance, and of
@@ -82,7 +83,10 @@ type RlsSuspendedMembership = {
82
83
  type RlsSuspension = {
83
84
  /** A suspended user holds no role and no membership. */
84
85
  readonly users?: RlsActiveRow;
85
- /** Per scope name: a suspended instance voids its memberships and every membership nested under it, except for `keep`. */
86
+ /**
87
+ * Per scope name: a suspended instance voids its memberships and every
88
+ * membership nested under it, except for `keep`.
89
+ */
86
90
  readonly scopes?: Readonly<Record<string, RlsSuspendedScope>>;
87
91
  readonly memberships?: RlsSuspendedMembership;
88
92
  };
@@ -91,52 +95,67 @@ type RlsFunctionMapping = {
91
95
  readonly args?: readonly string[];
92
96
  };
93
97
  /**
94
- * A table whose rows reach their scope through a parent table
95
- * (`rls.tables`, `via`): the table's `key` column holds the parent's id, and
96
- * the parent's `column` holds the scope instance id. The generated policies
97
- * call `permitted_<parent, singular>_ids(p_grant)`, a `security definer`
98
- * helper that joins the parent to `permitted_<scope>_ids`.
98
+ * A table whose rows reach their scope through a parent table (`rls.tables`,
99
+ * `via`): the table's `key` column holds the parent's id, and the parent's
100
+ * `column` holds the scope instance id. The generated policies call
101
+ * `permitted_<parent, singular>_ids(p_grant)`, a `security definer` helper that
102
+ * joins the parent to `permitted_<scope>_ids`.
99
103
  */
100
104
  type RlsTableVia = {
101
105
  /** `schema.table` of the parent. */
102
106
  readonly table: string;
103
107
  /** The parent's column holding the scope instance id. */
104
108
  readonly column: string;
105
- /** This table's column holding the parent's id. Default `<parent table, singular>_id`. */
109
+ /**
110
+ * This table's column holding the parent's id. Default `<parent table,
111
+ * singular>_id`.
112
+ */
106
113
  readonly key?: string;
107
114
  /** The parent's id column. Default `id`. */
108
115
  readonly id?: string;
109
- /** SQL type of the parent's id column. Default `uuid` in the `supabase` dialect, else `text`. */
116
+ /**
117
+ * SQL type of the parent's id column. Default `uuid` in the `supabase`
118
+ * dialect, else `text`.
119
+ */
110
120
  readonly type?: string;
111
121
  /** The scope `column` holds. Default the policy's root scope. */
112
122
  readonly scope?: string;
113
123
  };
114
124
  /**
115
- * A resource's table: its `schema.table`, an object that adds `via`, or
116
- * `false` for a resource with no table (a console permission), which gets no
117
- * policies while its role grants are still seeded.
125
+ * A resource's table: its `schema.table`, an object that adds `via`, or `false`
126
+ * for a resource with no table (a console permission), which gets no policies
127
+ * while its role grants are still seeded.
118
128
  */
119
129
  type RlsTable = string | false | {
120
130
  readonly table?: string;
121
131
  readonly via: RlsTableVia;
122
132
  };
123
133
  type RlsConfig = {
124
- /** Per resource, the table its policies target; the table is named after the resource when unset, and `false` means it has none. */
134
+ /**
135
+ * Per resource, the table its policies target; the table is named after the
136
+ * resource when unset, and `false` means it has none.
137
+ */
125
138
  readonly tables?: Readonly<Record<string, RlsTable>>;
126
139
  readonly dialect?: RlsDialect;
127
140
  readonly memberships?: RlsMemberships;
128
141
  /**
129
- * `database` mode: the `tableMembershipSource` / `junctionMembershipSource` sources the helpers
130
- * read for every scope `memberships` maps no table for. Default
131
- * `supabase.hook.memberships`, so the helpers and the token hook run the
132
- * same SQL. Setting it selects `database` mode.
142
+ * `database` mode: the `tableMembershipSource` / `junctionMembershipSource`
143
+ * sources the helpers read for every scope `memberships` maps no table for.
144
+ * Default `supabase.hook.memberships`, so the helpers and the token hook run
145
+ * the same SQL. Setting it selects `database` mode.
133
146
  */
134
147
  readonly membershipSources?: readonly SqlMembershipSource[];
135
- /** Tables the helpers, `authorize()` and the token hook read to drop suspended users and scope instances. */
148
+ /**
149
+ * Tables the helpers, `authorize()` and the token hook read to drop suspended
150
+ * users and scope instances.
151
+ */
136
152
  readonly suspension?: RlsSuspension;
137
153
  readonly functions?: Readonly<Record<string, RlsFunctionMapping>>;
138
154
  readonly inlineFunctions?: boolean;
139
- /** Emit FORCE ROW LEVEL SECURITY so the table owner is subject to the policies. */
155
+ /**
156
+ * Emit FORCE ROW LEVEL SECURITY so the table owner is subject to the
157
+ * policies.
158
+ */
140
159
  readonly force?: boolean;
141
160
  readonly fixtures?: string;
142
161
  /**
@@ -155,22 +174,22 @@ type RlsConfig = {
155
174
  * Which tenants the helpers and `memberOf` checks admit. `'active'`
156
175
  * (default): when the token carries a non-empty `tenantClaim`, only that
157
176
  * tenant; without one, every tenant the subject is a member of. `'all'`:
158
- * every such tenant whatever the claim says, for apps whose tenant comes
159
- * from the URL or the query.
177
+ * every such tenant whatever the claim says, for apps whose tenant comes from
178
+ * the URL or the query.
160
179
  */
161
180
  readonly tenants?: "active" | "all";
162
- /** Postgres type of tenant columns (`uuid` by default); the tenant claim and helper results are cast to it. */
163
- readonly tenantType?: string;
164
- /** Postgres type of team columns; defaults to `tenantType`. */
165
- readonly teamType?: string;
166
- /** Postgres type of each named scope's id column; overrides `tenantType` / `teamType`. */
181
+ /**
182
+ * Postgres type of each named scope's id column, `uuid` by default. The first
183
+ * scope's type also types the tenant claim and the helper results cast to
184
+ * it.
185
+ */
167
186
  readonly scopeTypes?: Readonly<Record<string, string>>;
168
187
  readonly roleClaim?: string;
169
188
  /**
170
- * Role values the existing SQL compares against (a string literal or an
171
- * enum label) and the PermDock role each one is. `rls import` writes the
172
- * PermDock name for a mapped value; `rls migrate` filters a `role` helper by
173
- * it. An unmapped value must already be a declared role.
189
+ * Role values the existing SQL compares against (a string literal or an enum
190
+ * label) and the PermDock role each one is. `rls import` writes the PermDock
191
+ * name for a mapped value; `rls migrate` filters a `role` helper by it. An
192
+ * unmapped value must already be a declared role.
174
193
  */
175
194
  readonly roleValues?: Readonly<Record<string, string>>;
176
195
  readonly gucPrefix?: string;
@@ -179,37 +198,56 @@ type RlsConfig = {
179
198
  readonly drizzle?: {
180
199
  /** Module exporting the tables, as imported from `out`. Default `./schema`. */
181
200
  readonly schema?: string;
182
- /** Export name per table name; defaults to the camelCased table name without its schema. */
201
+ /**
202
+ * Export name per table name; defaults to the camelCased table name without
203
+ * its schema.
204
+ */
183
205
  readonly exports?: Readonly<Record<string, string>>;
184
206
  };
185
207
  /** `--target prisma`: the model each table maps to. */
186
208
  readonly prisma?: {
187
- /** Model name per table name; defaults to the PascalCased table name without its schema. */
209
+ /**
210
+ * Model name per table name; defaults to the PascalCased table name without
211
+ * its schema.
212
+ */
188
213
  readonly models?: Readonly<Record<string, string>>;
189
214
  };
190
- /** Schema of `role_permissions` and the RLS helpers (`permdock_has`, `permitted_<scope>_ids`, `member_<scope>_ids`) (and the RBAC scaffold). Default `permdock`; keep it out of `[api] schemas`. */
215
+ /**
216
+ * Schema of `role_permissions` and the RLS helpers (`permdock_has`,
217
+ * `permitted_<scope>_ids`, `member_<scope>_ids`) (and the RBAC scaffold).
218
+ * Default `permdock`; keep it out of `[api] schemas`.
219
+ */
191
220
  readonly schema?: string;
192
- /** Where the helpers read roles and memberships: `database` tables or `jwt` claims. */
221
+ /**
222
+ * Where the helpers read roles and memberships: `database` tables or `jwt`
223
+ * claims.
224
+ */
193
225
  readonly authorize?: "database" | "jwt";
194
226
  /** One policy per role and permission instead of one per table and command. */
195
227
  readonly policyPerRole?: boolean;
196
228
  /**
197
- * Resolve tenant-defined custom roles in the helpers: `custom_role_permissions` and
198
- * `custom_role_includes` in `database` mode, the `memberships[].grants` claim in `jwt` mode,
199
- * always intersected with the `permdock_ceiling` view. Off by default. An
200
- * object turns them on and names the application's existing role tables
201
- * that `--backfill-out` copies from.
229
+ * Resolve tenant-defined custom roles in the helpers:
230
+ * `custom_role_permissions` and `custom_role_includes` in `database` mode,
231
+ * the `memberships[].grants` claim in `jwt` mode, always intersected with the
232
+ * `permdock_ceiling` view. Off by default. An object turns them on and names
233
+ * the application's existing role tables that `--backfill-out` copies from.
202
234
  */
203
235
  readonly customRoles?: boolean | RlsCustomRolesConfig;
204
236
  /**
205
- * Triggers the application owns on tables `generate` creates, by table
206
- * name without the schema (`custom_role_permissions`): written after the
207
- * tables, each as `drop trigger if exists` and `create trigger`.
237
+ * Triggers the application owns on tables `generate` creates, by table name
238
+ * without the schema (`custom_role_permissions`): written after the tables,
239
+ * each as `drop trigger if exists` and `create trigger`.
208
240
  */
209
241
  readonly triggers?: Readonly<Record<string, readonly RlsTrigger[]>>;
210
- /** Register generated tables with an audit function, such as `better_supabase.audit`. */
242
+ /**
243
+ * Register generated tables with an audit function, such as
244
+ * `better_supabase.audit`.
245
+ */
211
246
  readonly audit?: RlsAudit;
212
- /** How the generated custom-role write functions check the caller (`database` mode with `customRoles`). */
247
+ /**
248
+ * How the generated custom-role write functions check the caller (`database`
249
+ * mode with `customRoles`).
250
+ */
213
251
  readonly customRoleWrites?: {
214
252
  /**
215
253
  * Who may change custom roles at all, checked before the hand-out check:
@@ -220,30 +258,30 @@ type RlsConfig = {
220
258
  */
221
259
  readonly requires?: "manageRoles" | readonly string[];
222
260
  /**
223
- * The application's own roles table, one row per custom role. A trigger
224
- * on it moves a role's grants and includes when the row's name, tenant,
225
- * scope or instance changes, and deletes them with the row. A signed-in
226
- * caller goes through the same checks as the write functions; a trusted
227
- * path (a migration, a job, a nested trigger) moves the rows directly.
261
+ * The application's own roles table, one row per custom role. A trigger on
262
+ * it moves a role's grants and includes when the row's name, tenant, scope
263
+ * or instance changes, and deletes them with the row. A signed-in caller
264
+ * goes through the same checks as the write functions; a trusted path (a
265
+ * migration, a job, a nested trigger) moves the rows directly.
228
266
  */
229
267
  readonly roles?: RlsCustomRoleTable;
230
268
  /**
231
269
  * The audit function the by-id writers call after a save
232
270
  * (`permdock_replace_custom_role_grants_by_id`), with `event_type`,
233
- * `target_type`, `record_id`, `tenant` and `metadata` plus `args`.
234
- * Needs `roles.primaryKey`.
271
+ * `target_type`, `record_id`, `tenant` and `metadata` plus `args`. Needs
272
+ * `roles.primaryKey`.
235
273
  */
236
274
  readonly audit?: RlsCustomRoleAudit;
237
275
  };
238
276
  /**
239
- * Let link capabilities reach resource-scoped grants: `anon` policies that call
240
- * `permdock_capability_ids`, which reads the `capability` claim `exchangeCapability`
241
- * mints. Off by default.
277
+ * Let link capabilities reach resource-scoped grants: `anon` policies that
278
+ * call `permdock_capability_ids`, which reads the `capability` claim
279
+ * `exchangeCapability` mints. Off by default.
242
280
  */
243
281
  readonly capabilities?: boolean;
244
282
  /**
245
- * `'deny'` (Supabase only): a token with `is_anonymous: true` reaches no grant
246
- * but those to `anyone()`. Supabase gives an anonymous sign-in the
283
+ * `'deny'` (Supabase only): a token with `is_anonymous: true` reaches no
284
+ * grant but those to `anyone()`. Supabase gives an anonymous sign-in the
247
285
  * `authenticated` role, so without it the grants to roles and to
248
286
  * `authenticated()` reach it. The subject mapper has to refuse it in process
249
287
  * too. Off by default.
@@ -258,20 +296,20 @@ type RlsConfig = {
258
296
  readonly anonExecute?: boolean;
259
297
  /**
260
298
  * Check role assignments in the database: a trigger on each scope's
261
- * `rls.memberships` table, the global-roles table `rls.roles` and each
262
- * table in `tables` (such as invitations) refuses a client write that
263
- * assigns, changes or removes a role the caller may not assign there, by
264
- * the policy's `assigns` graph or, for a custom role, by what the caller may
265
- * hand out. Writes that do not run as a client role (the table owner, a
266
- * `security definer` function, a backend role) are trusted. Needs a role
267
- * that declares `assigns`.
299
+ * `rls.memberships` table, the global-roles table `rls.roles` and each table
300
+ * in `tables` (such as invitations) refuses a client write that assigns,
301
+ * changes or removes a role the caller may not assign there, by the policy's
302
+ * `assigns` graph or, for a custom role, by what the caller may hand out.
303
+ * Writes that do not run as a client role (the table owner, a `security
304
+ * definer` function, a backend role) are trusted. Needs a role that declares
305
+ * `assigns`.
268
306
  */
269
307
  readonly assignments?: true | {
270
308
  readonly tables?: readonly RlsAssignmentTable[];
271
309
  /**
272
310
  * `'refuse'`: a client write to a row whose user is the caller is
273
- * refused on every guarded table with a user column, whatever the
274
- * role. A map refuses it on the tables it names (`schema.table` as
311
+ * refused on every guarded table with a user column, whatever the role.
312
+ * A map refuses it on the tables it names (`schema.table` as
275
313
  * configured). Unset, a caller may change their own row within what
276
314
  * they may assign.
277
315
  */
@@ -280,88 +318,105 @@ type RlsConfig = {
280
318
  /**
281
319
  * Add the approval store `supabaseApprovalStore` reads and writes: the
282
320
  * `approval_requests` table and one function per `ApprovalStore` method, in
283
- * the helper schema, executable by no client role. Off by default. An
284
- * object with `table` adopts a table the app already has instead, and
285
- * `delegations: true` adds the out-of-office covers.
321
+ * the helper schema, executable by no client role. Off by default. An object
322
+ * with `table` adopts a table the app already has instead, and `delegations:
323
+ * true` adds the out-of-office covers.
286
324
  */
287
325
  readonly approvals?: boolean | RlsApprovalsAdopt;
288
326
  /**
289
- * A pg_jsonschema check constraint on generated `jsonb` columns: the
290
- * approval store's `body` must match `approval-request-v1.json`. `true`
291
- * installs the extension into `extensions`; `'auto'` adds the constraint
292
- * only where `pg_available_extensions` lists it. Off by default.
327
+ * A pg_jsonschema check constraint on generated `jsonb` columns: the approval
328
+ * store's `body` must match `approval-request-v1.json`. `true` installs the
329
+ * extension into `extensions`; `'auto'` adds the constraint only where
330
+ * `pg_available_extensions` lists it. Off by default.
293
331
  */
294
332
  readonly jsonSchema?: "auto" | boolean;
295
333
  /**
296
- * `false` leaves out the holder-count and transfer-only triggers `min`,
297
- * `max` and `transferOnly` put on the membership tables; a map with
298
- * `<scope>: false` leaves them out for those scopes only. Those rules are
299
- * then checked by `decideRoleChange` alone. On by default.
334
+ * `false` leaves out the holder-count and transfer-only triggers `min`, `max`
335
+ * and `transferOnly` put on the membership tables; a map with `<scope>:
336
+ * false` leaves them out for those scopes only. Those rules are then checked
337
+ * by `decideRoleChange` alone. On by default.
300
338
  */
301
339
  readonly ownershipTriggers?: false | Readonly<Record<string, false>>;
302
340
  /**
303
- * Make a session acting for a user read-only in the database: one
304
- * restrictive policy per table and write command the generated policies
305
- * allow, refusing the write when the token's `act` claim names one of these
306
- * actor kinds, unless `act.read_only` is `false`. `true` is
307
- * `['support', 'impersonation']`; with `support`, an `act` with a
308
- * `session_id` and no `kind` counts too. Off by default.
341
+ * Make a session acting for a user read-only in the database: one restrictive
342
+ * policy per table and write command the generated policies allow, refusing
343
+ * the write when the token's `act` claim names one of these actor kinds,
344
+ * unless `act.read_only` is `false`. `true` is `['support',
345
+ * 'impersonation']`; with `support`, an `act` with a `session_id` and no
346
+ * `kind` counts too. Off by default.
309
347
  */
310
348
  readonly readOnlyActors?: boolean | readonly string[];
311
349
  readonly apiKeys?: true | RlsApiKeys;
312
350
  /**
313
- * Narrow a delegated token (a `client_id`, or an `act` that is not a
314
- * support or impersonation session) by its `scope` claim in every helper
315
- * and policy: a grant passes only when one of the token's scopes reaches
316
- * its permission (the permission's own scope, a former scope, or a policy
317
- * `oauthScopes` entry). Denies always apply. Off by default.
351
+ * Narrow a delegated token (a `client_id`, or an `act` that is not a support
352
+ * or impersonation session) by its `scope` claim in every helper and policy:
353
+ * a grant passes only when one of the token's scopes reaches its permission
354
+ * (the permission's own scope, a former scope, or a policy `oauthScopes`
355
+ * entry). Denies always apply. Off by default.
318
356
  */
319
357
  readonly tokenScopes?: boolean;
320
- /** Supabase Realtime: policies on `realtime.messages` for private channels. Supabase dialect only. */
358
+ /**
359
+ * Supabase Realtime: policies on `realtime.messages` for private channels.
360
+ * Supabase dialect only.
361
+ */
321
362
  readonly realtime?: RlsRealtime;
322
- /** Supabase Storage: policies on `storage.objects` for buckets keyed by a scope folder. Supabase dialect only. */
363
+ /**
364
+ * Supabase Storage: policies on `storage.objects` for buckets keyed by a
365
+ * scope folder. Supabase dialect only.
366
+ */
323
367
  readonly storage?: RlsStorage;
324
368
  /**
325
- * `'views'`: one `security_invoker` view `<table>_visible` per table with field-limited
326
- * read grants, whose restricted columns are `case when <permitted> then col end`. `'mask'`:
327
- * the same views plus `<schema>.<table>_mask(p_row)`, which nulls the restricted columns of
328
- * one row by the same masks, for SQL that reads the table without the view. Off by default.
369
+ * `'views'`: one `security_invoker` view `<table>_visible` per table with
370
+ * field-limited read grants, whose restricted columns are `case when
371
+ * <permitted> then col end`. `'mask'`: the same views plus
372
+ * `<schema>.<table>_mask(p_row)`, which nulls the restricted columns of one
373
+ * row by the same masks, for SQL that reads the table without the view. Off
374
+ * by default.
329
375
  */
330
376
  readonly fields?: "views" | "mask";
331
377
  /**
332
- * With `fields: 'views'` or `'mask'`, grant `anon` and `authenticated` only the unrestricted columns of
333
- * the base table, so restricted columns are read through the view. Breaks `select *`.
378
+ * With `fields: 'views'` or `'mask'`, grant `anon` and `authenticated` only
379
+ * the unrestricted columns of the base table, so restricted columns are read
380
+ * through the view. Breaks `select *`.
334
381
  */
335
382
  readonly revokeColumns?: boolean;
336
- /** Policy name template: `{table}`, `{op}`, plus `{role}` and `{permission}` with `policyPerRole`. */
383
+ /**
384
+ * Policy name template: `{table}`, `{op}`, plus `{role}` and `{permission}`
385
+ * with `policyPerRole`.
386
+ */
337
387
  readonly policyName?: string;
338
388
  /** `rls generate --rbac supabase` defaults; flags override. */
339
389
  readonly rbac?: {
340
390
  readonly schema?: string;
341
391
  readonly authorize?: "database" | "jwt";
342
392
  };
343
- /** The global-roles table `permdock_has` reads in `database` mode. Default `<schema>.user_roles (user_id, role)`, which the helpers create. */
393
+ /**
394
+ * The global-roles table `permdock_has` reads in `database` mode. Default
395
+ * `<schema>.user_roles (user_id, role)`, which the helpers create.
396
+ */
344
397
  readonly roles?: GlobalRoles;
345
398
  /**
346
399
  * The SQL command each action verb compiles to, merged over the defaults
347
- * (`read`, `list`, `get` → `select`; `create` → `insert`; `update`; `delete`).
348
- * `'none'` compiles no policy. Every granted action is seeded into
400
+ * (`read`, `list`, `get` → `select`; `create` → `insert`; `update`;
401
+ * `delete`). `'none'` compiles no policy. Every granted action is seeded into
349
402
  * `role_permissions` either way, so `permdock_has` answers for it.
350
403
  */
351
404
  readonly actions?: RlsActions;
352
- /** Emit only the helpers, their seeds and the scaffold; the table policies stay hand-written. */
405
+ /**
406
+ * Emit only the helpers, their seeds and the scaffold; the table policies
407
+ * stay hand-written.
408
+ */
353
409
  readonly helpersOnly?: boolean;
354
410
  /**
355
411
  * Emit `permitted_<resource>_rows(p_permission)` and its `_for` form for
356
- * these resources, or for every resource a grant reaches with `true`: the
357
- * row ids the caller may act on, as the generated policies decide them.
412
+ * these resources, or for every resource a grant reaches with `true`: the row
413
+ * ids the caller may act on, as the generated policies decide them.
358
414
  */
359
415
  readonly rowHelpers?: true | readonly string[];
360
416
  /**
361
- * `'function'`: the `role_permissions` rows live in
362
- * `<schema>.seed()`, which the helpers part creates. Declarative workflows
363
- * (pg-delta, migra) then need no seeds migration: call
364
- * `select <schema>.seed();` after each deploy.
417
+ * `'function'`: the `role_permissions` rows live in `<schema>.seed()`, which
418
+ * the helpers part creates. Declarative workflows (pg-delta, migra) then need
419
+ * no seeds migration: call `select <schema>.seed();` after each deploy.
365
420
  *
366
421
  * `'view'`: `role_permissions` is a `security_invoker` view over a `values`
367
422
  * list, so the rows travel with the declarative schema and need no seeding
@@ -380,19 +435,22 @@ type RlsConfig = {
380
435
  readonly shims?: boolean | RlsShimsConfig;
381
436
  };
382
437
  /**
383
- * `rls.approvals` on a table the app already has: the store functions keep
384
- * each request's body in `body` and its token in `token` (both added when
385
- * missing) and read every field from the body; `mirror` copies request
386
- * fields into the app's own columns on each write, converted to their types.
438
+ * `rls.approvals` on a table the app already has: the store functions keep each
439
+ * request's body in `body` and its token in `token` (both added when missing)
440
+ * and read every field from the body; `mirror` copies request fields into the
441
+ * app's own columns on each write, converted to their types.
387
442
  */
388
443
  type RlsApprovalsAdopt = {
389
- /** `table` or `schema.table`. Without it the store is the generated `approval_requests`. */
444
+ /**
445
+ * `table` or `schema.table`. Without it the store is the generated
446
+ * `approval_requests`.
447
+ */
390
448
  readonly table?: string;
391
449
  /**
392
450
  * Add `approval_delegations`, the out-of-office covers a user writes for
393
- * themselves, and the four-argument `permdock_is_approver` that answers for
394
- * a delegate inside an active cover. `tableApprovalDelegationSource` reads
395
- * the same rows for `approvalsHandler`. Off by default.
451
+ * themselves, and the four-argument `permdock_is_approver` that answers for a
452
+ * delegate inside an active cover. `tableApprovalDelegationSource` reads the
453
+ * same rows for `approvalsHandler`. Off by default.
396
454
  */
397
455
  readonly delegations?: boolean;
398
456
  /** A text column unique per request. Default `token`. */
@@ -424,18 +482,30 @@ type RlsApiKeys = {
424
482
  readonly roles?: string;
425
483
  readonly serviceRoles?: readonly string[];
426
484
  };
427
- /** One more table whose rows assign a role, such as invitations (`rls.assignments.tables`). */
485
+ /**
486
+ * One more table whose rows assign a role, such as invitations
487
+ * (`rls.assignments.tables`).
488
+ */
428
489
  type RlsAssignmentTable = {
429
490
  readonly table: string;
430
491
  /** The declared scope the row assigns the role at. */
431
492
  readonly scope: string;
432
493
  /** The column holding the scope instance id. */
433
494
  readonly id: string;
434
- /** The tenant column for a scope below the first; defaults to `id` at the first scope. */
495
+ /**
496
+ * The tenant column for a scope below the first; defaults to `id` at the
497
+ * first scope.
498
+ */
435
499
  readonly tenant?: string;
436
- /** The role key column, a reference to a roles table that holds the key, or several of them. */
500
+ /**
501
+ * The role key column, a reference to a roles table that holds the key, or
502
+ * several of them.
503
+ */
437
504
  readonly role: string | RoleMap | RoleThrough | readonly (string | RoleMap | RoleThrough)[];
438
- /** The column holding the user the row assigns to, which `ownRole` compares with the caller. */
505
+ /**
506
+ * The column holding the user the row assigns to, which `ownRole` compares
507
+ * with the caller.
508
+ */
439
509
  readonly user?: string;
440
510
  };
441
511
  /** `rls.customRoleWrites.roles`: the application's table of custom roles. */
@@ -443,22 +513,44 @@ type RlsCustomRoleTable = {
443
513
  readonly table: string;
444
514
  /** The column holding the role name. */
445
515
  readonly key: string;
446
- /** The tenant column; a row with no tenant is a platform custom role (`scope: 'global'`). Without it every row is a platform role. */
516
+ /**
517
+ * The tenant column; a row with no tenant is a platform custom role (`scope:
518
+ * 'global'`). Without it every row is a platform role.
519
+ */
447
520
  readonly tenant?: string;
448
- /** A text column holding the scope name; without it a row with a tenant lives at the first scope. */
521
+ /**
522
+ * A text column holding the scope name; without it a row with a tenant lives
523
+ * at the first scope.
524
+ */
449
525
  readonly scope?: string;
450
526
  /** A column pinning the role to one instance of its scope. */
451
527
  readonly id?: string;
452
- /** The row's id column: turns on the by-id write and read functions (`permdock_replace_custom_role_grants_by_id`). */
528
+ /**
529
+ * The row's id column: turns on the by-id write and read functions
530
+ * (`permdock_replace_custom_role_grants_by_id`).
531
+ */
453
532
  readonly primaryKey?: string;
454
- /** A boolean column marking rows that are not custom roles (declared or system roles); those rows are skipped. */
533
+ /**
534
+ * A boolean column marking rows that are not custom roles (declared or system
535
+ * roles); those rows are skipped.
536
+ */
455
537
  readonly skip?: string;
456
- /** A boolean column marking a row with no tenant as a shared custom role, held at `scope` (default the first scope) in every tenant. Without it a row with no tenant is a platform role. */
538
+ /**
539
+ * A boolean column marking a row with no tenant as a shared custom role, held
540
+ * at `scope` (default the first scope) in every tenant. Without it a row with
541
+ * no tenant is a platform role.
542
+ */
457
543
  readonly shared?: string;
458
544
  };
459
- /** `rls.customRoles` as an object: custom roles on, plus where existing ones live. */
545
+ /**
546
+ * `rls.customRoles` as an object: custom roles on, plus where existing ones
547
+ * live.
548
+ */
460
549
  type RlsCustomRolesConfig = {
461
- /** The application's role tables `--backfill-out` copies into `custom_role_permissions` and `custom_role_includes`. */
550
+ /**
551
+ * The application's role tables `--backfill-out` copies into
552
+ * `custom_role_permissions` and `custom_role_includes`.
553
+ */
462
554
  readonly from?: RlsCustomRolesFrom;
463
555
  };
464
556
  /**
@@ -468,19 +560,25 @@ type RlsCustomRolesConfig = {
468
560
  */
469
561
  type RlsCustomRolesFrom = {
470
562
  /**
471
- * `'trigger'`: after-row triggers on the permissions table and the
472
- * includes table rebuild the affected role through
473
- * `permdock_trusted_replace_custom_role_grants` on every legacy write, so
474
- * the PermDock grants follow the application's editor. Without it the
475
- * backfill copies once.
563
+ * `'trigger'`: after-row triggers on the permissions table and the includes
564
+ * table rebuild the affected role through
565
+ * `permdock_trusted_replace_custom_role_grants` on every legacy write, so the
566
+ * PermDock grants follow the application's editor. Without it the backfill
567
+ * copies once.
476
568
  */
477
569
  readonly sync?: "trigger";
478
570
  readonly permissions: {
479
571
  /** `table` or `schema.table`: one row per permission a role holds. */
480
572
  readonly table: string;
481
- /** The reference to the roles table: `{ through: 'roles', on: { role_id: 'id' }, column: 'key' }`. */
573
+ /**
574
+ * The reference to the roles table: `{ through: 'roles', on: { role_id:
575
+ * 'id' }, column: 'key' }`.
576
+ */
482
577
  readonly role: RoleThrough;
483
- /** The permission key column, or a reference to a permissions table that holds the key. */
578
+ /**
579
+ * The permission key column, or a reference to a permissions table that
580
+ * holds the key.
581
+ */
484
582
  readonly permission: string | RoleThrough;
485
583
  /** A text column holding `allow` or `deny`. Without it every row allows. */
486
584
  readonly effect?: string;
@@ -510,22 +608,34 @@ type RlsTrigger = {
510
608
  };
511
609
  /**
512
610
  * `rls.audit`: one `select <function>('<schema>.<table>'::regclass, <args>)`
513
- * per generated table, for an audit module that registers a table by
514
- * creating its own trigger.
611
+ * per generated table, for an audit module that registers a table by creating
612
+ * its own trigger.
515
613
  */
516
614
  type RlsAudit = {
517
615
  /** `schema.function` taking the table as its first argument. */
518
616
  readonly function: string;
519
- /** Generated tables, without the schema. Default the custom-role tables and `user_roles`, those this run creates. */
617
+ /**
618
+ * Generated tables, without the schema. Default the custom-role tables and
619
+ * `user_roles`, those this run creates.
620
+ */
520
621
  readonly tables?: readonly string[];
521
- /** Named text arguments: `{ tenant_column: 'tenant_id' }` passes `tenant_column => 'tenant_id'`. */
622
+ /**
623
+ * Named text arguments: `{ tenant_column: 'tenant_id' }` passes
624
+ * `tenant_column => 'tenant_id'`.
625
+ */
522
626
  readonly args?: Readonly<Record<string, string>>;
523
627
  };
524
628
  /** `rls.customRoleWrites.audit`: the function a by-id custom-role save calls. */
525
629
  type RlsCustomRoleAudit = {
526
- /** `schema.function` taking named `event_type`, `target_type`, `record_id`, `tenant` and `metadata` arguments. */
630
+ /**
631
+ * `schema.function` taking named `event_type`, `target_type`, `record_id`,
632
+ * `tenant` and `metadata` arguments.
633
+ */
527
634
  readonly function: string;
528
- /** Extra named text arguments: `{ actor_kind: 'user' }` passes `actor_kind => 'user'`. */
635
+ /**
636
+ * Extra named text arguments: `{ actor_kind: 'user' }` passes `actor_kind =>
637
+ * 'user'`.
638
+ */
529
639
  readonly args?: Readonly<Record<string, string>>;
530
640
  };
531
641
  /** `rls.shims`: where the legacy-named wrappers go. */
@@ -533,12 +643,16 @@ type RlsShimsConfig = {
533
643
  /** Schema of the legacy helpers. Default `public`. */
534
644
  readonly schema?: string;
535
645
  };
536
- /** An action verb's SQL command, or `'none'` for a verb that only `permdock_has` answers. */
646
+ /**
647
+ * An action verb's SQL command, or `'none'` for a verb that only `permdock_has`
648
+ * answers.
649
+ */
537
650
  type RlsActions = Readonly<Record<string, "select" | "insert" | "update" | "delete" | "none">>;
538
651
  /**
539
652
  * One existing SQL helper `rls migrate` rewrites. `form` names its arguments:
540
- * `ids(key)` returns scope ids, `row(id, key)` and `membership(id)` test one id,
541
- * `scoped(scope, id, key)` takes the scope as a literal, `global(key)` returns a boolean.
653
+ * `ids(key)` returns scope ids, `row(id, key)` and `membership(id)` test one
654
+ * id, `scoped(scope, id, key)` takes the scope as a literal, `global(key)`
655
+ * returns a boolean.
542
656
  */
543
657
  type RlsMigrateHelper = {
544
658
  readonly form: "ids" | "row" | "membership";
@@ -558,20 +672,29 @@ type RlsMigrateConfig = {
558
672
  readonly keys?: Readonly<Record<string, string>>;
559
673
  /** Key prefix renames, longest first: `{ 'organization.': '' }`. */
560
674
  readonly prefixes?: Readonly<Record<string, string>>;
561
- /** For `scoped` helpers, the scope literals that mean a global check, such as `system`. */
675
+ /**
676
+ * For `scoped` helpers, the scope literals that mean a global check, such as
677
+ * `system`.
678
+ */
562
679
  readonly globalScopes?: readonly string[];
563
- /** For `scoped` helpers, a scope literal's PermDock scope when the names differ. */
680
+ /**
681
+ * For `scoped` helpers, a scope literal's PermDock scope when the names
682
+ * differ.
683
+ */
564
684
  readonly scopes?: Readonly<Record<string, string>>;
565
685
  /**
566
686
  * Materialised permission tables to retire, by `schema.table`: a table the
567
687
  * application keeps in step with triggers and reads instead of the grants.
568
- * `rls migrate --retire-out` drops it with its refresh triggers once
569
- * nothing else reads it.
688
+ * `rls migrate --retire-out` drops it with its refresh triggers once nothing
689
+ * else reads it.
570
690
  */
571
691
  readonly tables?: Readonly<Record<string, RlsMigrateTable>>;
572
692
  };
573
693
  type RlsMigrateTable = {
574
- /** The functions that keep the table in step. Default: every function in `--sql` whose body writes it, and every function that calls one. */
694
+ /**
695
+ * The functions that keep the table in step. Default: every function in
696
+ * `--sql` whose body writes it, and every function that calls one.
697
+ */
575
698
  readonly refresh?: readonly string[];
576
699
  };
577
700
  /** Where global roles live: `table (user, role)`. Defaults `user_id` and `role`. */
@@ -614,11 +737,20 @@ type RlsStorage = {
614
737
  };
615
738
  /** `permdock supabase hook generate` input. */
616
739
  type SupabaseHookConfig = {
617
- /** The same `tableMembershipSource` / `junctionMembershipSource` sources the app passes as `memberships`. */
740
+ /**
741
+ * The same `tableMembershipSource` / `junctionMembershipSource` sources the
742
+ * app passes as `memberships`.
743
+ */
618
744
  readonly memberships: readonly SqlMembershipSource[];
619
- /** Schema of the hook and the version table. Default `rls.schema`, else `permdock`. */
745
+ /**
746
+ * Schema of the hook and the version table. Default `rls.schema`, else
747
+ * `permdock`.
748
+ */
620
749
  readonly schema?: string;
621
- /** Global roles: `user_role` and `roles`. Default `rls.roles`, else the `<schema>.user_roles (user_id, role)` table; `false` for none. */
750
+ /**
751
+ * Global roles: `user_role` and `roles`. Default `rls.roles`, else the
752
+ * `<schema>.user_roles (user_id, role)` table; `false` for none.
753
+ */
622
754
  readonly roles?: GlobalRoles | false;
623
755
  /**
624
756
  * Where the active first-scope id comes from: `app_metadata.<key>` (default
@@ -642,19 +774,18 @@ type SupabaseHookConfig = {
642
774
  readonly columns: readonly string[];
643
775
  };
644
776
  /**
645
- * Claims other packages own, each `claim: '<schema>.<function>'`, for
646
- * example `{ features: 'public.feature_claims' }`. The function
647
- * takes the user id (`uuid`) and returns `jsonb`; `null` omits the claim.
648
- * Reserved names are refused, the claims sit outside `budget`, and a
649
- * suspended user gets none.
777
+ * Claims other packages own, each `claim: '<schema>.<function>'`, for example
778
+ * `{ features: 'public.feature_claims' }`. The function takes the user id
779
+ * (`uuid`) and returns `jsonb`; `null` omits the claim. Reserved names are
780
+ * refused, the claims sit outside `budget`, and a suspended user gets none.
650
781
  */
651
782
  readonly claims?: Readonly<Record<string, string>>;
652
783
  /**
653
- * The `team_ids` claim: the uuid of every team the user belongs to, read
654
- * from `table` (`user` and `team` columns; `tenant` puts the active
655
- * tenant's teams first). It shares the `memberships` budget, so a user with
656
- * many teams gets a prefix and `memberships_truncated`. A suspended user
657
- * gets none. Clients must not write the table.
784
+ * The `team_ids` claim: the uuid of every team the user belongs to, read from
785
+ * `table` (`user` and `team` columns; `tenant` puts the active tenant's teams
786
+ * first). It shares the `memberships` budget, so a user with many teams gets
787
+ * a prefix and `memberships_truncated`. A suspended user gets none. Clients
788
+ * must not write the table.
658
789
  */
659
790
  readonly teams?: {
660
791
  readonly table: string;
@@ -665,22 +796,28 @@ type SupabaseHookConfig = {
665
796
  readonly before?: string | readonly string[];
666
797
  /**
667
798
  * Check the claims the hook wrote against `supabase-claims-v1.json` with
668
- * pg_jsonschema, and drop them all on a mismatch so the user signs in with
669
- * no PermDock access instead of an error. Needs the extension. Default `false`.
799
+ * pg_jsonschema, and drop them all on a mismatch so the user signs in with no
800
+ * PermDock access instead of an error. Needs the extension. Default `false`.
670
801
  */
671
802
  readonly validate?: boolean;
672
- /** Bytes of JSON the `memberships` claim may use. Default `supabaseMembershipsBudget` (1024). */
803
+ /**
804
+ * Bytes of JSON the `memberships` claim may use. Default
805
+ * `supabaseMembershipsBudget` (1024).
806
+ */
673
807
  readonly budget?: number;
674
- /** Keep `permdock_authz_version` and write the `authz_ver` claim. Default `true`. */
808
+ /**
809
+ * Keep `permdock_authz_version` and write the `authz_ver` claim. Default
810
+ * `true`.
811
+ */
675
812
  readonly version?: boolean;
676
813
  /**
677
814
  * Write PostgREST wrappers for `subject_for`, `members_of` and
678
815
  * `authz_version_for` into `schema` (default `public`), named
679
- * `<prefix>subject_for` and so on (default prefix `permdock_`), for a
680
- * backend that reaches Postgres through the Data API while the hook schema
681
- * is not exposed. Each wrapper is `security definer`, revoked from
682
- * `public`, `anon` and `authenticated`, and granted to `service_role`: the
683
- * one place the hook grants to it. Pass the same setting to `postgrestSources`.
816
+ * `<prefix>subject_for` and so on (default prefix `permdock_`), for a backend
817
+ * that reaches Postgres through the Data API while the hook schema is not
818
+ * exposed. Each wrapper is `security definer`, revoked from `public`, `anon`
819
+ * and `authenticated`, and granted to `service_role`: the one place the hook
820
+ * grants to it. Pass the same setting to `postgrestSources`.
684
821
  */
685
822
  readonly api?: {
686
823
  readonly schema?: string;
@@ -693,10 +830,10 @@ type SupabaseHookConfig = {
693
830
  readonly out?: string;
694
831
  };
695
832
  /**
696
- * How the project turns SQL into Supabase migrations: `'pg-delta'`
697
- * (Declarative Schemas 2.0, `supabase db schema declarative sync`),
698
- * `'migra'` (declarative schemas on `supabase db diff`) or `'migrations'`
699
- * (hand-written migrations, no declarative schemas).
833
+ * How the project turns SQL into Supabase migrations: `'pg-delta'` (Declarative
834
+ * Schemas 2.0, `supabase db schema declarative sync`), `'migra'` (declarative
835
+ * schemas on `supabase db diff`) or `'migrations'` (hand-written migrations, no
836
+ * declarative schemas).
700
837
  */
701
838
  type SupabaseSchemas = "pg-delta" | "migra" | "migrations";
702
839
  type SupabaseConfig = {
@@ -710,29 +847,47 @@ type SupabaseConfig = {
710
847
  };
711
848
  type DoctorConfig = {
712
849
  /**
713
- * Directories or globs the source checks read (PD001, PD002, PD007 to
714
- * PD015, PD044 and the other checks over files), default `collect.srcPath`.
715
- * The catalog `collect` writes still comes from `collect.srcPath`, and PD004
850
+ * Directories or globs the source checks read (PD001, PD002, PD007 to PD015,
851
+ * PD044 and the other checks over files), default `collect.srcPath`. The
852
+ * catalog `collect` writes still comes from `collect.srcPath`, and PD004
716
853
  * compares the catalog on disk with that one.
717
854
  */
718
855
  readonly srcPath?: readonly string[];
719
856
  readonly sensitiveActions?: readonly string[];
720
857
  readonly memberships?: string;
721
- /** A JSON fixture `{ credentials?, settings? }` of API-key credentials and per-tenant settings (the `memorySettingsSource` input) for PD029. */
858
+ /**
859
+ * A JSON fixture `{ credentials?, settings? }` of API-key credentials and
860
+ * per-tenant settings (the `memorySettingsSource` input) for PD029.
861
+ */
722
862
  readonly credentials?: string;
723
- /** Globs or directories whose files are client entries for PD001, for frameworks with no `'use client'` convention. */
863
+ /**
864
+ * Globs or directories whose files are client entries for PD001, for
865
+ * frameworks with no `'use client'` convention.
866
+ */
724
867
  readonly clientEntries?: readonly string[];
725
- /** Globs or directories of SQL migrations PD022 scans for views; defaults to the usual migration folders. */
868
+ /**
869
+ * Globs or directories of SQL migrations PD022 scans for views; defaults to
870
+ * the usual migration folders.
871
+ */
726
872
  readonly migrations?: readonly string[];
727
- /** A JSON array of sample decoded token claims; PD039 measures each `supabase.hook.claims` entry in it. */
873
+ /**
874
+ * A JSON array of sample decoded token claims; PD039 measures each
875
+ * `supabase.hook.claims` entry in it.
876
+ */
728
877
  readonly claims?: string;
729
- /** Tables two resources map to on purpose, over disjoint rows; PD075 skips them. */
878
+ /**
879
+ * Tables two resources map to on purpose, over disjoint rows; PD075 skips
880
+ * them.
881
+ */
730
882
  readonly sharedTables?: readonly string[];
731
883
  };
732
884
  type PermDockConfig = {
733
885
  readonly permissions?: string;
734
886
  readonly policy?: string;
735
- /** A module exporting the `defineOperations` map as `operations` or default; `collect` writes it to the catalog's `operations`. */
887
+ /**
888
+ * A module exporting the `defineOperations` map as `operations` or default;
889
+ * `collect` writes it to the catalog's `operations`.
890
+ */
736
891
  readonly operations?: string;
737
892
  readonly collect?: CollectConfig;
738
893
  readonly catalog?: CatalogConfig;
@@ -743,16 +898,40 @@ type PermDockConfig = {
743
898
  readonly supabase?: SupabaseConfig;
744
899
  readonly powersync?: PowerSyncConfig;
745
900
  readonly doctor?: DoctorConfig;
901
+ readonly gen?: GenConfig;
746
902
  };
747
- /** `permdock powersync generate` and `verify` input. Tables and memberships come from `rls`. */
903
+ /** What `permdock gen --kind` writes. */
904
+ type GenKind = "zod" | "valibot" | "arktype" | "json-schema" | "standard-schema" | "constants" | "factories" | "react" | "vue" | "svelte" | "solid" | "messages";
905
+ /** `permdock gen` input. */
906
+ type GenConfig = {
907
+ /** The directory the generated files go to; default `src/generated`. */
908
+ readonly out?: string;
909
+ /** The kinds `permdock gen` writes without `--kind`; default `['constants']`. */
910
+ readonly kinds?: readonly GenKind[];
911
+ /**
912
+ * The schema kinds also export `<resource>Fields`: per field its `label`,
913
+ * `required`, enum `options` and bounds, for forms.
914
+ */
915
+ readonly fieldMeta?: boolean;
916
+ };
917
+ /**
918
+ * `permdock powersync generate` and `verify` input. Tables and memberships come
919
+ * from `rls`.
920
+ */
748
921
  type PowerSyncConfig = {
749
922
  /** The Sync Streams file; default `sync-config.yaml`. */
750
923
  readonly out?: string;
751
- /** Resources that get a stream; default every resource with a grant of `action`. */
924
+ /**
925
+ * Resources that get a stream; default every resource with a grant of
926
+ * `action`.
927
+ */
752
928
  readonly resources?: readonly string[];
753
929
  /** The action whose grants decide which rows sync; default `read`. */
754
930
  readonly action?: string;
755
- /** Where `generate` writes `localSnapshotManifest(policy)` as JSON for `localSnapshot` and `powerSyncSource`; none by default. */
931
+ /**
932
+ * Where `generate` writes `localSnapshotManifest(policy)` as JSON for
933
+ * `localSnapshot` and `powerSyncSource`; none by default.
934
+ */
756
935
  readonly manifest?: string;
757
936
  };
758
937
  type CliIo = {
@@ -785,11 +964,11 @@ type PermDockPluginOptions = {
785
964
  readonly collect?: CollectConfig;
786
965
  readonly onDrift?: "error" | "warn";
787
966
  /**
788
- * Unplugin only: compare instead of write in `buildStart`, failing the
789
- * build on drift (as `permdock collect --check` does). The Next plugin
790
- * checks in `phase-production-build` unless `PERMDOCK_COLLECT=write`.
967
+ * Unplugin only: compare instead of write in `buildStart`, failing the build
968
+ * on drift (as `permdock collect --check` does). The Next plugin checks in
969
+ * `phase-production-build` unless `PERMDOCK_COLLECT=write`.
791
970
  */
792
971
  readonly check?: boolean;
793
972
  };
794
973
  //#endregion
795
- export { RunResult as _, PermDockPluginOptions as a, RlsConfig as c, RlsMembershipTable as d, RlsMemberships as f, RlsTarget as g, RlsSuspension as h, PermDockConfig as i, RlsDialect as l, RlsSuspendedScope as m, CliIo as n, RlsActiveRow as o, RlsSuspendedMembership as p, CollectConfig as r, RlsApiKeys as s, CatalogConfig as t, RlsFunctionMapping as u };
974
+ export { RlsSuspension as _, GenKind as a, RlsActiveRow as c, RlsDialect as d, RlsFunctionMapping as f, RlsSuspendedScope as g, RlsSuspendedMembership as h, GenConfig as i, RlsApiKeys as l, RlsMemberships as m, CliIo as n, PermDockConfig as o, RlsMembershipTable as p, CollectConfig as r, PermDockPluginOptions as s, CatalogConfig as t, RlsConfig as u, RlsTarget as v, RunResult as y };