@mionjs/devtools 0.8.8 → 0.13.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 (388) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +34 -0
  3. package/dist/core/apply-edits.d.ts +8 -0
  4. package/dist/core/apply-edits.js +24 -0
  5. package/dist/core/apply-edits.js.map +1 -0
  6. package/dist/core/bundledApiStub.d.ts +4 -0
  7. package/dist/core/bundledApiStub.js +4 -0
  8. package/dist/core/bundledApiStub.js.map +1 -0
  9. package/dist/core/devReporter.d.ts +19 -0
  10. package/dist/core/devReporter.js +91 -0
  11. package/dist/core/devReporter.js.map +1 -0
  12. package/dist/core/diagnosticCatalog.d.ts +5 -0
  13. package/dist/core/diagnosticCatalog.js +18 -0
  14. package/dist/core/diagnosticCatalog.js.map +1 -0
  15. package/dist/core/downgradeErrors.d.ts +11 -0
  16. package/dist/core/downgradeErrors.js +34 -0
  17. package/dist/core/downgradeErrors.js.map +1 -0
  18. package/dist/core/edit-buffer.d.ts +26 -0
  19. package/dist/core/edit-buffer.js +209 -0
  20. package/dist/core/edit-buffer.js.map +1 -0
  21. package/dist/core/go-generated/diagnosticCatalog.generated.d.ts +9 -0
  22. package/dist/core/go-generated/diagnosticCatalog.generated.js +1008 -0
  23. package/dist/core/go-generated/diagnosticCatalog.generated.js.map +1 -0
  24. package/dist/core/go-generated/reflectionKind.generated.d.ts +60 -0
  25. package/dist/core/go-generated/reflectionKind.generated.js +60 -0
  26. package/dist/core/go-generated/reflectionKind.generated.js.map +1 -0
  27. package/dist/core/go-generated/runtypes-constants.generated.d.ts +197 -0
  28. package/dist/core/go-generated/runtypes-constants.generated.js +110 -0
  29. package/dist/core/go-generated/runtypes-constants.generated.js.map +1 -0
  30. package/dist/core/go-generated/tsconfig-plugin-keys.generated.d.ts +3 -0
  31. package/dist/core/go-generated/tsconfig-plugin-keys.generated.js +23 -0
  32. package/dist/core/go-generated/tsconfig-plugin-keys.generated.js.map +1 -0
  33. package/dist/core/groupedLog.d.ts +6 -0
  34. package/dist/core/groupedLog.js +163 -0
  35. package/dist/core/groupedLog.js.map +1 -0
  36. package/dist/core/levels.d.ts +6 -0
  37. package/dist/core/levels.js +22 -0
  38. package/dist/core/levels.js.map +1 -0
  39. package/dist/core/markerImports.d.ts +8 -0
  40. package/dist/core/markerImports.js +149 -0
  41. package/dist/core/markerImports.js.map +1 -0
  42. package/dist/core/option-guards.d.ts +4 -0
  43. package/dist/core/option-guards.js +12 -0
  44. package/dist/core/option-guards.js.map +1 -0
  45. package/dist/core/plugin-option-keys.d.ts +3 -0
  46. package/dist/core/plugin-option-keys.js +35 -0
  47. package/dist/core/plugin-option-keys.js.map +1 -0
  48. package/dist/core/protocol.d.ts +244 -0
  49. package/dist/core/protocol.js +23 -0
  50. package/dist/core/protocol.js.map +1 -0
  51. package/dist/core/resolver-client.d.ts +160 -0
  52. package/dist/core/resolver-client.js +354 -0
  53. package/dist/core/resolver-client.js.map +1 -0
  54. package/dist/core/scan-batcher.d.ts +6 -0
  55. package/dist/core/scan-batcher.js +36 -0
  56. package/dist/core/scan-batcher.js.map +1 -0
  57. package/dist/core/surface.d.ts +23 -0
  58. package/dist/core/surface.js +77 -0
  59. package/dist/core/surface.js.map +1 -0
  60. package/dist/core/type-deps.d.ts +11 -0
  61. package/dist/core/type-deps.js +72 -0
  62. package/dist/core/type-deps.js.map +1 -0
  63. package/dist/core/types.d.ts +13 -0
  64. package/dist/core/types.js +2 -0
  65. package/dist/core/types.js.map +1 -0
  66. package/dist/core/typescript-floor.d.ts +5 -0
  67. package/dist/core/typescript-floor.js +33 -0
  68. package/dist/core/typescript-floor.js.map +1 -0
  69. package/dist/core/unplugin.d.ts +67 -0
  70. package/dist/core/unplugin.js +636 -0
  71. package/dist/core/unplugin.js.map +1 -0
  72. package/dist/index.d.ts +3 -0
  73. package/dist/index.js +3 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/lint/diagnosticRouting.d.ts +28 -0
  76. package/dist/lint/diagnosticRouting.js +74 -0
  77. package/dist/lint/diagnosticRouting.js.map +1 -0
  78. package/dist/lint/index.d.ts +49 -0
  79. package/dist/lint/index.js +96 -0
  80. package/dist/lint/index.js.map +1 -0
  81. package/dist/lint/lint-worker.d.ts +2 -0
  82. package/dist/lint/lint-worker.js +116 -0
  83. package/dist/lint/lint-worker.js.map +1 -0
  84. package/dist/lint/prefilter.d.ts +7 -0
  85. package/dist/lint/prefilter.js +31 -0
  86. package/dist/lint/prefilter.js.map +1 -0
  87. package/dist/lint/session-protocol.d.ts +38 -0
  88. package/dist/lint/session-protocol.js +11 -0
  89. package/dist/lint/session-protocol.js.map +1 -0
  90. package/dist/lint/session.d.ts +27 -0
  91. package/dist/lint/session.js +149 -0
  92. package/dist/lint/session.js.map +1 -0
  93. package/dist/lint/spawn-shim.d.ts +2 -0
  94. package/dist/lint/spawn-shim.js +23 -0
  95. package/dist/lint/spawn-shim.js.map +1 -0
  96. package/dist/next/index.d.ts +11 -0
  97. package/dist/next/index.js +17 -0
  98. package/dist/next/index.js.map +1 -0
  99. package/dist/options.d.ts +29 -0
  100. package/dist/options.js +36 -0
  101. package/dist/options.js.map +1 -0
  102. package/dist/runtypes/bun.d.ts +25 -0
  103. package/dist/runtypes/bun.js +62 -0
  104. package/dist/runtypes/bun.js.map +1 -0
  105. package/dist/runtypes/esbuild.d.ts +4 -0
  106. package/dist/runtypes/esbuild.js +4 -0
  107. package/dist/runtypes/esbuild.js.map +1 -0
  108. package/dist/runtypes/next/broker.d.ts +15 -0
  109. package/dist/runtypes/next/broker.js +316 -0
  110. package/dist/runtypes/next/broker.js.map +1 -0
  111. package/dist/runtypes/next/index.d.ts +30 -0
  112. package/dist/runtypes/next/index.js +57 -0
  113. package/dist/runtypes/next/index.js.map +1 -0
  114. package/dist/runtypes/next/loader.d.ts +13 -0
  115. package/dist/runtypes/next/loader.js +64 -0
  116. package/dist/runtypes/next/loader.js.map +1 -0
  117. package/dist/runtypes/next/wire.d.ts +17 -0
  118. package/dist/runtypes/next/wire.js +15 -0
  119. package/dist/runtypes/next/wire.js.map +1 -0
  120. package/dist/runtypes/rolldown.d.ts +4 -0
  121. package/dist/runtypes/rolldown.js +4 -0
  122. package/dist/runtypes/rolldown.js.map +1 -0
  123. package/dist/runtypes/rollup.d.ts +4 -0
  124. package/dist/runtypes/rollup.js +4 -0
  125. package/dist/runtypes/rollup.js.map +1 -0
  126. package/dist/runtypes/rspack.d.ts +4 -0
  127. package/dist/runtypes/rspack.js +4 -0
  128. package/dist/runtypes/rspack.js.map +1 -0
  129. package/dist/runtypes/vite.d.ts +4 -0
  130. package/dist/runtypes/vite.js +4 -0
  131. package/dist/runtypes/vite.js.map +1 -0
  132. package/dist/runtypes/webpack.d.ts +4 -0
  133. package/dist/runtypes/webpack.js +4 -0
  134. package/dist/runtypes/webpack.js.map +1 -0
  135. package/dist/vite/buildEntries.d.ts +2 -0
  136. package/dist/vite/buildEntries.js +28 -0
  137. package/dist/vite/buildEntries.js.map +1 -0
  138. package/dist/vite/cjsPackageJsonPlugin.d.ts +3 -0
  139. package/dist/vite/cjsPackageJsonPlugin.js +12 -0
  140. package/dist/vite/cjsPackageJsonPlugin.js.map +1 -0
  141. package/dist/vite/index.d.ts +6 -0
  142. package/dist/vite/index.js +5 -0
  143. package/dist/vite/index.js.map +1 -0
  144. package/dist/vite/middlewareMode.d.ts +10 -0
  145. package/dist/vite/middlewareMode.js +227 -0
  146. package/dist/vite/middlewareMode.js.map +1 -0
  147. package/dist/vite/mionVitePlugin.d.ts +23 -0
  148. package/dist/vite/mionVitePlugin.js +115 -0
  149. package/dist/vite/mionVitePlugin.js.map +1 -0
  150. package/dist/vite/nodeWebBridge.d.ts +5 -0
  151. package/dist/vite/nodeWebBridge.js +59 -0
  152. package/dist/vite/nodeWebBridge.js.map +1 -0
  153. package/dist/vite/sfcTransform.d.ts +8 -0
  154. package/dist/vite/sfcTransform.js +142 -0
  155. package/dist/vite/sfcTransform.js.map +1 -0
  156. package/oxlint-recommended.json +11 -0
  157. package/package.json +91 -56
  158. package/build/eslint/cjs/index.cjs +0 -41
  159. package/build/eslint/cjs/index.cjs.map +0 -1
  160. package/build/eslint/cjs/package.json +0 -1
  161. package/build/eslint/cjs/src/eslint/index.cjs +0 -13
  162. package/build/eslint/cjs/src/eslint/index.cjs.map +0 -1
  163. package/build/eslint/cjs/src/eslint/index.d.ts +0 -4
  164. package/build/eslint/cjs/src/eslint/index.d.ts.map +0 -1
  165. package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.cjs +0 -121
  166. package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.cjs.map +0 -1
  167. package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.d.ts +0 -8
  168. package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.d.ts.map +0 -1
  169. package/build/eslint/cjs/src/eslint/rules/formatTypeNames.cjs +0 -71
  170. package/build/eslint/cjs/src/eslint/rules/formatTypeNames.cjs.map +0 -1
  171. package/build/eslint/cjs/src/eslint/rules/formatTypeNames.d.ts +0 -4
  172. package/build/eslint/cjs/src/eslint/rules/formatTypeNames.d.ts.map +0 -1
  173. package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.cjs +0 -220
  174. package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.cjs.map +0 -1
  175. package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.d.ts +0 -4
  176. package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.d.ts.map +0 -1
  177. package/build/eslint/cjs/src/eslint/rules/no-type-imports.cjs +0 -251
  178. package/build/eslint/cjs/src/eslint/rules/no-type-imports.cjs.map +0 -1
  179. package/build/eslint/cjs/src/eslint/rules/no-type-imports.d.ts +0 -4
  180. package/build/eslint/cjs/src/eslint/rules/no-type-imports.d.ts.map +0 -1
  181. package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.cjs +0 -72
  182. package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.cjs.map +0 -1
  183. package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.d.ts +0 -4
  184. package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.d.ts.map +0 -1
  185. package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.cjs +0 -220
  186. package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.cjs.map +0 -1
  187. package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.d.ts +0 -4
  188. package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.d.ts.map +0 -1
  189. package/build/eslint/cjs/src/eslint/rules/no-vite-client.cjs +0 -71
  190. package/build/eslint/cjs/src/eslint/rules/no-vite-client.cjs.map +0 -1
  191. package/build/eslint/cjs/src/eslint/rules/no-vite-client.d.ts +0 -5
  192. package/build/eslint/cjs/src/eslint/rules/no-vite-client.d.ts.map +0 -1
  193. package/build/eslint/cjs/src/eslint/rules/pure-functions.cjs +0 -346
  194. package/build/eslint/cjs/src/eslint/rules/pure-functions.cjs.map +0 -1
  195. package/build/eslint/cjs/src/eslint/rules/pure-functions.d.ts +0 -5
  196. package/build/eslint/cjs/src/eslint/rules/pure-functions.d.ts.map +0 -1
  197. package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.cjs +0 -328
  198. package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.cjs.map +0 -1
  199. package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.d.ts +0 -5
  200. package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.d.ts.map +0 -1
  201. package/build/eslint/cjs/src/eslint/rules/type-formats-imports.cjs +0 -52
  202. package/build/eslint/cjs/src/eslint/rules/type-formats-imports.cjs.map +0 -1
  203. package/build/eslint/cjs/src/eslint/rules/type-formats-imports.d.ts +0 -4
  204. package/build/eslint/cjs/src/eslint/rules/type-formats-imports.d.ts.map +0 -1
  205. package/build/eslint/cjs/src/pureFns/purityRules.cjs +0 -67
  206. package/build/eslint/cjs/src/pureFns/purityRules.cjs.map +0 -1
  207. package/build/eslint/cjs/src/pureFns/purityRules.d.ts +0 -5
  208. package/build/eslint/cjs/src/pureFns/purityRules.d.ts.map +0 -1
  209. package/build/eslint/esm/index.js +0 -42
  210. package/build/eslint/esm/index.js.map +0 -1
  211. package/build/eslint/esm/src/eslint/index.d.ts +0 -4
  212. package/build/eslint/esm/src/eslint/index.d.ts.map +0 -1
  213. package/build/eslint/esm/src/eslint/index.js +0 -14
  214. package/build/eslint/esm/src/eslint/index.js.map +0 -1
  215. package/build/eslint/esm/src/eslint/rules/enforce-type-imports.d.ts +0 -8
  216. package/build/eslint/esm/src/eslint/rules/enforce-type-imports.d.ts.map +0 -1
  217. package/build/eslint/esm/src/eslint/rules/enforce-type-imports.js +0 -122
  218. package/build/eslint/esm/src/eslint/rules/enforce-type-imports.js.map +0 -1
  219. package/build/eslint/esm/src/eslint/rules/formatTypeNames.d.ts +0 -4
  220. package/build/eslint/esm/src/eslint/rules/formatTypeNames.d.ts.map +0 -1
  221. package/build/eslint/esm/src/eslint/rules/formatTypeNames.js +0 -71
  222. package/build/eslint/esm/src/eslint/rules/formatTypeNames.js.map +0 -1
  223. package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.d.ts +0 -4
  224. package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.d.ts.map +0 -1
  225. package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.js +0 -221
  226. package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.js.map +0 -1
  227. package/build/eslint/esm/src/eslint/rules/no-type-imports.d.ts +0 -4
  228. package/build/eslint/esm/src/eslint/rules/no-type-imports.d.ts.map +0 -1
  229. package/build/eslint/esm/src/eslint/rules/no-type-imports.js +0 -252
  230. package/build/eslint/esm/src/eslint/rules/no-type-imports.js.map +0 -1
  231. package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.d.ts +0 -4
  232. package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.d.ts.map +0 -1
  233. package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.js +0 -73
  234. package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.js.map +0 -1
  235. package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.d.ts +0 -4
  236. package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.d.ts.map +0 -1
  237. package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.js +0 -221
  238. package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.js.map +0 -1
  239. package/build/eslint/esm/src/eslint/rules/no-vite-client.d.ts +0 -5
  240. package/build/eslint/esm/src/eslint/rules/no-vite-client.d.ts.map +0 -1
  241. package/build/eslint/esm/src/eslint/rules/no-vite-client.js +0 -72
  242. package/build/eslint/esm/src/eslint/rules/no-vite-client.js.map +0 -1
  243. package/build/eslint/esm/src/eslint/rules/pure-functions.d.ts +0 -5
  244. package/build/eslint/esm/src/eslint/rules/pure-functions.d.ts.map +0 -1
  245. package/build/eslint/esm/src/eslint/rules/pure-functions.js +0 -347
  246. package/build/eslint/esm/src/eslint/rules/pure-functions.js.map +0 -1
  247. package/build/eslint/esm/src/eslint/rules/strong-typed-routes.d.ts +0 -5
  248. package/build/eslint/esm/src/eslint/rules/strong-typed-routes.d.ts.map +0 -1
  249. package/build/eslint/esm/src/eslint/rules/strong-typed-routes.js +0 -329
  250. package/build/eslint/esm/src/eslint/rules/strong-typed-routes.js.map +0 -1
  251. package/build/eslint/esm/src/eslint/rules/type-formats-imports.d.ts +0 -4
  252. package/build/eslint/esm/src/eslint/rules/type-formats-imports.d.ts.map +0 -1
  253. package/build/eslint/esm/src/eslint/rules/type-formats-imports.js +0 -53
  254. package/build/eslint/esm/src/eslint/rules/type-formats-imports.js.map +0 -1
  255. package/build/eslint/esm/src/pureFns/purityRules.d.ts +0 -5
  256. package/build/eslint/esm/src/pureFns/purityRules.d.ts.map +0 -1
  257. package/build/eslint/esm/src/pureFns/purityRules.js +0 -67
  258. package/build/eslint/esm/src/pureFns/purityRules.js.map +0 -1
  259. package/build/vite-plugin/cjs/index.cjs +0 -13
  260. package/build/vite-plugin/cjs/index.cjs.map +0 -1
  261. package/build/vite-plugin/cjs/package.json +0 -1
  262. package/build/vite-plugin/cjs/src/pureFns/purityRules.cjs +0 -65
  263. package/build/vite-plugin/cjs/src/pureFns/purityRules.cjs.map +0 -1
  264. package/build/vite-plugin/cjs/src/pureFns/purityRules.d.ts +0 -5
  265. package/build/vite-plugin/cjs/src/pureFns/purityRules.d.ts.map +0 -1
  266. package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.cjs +0 -271
  267. package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.cjs.map +0 -1
  268. package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.d.ts +0 -32
  269. package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.d.ts.map +0 -1
  270. package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.cjs +0 -135
  271. package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.cjs.map +0 -1
  272. package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.d.ts +0 -7
  273. package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.d.ts.map +0 -1
  274. package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.cjs +0 -15
  275. package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.cjs.map +0 -1
  276. package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.d.ts +0 -3
  277. package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.d.ts.map +0 -1
  278. package/build/vite-plugin/cjs/src/vite-plugin/constants.cjs +0 -29
  279. package/build/vite-plugin/cjs/src/vite-plugin/constants.cjs.map +0 -1
  280. package/build/vite-plugin/cjs/src/vite-plugin/constants.d.ts +0 -13
  281. package/build/vite-plugin/cjs/src/vite-plugin/constants.d.ts.map +0 -1
  282. package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.cjs +0 -628
  283. package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.cjs.map +0 -1
  284. package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.d.ts +0 -14
  285. package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.d.ts.map +0 -1
  286. package/build/vite-plugin/cjs/src/vite-plugin/index.cjs +0 -13
  287. package/build/vite-plugin/cjs/src/vite-plugin/index.cjs.map +0 -1
  288. package/build/vite-plugin/cjs/src/vite-plugin/index.d.ts +0 -6
  289. package/build/vite-plugin/cjs/src/vite-plugin/index.d.ts.map +0 -1
  290. package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.cjs +0 -511
  291. package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.cjs.map +0 -1
  292. package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.d.ts +0 -37
  293. package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.d.ts.map +0 -1
  294. package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.cjs +0 -55
  295. package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.cjs.map +0 -1
  296. package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.d.ts +0 -2
  297. package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.d.ts.map +0 -1
  298. package/build/vite-plugin/cjs/src/vite-plugin/transformers.cjs +0 -166
  299. package/build/vite-plugin/cjs/src/vite-plugin/transformers.cjs.map +0 -1
  300. package/build/vite-plugin/cjs/src/vite-plugin/transformers.d.ts +0 -11
  301. package/build/vite-plugin/cjs/src/vite-plugin/transformers.d.ts.map +0 -1
  302. package/build/vite-plugin/cjs/src/vite-plugin/types.cjs +0 -2
  303. package/build/vite-plugin/cjs/src/vite-plugin/types.cjs.map +0 -1
  304. package/build/vite-plugin/cjs/src/vite-plugin/types.d.ts +0 -60
  305. package/build/vite-plugin/cjs/src/vite-plugin/types.d.ts.map +0 -1
  306. package/build/vite-plugin/cjs/src/vite-plugin/virtual-modules.d.cjs +0 -2
  307. package/build/vite-plugin/cjs/src/vite-plugin/virtual-modules.d.cjs.map +0 -1
  308. package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.cjs +0 -69
  309. package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.cjs.map +0 -1
  310. package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.d.ts +0 -3
  311. package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.d.ts.map +0 -1
  312. package/build/vite-plugin/esm/index.js +0 -13
  313. package/build/vite-plugin/esm/index.js.map +0 -1
  314. package/build/vite-plugin/esm/src/pureFns/purityRules.d.ts +0 -5
  315. package/build/vite-plugin/esm/src/pureFns/purityRules.d.ts.map +0 -1
  316. package/build/vite-plugin/esm/src/pureFns/purityRules.js +0 -65
  317. package/build/vite-plugin/esm/src/pureFns/purityRules.js.map +0 -1
  318. package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.d.ts +0 -32
  319. package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.d.ts.map +0 -1
  320. package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.js +0 -271
  321. package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.js.map +0 -1
  322. package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.d.ts +0 -7
  323. package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.d.ts.map +0 -1
  324. package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.js +0 -134
  325. package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.js.map +0 -1
  326. package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.d.ts +0 -3
  327. package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.d.ts.map +0 -1
  328. package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.js +0 -15
  329. package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.js.map +0 -1
  330. package/build/vite-plugin/esm/src/vite-plugin/constants.d.ts +0 -13
  331. package/build/vite-plugin/esm/src/vite-plugin/constants.d.ts.map +0 -1
  332. package/build/vite-plugin/esm/src/vite-plugin/constants.js +0 -29
  333. package/build/vite-plugin/esm/src/vite-plugin/constants.js.map +0 -1
  334. package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.d.ts +0 -14
  335. package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.d.ts.map +0 -1
  336. package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.js +0 -611
  337. package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.js.map +0 -1
  338. package/build/vite-plugin/esm/src/vite-plugin/index.d.ts +0 -6
  339. package/build/vite-plugin/esm/src/vite-plugin/index.d.ts.map +0 -1
  340. package/build/vite-plugin/esm/src/vite-plugin/index.js +0 -13
  341. package/build/vite-plugin/esm/src/vite-plugin/index.js.map +0 -1
  342. package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.d.ts +0 -37
  343. package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.d.ts.map +0 -1
  344. package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.js +0 -493
  345. package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.js.map +0 -1
  346. package/build/vite-plugin/esm/src/vite-plugin/resolveModule.d.ts +0 -2
  347. package/build/vite-plugin/esm/src/vite-plugin/resolveModule.d.ts.map +0 -1
  348. package/build/vite-plugin/esm/src/vite-plugin/resolveModule.js +0 -33
  349. package/build/vite-plugin/esm/src/vite-plugin/resolveModule.js.map +0 -1
  350. package/build/vite-plugin/esm/src/vite-plugin/transformers.d.ts +0 -11
  351. package/build/vite-plugin/esm/src/vite-plugin/transformers.d.ts.map +0 -1
  352. package/build/vite-plugin/esm/src/vite-plugin/transformers.js +0 -149
  353. package/build/vite-plugin/esm/src/vite-plugin/transformers.js.map +0 -1
  354. package/build/vite-plugin/esm/src/vite-plugin/types.d.ts +0 -60
  355. package/build/vite-plugin/esm/src/vite-plugin/types.d.ts.map +0 -1
  356. package/build/vite-plugin/esm/src/vite-plugin/types.js +0 -2
  357. package/build/vite-plugin/esm/src/vite-plugin/types.js.map +0 -1
  358. package/build/vite-plugin/esm/src/vite-plugin/virtual-modules.d.js +0 -2
  359. package/build/vite-plugin/esm/src/vite-plugin/virtual-modules.d.js.map +0 -1
  360. package/build/vite-plugin/esm/src/vite-plugin/virtualModule.d.ts +0 -3
  361. package/build/vite-plugin/esm/src/vite-plugin/virtualModule.d.ts.map +0 -1
  362. package/build/vite-plugin/esm/src/vite-plugin/virtualModule.js +0 -69
  363. package/build/vite-plugin/esm/src/vite-plugin/virtualModule.js.map +0 -1
  364. package/src/eslint/index.ts +0 -53
  365. package/src/eslint/rules/enforce-type-imports.ts +0 -157
  366. package/src/eslint/rules/formatTypeNames.ts +0 -92
  367. package/src/eslint/rules/no-mixed-union-properties.ts +0 -276
  368. package/src/eslint/rules/no-type-imports.ts +0 -386
  369. package/src/eslint/rules/no-typeof-runtype.ts +0 -112
  370. package/src/eslint/rules/no-unreachable-union-types.ts +0 -357
  371. package/src/eslint/rules/no-vite-client.ts +0 -101
  372. package/src/eslint/rules/pure-functions.ts +0 -523
  373. package/src/eslint/rules/strong-typed-routes.ts +0 -537
  374. package/src/eslint/rules/type-formats-imports.ts +0 -73
  375. package/src/pureFns/purityRules.ts +0 -76
  376. package/src/vite-plugin/README.md +0 -399
  377. package/src/vite-plugin/aotCacheGenerator.ts +0 -397
  378. package/src/vite-plugin/aotDiskCache.ts +0 -193
  379. package/src/vite-plugin/cjsPackageJsonPlugin.ts +0 -21
  380. package/src/vite-plugin/constants.ts +0 -50
  381. package/src/vite-plugin/extractPureFn.ts +0 -845
  382. package/src/vite-plugin/index.ts +0 -27
  383. package/src/vite-plugin/mionVitePlugin.ts +0 -738
  384. package/src/vite-plugin/resolveModule.ts +0 -50
  385. package/src/vite-plugin/transformers.ts +0 -209
  386. package/src/vite-plugin/types.ts +0 -182
  387. package/src/vite-plugin/virtual-modules.d.ts +0 -48
  388. package/src/vite-plugin/virtualModule.ts +0 -94
@@ -0,0 +1,636 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { createUnplugin } from 'unplugin';
5
+ import { getExePath } from '@mionjs/bin-compiler';
6
+ import { DIAGNOSTIC_CATALOG } from "./go-generated/diagnosticCatalog.generated.js";
7
+ import { ResolverClient } from "./resolver-client.js";
8
+ import { applyEdits, sourceHash } from "./apply-edits.js";
9
+ import { Level } from "./protocol.js";
10
+ import { PURE_FN_ARTIFACT_DIR } from "./go-generated/runtypes-constants.generated.js";
11
+ import { assertValidClientRoutes, assertValidModuleMode } from "./option-guards.js";
12
+ import { mayHoldDrizzleSchemas, mayHoldMarkerCalls } from "./markerImports.js";
13
+ import { isDowngraded, resolveDowngradeErrors } from "./downgradeErrors.js";
14
+ import { resolveGrouped, resolveShowInfo } from "./levels.js";
15
+ import { haltError, hostHalt, hostWarn, printFindings, surfaceDiagnostics } from "./surface.js";
16
+ import { DevReporter } from "./devReporter.js";
17
+ import { createTypeDepsIndex, depKey } from "./type-deps.js";
18
+ import { warnBelowTypeScriptFloor } from "./typescript-floor.js";
19
+ export const PLUGIN_NAME = '@mionjs/devtools';
20
+ const BUNDLED_API_ID = '#bundled-api';
21
+ const bundledApiStubPath = () => {
22
+ const here = path.dirname(fileURLToPath(import.meta.url));
23
+ const compiled = path.join(here, 'bundledApiStub.js');
24
+ return fs.existsSync(compiled) ? compiled : path.join(here, 'bundledApiStub.ts');
25
+ };
26
+ export const unplugin = createUnplugin((rawOptions, meta) => {
27
+ const options = rawOptions ?? {};
28
+ const transformMode = options.transformMode ?? 'edits';
29
+ let downgrade = resolveDowngradeErrors(options.downgradeErrors);
30
+ let showInfo = resolveShowInfo(options.levels);
31
+ let grouped = resolveGrouped(options.logStyle);
32
+ const reportMode = options.pureFnReport ?? (options.onPureFnReport || options.onBatchReport ? 'callback' : false);
33
+ if (reportMode !== false && reportMode !== 'file' && reportMode !== 'callback') {
34
+ throw new Error(`[@mionjs/devtools] unknown pureFnReport ${JSON.stringify(options.pureFnReport)} — expected 'file' | 'callback' | false`);
35
+ }
36
+ const reportEnabled = reportMode !== false;
37
+ const writeReportFile = reportMode === 'file';
38
+ if (transformMode !== 'go' && transformMode !== 'edits') {
39
+ throw new Error(`[@mionjs/devtools] unknown transformMode ${JSON.stringify(options.transformMode)} — expected 'go' | 'edits'`);
40
+ }
41
+ const enrichOptions = options.enrich;
42
+ const enrichFriendly = enrichOptions?.friendly === true;
43
+ const enrichMock = enrichOptions?.mock === true;
44
+ const enrichI18n = enrichOptions?.i18n;
45
+ const enrichI18nEnabled = enrichI18n !== undefined;
46
+ const enrichLocales = enrichI18n?.locales ?? [];
47
+ const enrichSourceLocale = enrichI18n?.sourceLocale;
48
+ const anyEnrichFamily = enrichFriendly || enrichMock || enrichI18nEnabled;
49
+ const suppressEnrichHmr = enrichOptions?.suppressHmr ?? anyEnrichFamily;
50
+ let resolver = null;
51
+ let activeBuilds = 0;
52
+ let siteFiles = new Set();
53
+ let cwdAbs = '';
54
+ let genDirAbs = '';
55
+ let pureFnArtifact = {};
56
+ let viteRoot = '';
57
+ let viteCommand = '';
58
+ let viteMode = '';
59
+ let viteLogger;
60
+ const isDevServer = () => options.devServer ?? (viteCommand === 'serve' && viteMode !== 'test');
61
+ const halts = (diagnostic) => diagnostic.level === Level.Error || (diagnostic.level === Level.RuntimeError && !isDevServer());
62
+ const devPrint = (block) => viteLogger ? viteLogger.warn(block, { clear: false, timestamp: true }) : console.warn(`[@mionjs/devtools] ${block}`);
63
+ const devReporter = new DevReporter(devPrint, () => cwdAbs || process.cwd(), () => grouped);
64
+ const devRegenerateFailed = (error) => devPrint(`@mionjs/devtools: regenerating after an edit failed: ${error instanceof Error ? error.message : String(error)}`);
65
+ function ensureResolver() {
66
+ if (resolver)
67
+ return;
68
+ cwdAbs = path.resolve(options.cwd ?? (viteRoot || process.cwd()));
69
+ genDirAbs = options.genDir ? path.resolve(cwdAbs, options.genDir) : '';
70
+ assertValidModuleMode(options.moduleMode);
71
+ assertValidClientRoutes(options.clientRoutes);
72
+ const binaryPath = options.binary ?? getExePath();
73
+ resolver = new ResolverClient(binaryPath, cwdAbs, options.tsconfig ?? '', {
74
+ ...(options.emitMode ? { emitMode: options.emitMode } : {}),
75
+ ...(options.validate?.numberMode ? { numberMode: options.validate.numberMode } : {}),
76
+ ...(options.inlineMode ? { inlineMode: options.inlineMode } : {}),
77
+ ...(options.parallelScan !== undefined ? { parallelScan: options.parallelScan } : {}),
78
+ ...(options.parallelRender !== undefined ? { parallelRender: options.parallelRender } : {}),
79
+ ...(options.moduleMode ? { moduleMode: options.moduleMode } : {}),
80
+ ...(options.singleThreaded !== undefined ? { singleThreaded: options.singleThreaded } : {}),
81
+ ...(options.hashLength !== undefined ? { hashLength: options.hashLength } : {}),
82
+ ...(options.patternSampleCount !== undefined ? { patternSampleCount: options.patternSampleCount } : {}),
83
+ ...(options.patternSampleRetries !== undefined ? { patternSampleRetries: options.patternSampleRetries } : {}),
84
+ ...(options.jsonMaxBytes !== undefined ? { jsonMaxBytes: options.jsonMaxBytes } : {}),
85
+ ...(options.markers?.packages?.length ? { markerPackages: options.markers.packages } : {}),
86
+ ...(options.markers?.checkPackage === false ? { markerPackageCheck: false } : {}),
87
+ ...(options.jsRuntime ? { jsRuntime: options.jsRuntime } : {}),
88
+ ...(reportEnabled ? { pureFnReportWire: true } : {}),
89
+ ...(writeReportFile ? { pureFnReportFile: true } : {}),
90
+ ...(genDirAbs ? { genDir: genDirAbs } : {}),
91
+ ...(options.clientRoutes ? { clientRoutes: options.clientRoutes } : {}),
92
+ transformRelative: true,
93
+ ...(options.sourcesContent === false ? { omitSourcesContent: true } : {}),
94
+ ...(enrichFriendly ? { enrichFriendly: true } : {}),
95
+ ...(enrichMock ? { enrichMock: true } : {}),
96
+ ...(enrichI18nEnabled ? { enrichI18n: true } : {}),
97
+ ...(enrichLocales.length > 0 ? { enrichLocales } : {}),
98
+ ...(enrichSourceLocale ? { enrichSourceLocale } : {}),
99
+ });
100
+ if (options.detachResolver)
101
+ resolver.unref();
102
+ }
103
+ const typeDeps = createTypeDepsIndex(cwdAbs || process.cwd());
104
+ function declareTypeDeps(ctx, rel, deps) {
105
+ typeDeps.record(rel, deps);
106
+ if (!deps || deps.length === 0)
107
+ return;
108
+ for (const dep of deps) {
109
+ if (!fileExists(dep))
110
+ continue;
111
+ try {
112
+ ctx.addWatchFile?.(dep);
113
+ }
114
+ catch {
115
+ }
116
+ }
117
+ }
118
+ const fileExistsCache = new Map();
119
+ function fileExists(file) {
120
+ const cached = fileExistsCache.get(file);
121
+ if (cached !== undefined)
122
+ return cached;
123
+ let exists = false;
124
+ try {
125
+ exists = fs.existsSync(file);
126
+ }
127
+ catch {
128
+ exists = false;
129
+ }
130
+ fileExistsCache.set(file, exists);
131
+ return exists;
132
+ }
133
+ function siteKey(file) {
134
+ const rel = path.isAbsolute(file) ? path.relative(cwdAbs || process.cwd(), file) : file;
135
+ return rel.split(path.sep).join('/');
136
+ }
137
+ function surfaceNewErrors(ctx, diagnostics, activeFile) {
138
+ const cwd = cwdAbs || process.cwd();
139
+ if (isDevServer()) {
140
+ const fatal = devReporter.fatalIn(activeFile, diagnostics);
141
+ devReporter.add(diagnostics.filter((diagnostic) => diagnostic.level !== Level.Error), downgrade);
142
+ if (fatal.length > 0)
143
+ hostHalt(ctx, haltError(fatal[0], fatal.length, activeFile, cwd));
144
+ return;
145
+ }
146
+ const errors = diagnostics.filter((diagnostic) => diagnostic.level === Level.Error || diagnostic.level === Level.RuntimeError);
147
+ surfaceDiagnostics(ctx, errors, { halts, downgrade, activeFile, cwd, grouped });
148
+ }
149
+ async function transformViaGo(ctx, rel, driftCheck) {
150
+ const result = await resolver.transform([rel]);
151
+ if (result.addedRunTypes || result.addedPureFns)
152
+ await regenerate();
153
+ surfaceNewErrors(ctx, result.diagnostics ?? [], rel);
154
+ if (result.sites.length === 0 && (result.replacements?.length ?? 0) === 0)
155
+ return null;
156
+ const fileResult = result.transformed[rel];
157
+ if (!fileResult || typeof fileResult.code !== 'string')
158
+ return null;
159
+ declareTypeDeps(ctx, rel, fileResult.typeDeps);
160
+ if (driftCheck && fileResult.sourceHash !== undefined && fileResult.sourceHash !== sourceHash(driftCheck.code)) {
161
+ hostWarn(ctx, `@mionjs/devtools: transform 'go' source drift on ${rel} — the rewrite was applied to the resolver's copy, not the source another plugin handed us. ` +
162
+ `Order @mionjs/devtools first among enforce:'pre' plugins so it sees pristine source.`);
163
+ }
164
+ return { code: fileResult.code, map: (fileResult.map ?? undefined) };
165
+ }
166
+ async function transformViaEdits(ctx, rel, code) {
167
+ const incomingHash = sourceHash(code);
168
+ let result = await resolver.transform([rel], { emitEdits: true });
169
+ if (result.addedRunTypes || result.addedPureFns)
170
+ await regenerate();
171
+ surfaceNewErrors(ctx, result.diagnostics ?? [], rel);
172
+ if (result.sites.length === 0 && (result.replacements?.length ?? 0) === 0)
173
+ return null;
174
+ let fileResult = result.transformed[rel];
175
+ if (!fileResult)
176
+ return null;
177
+ if (fileResult.sourceHash !== undefined && fileResult.sourceHash !== incomingHash) {
178
+ hostWarn(ctx, `@mionjs/devtools: transform 'edits' source drift on ${rel} — re-syncing via setSources. ` +
179
+ `An enforce:'pre' plugin likely edited this file before @mionjs/devtools; order @mionjs/devtools first to avoid the extra round-trip.`);
180
+ try {
181
+ await resolver.setSources({ [rel]: code });
182
+ result = await resolver.transform([rel], { emitEdits: true });
183
+ if (result.addedRunTypes || result.addedPureFns)
184
+ await regenerate();
185
+ }
186
+ catch {
187
+ return transformViaGo(ctx, rel);
188
+ }
189
+ surfaceNewErrors(ctx, result.diagnostics ?? [], rel);
190
+ if (result.sites.length === 0 && (result.replacements?.length ?? 0) === 0)
191
+ return null;
192
+ fileResult = result.transformed[rel];
193
+ if (!fileResult || (fileResult.sourceHash !== undefined && fileResult.sourceHash !== incomingHash)) {
194
+ return transformViaGo(ctx, rel);
195
+ }
196
+ }
197
+ declareTypeDeps(ctx, rel, fileResult.typeDeps);
198
+ try {
199
+ const applied = applyEdits(rel, code, fileResult.importBlock ?? '', fileResult.edits ?? []);
200
+ return { code: applied.code, map: applied.map };
201
+ }
202
+ catch (error) {
203
+ hostWarn(ctx, `@mionjs/devtools: 'edits' apply failed on ${rel} (${String(error)}) — falling back to 'go' mode.`);
204
+ return transformViaGo(ctx, rel);
205
+ }
206
+ }
207
+ async function writeMirrorFiles(files) {
208
+ let created = 0;
209
+ let updated = 0;
210
+ for (const file of files) {
211
+ try {
212
+ const existing = await fs.promises.readFile(file.path, 'utf8').catch(() => null);
213
+ if (existing === file.content)
214
+ continue;
215
+ await fs.promises.mkdir(path.dirname(file.path), { recursive: true });
216
+ await fs.promises.writeFile(file.path, file.content);
217
+ if (file.added)
218
+ created += 1;
219
+ else
220
+ updated += 1;
221
+ }
222
+ catch {
223
+ }
224
+ }
225
+ return { created, updated };
226
+ }
227
+ async function syncEnrich(files) {
228
+ if (!resolver || !anyEnrichFamily)
229
+ return;
230
+ try {
231
+ const result = await resolver.enrich(files);
232
+ const written = await writeMirrorFiles(result.files);
233
+ if (files.length === 0 && written.created + written.updated > 0) {
234
+ console.log(`[@mionjs/devtools] enrich sync: scaffolded ${written.created} new mirror file(s), reconciled ${written.updated} — review & commit; fill the blanks before a production build (its completeness gate fails on unfilled scaffolds).`);
235
+ }
236
+ }
237
+ catch {
238
+ }
239
+ }
240
+ async function enrichDriftGate(ctx) {
241
+ if (!resolver || !anyEnrichFamily)
242
+ return;
243
+ let stale;
244
+ let incomplete;
245
+ try {
246
+ const result = await resolver.enrich([]);
247
+ stale = [];
248
+ for (const file of result.files) {
249
+ const existing = await fs.promises.readFile(file.path, 'utf8').catch(() => null);
250
+ if (existing !== file.content)
251
+ stale.push(file.path);
252
+ }
253
+ incomplete = result.diagnostics ?? [];
254
+ }
255
+ catch {
256
+ return;
257
+ }
258
+ if (stale.length === 0 && incomplete.length === 0)
259
+ return;
260
+ for (const stalePath of stale) {
261
+ hostWarn(ctx, `@mionjs/devtools: enrichment mirror out of date or missing: ${stalePath} — run \`mion enrich --update\` and commit it.`);
262
+ }
263
+ let fatal = 0;
264
+ const findings = [];
265
+ for (const diagnostic of incomplete) {
266
+ const standDown = isDowngraded(downgrade, diagnostic) ||
267
+ (DIAGNOSTIC_CATALOG[diagnostic.code]?.completeness === true && (downgrade.all || downgrade.codes.has(diagnostic.code)));
268
+ findings.push({ diagnostic, downgraded: standDown });
269
+ if (!standDown)
270
+ fatal += 1;
271
+ }
272
+ printFindings(ctx, findings, grouped, cwdAbs || process.cwd());
273
+ const staleCount = downgrade.all ? 0 : stale.length;
274
+ if (staleCount === 0 && fatal === 0)
275
+ return;
276
+ const parts = [];
277
+ if (staleCount > 0)
278
+ parts.push(`${staleCount} out of date or missing`);
279
+ if (fatal > 0)
280
+ parts.push(`${fatal} incomplete or stale (unfilled @todo / blank value / @rtOrphan carcass)`);
281
+ hostHalt(ctx, new Error(`@mionjs/devtools: enrichment is not production-ready — ${parts.join(', ')}. ` +
282
+ `Run \`mion enrich --update\`, fill the blanks, and commit. (mirrors are never written during a production build)`));
283
+ }
284
+ async function regenerate() {
285
+ const gen = await resolver.generate();
286
+ pureFnArtifact = gen.pureFnArtifact;
287
+ return gen;
288
+ }
289
+ async function writePureFnArtifact(dir) {
290
+ if (!dir)
291
+ return;
292
+ const artifactDir = path.join(dir, PURE_FN_ARTIFACT_DIR);
293
+ const files = Object.keys(pureFnArtifact);
294
+ if (files.length === 0) {
295
+ await fs.promises.rm(artifactDir, { recursive: true, force: true });
296
+ return;
297
+ }
298
+ const live = new Set();
299
+ for (const rel of files) {
300
+ const target = path.join(artifactDir, ...rel.split('/'));
301
+ live.add(target);
302
+ const content = pureFnArtifact[rel];
303
+ const existing = await fs.promises.readFile(target, 'utf8').catch(() => null);
304
+ if (existing === content)
305
+ continue;
306
+ await fs.promises.mkdir(path.dirname(target), { recursive: true });
307
+ await fs.promises.writeFile(target, content);
308
+ }
309
+ await pruneArtifactDir(artifactDir, live);
310
+ }
311
+ async function pruneArtifactDir(dir, live) {
312
+ let empty = true;
313
+ for (const entry of await fs.promises.readdir(dir, { withFileTypes: true })) {
314
+ const target = path.join(dir, entry.name);
315
+ if (entry.isDirectory()) {
316
+ if (await pruneArtifactDir(target, live))
317
+ await fs.promises.rmdir(target);
318
+ else
319
+ empty = false;
320
+ }
321
+ else if (live.has(target))
322
+ empty = false;
323
+ else
324
+ await fs.promises.rm(target, { force: true });
325
+ }
326
+ return empty;
327
+ }
328
+ function outputDirOf(output) {
329
+ const base = output.absWorkingDir ?? process.cwd();
330
+ const dir = output.dir ?? output.outdir;
331
+ if (dir)
332
+ return path.resolve(base, dir);
333
+ const file = output.file ?? output.outfile;
334
+ return file ? path.dirname(path.resolve(base, file)) : '';
335
+ }
336
+ async function writeArtifactForOutput(output) {
337
+ await writePureFnArtifact(outputDirOf(output));
338
+ }
339
+ function writeArtifactAfterEmit(compiler) {
340
+ compiler.hooks.afterEmit.tapPromise(PLUGIN_NAME, () => writePureFnArtifact(compiler.options.output.path ?? ''));
341
+ }
342
+ function reportGenerate(gen) {
343
+ options.onGenerate?.({
344
+ outDir: gen.outDir,
345
+ batchesModule: gen.batchesModule,
346
+ routerInitFiles: gen.routerInitFiles.map((file) => path.resolve(file)),
347
+ });
348
+ }
349
+ const sourceOverlay = new Map();
350
+ let overlaySeeded = false;
351
+ function overlayKey(rel) {
352
+ return rel.split(path.sep).join('/');
353
+ }
354
+ function seedOverlay() {
355
+ if (overlaySeeded)
356
+ return;
357
+ overlaySeeded = true;
358
+ const skip = new Set(['node_modules', '.git', '.next', 'dist', 'coverage']);
359
+ const walk = (dir) => {
360
+ let entries;
361
+ try {
362
+ entries = fs.readdirSync(dir, { withFileTypes: true });
363
+ }
364
+ catch {
365
+ return;
366
+ }
367
+ for (const entry of entries) {
368
+ if (skip.has(entry.name))
369
+ continue;
370
+ const full = path.join(dir, entry.name);
371
+ if (genDirAbs && full === genDirAbs)
372
+ continue;
373
+ if (entry.isDirectory()) {
374
+ walk(full);
375
+ continue;
376
+ }
377
+ if (!/\.[mc]?[jt]sx?$/.test(entry.name))
378
+ continue;
379
+ try {
380
+ sourceOverlay.set(overlayKey(path.relative(cwdAbs, full)), fs.readFileSync(full, 'utf8'));
381
+ }
382
+ catch {
383
+ }
384
+ }
385
+ };
386
+ walk(cwdAbs || process.cwd());
387
+ }
388
+ async function applyHotUpdate(ctx, updates) {
389
+ if (!resolver)
390
+ return [];
391
+ const relevant = updates.filter((update) => /\.[mc]?[jt]sx?$/.test(update.file));
392
+ if (relevant.length === 0)
393
+ return [];
394
+ const rels = relevant.map((update) => path.relative(cwdAbs || process.cwd(), update.file));
395
+ seedOverlay();
396
+ relevant.forEach((update, index) => {
397
+ if (typeof update.content === 'string')
398
+ sourceOverlay.set(overlayKey(rels[index]), update.content);
399
+ });
400
+ const sources = Object.fromEntries(sourceOverlay);
401
+ if (Object.keys(sources).length > 0) {
402
+ try {
403
+ await resolver.setSources(sources);
404
+ }
405
+ catch (error) {
406
+ const message = error instanceof Error ? error.message : String(error);
407
+ if (message.includes('config-tsconfig-not-loaded'))
408
+ console.error(`[@mionjs/devtools] HMR update skipped — ${message}`);
409
+ return [];
410
+ }
411
+ }
412
+ let result;
413
+ try {
414
+ result = await resolver.scanFiles(rels);
415
+ }
416
+ catch {
417
+ return [];
418
+ }
419
+ const withSites = new Set([
420
+ ...(result.sites ?? []).map((site) => siteKey(site.file)),
421
+ ...(result.replacements ?? []).map((replacement) => siteKey(replacement.file)),
422
+ ...(result.batchSites ?? []).map((site) => siteKey(site.file)),
423
+ ]);
424
+ for (const rel of rels) {
425
+ if (withSites.has(siteKey(rel)))
426
+ siteFiles.add(siteKey(rel));
427
+ else
428
+ siteFiles.delete(siteKey(rel));
429
+ }
430
+ if (reportEnabled && options.onPureFnReport && result.pureFnSites)
431
+ options.onPureFnReport(result.pureFnSites, 'update');
432
+ if (reportEnabled && options.onBatchReport)
433
+ options.onBatchReport(result.batchSites ?? [], 'update', relevant.map((update) => path.resolve(update.file)));
434
+ try {
435
+ const gen = await regenerate();
436
+ for (const file of gen.siteFiles)
437
+ siteFiles.add(siteKey(file));
438
+ reportGenerate(gen);
439
+ if (isDevServer())
440
+ devReporter.update(gen.diagnostics ?? [], downgrade);
441
+ }
442
+ catch (error) {
443
+ if (isDevServer()) {
444
+ devRegenerateFailed(error);
445
+ devReporter.add(result.diagnostics ?? [], downgrade);
446
+ }
447
+ }
448
+ if (anyEnrichFamily)
449
+ await syncEnrich(rels);
450
+ if (!isDevServer())
451
+ surfaceDiagnostics(ctx, result.diagnostics ?? [], {
452
+ halts: () => false,
453
+ downgrade,
454
+ showInfo,
455
+ cwd: cwdAbs || process.cwd(),
456
+ grouped,
457
+ });
458
+ const stale = staleSiteFiles(relevant.map((update) => update.file));
459
+ if (stale.length > 0 && options.onSiteFilesChanged) {
460
+ try {
461
+ options.onSiteFilesChanged(stale);
462
+ }
463
+ catch (error) {
464
+ hostWarn(ctx, `@mionjs/devtools: onSiteFilesChanged threw — ${error instanceof Error ? error.message : String(error)}`);
465
+ }
466
+ }
467
+ return stale;
468
+ }
469
+ function staleSiteFiles(changed) {
470
+ const edited = new Set(changed.map((file) => depKey(file, cwdAbs || process.cwd())));
471
+ const stale = new Set();
472
+ for (const siteFile of typeDeps.affectedSiteFiles(changed))
473
+ stale.add(siteFile);
474
+ for (const siteFile of typeDeps.unknownSiteFiles())
475
+ stale.add(siteFile);
476
+ for (const file of edited)
477
+ stale.delete(file);
478
+ return [...stale].sort();
479
+ }
480
+ function isUnderEnrichedDir(file) {
481
+ if (!genDirAbs)
482
+ return false;
483
+ const enrichedRoot = path.join(genDirAbs, 'enriched');
484
+ const rel = path.relative(enrichedRoot, path.resolve(file));
485
+ return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));
486
+ }
487
+ return {
488
+ name: PLUGIN_NAME,
489
+ rtHotUpdate: applyHotUpdate,
490
+ rtWritePureFnArtifact: writePureFnArtifact,
491
+ rtGenDir: () => genDirAbs,
492
+ enforce: 'pre',
493
+ async buildStart() {
494
+ activeBuilds += 1;
495
+ warnBelowTypeScriptFloor(options.cwd ?? process.cwd(), PLUGIN_NAME);
496
+ ensureResolver();
497
+ const gen = await regenerate();
498
+ if (gen.outDir)
499
+ genDirAbs = gen.outDir;
500
+ downgrade = resolveDowngradeErrors(options.downgradeErrors ?? gen.downgradeErrors);
501
+ showInfo = resolveShowInfo(options.levels ?? gen.levels);
502
+ grouped = resolveGrouped(options.logStyle ?? gen.logStyle);
503
+ if (reportEnabled && options.onPureFnReport)
504
+ options.onPureFnReport(gen.pureFnSites ?? [], 'build');
505
+ if (reportEnabled && options.onBatchReport)
506
+ options.onBatchReport(gen.batchSites ?? [], 'build');
507
+ siteFiles = new Set(gen.siteFiles.map(siteKey));
508
+ reportGenerate(gen);
509
+ if (isDevServer())
510
+ devReporter.update(gen.diagnostics ?? [], downgrade);
511
+ else
512
+ surfaceDiagnostics(this, gen.diagnostics ?? [], { halts, downgrade, showInfo, cwd: cwdAbs || process.cwd(), grouped });
513
+ if (anyEnrichFamily) {
514
+ if (viteCommand === 'serve')
515
+ await syncEnrich([]);
516
+ else
517
+ await enrichDriftGate(this);
518
+ }
519
+ },
520
+ buildEnd() {
521
+ if (activeBuilds > 0)
522
+ activeBuilds -= 1;
523
+ if (activeBuilds > 0)
524
+ return;
525
+ resolver?.close();
526
+ resolver = null;
527
+ },
528
+ transformInclude(id) {
529
+ return /\.[mc]?[jt]sx?$/.test(id);
530
+ },
531
+ ...(meta.framework !== 'bun' && options.clientRoutes === 'fetch'
532
+ ? {
533
+ resolveId(id) {
534
+ return id === BUNDLED_API_ID ? bundledApiStubPath() : null;
535
+ },
536
+ }
537
+ : {}),
538
+ async transform(code, id) {
539
+ if (!resolver)
540
+ return null;
541
+ if (!/\.[mc]?[jt]sx?$/.test(id))
542
+ return null;
543
+ const rel = path.relative(cwdAbs || process.cwd(), id);
544
+ const inSiteSet = siteFiles.has(siteKey(rel));
545
+ if (!inSiteSet && !mayHoldMarkerCalls(code, id, options.markers) && !mayHoldDrizzleSchemas(code))
546
+ return null;
547
+ try {
548
+ return await (transformMode === 'edits' ? transformViaEdits(this, rel, code) : transformViaGo(this, rel, { code }));
549
+ }
550
+ catch (error) {
551
+ if (!inSiteSet && error instanceof Error && error.message.includes('source file not in program'))
552
+ return null;
553
+ throw error;
554
+ }
555
+ },
556
+ rollup: { writeBundle: writeArtifactForOutput },
557
+ rolldown: { writeBundle: writeArtifactForOutput },
558
+ esbuild: {
559
+ setup(build) {
560
+ build.onEnd(() => writePureFnArtifact(outputDirOf(build.initialOptions)));
561
+ },
562
+ },
563
+ webpack: writeArtifactAfterEmit,
564
+ rspack: writeArtifactAfterEmit,
565
+ bun: {
566
+ setup(build) {
567
+ if (typeof build.onEnd === 'function')
568
+ build.onEnd(() => writePureFnArtifact(outputDirOf({ outdir: build.config?.outdir })));
569
+ },
570
+ },
571
+ vite: {
572
+ writeBundle: writeArtifactForOutput,
573
+ buildApp: {
574
+ order: 'post',
575
+ async handler(builder) {
576
+ const environments = Object.values(builder?.environments ?? {});
577
+ if (environments.length === 0 || environments.some((environment) => environment.isBuilt))
578
+ return;
579
+ activeBuilds += 1;
580
+ try {
581
+ for (const environment of environments)
582
+ await builder.build(environment);
583
+ }
584
+ finally {
585
+ activeBuilds -= 1;
586
+ if (activeBuilds <= 0) {
587
+ resolver?.close();
588
+ resolver = null;
589
+ }
590
+ }
591
+ },
592
+ },
593
+ configResolved(cfg) {
594
+ viteRoot = cfg.root;
595
+ viteLogger = cfg.logger;
596
+ if (cfg.command)
597
+ viteCommand = cfg.command;
598
+ if (cfg.mode)
599
+ viteMode = cfg.mode;
600
+ ensureResolver();
601
+ },
602
+ async handleHotUpdate(ctx) {
603
+ if (!resolver)
604
+ return;
605
+ const file = ctx.file;
606
+ if (!file)
607
+ return;
608
+ if (suppressEnrichHmr && isUnderEnrichedDir(file))
609
+ return [];
610
+ if (!/\.[mc]?[jt]sx?$/.test(file))
611
+ return;
612
+ const content = typeof ctx.read === 'function' ? await ctx.read() : undefined;
613
+ const stale = await applyHotUpdate(this, [{ file, content }]);
614
+ if (stale.length === 0)
615
+ return;
616
+ const graph = ctx.server?.moduleGraph;
617
+ if (!graph?.getModulesByFile)
618
+ return;
619
+ const modules = new Map();
620
+ for (const existing of ctx.modules ?? [])
621
+ modules.set(existing, existing);
622
+ for (const siteFile of stale) {
623
+ for (const mod of graph.getModulesByFile(siteFile) ?? []) {
624
+ graph.invalidateModule?.(mod);
625
+ modules.set(mod, mod);
626
+ }
627
+ }
628
+ return [...modules.values()];
629
+ },
630
+ },
631
+ };
632
+ });
633
+ export default unplugin;
634
+ export { formatDowngraded, formatTscDiagnostic } from "./surface.js";
635
+ export { ENTRY_MODULE_PREFIX, ENTRY_MODULE_SUFFIX, ENTRY_BINDING_PREFIX, CACHE_MODULES, } from "./go-generated/runtypes-constants.generated.js";
636
+ //# sourceMappingURL=unplugin.js.map