@mionjs/devtools 0.8.10 → 0.13.2

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
@@ -1,399 +0,0 @@
1
- # Mion Vite Plugin
2
-
3
- The mion Vite plugin (`mionVitePlugin`) is a unified plugin that handles three core features:
4
-
5
- 1. **Pure Server Functions** - Extract, validate, and inject pure functions from client source
6
- 2. **RunTypes (Deepkit)** - TypeScript type reflection via deepkit compiler transformers
7
- 3. **AOT Caches** - Ahead-of-time compilation of JIT type functions and route metadata
8
-
9
- ```ts
10
- mionVitePlugin({
11
- runTypes: {include: ['**/*.ts']},
12
- server: {
13
- startScript: './src/init.ts',
14
- runMode: 'buildOnly',
15
- },
16
- });
17
- ```
18
-
19
- ---
20
-
21
- ## Plugin Lifecycle
22
-
23
- ```
24
- 1. config() → Strip reflection module aliases if excludeReflection enabled
25
- 2. configResolved() → Resolve cache directory, detect SSR mode
26
- 3. buildStart() → Generate AOT caches (buildOnly/childProcess mode)
27
- configureServer() → Generate AOT caches (middleware mode), set up dev proxy middleware
28
- 4. resolveId() → Resolve virtual module IDs (add \0 prefix)
29
- 5. load() → Return cache data or generated virtual module code
30
- 6. transform() → Extract pure functions + run deepkit transformers
31
- 7. buildEnd() → Log injected pure function count
32
- 8. closeBundle() → Kill persistent child process (childProcess mode cleanup)
33
- 9. handleHotUpdate() → Re-scan pure functions and regenerate AOT on file changes
34
- ```
35
-
36
- ---
37
-
38
- ## Pure Server Functions
39
-
40
- ### What They Are
41
-
42
- Pure server functions are functions defined in client code that get executed on the server. They are registered via `pureServerFn()`, `mapFrom()`, or `registerPureFnFactory()`.
43
-
44
- Key constraints (enforced at build time):
45
-
46
- - **No closures** - only local scope, parameters, and allowed globals
47
- - **No side effects** - no network calls, file I/O, or external state
48
- - **No async** - no `await`, `yield`, or dynamic `import()`
49
- - **Serializable** - can be sent between client and server as code strings
50
-
51
- ### Three APIs
52
-
53
- ```ts
54
- // Simple pure function
55
- pureServerFn((x) => x * 2);
56
-
57
- // Pure function with definition object
58
- pureServerFn({
59
- pureFn: (x) => x * 2,
60
- namespace: 'myNamespace',
61
- fnName: 'double',
62
- });
63
-
64
- // Factory function - receives jitUtils, returns a pure function
65
- registerPureFnFactory('ns', 'fnId', (jitUtils) => (x) => jitUtils.validate(x));
66
-
67
- // SubRequest mapper - pure function that transforms server responses
68
- mapFrom(source, (data) => data.items);
69
- ```
70
-
71
- ### Extraction & Injection Flow
72
-
73
- **Build time extraction** (`extractPureFn.ts`):
74
-
75
- 1. Scans `clientSrcPath` recursively for `.ts`, `.tsx`, `.vue` files
76
- 2. Parses each file's AST to find `pureServerFn()`, `mapFrom()`, `registerPureFnFactory()` calls
77
- 3. Validates purity by walking the function body AST (rejects closures, forbidden APIs, etc.)
78
- 4. Computes a `bodyHash` = SHA-256 of `namespace + normalizedBody` (base64url, 14 chars)
79
-
80
- **Transform injection** (`transformers.ts`):
81
-
82
- 1. During `transform()`, a TypeScript custom transformer injects the computed `bodyHash` as an additional argument:
83
- - `pureServerFn(fn)` → `pureServerFn(fn, "abc1234567890")`
84
- - `mapFrom(src, fn)` → `mapFrom(src, fn, "abc1234567890")`
85
- - `registerPureFnFactory(ns, id, factory)` → `registerPureFnFactory(ns, id, factory, parsedFnObj)`
86
- 2. Injection is idempotent — already-injected calls are skipped (important for HMR)
87
-
88
- **Virtual module** (`virtualModule.ts`):
89
-
90
- - Generates `virtual:mion-server-pure-fns` containing a registry of all extracted functions
91
- - Each entry includes: namespace, fnName, paramNames, code (body string), bodyHash, dependencies, and an executable `fn` property
92
-
93
- ---
94
-
95
- ## Transform Pipeline
96
-
97
- The plugin runs two sets of TypeScript transformers in a single `ts.transpileModule` call:
98
-
99
- ```
100
- ts.transpileModule(code, {
101
- before: [
102
- pureFnTransformer, // 1st: inject bodyHash into pure function calls
103
- deepkit.beforeTransformers, // 2nd: emit type metadata (__Ω symbols)
104
- ],
105
- after: [
106
- deepkit.afterTransformers, // 3rd: declaration transform + require→import conversion
107
- ]
108
- })
109
- ```
110
-
111
- **Order matters**: Pure function extraction must see a clean TypeScript AST before deepkit adds type metadata.
112
-
113
- ### The require→import Transformer
114
-
115
- Deepkit's type compiler defaults to CJS output in `transpileModule` context, emitting `var {__ΩFoo} = require("./bar.ts")`. The `requireToImport` transformer converts these back to ESM `import` statements so Rollup/Vite can properly resolve module specifiers.
116
-
117
- ### Vue SFC Support
118
-
119
- For `.vue` files:
120
-
121
- 1. The plugin skips bare `.vue` imports (raw SFC template)
122
- 2. Waits for the Vue plugin to extract the `<script>` block
123
- 3. Processes the virtual module (e.g., `Component.vue?vue&type=script&lang=ts`)
124
- 4. Script content is extracted via regex + state machine that handles `</script>` inside string literals
125
-
126
- ---
127
-
128
- ## AOT Cache Generation
129
-
130
- AOT pre-compiles JIT type functions and route metadata at build time, so the client bundle doesn't need `@deepkit/type` or `@mionjs/run-types` at runtime.
131
-
132
- ### Three Cache Types
133
-
134
- | Virtual Module | Content |
135
- | ------------------------------- | --------------------------------------------------------------- |
136
- | `virtual:mion-aot/jit-fns` | Compiled type check/validation functions |
137
- | `virtual:mion-aot/pure-fns` | Pre-extracted pure functions |
138
- | `virtual:mion-aot/router-cache` | Route metadata (method signatures, validators) |
139
- | `virtual:mion-aot/caches` | Combined module that imports all three + calls `addAOTCaches()` |
140
-
141
- ### How Caches Are Generated
142
-
143
- The plugin needs to run the server's init script to extract type information and route metadata. This is controlled by the `server` configuration, which determines both the AOT generation strategy and the server process lifecycle.
144
-
145
- ---
146
-
147
- ## Server Modes
148
-
149
- The `server.runMode` option controls how the plugin spawns and manages the server process:
150
-
151
- ### `buildOnly` Mode
152
-
153
- Spawns a child process to generate AOT caches, then kills it. Use this when you only need AOT caches and don't need a running server during development (e.g., production builds).
154
-
155
- ```
156
- ┌─────────────────────┐ IPC (process.send) ┌─────────────────────┐
157
- │ PARENT PROCESS │ ◄──────────────────────────────── │ CHILD PROCESS │
158
- │ (Vite build) │ │ (vite-node) │
159
- │ │ │ │
160
- │ 1. buildStart() │ fork(vite-node, startScript, │ │
161
- │ 2. spawn child ─────┼──► {env: MION_COMPILE=buildOnly})─►│ 3. run startScript │
162
- │ │ │ 4. initMionRouter() │
163
- │ │ │ 5. emitAOTCaches() │
164
- │ 7. store aotData │ ◄── {type: 'mion-aot-caches', ◄── │ 6. process.send() │
165
- │ 8. write disk cache │ jitFnsCode, pureFnsCode, │ 7. process exits │
166
- │ │ routerCacheCode} │ │
167
- └─────────────────────┘ └─────────────────────┘
168
- ```
169
-
170
- **Flow:**
171
-
172
- 1. `buildStart()` calls `getOrGenerateAOTCaches()`
173
- 2. Spawns a child process via `fork(vite-node, [startScript], { env: { MION_COMPILE: 'buildOnly' } })`
174
- 3. Child runs the start script through `vite-node` (with full Vite transform pipeline)
175
- 4. The router detects `MION_COMPILE=buildOnly` and initializes routes without starting the HTTP server
176
- 5. `emitAOTCaches()` serializes all caches and sends them via `process.send()`
177
- 6. Parent receives the IPC message, stores the cache data, child process is killed
178
- 7. Disk cache is written (keyed by SHA-256 of source files + options + devtools version)
179
-
180
- ### `childProcess` Mode
181
-
182
- Spawns a child process to generate AOT caches via IPC, then **keeps the server running**. The server signals readiness by calling `setPlatformConfig()` (called automatically by platform adapters), which sends a second IPC message.
183
-
184
- ```
185
- ┌─────────────────────┐ IPC (process.send) ┌─────────────────────┐
186
- │ PARENT PROCESS │ ◄──────────────────────────────── │ CHILD PROCESS │
187
- │ (Vite build) │ │ (vite-node) │
188
- │ │ │ │
189
- │ 1. buildStart() │ fork(vite-node, startScript, │ │
190
- │ 2. spawn child ─────┼──► {env: MION_COMPILE=childProcess})│ 3. run startScript │
191
- │ │ │ 4. initMionRouter() │
192
- │ │ │ 5. emitAOTCaches() │
193
- │ 7. store aotData │ ◄── {type: 'mion-aot-caches', ◄── │ 6. process.send() │
194
- │ 8. write disk cache │ jitFnsCode, pureFnsCode, │ 7. server.listen() │
195
- │ │ routerCacheCode} │ 8. setPlatformConfig│
196
- │ 9. serverReady ✓ │ ◄── {type:'mion-platform-ready',◄──│ (called by │
197
- │ │ routerConfig, platformConfig} │ platform adapter│
198
- │ closeBundle() │ │ 9. serving requests │
199
- │ └─ kill child ─────┼──► SIGTERM ──────────────────────►│ exits │
200
- └─────────────────────┘ └─────────────────────┘
201
- ```
202
-
203
- **Flow:**
204
-
205
- 1. `buildStart()` calls `getOrGenerateAOTCaches()`
206
- 2. Spawns a child process via `fork(vite-node, [startScript], { env: { MION_COMPILE: 'childProcess' } })`
207
- 3. Child runs the start script — the router initializes and emits AOT caches
208
- 4. Platform adapters detect `MION_COMPILE=childProcess` and proceed with `server.listen()`
209
- 5. Parent receives caches via IPC, stores data, writes disk cache
210
- 6. Platform adapter calls `setPlatformConfig()` after the server starts listening, sending a second IPC message with router config and platform config
211
- 7. Parent receives `mion-platform-ready` IPC — `serverReady` promise resolves
212
- 8. On `closeBundle()`, the persistent child is killed (SIGTERM → SIGKILL after 5s)
213
-
214
- ### `middleware` Mode
215
-
216
- Loads the server in the same Vite process using `ssrLoadModule`. Used with frameworks like Nuxt that run Vite in `middlewareMode`.
217
-
218
- ```
219
- ┌──────────────────────────────────────────────────┐
220
- │ SAME PROCESS (Vite dev server) │
221
- │ │
222
- │ 1. configureServer() detects middleware mode │
223
- │ 2. Set MION_COMPILE=middleware │
224
- │ 3. ssrLoadModule(startScript) │
225
- │ 4. Router initializes, getSerializedCaches() │
226
- │ 5. Store aotData (no disk cache in SSR mode) │
227
- │ 6. Load @mionjs/router + @mionjs/platform-node │
228
- │ 7. Set up dev proxy middleware for mion routes │
229
- │ 8. serverReady ✓ │
230
- └──────────────────────────────────────────────────┘
231
- ```
232
-
233
- **Flow:**
234
-
235
- 1. `configureServer()` detects `middleware` mode
236
- 2. Temporarily sets `MION_COMPILE=middleware`
237
- 3. Calls `ssrLoadModule(startScript)` to load the init script in the same process
238
- 4. Retrieves caches directly from the router via `getSerializedCaches()`
239
- 5. Loads `@mionjs/router` and `@mionjs/platform-node` modules
240
- 6. Sets up a middleware proxy that routes matching requests to mion's `httpRequestHandler`
241
- 7. `serverReady` promise resolves
242
-
243
- **Key differences from childProcess/buildOnly:**
244
-
245
- - No child process overhead
246
- - No disk cache (HMR regenerates on each change)
247
- - Uses the framework's module loader (Nuxt, etc.) instead of vite-node
248
- - Includes a dev proxy middleware for routing API requests
249
- - Risk of side effects since everything runs in the same process
250
-
251
- ### The MION_COMPILE Environment Variable
252
-
253
- This is the coordination mechanism between the plugin and the server init script:
254
-
255
- | Value | Set by | Meaning |
256
- | -------------- | ----------------- | ---------------------------------------------- |
257
- | `buildOnly` | buildOnly mode | Generate caches then exit (skip server.listen) |
258
- | `childProcess` | childProcess mode | Generate caches and keep server running |
259
- | `middleware` | middleware mode | In-process SSR, skip server.listen |
260
- | _(unset)_ | Normal run | Standard server startup, no AOT generation |
261
-
262
- ```ts
263
- // Server init script (user code)
264
- const router = initMionRouter({
265
- /* routes */
266
- });
267
-
268
- if (process.env.MION_COMPILE !== 'buildOnly') {
269
- await startNodeServer(router); // Skip server.listen() during onlyAOT
270
- }
271
- ```
272
-
273
- Platform adapters detect `MION_COMPILE` automatically — in `childProcess` mode they proceed with `server.listen()`, in `buildOnly` and `middleware` modes they skip it.
274
-
275
- ### Server Ready Promise
276
-
277
- The plugin exports a `serverReady` promise that resolves when the server is fully initialized:
278
-
279
- - **buildOnly mode**: resolves immediately after AOT caches are generated (no server to wait for)
280
- - **childProcess mode**: resolves after the server's platform adapter calls `setPlatformConfig()` (requires `waitTimeout` to be set)
281
- - **middleware mode**: resolves after SSR initialization completes
282
-
283
- ```ts
284
- // vitest globalSetup — wait for the mion server before running tests
285
- import {serverReady} from '@mionjs/devtools/vite-plugin';
286
- export async function setup() {
287
- await serverReady;
288
- }
289
- ```
290
-
291
- The promise uses `globalThis` with `Symbol.for('mion.serverReady')` so it works across vitest's separate module contexts (vitest.config.ts and globalSetup.ts).
292
-
293
- **Disk caching (buildOnly/childProcess only):** Subsequent builds skip the child process if sources haven't changed. Cache stored at `node_modules/.vite/mion-aot-cache.json` (configurable). Force regeneration with `MION_AOT_FORCE=true`.
294
-
295
- ---
296
-
297
- ## Data Flow: Init Script → Vite → Client Bundle
298
-
299
- ```
300
- Server Init Script Vite Plugin Client Bundle
301
- ───────────────── ─────────── ─────────────
302
- buildStart/configureServer
303
- │
304
- initMionRouter() ◄────── IPC/SSR ────────┤
305
- │ │
306
- ├─ compile types │
307
- ├─ build route table │
308
- ├─ collect JIT functions │
309
- │ │
310
- emitAOTCaches() ──── IPC/SSR ────────► aotData
311
- │
312
- resolveId/load virtual modules
313
- │
314
- ├─► virtual:mion-aot/jit-fns ──────► import { jitFnsCache }
315
- ├─► virtual:mion-aot/pure-fns ─────► import { pureFnsCache }
316
- ├─► virtual:mion-aot/router-cache ─► import { routerCache }
317
- └─► virtual:mion-aot/caches ───────► combined import
318
- (auto-registers caches)
319
- ```
320
-
321
- When `excludeReflection: true`, the plugin also stubs out `@mionjs/run-types`, `@deepkit/type`, and `@deepkit/core` with empty exports — since all type info is pre-computed in the AOT caches, these libraries are not needed in the client bundle.
322
-
323
- ---
324
-
325
- ## Virtual Modules Reference
326
-
327
- | Module ID | Description |
328
- | ------------------------------- | ---------------------------------------------- |
329
- | `virtual:mion-server-pure-fns` | Registry of all extracted pure functions |
330
- | `virtual:mion-aot/jit-fns` | Pre-compiled JIT type functions |
331
- | `virtual:mion-aot/pure-fns` | Pre-extracted pure functions (from AOT) |
332
- | `virtual:mion-aot/router-cache` | Route metadata and method signatures |
333
- | `virtual:mion-aot/caches` | Combined module (imports all + auto-registers) |
334
-
335
- Custom prefix: Set `aotCaches.customVirtualModuleId` to use a different prefix (e.g., `'client-mion-aot'` → `virtual:client-mion-aot/jit-fns`).
336
-
337
- ---
338
-
339
- ## Configuration Reference
340
-
341
- ### MionPluginOptions
342
-
343
- ```ts
344
- interface MionPluginOptions {
345
- serverPureFunctions?: ServerPureFunctionsOptions;
346
- runTypes?: DeepkitTypeOptions;
347
- aotCaches?: AOTCacheOptions;
348
- server?: MionServerConfig;
349
- }
350
- ```
351
-
352
- ### MionServerConfig
353
-
354
- | Option | Type | Default | Description |
355
- | ------------- | ----------------------------------------------- | -------- | --------------------------------------------------------------------- |
356
- | `startScript` | `string` | required | Path to server init script that calls `initMionRouter()` |
357
- | `viteConfig` | `string` | — | Path to server's vite.config.ts (auto-discovered if omitted) |
358
- | `runMode` | `'buildOnly' \| 'childProcess' \| 'middleware'` | required | Server run mode strategy |
359
- | `waitTimeout` | `number` | `30000` | Max wait time in ms for `setPlatformConfig()` IPC (childProcess mode) |
360
- | `env` | `Record<string, string>` | — | Extra environment variables for the child process |
361
- | `args` | `string[]` | — | Extra arguments appended after the start script |
362
-
363
- ### ServerPureFunctionsOptions
364
-
365
- | Option | Type | Default | Description |
366
- | --------------- | ---------- | ----------------------------------------------------- | ---------------------------------------------------------- |
367
- | `clientSrcPath` | `string` | required | Directory to scan for pure functions |
368
- | `include` | `string[]` | `['**/*.ts', '**/*.tsx', '**/*.vue']` | Glob patterns to include |
369
- | `exclude` | `string[]` | `['../node_modules/**', '**/.dist/**', '**/dist/**']` | Glob patterns to exclude |
370
- | `noViteClient` | `boolean` | `false` | If true, requires explicit names in `pureServerFn()` calls |
371
-
372
- ### DeepkitTypeOptions
373
-
374
- | Option | Type | Default | Description |
375
- | ----------------- | -------------------- | ------------------------- | ------------------------------ |
376
- | `include` | `string \| string[]` | `['**/*.tsx', '**/*.ts']` | Files to apply type reflection |
377
- | `exclude` | `string \| string[]` | `'node_modules/**'` | Files to skip |
378
- | `tsConfig` | `string` | auto-detected | Path to tsconfig.json |
379
- | `reflection` | `ReflectionMode` | `'default'` | Reflection mode |
380
- | `compilerOptions` | `CompilerOptions` | — | Override tsconfig options |
381
-
382
- ### AOTCacheOptions
383
-
384
- | Option | Type | Default | Description |
385
- | ----------------------- | ------------------- | ------- | ------------------------------------- |
386
- | `excludedFns` | `string[]` | — | JIT function IDs to exclude |
387
- | `excludedPureFns` | `string[]` | — | Pure function names to exclude |
388
- | `cache` | `boolean \| string` | `true` | Enable disk cache / custom cache dir |
389
- | `excludeReflection` | `boolean` | — | Stub out reflection modules in bundle |
390
- | `customVirtualModuleId` | `string` | — | Custom virtual module prefix |
391
-
392
- ---
393
-
394
- ## HMR Behavior
395
-
396
- - **Client source changes**: Re-scans pure functions, invalidates `virtual:mion-server-pure-fns`
397
- - **Server source changes**: Kills existing persistent child (if childProcess mode), regenerates AOT caches (childProcess/middleware), invalidates all `virtual:mion-aot/*` modules
398
- - In childProcess mode, HMR re-spawns the child process and waits for `setPlatformConfig()` IPC
399
- - Pure function injection is idempotent — already-injected calls are skipped during HMR re-transforms