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,19 +1,22 @@
1
- import { n as CliError } from "./errors-DpP_U6Bf.js";
2
- import { a as rel } from "./files-D_JIzUrP.js";
1
+ import { n as CliError } from "./errors-Vpu6rKHl.js";
2
+ import { a as rel } from "./files-BSjrtIHw.js";
3
3
  import { t as beforeFirst } from "./text-BMFRfBqc.js";
4
- import { n as ROOT } from "./manifest-Dv6q4i5s.js";
4
+ import { n as ROOT } from "./manifest-Cgiq5oqc.js";
5
5
  import { i as renameMessage, n as DEFAULT_CHANGES, r as flagRename, t as COMMAND_MOVES } from "./renames-CGj7YwcQ.js";
6
- import { r as refuseDirty, t as applyFiles } from "./files-acUbNwWt.js";
6
+ import { i as refuseDirty, t as applyFiles } from "./files-B3AA05f1.js";
7
7
  import { readFileSync, readdirSync, statSync } from "node:fs";
8
- import { extname, join, resolve } from "node:path";
8
+ import { basename, extname, join, resolve } from "node:path";
9
9
  import { Visitor, parseSync, visitorKeys } from "oxc-parser";
10
10
  //#region src/cli/codemod/cli-calls.ts
11
- /** `permdock`, `npx permdock@0.4`, `pnpm exec permdock`: the bin name followed by a space. */
11
+ /**
12
+ * `permdock`, `npx permdock@0.4`, `pnpm exec permdock`: the bin name followed
13
+ * by a space.
14
+ */
12
15
  const INVOCATION = /(?<![\w./@-])permdock(?:@[\w.^~-]+)?(?=[ \t])/gu;
13
16
  /**
14
- * Where a shell command ends: an operator, a pipe, a redirect, a comment or
15
- * a closing backtick. A JSON string also ends at its closing quote. `<id>`
16
- * is a placeholder, not a redirect, so a redirect needs a space on both sides.
17
+ * Where a shell command ends: an operator, a pipe, a redirect, a comment or a
18
+ * closing backtick. A JSON string also ends at its closing quote. `<id>` is a
19
+ * placeholder, not a redirect, so a redirect needs a space on both sides.
17
20
  */
18
21
  function commandEnd(text, from, json) {
19
22
  const match = (json ? /&&|\|\||[;|`)\n"]|(?<=\s)\d?[<>]{1,2}(?:&\d|\s)|\s#/u : /&&|\|\||[;|`)\n]|(?<=\s)\d?[<>]{1,2}(?:&\d|\s)|\s#/u).exec(text.slice(from));
@@ -33,7 +36,10 @@ function lineColumn(text, offset) {
33
36
  column: offset - before.lastIndexOf("\n")
34
37
  };
35
38
  }
36
- /** The leaf path the positional tokens name, with the token after which a moved subcommand goes. */
39
+ /**
40
+ * The leaf path the positional tokens name, with the token after which a moved
41
+ * subcommand goes.
42
+ */
37
43
  function commandOf(tokens) {
38
44
  let node = ROOT;
39
45
  const path = [];
@@ -116,8 +122,8 @@ function mappedValue(values, value) {
116
122
  return Object.hasOwn(values, value) ? values[value] : void 0;
117
123
  }
118
124
  /**
119
- * Rewrites the 0.5.0 CLI renames in shell commands: package.json scripts,
120
- * CI workflows, shell scripts. A rename that needs a person, such as an
125
+ * Rewrites the 0.5.0 CLI renames in shell commands: package.json scripts, CI
126
+ * workflows, shell scripts. A rename that needs a person, such as an
121
127
  * environment name that must become a project id, is a follow-up instead.
122
128
  */
123
129
  function rewriteCliCalls(text, options) {
@@ -179,6 +185,380 @@ function dropWithSpace(text, edit) {
179
185
  } : edit;
180
186
  }
181
187
  //#endregion
188
+ //#region src/cli/codemod/ast.ts
189
+ function nameOf(node) {
190
+ if (node?.type === "Literal") return typeof node.value === "string" ? node.value : void 0;
191
+ return node?.name;
192
+ }
193
+ const NOT_REFERENCES = /* @__PURE__ */ new Set([
194
+ "ImportSpecifier",
195
+ "ImportDefaultSpecifier",
196
+ "ImportNamespaceSpecifier",
197
+ "LabeledStatement",
198
+ "BreakStatement",
199
+ "ContinueStatement",
200
+ "TSEnumMember",
201
+ "TSModuleDeclaration",
202
+ "TSTypeParameter"
203
+ ]);
204
+ const KEYED_MEMBERS = /* @__PURE__ */ new Set([
205
+ "MethodDefinition",
206
+ "PropertyDefinition",
207
+ "AccessorProperty",
208
+ "TSPropertySignature",
209
+ "TSMethodSignature",
210
+ "TSAbstractMethodDefinition",
211
+ "TSAbstractPropertyDefinition"
212
+ ]);
213
+ /**
214
+ * How an identifier is read: a plain reference, a shorthand property value, the
215
+ * local of an `export { }`, or not a reference.
216
+ */
217
+ function referencePlace(node, parent, ancestors) {
218
+ const type = parent.type;
219
+ if (node.type === "JSXIdentifier") return type === "JSXOpeningElement" || type === "JSXClosingElement" || type === "JSXMemberExpression" && parent.object === node ? "reference" : "none";
220
+ if (type === "Property") {
221
+ if (ancestors.at(-2)?.type === "ObjectPattern") return "none";
222
+ if (parent.shorthand === true) return parent.value === node ? "shorthand" : "none";
223
+ return parent.key === node && parent.computed !== true ? "none" : "reference";
224
+ }
225
+ if (type === "MemberExpression" || KEYED_MEMBERS.has(type)) return (type === "MemberExpression" ? parent.property : parent.key) === node && parent.computed !== true ? "none" : "reference";
226
+ if (type === "ExportSpecifier") {
227
+ const reexport = ancestors.at(-2)?.source !== null;
228
+ return parent.local === node && !reexport ? "export" : "none";
229
+ }
230
+ if (type === "TSQualifiedName") return parent.right === node ? "none" : "reference";
231
+ return NOT_REFERENCES.has(type) ? "none" : "reference";
232
+ }
233
+ function nodes(value) {
234
+ return Array.isArray(value) ? value.filter(isNode) : [];
235
+ }
236
+ function isNode(value) {
237
+ return typeof value === "object" && value !== null && !Array.isArray(value);
238
+ }
239
+ /**
240
+ * A child node under a field `Estree` types as something else (`value`, a type
241
+ * parameter's `name`).
242
+ */
243
+ function child(node, field) {
244
+ const value = Reflect.get(node, field);
245
+ return isNode(value) ? value : void 0;
246
+ }
247
+ function patternNames(pattern, into) {
248
+ if (pattern === null || pattern === void 0) return;
249
+ switch (pattern.type) {
250
+ case "Identifier":
251
+ into.add(pattern.name ?? "");
252
+ return;
253
+ case "ObjectPattern":
254
+ for (const property of nodes(pattern.properties)) patternNames(property.type === "RestElement" ? property.argument : child(property, "value"), into);
255
+ return;
256
+ case "ArrayPattern":
257
+ for (const element of nodes(pattern.elements)) patternNames(element, into);
258
+ return;
259
+ default: patternNames(pattern.left ?? pattern.argument ?? pattern.parameter, into);
260
+ }
261
+ }
262
+ const DECLARATIONS_WITH_ID = /* @__PURE__ */ new Set([
263
+ "FunctionDeclaration",
264
+ "ClassDeclaration",
265
+ "TSEnumDeclaration",
266
+ "TSTypeAliasDeclaration",
267
+ "TSInterfaceDeclaration",
268
+ "TSModuleDeclaration",
269
+ "TSImportEqualsDeclaration",
270
+ "TSDeclareFunction"
271
+ ]);
272
+ function declareStatement(statement, into) {
273
+ const type = statement.type;
274
+ if (type === "VariableDeclaration") for (const declarator of nodes(statement.declarations)) patternNames(declarator.id, into);
275
+ else if (DECLARATIONS_WITH_ID.has(type)) patternNames(statement.id, into);
276
+ else if (statement.declaration !== null && statement.declaration !== void 0) declareStatement(statement.declaration, into);
277
+ else if (type === "ImportDeclaration") for (const spec of nodes(statement.specifiers)) patternNames(spec.local, into);
278
+ }
279
+ const BLOCK_SCOPES = /* @__PURE__ */ new Set([
280
+ "Program",
281
+ "BlockStatement",
282
+ "StaticBlock",
283
+ "TSModuleBlock"
284
+ ]);
285
+ const FUNCTION_SCOPES = /* @__PURE__ */ new Set([
286
+ "FunctionDeclaration",
287
+ "FunctionExpression",
288
+ "ArrowFunctionExpression",
289
+ "TSDeclareFunction"
290
+ ]);
291
+ /**
292
+ * The names a node declares for the code inside it; `undefined` for a node that
293
+ * opens no scope.
294
+ */
295
+ function scopeBindings(node) {
296
+ const names = /* @__PURE__ */ new Set();
297
+ const declare = (statements) => {
298
+ for (const statement of statements) if (statement !== null && statement !== void 0) declareStatement(statement, names);
299
+ };
300
+ const type = node.type;
301
+ let opens = true;
302
+ if (BLOCK_SCOPES.has(type)) declare(nodes(node.body));
303
+ else if (FUNCTION_SCOPES.has(type)) {
304
+ for (const param of nodes(node.params)) patternNames(param, names);
305
+ patternNames(type === "FunctionExpression" ? node.id : void 0, names);
306
+ } else if (type === "ClassExpression") patternNames(node.id, names);
307
+ else if (type === "ForStatement") declare([node.init]);
308
+ else if (type === "ForInStatement" || type === "ForOfStatement") declare([node.left]);
309
+ else if (type === "CatchClause") patternNames(node.param, names);
310
+ else if (type === "SwitchStatement") declare(nodes(node.cases).flatMap((branch) => nodes(branch.consequent)));
311
+ else if (type === "TSMappedType") patternNames(node.key, names);
312
+ else opens = false;
313
+ for (const param of nodes(node.typeParameters?.params)) {
314
+ opens = true;
315
+ patternNames(child(param, "name"), names);
316
+ }
317
+ return opens ? names : void 0;
318
+ }
319
+ function bindingsCached(node, cache) {
320
+ let found = cache.get(node);
321
+ if (found === void 0) {
322
+ found = scopeBindings(node) ?? null;
323
+ cache.set(node, found);
324
+ }
325
+ return found;
326
+ }
327
+ function applyEdits(source, edits) {
328
+ let out = source;
329
+ for (const item of edits.toSorted((a, b) => b.start - a.start || b.end - a.end)) out = out.slice(0, item.start) + item.text + out.slice(item.end);
330
+ return out;
331
+ }
332
+ function position(lineAt, index) {
333
+ const { line, lineStart } = lineAt(index);
334
+ return {
335
+ line,
336
+ column: index - lineStart + 1
337
+ };
338
+ }
339
+ function lineIndex(source) {
340
+ const starts = [0];
341
+ for (let i = 0; i < source.length; i += 1) if (source.charCodeAt(i) === 10) starts.push(i + 1);
342
+ return (index) => {
343
+ let low = 0;
344
+ let high = starts.length - 1;
345
+ while (low < high) {
346
+ const mid = low + high + 1 >> 1;
347
+ if ((starts[mid] ?? 0) <= index) low = mid;
348
+ else high = mid - 1;
349
+ }
350
+ return {
351
+ line: low + 1,
352
+ lineStart: starts[low] ?? 0
353
+ };
354
+ };
355
+ }
356
+ /**
357
+ * Every node in source order with its parent and ancestors: Oxc nodes carry no
358
+ * parent, so enter and exit keep a stack.
359
+ */
360
+ function walk(program, visit) {
361
+ const stack = [];
362
+ const handlers = {};
363
+ for (const type of Object.keys(visitorKeys)) {
364
+ handlers[type] = (node) => {
365
+ visit(node, stack.at(-1), stack);
366
+ stack.push(node);
367
+ };
368
+ handlers[`${type}:exit`] = () => {
369
+ stack.pop();
370
+ };
371
+ }
372
+ new Visitor(handlers).visit(program);
373
+ }
374
+ //#endregion
375
+ //#region src/cli/codemod/config-moves.ts
376
+ /** Passes over one file before the codemod stops; each pass moves one key. */
377
+ const MAX_PASSES = 500;
378
+ function unwrap(node) {
379
+ if (node?.type === "TSSatisfiesExpression" || node?.type === "TSAsExpression" || node?.type === "ParenthesizedExpression") return unwrap(child(node, "expression"));
380
+ if (node?.type === "CallExpression" && nameOf(node.callee) === "defineConfig") return unwrap(node.arguments?.[0]);
381
+ return node;
382
+ }
383
+ function configRoots(program, file) {
384
+ const roots = [];
385
+ const isConfigFile = basename(file).startsWith("permdock.config.");
386
+ walk(program, (node) => {
387
+ const root = node.type === "CallExpression" && nameOf(node.callee) === "defineConfig" ? unwrap(node) : node.type === "ExportDefaultDeclaration" && isConfigFile ? unwrap(node.declaration) : void 0;
388
+ if (root?.type === "ObjectExpression" && !roots.includes(root)) roots.push(root);
389
+ });
390
+ return roots;
391
+ }
392
+ function keyOf(property) {
393
+ return property.type === "Property" && property.computed !== true ? nameOf(property.key) : void 0;
394
+ }
395
+ function propertyOf(object, key) {
396
+ return nodes(object.properties).find((property) => keyOf(property) === key);
397
+ }
398
+ function objectValue(property) {
399
+ const value = child(property, "value");
400
+ return value?.type === "ObjectExpression" ? value : void 0;
401
+ }
402
+ /** The first property at `move.from` under `object`, with the concrete paths. */
403
+ function find(object, move, depth, path, skipped) {
404
+ const segment = move.from[depth];
405
+ if (segment === void 0) return;
406
+ const keys = segment === "*" ? nodes(object.properties).flatMap((property) => {
407
+ const key = keyOf(property);
408
+ return key === void 0 ? [] : [key];
409
+ }) : [segment];
410
+ for (const key of keys) {
411
+ const property = propertyOf(object, key);
412
+ if (property === void 0) continue;
413
+ const at = [...path, key];
414
+ if (depth === move.from.length - 1) {
415
+ if (skipped.has(property.start)) continue;
416
+ return {
417
+ parent: object,
418
+ property,
419
+ path: at
420
+ };
421
+ }
422
+ const next = objectValue(property);
423
+ const found = next === void 0 ? void 0 : find(next, move, depth + 1, at, skipped);
424
+ if (found !== void 0) return found;
425
+ }
426
+ }
427
+ /** `move.to` with each `*` replaced by the key `from` matched there. */
428
+ function concreteTarget(move, path) {
429
+ return move.to.map((segment, index) => segment === "*" ? path[index] ?? segment : segment);
430
+ }
431
+ function removal(source, parent, property) {
432
+ const siblings = nodes(parent.properties);
433
+ const index = siblings.indexOf(property);
434
+ const next = siblings[index + 1];
435
+ if (next !== void 0) return {
436
+ start: property.start,
437
+ end: next.start,
438
+ text: ""
439
+ };
440
+ const previous = siblings[index - 1];
441
+ const end = /^\s*,/u.exec(source.slice(property.end))?.[0].length ?? 0;
442
+ return previous === void 0 ? {
443
+ start: property.start,
444
+ end: property.end + end,
445
+ text: ""
446
+ } : {
447
+ start: previous.end,
448
+ end: property.end,
449
+ text: ""
450
+ };
451
+ }
452
+ /** Adds `text` as the last property of `object`, so moved keys keep their order. */
453
+ function append(source, object, text) {
454
+ const last = nodes(object.properties).at(-1);
455
+ if (last === void 0) return {
456
+ start: object.start + 1,
457
+ end: object.start + 1,
458
+ text: ` ${text} `
459
+ };
460
+ const comma = /^\s*,/u.exec(source.slice(last.end))?.[0].length;
461
+ return comma === void 0 ? {
462
+ start: last.end,
463
+ end: last.end,
464
+ text: `, ${text}`
465
+ } : {
466
+ start: last.end + comma,
467
+ end: last.end + comma,
468
+ text: ` ${text},`
469
+ };
470
+ }
471
+ function nested(keys, value) {
472
+ const [first, ...rest] = keys;
473
+ return rest.length === 0 ? `${first}: ${value}` : `${first}: { ${nested(rest, value)} }`;
474
+ }
475
+ function step(source, found, to) {
476
+ const relative = to.slice(found.path.length - 1);
477
+ const value = child(found.property, "value");
478
+ const text = value === void 0 ? "" : source.slice(value.start, value.end);
479
+ const from = found.path.join(".");
480
+ const target = to.join(".");
481
+ let object = found.parent;
482
+ for (const [index, key] of relative.entries()) {
483
+ const existing = propertyOf(object, key);
484
+ const last = index === relative.length - 1;
485
+ if (existing === void 0) {
486
+ const insert = nested(relative.slice(index), text);
487
+ return {
488
+ kind: "edits",
489
+ at: found.property.start,
490
+ from,
491
+ to: target,
492
+ edits: object === found.parent ? [{
493
+ start: found.property.start,
494
+ end: found.property.end,
495
+ text: insert
496
+ }] : [removal(source, found.parent, found.property), append(source, object, insert)]
497
+ };
498
+ }
499
+ const next = objectValue(existing);
500
+ if (last || next === void 0) return {
501
+ kind: "conflict",
502
+ at: found.property.start,
503
+ message: `${from} moved to ${target}, which ${last ? "is already set" : "is not an object literal"}; merge it by hand`
504
+ };
505
+ object = next;
506
+ }
507
+ return {
508
+ kind: "conflict",
509
+ at: found.property.start,
510
+ message: `${from} moved to ${target}; move it by hand`
511
+ };
512
+ }
513
+ /**
514
+ * The first move that applies under any config root. A move that conflicts is
515
+ * skipped from then on and reported once in `followUps`.
516
+ */
517
+ function nextEdits(program, file, source, moves, skipped, followUps) {
518
+ for (const root of configRoots(program, file)) for (const move of moves) {
519
+ const found = find(root, move, 0, [], skipped);
520
+ if (found === void 0) continue;
521
+ const result = step(source, found, concreteTarget(move, found.path));
522
+ if (result.kind === "edits") return result;
523
+ skipped.add(found.property.start);
524
+ if (!followUps.some((item) => item.message === result.message)) followUps.push({
525
+ ...position(lineIndex(source), result.at),
526
+ name: found.path.join("."),
527
+ message: result.message
528
+ });
529
+ }
530
+ }
531
+ /**
532
+ * Moves each key `moves` names to its new path, one key per pass, until no move
533
+ * applies. A key whose target is already set, or sits under a value that is not
534
+ * an object literal, is reported instead.
535
+ */
536
+ function moveConfigKeys(file, original, moves) {
537
+ let source = original;
538
+ const lineAt = lineIndex(original);
539
+ const changes = [];
540
+ const followUps = [];
541
+ const skipped = /* @__PURE__ */ new Set();
542
+ for (let pass = 0; pass < MAX_PASSES; pass += 1) {
543
+ const parsed = parseSync(file, source, { sourceType: "module" });
544
+ if (parsed.errors.length > 0) break;
545
+ const program = parsed.program;
546
+ const applied = nextEdits(program, file, source, moves, skipped, followUps);
547
+ if (applied === void 0) break;
548
+ changes.push({
549
+ ...position(lineAt, Math.min(applied.at, original.length)),
550
+ from: applied.from,
551
+ to: applied.to
552
+ });
553
+ source = applyEdits(source, applied.edits);
554
+ }
555
+ return {
556
+ source,
557
+ changes,
558
+ followUps
559
+ };
560
+ }
561
+ //#endregion
182
562
  //#region src/cli/codemod/renames-0.5.ts
183
563
  const SERVER_ADAPTERS = [
184
564
  "permdock/server",
@@ -797,6 +1177,94 @@ const SIGNATURE_CHANGES_0_5 = Object.freeze([
797
1177
  after: "PermissionRequirementOptions"
798
1178
  }
799
1179
  ]);
1180
+ /**
1181
+ * 0.8 folds the `tenant` / `team` config shorthands into the named-scope forms,
1182
+ * under the `tenant` / `team` aliases a policy's first and second scope answer
1183
+ * to.
1184
+ */
1185
+ const CONFIG_MOVES_0_8 = Object.freeze([
1186
+ {
1187
+ from: ["rls", "tenantType"],
1188
+ to: [
1189
+ "rls",
1190
+ "scopeTypes",
1191
+ "tenant"
1192
+ ]
1193
+ },
1194
+ {
1195
+ from: ["rls", "teamType"],
1196
+ to: [
1197
+ "rls",
1198
+ "scopeTypes",
1199
+ "team"
1200
+ ]
1201
+ },
1202
+ {
1203
+ from: [
1204
+ "rls",
1205
+ "memberships",
1206
+ "tenant"
1207
+ ],
1208
+ to: [
1209
+ "rls",
1210
+ "memberships",
1211
+ "scopes",
1212
+ "tenant"
1213
+ ]
1214
+ },
1215
+ {
1216
+ from: [
1217
+ "rls",
1218
+ "memberships",
1219
+ "team"
1220
+ ],
1221
+ to: [
1222
+ "rls",
1223
+ "memberships",
1224
+ "scopes",
1225
+ "team"
1226
+ ]
1227
+ },
1228
+ ...[[
1229
+ "rls",
1230
+ "memberships",
1231
+ "scopes",
1232
+ "*"
1233
+ ], [
1234
+ "rls",
1235
+ "memberships",
1236
+ "resource",
1237
+ "*"
1238
+ ]].flatMap((table) => ["tenant", "team"].map((scope) => ({
1239
+ from: [...table, scope],
1240
+ to: [
1241
+ ...table,
1242
+ "columns",
1243
+ scope
1244
+ ]
1245
+ })))
1246
+ ]);
1247
+ /**
1248
+ * 0.8 drops `team` from the client `RolesOptions`; `{ scope, id }` names any
1249
+ * scope. Reported, since only the reader knows the scope a `team` id belongs
1250
+ * to.
1251
+ */
1252
+ const SIGNATURE_CHANGES_0_8 = Object.freeze([{
1253
+ name: "useRoles",
1254
+ entries: [
1255
+ "permdock/react",
1256
+ "permdock/react-native",
1257
+ "permdock/vue",
1258
+ "permdock/solid"
1259
+ ],
1260
+ before: "useRoles({ team: id })",
1261
+ after: "useRoles({ scope: \"team\", id })"
1262
+ }, ...["roles", "rolesFor"].map((name) => ({
1263
+ name,
1264
+ entries: ["permdock/svelte"],
1265
+ before: `${name}(() => ({ team: id }))`,
1266
+ after: `${name}(() => ({ scope: "team", id }))`
1267
+ }))]);
800
1268
  //#endregion
801
1269
  //#region src/cli/codemod/shapes-0.5.ts
802
1270
  const JSX_KITS = [
@@ -912,181 +1380,6 @@ const DURATION_KEYS_0_5 = Object.freeze({
912
1380
  lists: ["durations"]
913
1381
  });
914
1382
  //#endregion
915
- //#region src/cli/codemod/ast.ts
916
- function nameOf(node) {
917
- if (node?.type === "Literal") return typeof node.value === "string" ? node.value : void 0;
918
- return node?.name;
919
- }
920
- const NOT_REFERENCES = /* @__PURE__ */ new Set([
921
- "ImportSpecifier",
922
- "ImportDefaultSpecifier",
923
- "ImportNamespaceSpecifier",
924
- "LabeledStatement",
925
- "BreakStatement",
926
- "ContinueStatement",
927
- "TSEnumMember",
928
- "TSModuleDeclaration",
929
- "TSTypeParameter"
930
- ]);
931
- const KEYED_MEMBERS = /* @__PURE__ */ new Set([
932
- "MethodDefinition",
933
- "PropertyDefinition",
934
- "AccessorProperty",
935
- "TSPropertySignature",
936
- "TSMethodSignature",
937
- "TSAbstractMethodDefinition",
938
- "TSAbstractPropertyDefinition"
939
- ]);
940
- /** How an identifier is read: a plain reference, a shorthand property value, the local of an `export { }`, or not a reference. */
941
- function referencePlace(node, parent, ancestors) {
942
- const type = parent.type;
943
- if (node.type === "JSXIdentifier") return type === "JSXOpeningElement" || type === "JSXClosingElement" || type === "JSXMemberExpression" && parent.object === node ? "reference" : "none";
944
- if (type === "Property") {
945
- if (ancestors.at(-2)?.type === "ObjectPattern") return "none";
946
- if (parent.shorthand === true) return parent.value === node ? "shorthand" : "none";
947
- return parent.key === node && parent.computed !== true ? "none" : "reference";
948
- }
949
- if (type === "MemberExpression" || KEYED_MEMBERS.has(type)) return (type === "MemberExpression" ? parent.property : parent.key) === node && parent.computed !== true ? "none" : "reference";
950
- if (type === "ExportSpecifier") {
951
- const reexport = ancestors.at(-2)?.source !== null;
952
- return parent.local === node && !reexport ? "export" : "none";
953
- }
954
- if (type === "TSQualifiedName") return parent.right === node ? "none" : "reference";
955
- return NOT_REFERENCES.has(type) ? "none" : "reference";
956
- }
957
- function nodes(value) {
958
- return Array.isArray(value) ? value.filter(isNode) : [];
959
- }
960
- function isNode(value) {
961
- return typeof value === "object" && value !== null && !Array.isArray(value);
962
- }
963
- /** A child node under a field `Estree` types as something else (`value`, a type parameter's `name`). */
964
- function child(node, field) {
965
- const value = Reflect.get(node, field);
966
- return isNode(value) ? value : void 0;
967
- }
968
- function patternNames(pattern, into) {
969
- if (pattern === null || pattern === void 0) return;
970
- switch (pattern.type) {
971
- case "Identifier":
972
- into.add(pattern.name ?? "");
973
- return;
974
- case "ObjectPattern":
975
- for (const property of nodes(pattern.properties)) patternNames(property.type === "RestElement" ? property.argument : child(property, "value"), into);
976
- return;
977
- case "ArrayPattern":
978
- for (const element of nodes(pattern.elements)) patternNames(element, into);
979
- return;
980
- default: patternNames(pattern.left ?? pattern.argument ?? pattern.parameter, into);
981
- }
982
- }
983
- const DECLARATIONS_WITH_ID = /* @__PURE__ */ new Set([
984
- "FunctionDeclaration",
985
- "ClassDeclaration",
986
- "TSEnumDeclaration",
987
- "TSTypeAliasDeclaration",
988
- "TSInterfaceDeclaration",
989
- "TSModuleDeclaration",
990
- "TSImportEqualsDeclaration",
991
- "TSDeclareFunction"
992
- ]);
993
- function declareStatement(statement, into) {
994
- const type = statement.type;
995
- if (type === "VariableDeclaration") for (const declarator of nodes(statement.declarations)) patternNames(declarator.id, into);
996
- else if (DECLARATIONS_WITH_ID.has(type)) patternNames(statement.id, into);
997
- else if (statement.declaration !== null && statement.declaration !== void 0) declareStatement(statement.declaration, into);
998
- else if (type === "ImportDeclaration") for (const spec of nodes(statement.specifiers)) patternNames(spec.local, into);
999
- }
1000
- const BLOCK_SCOPES = /* @__PURE__ */ new Set([
1001
- "Program",
1002
- "BlockStatement",
1003
- "StaticBlock",
1004
- "TSModuleBlock"
1005
- ]);
1006
- const FUNCTION_SCOPES = /* @__PURE__ */ new Set([
1007
- "FunctionDeclaration",
1008
- "FunctionExpression",
1009
- "ArrowFunctionExpression",
1010
- "TSDeclareFunction"
1011
- ]);
1012
- /** The names a node declares for the code inside it; `undefined` for a node that opens no scope. */
1013
- function scopeBindings(node) {
1014
- const names = /* @__PURE__ */ new Set();
1015
- const declare = (statements) => {
1016
- for (const statement of statements) if (statement !== null && statement !== void 0) declareStatement(statement, names);
1017
- };
1018
- const type = node.type;
1019
- let opens = true;
1020
- if (BLOCK_SCOPES.has(type)) declare(nodes(node.body));
1021
- else if (FUNCTION_SCOPES.has(type)) {
1022
- for (const param of nodes(node.params)) patternNames(param, names);
1023
- patternNames(type === "FunctionExpression" ? node.id : void 0, names);
1024
- } else if (type === "ClassExpression") patternNames(node.id, names);
1025
- else if (type === "ForStatement") declare([node.init]);
1026
- else if (type === "ForInStatement" || type === "ForOfStatement") declare([node.left]);
1027
- else if (type === "CatchClause") patternNames(node.param, names);
1028
- else if (type === "SwitchStatement") declare(nodes(node.cases).flatMap((branch) => nodes(branch.consequent)));
1029
- else if (type === "TSMappedType") patternNames(node.key, names);
1030
- else opens = false;
1031
- for (const param of nodes(node.typeParameters?.params)) {
1032
- opens = true;
1033
- patternNames(child(param, "name"), names);
1034
- }
1035
- return opens ? names : void 0;
1036
- }
1037
- function bindingsCached(node, cache) {
1038
- let found = cache.get(node);
1039
- if (found === void 0) {
1040
- found = scopeBindings(node) ?? null;
1041
- cache.set(node, found);
1042
- }
1043
- return found;
1044
- }
1045
- function applyEdits(source, edits) {
1046
- let out = source;
1047
- for (const item of edits.toSorted((a, b) => b.start - a.start || b.end - a.end)) out = out.slice(0, item.start) + item.text + out.slice(item.end);
1048
- return out;
1049
- }
1050
- function position(lineAt, index) {
1051
- const { line, lineStart } = lineAt(index);
1052
- return {
1053
- line,
1054
- column: index - lineStart + 1
1055
- };
1056
- }
1057
- function lineIndex(source) {
1058
- const starts = [0];
1059
- for (let i = 0; i < source.length; i += 1) if (source.charCodeAt(i) === 10) starts.push(i + 1);
1060
- return (index) => {
1061
- let low = 0;
1062
- let high = starts.length - 1;
1063
- while (low < high) {
1064
- const mid = low + high + 1 >> 1;
1065
- if ((starts[mid] ?? 0) <= index) low = mid;
1066
- else high = mid - 1;
1067
- }
1068
- return {
1069
- line: low + 1,
1070
- lineStart: starts[low] ?? 0
1071
- };
1072
- };
1073
- }
1074
- /** Every node in source order with its parent and ancestors: Oxc nodes carry no parent, so enter and exit keep a stack. */
1075
- function walk(program, visit) {
1076
- const stack = [];
1077
- const handlers = {};
1078
- for (const type of Object.keys(visitorKeys)) {
1079
- handlers[type] = (node) => {
1080
- visit(node, stack.at(-1), stack);
1081
- stack.push(node);
1082
- };
1083
- handlers[`${type}:exit`] = () => {
1084
- stack.pop();
1085
- };
1086
- }
1087
- new Visitor(handlers).visit(program);
1088
- }
1089
- //#endregion
1090
1383
  //#region src/cli/codemod/context.ts
1091
1384
  /** One version's rename map: what the codemod rewrites and what it only reports. */
1092
1385
  const SCRIPT_BLOCK = /<script\b([^>]*)>([\s\S]*?)<\/script>/gu;
@@ -1121,7 +1414,10 @@ function renameOf(set, name, entry) {
1121
1414
  function listOf(items) {
1122
1415
  return new Intl.ListFormat("en-GB", { type: "disjunction" }).format(items);
1123
1416
  }
1124
- /** The import a call's callee is bound to: a named import, or a member of a namespace import. */
1417
+ /**
1418
+ * The import a call's callee is bound to: a named import, or a member of a
1419
+ * namespace import.
1420
+ */
1125
1421
  function importedCallee(ctx, callee, ancestors) {
1126
1422
  if (callee?.type === "Identifier") {
1127
1423
  const name = callee.name ?? "";
@@ -1744,7 +2040,10 @@ function visitMember(ctx, node, ancestors) {
1744
2040
  else if (origin === void 0) reportMethods(ctx, [property], "member", "is on a value from");
1745
2041
  }
1746
2042
  }
1747
- /** `const x = f(…)` or `const x = await f(…)` at module level, where `f` is imported from a permdock entry. */
2043
+ /**
2044
+ * `const x = f(…)` or `const x = await f(…)` at module level, where `f` is
2045
+ * imported from a permdock entry.
2046
+ */
1748
2047
  function factoryValues(program, bindings) {
1749
2048
  const out = /* @__PURE__ */ new Map();
1750
2049
  for (const statement of nodes(program.body)) {
@@ -1808,8 +2107,8 @@ function renameOptions(ctx, object, rows) {
1808
2107
  }
1809
2108
  }
1810
2109
  /**
1811
- * Rows with `calls` are renamed at those calls and nowhere else: their old
1812
- * key (`store`) is still a valid option on every other factory. Rows without
2110
+ * Rows with `calls` are renamed at those calls and nowhere else: their old key
2111
+ * (`store`) is still a valid option on every other factory. Rows without
1813
2112
  * `calls` are reported only on an object that reaches a permdock call.
1814
2113
  */
1815
2114
  function reportOptions(ctx, node, ancestors) {
@@ -1831,9 +2130,9 @@ const PASS_THROUGH = /* @__PURE__ */ new Set([
1831
2130
  "TSNonNullExpression"
1832
2131
  ]);
1833
2132
  /**
1834
- * The permdock call an object literal is an argument of, directly or nested
1835
- * in another argument's object, array or property value. `entry` is unset
1836
- * for a method on a receiver named after PermDock, whose entry is unknown.
2133
+ * The permdock call an object literal is an argument of, directly or nested in
2134
+ * another argument's object, array or property value. `entry` is unset for a
2135
+ * method on a receiver named after PermDock, whose entry is unknown.
1837
2136
  */
1838
2137
  function optionTarget(ctx, node, ancestors) {
1839
2138
  let child = node;
@@ -1858,8 +2157,8 @@ function rewriteImports(ctx, removed) {
1858
2157
  const { rename, spec } = binding;
1859
2158
  const imported = spec.imported;
1860
2159
  if (rename === void 0 || imported === void 0 || removed.has(local)) continue;
1861
- if (local !== binding.imported) replace(ctx, imported, imported.type === "Literal" ? JSON.stringify(rename.to) : rename.to, rename.from);
1862
- else replace(ctx, imported, ctx.kept.has(local) ? `${rename.to} as ${local}` : rename.to, rename.from);
2160
+ if (local === binding.imported) replace(ctx, imported, ctx.kept.has(local) ? `${rename.to} as ${local}` : rename.to, rename.from);
2161
+ else replace(ctx, imported, imported.type === "Literal" ? JSON.stringify(rename.to) : rename.to, rename.from);
1863
2162
  }
1864
2163
  }
1865
2164
  function rewriteReferences(ctx) {
@@ -1873,7 +2172,10 @@ function rewriteReferences(ctx) {
1873
2172
  else replace(ctx, node, rename.to, name);
1874
2173
  }
1875
2174
  }
1876
- /** `export { a } from 'permdock'` keeps exporting `a`: the module's own export name is not the codemod's to change. */
2175
+ /**
2176
+ * `export { a } from 'permdock'` keeps exporting `a`: the module's own export
2177
+ * name is not the codemod's to change.
2178
+ */
1877
2179
  function rewriteReexports(ctx) {
1878
2180
  for (const statement of nodes(ctx.program.body)) {
1879
2181
  const entry = statement.source?.value;
@@ -1909,8 +2211,16 @@ const CODEMOD_0_5 = Object.freeze({
1909
2211
  wraps: OPTION_WRAPS_0_5,
1910
2212
  durations: DURATION_KEYS_0_5
1911
2213
  });
2214
+ const CODEMOD_0_8 = Object.freeze({
2215
+ renames: [],
2216
+ signatures: SIGNATURE_CHANGES_0_8,
2217
+ configMoves: CONFIG_MOVES_0_8
2218
+ });
1912
2219
  /** Each codemod version and the rename map it applies. */
1913
- const CODEMODS = Object.freeze({ "0.5": CODEMOD_0_5 });
2220
+ const CODEMODS = Object.freeze({
2221
+ "0.5": CODEMOD_0_5,
2222
+ "0.8": CODEMOD_0_8
2223
+ });
1914
2224
  function codemodVersions() {
1915
2225
  return Object.keys(CODEMODS);
1916
2226
  }
@@ -1926,7 +2236,10 @@ const EXTENSIONS = /* @__PURE__ */ new Set([
1926
2236
  ".vue",
1927
2237
  ".svelte"
1928
2238
  ]);
1929
- /** Files whose shell commands the codemod rewrites when the version renames CLI names. */
2239
+ /**
2240
+ * Files whose shell commands the codemod rewrites when the version renames CLI
2241
+ * names.
2242
+ */
1930
2243
  const CLI_FILE_NAMES = /* @__PURE__ */ new Set([
1931
2244
  "package.json",
1932
2245
  "Makefile",
@@ -1968,9 +2281,9 @@ function codemod(options) {
1968
2281
  const writes = [];
1969
2282
  for (const file of files) {
1970
2283
  const source = readFileSync(file, "utf8");
1971
- if (!source.includes("permdock")) continue;
2284
+ if (!source.includes("permdock") && !basename(file).startsWith("permdock.config.")) continue;
1972
2285
  const name = rel(options.cwd, file);
1973
- const result = isCodeFile(file) ? transformSource(file, source, set) : cliResult(file, source);
2286
+ const result = isCodeFile(file) ? withConfigMoves(file, transformSource(file, source, set), set) : cliResult(file, source);
1974
2287
  if (result.error !== void 0) {
1975
2288
  followUps.push({
1976
2289
  file: name,
@@ -2018,6 +2331,15 @@ function codemod(options) {
2018
2331
  followUps
2019
2332
  };
2020
2333
  }
2334
+ function withConfigMoves(file, result, set) {
2335
+ if (result.error !== void 0 || set.configMoves === void 0) return result;
2336
+ const moved = moveConfigKeys(file, result.source, set.configMoves);
2337
+ return {
2338
+ source: moved.source,
2339
+ changes: [...result.changes, ...moved.changes],
2340
+ followUps: [...result.followUps, ...moved.followUps]
2341
+ };
2342
+ }
2021
2343
  function normaliseVersion(version) {
2022
2344
  if (version === void 0) throw new CliError("usage", `codemod needs a version: permdock codemod <version>. Supported: ${Object.keys(CODEMODS).join(", ")}.`);
2023
2345
  return /^v?(\d+\.\d+)(?:\.\d+)?$/u.exec(version)?.[1] ?? version;