@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,50 +0,0 @@
1
- /* ########
2
- * 2026 mion
3
- * Author: Ma-jerez
4
- * License: MIT
5
- * The software is provided "as is", without warranty of any kind.
6
- * ######## */
7
-
8
- /**
9
- * Inlined from @mionjs/core/src/utils.ts to avoid the vite plugin depending on core.
10
- * Keep in sync with the original implementation.
11
- */
12
-
13
- import {resolve} from 'path/posix';
14
- import {fileURLToPath} from 'url';
15
-
16
- /** Resolves a module path in both CJS and ESM environments. */
17
- export async function resolveModule(moduleName: string, callerDir?: string): Promise<string> {
18
- const resolvedPath = moduleName.startsWith('.') && callerDir ? resolve(callerDir, moduleName) : moduleName;
19
- const metaResolve = getImportMetaResolve();
20
- if (metaResolve) {
21
- const resolved = await metaResolve(resolvedPath);
22
- if (resolved) return resolved.startsWith('file:') ? fileURLToPath(resolved) : resolved;
23
- }
24
-
25
- try {
26
- if (typeof require !== 'undefined' && typeof require.resolve === 'function') return require.resolve(resolvedPath);
27
- } catch {
28
- // Ignore and fall back to createRequire
29
- }
30
-
31
- try {
32
- const {createRequire} = await import('module');
33
- const basePath = callerDir ? resolve(callerDir, 'noop.js') : resolve(process.cwd(), 'noop.js');
34
- const requireFn = createRequire(basePath);
35
- return requireFn.resolve(resolvedPath);
36
- } catch (err) {
37
- throw new Error(`Failed to resolve module "${moduleName}": ${err instanceof Error ? err.message : String(err)}`);
38
- }
39
- }
40
-
41
- function getImportMetaResolve(): ((specifier: string) => string | Promise<string> | undefined) | undefined {
42
- try {
43
- // eslint-disable-next-line no-new-func
44
- return new Function('specifier', 'return import.meta.resolve?.(specifier);') as (
45
- specifier: string
46
- ) => string | Promise<string> | undefined;
47
- } catch {
48
- return undefined;
49
- }
50
- }
@@ -1,209 +0,0 @@
1
- /* ########
2
- * 2026 mion
3
- * Author: Ma-jerez
4
- * License: MIT
5
- * The software is provided "as is", without warranty of any kind.
6
- * ######## */
7
-
8
- // based on https://github.com/marcj/deepkit/blob/e7da3b48c50115d6e59e233eb9f018513d4d68ce/packages/vite/src/plugin.ts
9
-
10
- import {createFilter} from '@rollup/pluginutils';
11
- import * as ts from 'typescript';
12
- import {transformer, declarationTransformer} from '@deepkit/type-compiler';
13
- import {DeepkitTypeOptions, ExtractedPureFn} from './types.ts';
14
- import {extractPureFnsFromSource} from './extractPureFn.ts';
15
-
16
- // ── Deepkit ─────────────────────────────────────────────────────────
17
-
18
- /** Deepkit configuration components for integration into the unified transform pipeline */
19
- export interface DeepkitConfig {
20
- filter: (fileName: string) => boolean;
21
- compilerOptions: ts.CompilerOptions;
22
- beforeTransformers: ts.CustomTransformerFactory[];
23
- afterTransformers: ts.CustomTransformerFactory[];
24
- }
25
-
26
- /**
27
- * Post-deepkit transformer that converts require() calls back to import declarations.
28
- * Deepkit's getModuleType() reads tsconfig's module:NodeNext and falls back to 'cjs'
29
- * because ts.transpileModule doesn't set sourceFile.impliedNodeFormat. This causes
30
- * deepkit to emit `var {__ΩFoo} = require("./bar.ts")` instead of ESM imports.
31
- * This transformer converts those back to `import {__ΩFoo} from "./bar.ts"` so Rollup
32
- * can properly resolve and rewrite the module specifiers.
33
- */
34
- const requireToImport: ts.CustomTransformerFactory = (context: ts.TransformationContext): ts.CustomTransformer => ({
35
- transformSourceFile(sf: ts.SourceFile): ts.SourceFile {
36
- const newStatements: ts.Statement[] = [];
37
- let changed = false;
38
- for (const stmt of sf.statements) {
39
- const converted = tryConvertRequireToImport(context.factory, stmt);
40
- if (converted) {
41
- newStatements.push(converted);
42
- changed = true;
43
- } else {
44
- newStatements.push(stmt);
45
- }
46
- }
47
- return changed ? context.factory.updateSourceFile(sf, newStatements) : sf;
48
- },
49
- transformBundle(b: ts.Bundle): ts.Bundle {
50
- return b;
51
- },
52
- });
53
-
54
- /**
55
- * Converts CJS require patterns to ESM import declarations:
56
- * - `var {a, b} = require("./path")` → `import {a, b} from "./path"`
57
- * - `var mod = require("./path")` → `import mod from "./path"`
58
- */
59
- function tryConvertRequireToImport(f: ts.NodeFactory, stmt: ts.Statement): ts.ImportDeclaration | undefined {
60
- if (!ts.isVariableStatement(stmt)) return undefined;
61
- const decls = stmt.declarationList.declarations;
62
- if (decls.length !== 1) return undefined;
63
- const decl = decls[0];
64
- if (!decl.initializer || !ts.isCallExpression(decl.initializer)) return undefined;
65
- const callee = decl.initializer.expression;
66
- if (!ts.isIdentifier(callee) || callee.text !== 'require') return undefined;
67
- if (decl.initializer.arguments.length !== 1) return undefined;
68
- const specArg = decl.initializer.arguments[0];
69
- if (!ts.isStringLiteral(specArg)) return undefined;
70
-
71
- // var {a, b} = require("./path") → import {a, b} from "./path"
72
- if (ts.isObjectBindingPattern(decl.name)) {
73
- const specifiers = decl.name.elements.map((el) =>
74
- f.createImportSpecifier(false, undefined, f.createIdentifier((el.name as ts.Identifier).text))
75
- );
76
- return f.createImportDeclaration(
77
- undefined,
78
- f.createImportClause(false, undefined, f.createNamedImports(specifiers)),
79
- f.createStringLiteral(specArg.text)
80
- );
81
- }
82
-
83
- // var mod = require("./path") → import mod from "./path"
84
- if (ts.isIdentifier(decl.name)) {
85
- return f.createImportDeclaration(
86
- undefined,
87
- f.createImportClause(false, f.createIdentifier(decl.name.text), undefined),
88
- f.createStringLiteral(specArg.text)
89
- );
90
- }
91
-
92
- return undefined;
93
- }
94
-
95
- /** Creates deepkit config components that can be integrated into a unified ts.transpileModule call */
96
- export function createDeepkitConfig(options: DeepkitTypeOptions = {}): DeepkitConfig {
97
- const filter = createFilter(options.include ?? ['**/*.tsx', '**/*.ts'], options.exclude ?? 'node_modules/**');
98
- return {
99
- filter: (fileName: string) => filter(fileName),
100
- compilerOptions: {
101
- target: ts.ScriptTarget.ESNext,
102
- module: ts.ModuleKind.ESNext,
103
- sourceMap: true,
104
- configFilePath: options.tsConfig || process.cwd() + '/tsconfig.json',
105
- ...(options.compilerOptions || {}),
106
- },
107
- beforeTransformers: [transformer],
108
- afterTransformers: [declarationTransformer, requireToImport],
109
- };
110
- }
111
-
112
- // ── Pure function transformer ───────────────────────────────────────
113
-
114
- /**
115
- * Creates a TypeScript CustomTransformerFactory that injects build-time data into pure function calls.
116
- * For pureServerFn(def): injects bodyHash as 2nd argument.
117
- * For registerPureFnFactory(ns, id, fn): injects ParsedFactoryFn as 4th argument.
118
- *
119
- * Pre-extracts data using existing extractPureFnsFromSource to ensure hash consistency
120
- * with the virtual module cache (same whole-file esbuild strip + JS AST path).
121
- */
122
- export function createPureFnTransformerFactory(
123
- originalSource: string,
124
- filePath: string,
125
- collector?: ExtractedPureFn[],
126
- noViteClient = false
127
- ): ts.CustomTransformerFactory {
128
- const hasPureServerFn = originalSource.includes('pureServerFn');
129
- const hasFactory = originalSource.includes('registerPureFnFactory');
130
- const hasMapFrom = originalSource.includes('mapFrom');
131
-
132
- const pureServerFns = hasPureServerFn ? extractPureFnsFromSource(originalSource, filePath, 'pureServerFn', noViteClient) : [];
133
- const factoryFns = hasFactory ? extractPureFnsFromSource(originalSource, filePath, 'registerPureFnFactory') : [];
134
- const mapFromFns = hasMapFrom ? extractPureFnsFromSource(originalSource, filePath, 'mapFrom', noViteClient) : [];
135
-
136
- return (context: ts.TransformationContext): ts.CustomTransformer => {
137
- let pureIdx = 0;
138
- let factoryIdx = 0;
139
- let mapFromIdx = 0;
140
-
141
- function visitor(node: ts.Node): ts.Node {
142
- if (ts.isCallExpression(node)) {
143
- const callee = node.expression;
144
- if (ts.isIdentifier(callee)) {
145
- if (callee.text === 'pureServerFn' && pureIdx < pureServerFns.length) {
146
- if (node.arguments.length >= 2) {
147
- pureIdx++;
148
- return ts.visitEachChild(node, visitor, context);
149
- }
150
- const data = pureServerFns[pureIdx++];
151
- collector?.push(data);
152
- return context.factory.updateCallExpression(node, node.expression, node.typeArguments, [
153
- ...node.arguments,
154
- context.factory.createStringLiteral(data.bodyHash),
155
- ]);
156
- }
157
- if (callee.text === 'registerPureFnFactory' && factoryIdx < factoryFns.length) {
158
- if (node.arguments.length >= 4) {
159
- factoryIdx++;
160
- return ts.visitEachChild(node, visitor, context);
161
- }
162
- const data = factoryFns[factoryIdx++];
163
- collector?.push(data);
164
- return context.factory.updateCallExpression(node, node.expression, node.typeArguments, [
165
- ...node.arguments,
166
- createParsedFactoryFnNode(context.factory, data),
167
- ]);
168
- }
169
- if (callee.text === 'mapFrom' && mapFromIdx < mapFromFns.length) {
170
- // mapFrom(source, mapper) -> mapFrom(source, mapper, 'bodyHash')
171
- if (node.arguments.length >= 3) {
172
- mapFromIdx++;
173
- return ts.visitEachChild(node, visitor, context);
174
- }
175
- const data = mapFromFns[mapFromIdx++];
176
- collector?.push(data);
177
- return context.factory.updateCallExpression(node, node.expression, node.typeArguments, [
178
- ...node.arguments,
179
- context.factory.createStringLiteral(data.bodyHash),
180
- ]);
181
- }
182
- }
183
- }
184
- return ts.visitEachChild(node, visitor, context);
185
- }
186
-
187
- return {
188
- transformSourceFile(sourceFile: ts.SourceFile): ts.SourceFile {
189
- if (pureServerFns.length === 0 && factoryFns.length === 0 && mapFromFns.length === 0) return sourceFile;
190
- return ts.visitNode(sourceFile, visitor) as ts.SourceFile;
191
- },
192
- transformBundle(bundle: ts.Bundle): ts.Bundle {
193
- return bundle;
194
- },
195
- };
196
- };
197
- }
198
-
199
- /** Creates an AST node for {bodyHash: '...', paramNames: [...], code: '...'} */
200
- function createParsedFactoryFnNode(factory: ts.NodeFactory, data: ExtractedPureFn): ts.ObjectLiteralExpression {
201
- return factory.createObjectLiteralExpression([
202
- factory.createPropertyAssignment('bodyHash', factory.createStringLiteral(data.bodyHash)),
203
- factory.createPropertyAssignment(
204
- 'paramNames',
205
- factory.createArrayLiteralExpression(data.paramNames.map((n) => factory.createStringLiteral(n)))
206
- ),
207
- factory.createPropertyAssignment('code', factory.createStringLiteral(data.fnBody)),
208
- ]);
209
- }
@@ -1,182 +0,0 @@
1
- import {CompilerOptions} from 'typescript';
2
-
3
- /** AOT cache generation options for the Vite plugin */
4
- export interface AOTCacheOptions {
5
- /** Excluded JIT function IDs */
6
- excludedFns?: string[];
7
-
8
- /** Excluded pure function names */
9
- excludedPureFns?: string[];
10
-
11
- /**
12
- * Disk caching for AOT compilation results.
13
- * Caches the compiled output so subsequent builds skip the expensive vite-node compile step
14
- * when server source hasn't changed.
15
- * - true (default): Cache in Vite's cacheDir (node_modules/.vite/)
16
- * - string: Custom cache directory path
17
- * - false: Disable disk caching
18
- *
19
- * Set env MION_AOT_FORCE=true to force regeneration regardless of this setting.
20
- */
21
- cache?: boolean | string;
22
-
23
- /**
24
- * Stub out @mionjs/run-types and @deepkit/* modules during the bundle build.
25
- * When AOT caches are pre-compiled, these modules are not needed at runtime
26
- * and can be replaced with empty stubs to reduce bundle size.
27
- * Useful for edge runtime builds where bundle size matters.
28
- *
29
- * Only applies to the parent build process — the AOT child process (MION_COMPILE=buildOnly)
30
- * always uses the real modules to generate caches.
31
- */
32
- excludeReflection?: boolean;
33
-
34
- /**
35
- * Register additional virtual modules with a custom prefix, resolving to the same AOT cache data.
36
- * Useful for creating virtual modules (e.g. `virtual:client-mion-aot/*`) that imports from
37
- * these prefixed virtual modules in source, while Vite/Rollup resolves and bundles them
38
- * into the build output automatically.
39
- *
40
- * The plugin resolves `virtual:{id}/jit-fns`, `virtual:{id}/pure-fns`,
41
- * `virtual:{id}/router-cache`, and `virtual:{id}/caches`.
42
- *
43
- * Example: `'client-mion-aot'` → `virtual:client-mion-aot/jit-fns`
44
- */
45
- customVirtualModuleId?: string;
46
-
47
- /**
48
- * When true, strips unused metadata properties (code, args, defaultParamValues, fnID, paramNames)
49
- * from AOT caches to reduce client bundle size. The closure functions (createJitFn/createPureFn)
50
- * are still serialized and sufficient for runtime restoration.
51
- */
52
- isClient?: boolean;
53
- }
54
-
55
- /** Server configuration for the mion Vite plugin */
56
- export interface MionServerConfig {
57
- /**
58
- * Path to the server start script that initializes the router.
59
- *
60
- * The plugin will run this script to generate AOT caches for ALL routes
61
- * (internal mion routes + your custom routes).
62
- *
63
- * If server is not configured, the plugin will automatically use the built-in defaultRoutes.ts
64
- * from @mionjs/router to generate caches for internal mion routes only.
65
- * Your custom routes will be fetched at runtime via fetchRemoteMethodsMetadata().
66
- */
67
- startScript: string;
68
-
69
- /**
70
- * Path to the server's vite.config.ts file.
71
- * Used by vite-node to run the start script with proper transformations.
72
- * If not provided, vite-node will auto-discover the config from the
73
- * startScript's directory.
74
- */
75
- viteConfig?: string;
76
-
77
- /**
78
- * Server run mode:
79
- * - 'buildOnly': spawn child process, get AOT caches, kill process (default)
80
- * - 'childProcess': spawn child process, get AOT caches via IPC, keep server running
81
- * - 'middleware': load in same Vite process as middleware (for Nuxt-like frameworks)
82
- */
83
- runMode: 'buildOnly' | 'childProcess' | 'middleware';
84
-
85
- /** Max wait time in ms for the server's platform adapter to call setPlatformConfig() (default 30000).
86
- * Only applies in childProcess mode. When set, the plugin waits for a
87
- * mion-platform-ready IPC message before resolving serverReady. */
88
- waitTimeout?: number;
89
-
90
- /** Extra environment variables passed to the child process (buildOnly/childProcess modes). */
91
- env?: Record<string, string>;
92
-
93
- /** Extra arguments appended after the start script in the child process (buildOnly/childProcess modes). */
94
- args?: string[];
95
- }
96
-
97
- /** Serializable registry entry for a single pure function */
98
- export interface PureServerFnRegistryEntry {
99
- readonly namespace: string;
100
- /** The function name (required for lookup) */
101
- readonly fnName: string;
102
- readonly paramNames: string[];
103
- readonly code: string;
104
- /** Hash of the function body - used for version validation */
105
- readonly bodyHash: string;
106
- readonly dependencies: Set<string>;
107
- /** Indicates if this is a factory function that receives jitUtils */
108
- readonly isFactory: boolean;
109
- }
110
-
111
- /** The serializable registry shape written to disk (keyed by namespace::fnName) */
112
- export interface PureServerFnRegistry {
113
- readonly version: string;
114
- /** Entries keyed by namespace::fnName */
115
- readonly entries: Record<string, PureServerFnRegistryEntry>;
116
- }
117
-
118
- /** Plugin options for the server-side Vite plugin */
119
- export interface ServerPureFunctionsOptions {
120
- /** Path to the client package source directory containing pureServerFn() calls */
121
- clientSrcPath: string;
122
- /** Glob patterns for files to scan within clientSrcPath. Defaults to ['**\/*.ts', '**\/*.tsx', '**\/*.vue'] */
123
- include?: string[];
124
- /** Glob patterns for files to exclude from scanning */
125
- exclude?: string[];
126
- /**
127
- * When true, requires all pureServerFn() and mapFrom() calls to have an explicit name/identifier
128
- * as a string literal argument. This enables non-Vite clients (e.g. Next.js with Turbopack)
129
- * to use these functions without build-time transforms.
130
- */
131
- noViteClient?: boolean;
132
- }
133
-
134
- /** Extracted function data from AST analysis */
135
- export interface ExtractedPureFn {
136
- /** The namespace this pure function belongs to */
137
- namespace: string;
138
- /** The function name (required for lookup via namespace::fnName) */
139
- fnName: string;
140
- paramNames: string[];
141
- /** The normalized function body code */
142
- fnBody: string;
143
- /** Hash of the function body - used for version validation */
144
- bodyHash: string;
145
- /** Dependencies in format "namespace::fnName" */
146
- dependencies: Set<string>;
147
- sourceFile: string;
148
- /** Indicates if this is a factory function that receives jitUtils */
149
- isFactory: boolean;
150
- }
151
-
152
- /** Pre-parsed factory function data injected at build time by the mion vite plugin (duplicated from core, can't share types) */
153
- export interface ParsedFactoryFn {
154
- /** Hash of the function body */
155
- readonly bodyHash: string;
156
- /** The names of the factory function parameters */
157
- readonly paramNames: string[];
158
- /** The normalized function body code */
159
- readonly code: string;
160
- }
161
-
162
- /** Reflection mode for deepkit type compiler */
163
- export type ReflectionMode = 'default' | 'explicit' | 'never';
164
-
165
- /** Options for deepkit type transformation */
166
- export interface DeepkitTypeOptions {
167
- /** Glob patterns to include. Defaults to ['**\/*.tsx', '**\/*.ts'] */
168
- include?: string | string[];
169
-
170
- /** Glob patterns to exclude. Defaults to 'node_modules/**' */
171
- exclude?: string | string[];
172
- /** Path to tsconfig.json. If not provided, will search from project root. */
173
- tsConfig?: string;
174
- /**
175
- * Override reflection mode. If not set, uses tsconfig's reflection option.
176
- * Set to 'default' to enable reflection for all files regardless of tsconfig.
177
- * Useful for simple projects without explicit tsconfig reflection configuration.
178
- */
179
- reflection?: ReflectionMode;
180
- /** Additional compiler options to merge with tsconfig.json */
181
- compilerOptions?: CompilerOptions;
182
- }
@@ -1,48 +0,0 @@
1
- /* ########
2
- * 2026 mion
3
- * Author: Ma-jerez
4
- * License: MIT
5
- * The software is provided "as is", without warranty of any kind.
6
- * ######## */
7
-
8
- /** Exports JIT functions cache data. */
9
- declare module 'virtual:mion-aot/jit-fns' {
10
- export const jitFnsCache: Record<string, any>;
11
- }
12
-
13
- /** Exports pure functions cache data. */
14
- declare module 'virtual:mion-aot/pure-fns' {
15
- export const pureFnsCache: Record<string, Record<string, any>>;
16
- }
17
-
18
- /** Exports router methods cache data. */
19
- declare module 'virtual:mion-aot/router-cache' {
20
- export const routerCache: Record<string, any>;
21
- }
22
-
23
- /**
24
- * Combined AOT caches module.
25
- * Imports all 3 cache modules, registers them via addAOTCaches() and addRoutesToCache(),
26
- * and re-exports the cache data for manual re-registration (e.g. after resetClientCaches in tests).
27
- */
28
- declare module 'virtual:mion-aot/caches' {
29
- export const jitFnsCache: Record<string, any>;
30
- export const pureFnsCache: Record<string, Record<string, any>>;
31
- export const routerCache: Record<string, any>;
32
- }
33
-
34
- /** Virtual module for server pure functions extracted from client source at build time. */
35
- declare module 'virtual:mion-server-pure-fns' {
36
- interface ServerPureFnEntry {
37
- namespace: string;
38
- fnName: string;
39
- paramNames: string[];
40
- code: string;
41
- bodyHash: string;
42
- pureFnDependencies?: string[];
43
- isFactory: boolean;
44
- fn: ((...args: any[]) => any) | undefined;
45
- createFn?: (jitUtils: any) => (...args: any[]) => any;
46
- }
47
- export const serverPureFnsCache: Record<string, Record<string, ServerPureFnEntry>>;
48
- }
@@ -1,94 +0,0 @@
1
- /* ########
2
- * 2026 mion
3
- * Author: Ma-jerez
4
- * License: MIT
5
- * The software is provided "as is", without warranty of any kind.
6
- * ######## */
7
-
8
- import {ExtractedPureFn} from './types.ts';
9
-
10
- /** Generates the virtual module source code from extracted server pure functions */
11
- export function generateServerPureFnsVirtualModule(extractedFns: ExtractedPureFn[]): string {
12
- // Group functions by namespace
13
- const byNamespace = new Map<string, ExtractedPureFn[]>();
14
- for (const fn of extractedFns) {
15
- const list = byNamespace.get(fn.namespace) || [];
16
- list.push(fn);
17
- byNamespace.set(fn.namespace, list);
18
- }
19
-
20
- // Generate nested namespace entries
21
- const namespaceEntries: string[] = [];
22
- for (const [namespace, fns] of byNamespace) {
23
- const fnEntries = fns.map((fn) => generateEntryCode(fn));
24
- namespaceEntries.push(` ${JSON.stringify(namespace)}: {\n${fnEntries.join(',\n')}\n }`);
25
- }
26
-
27
- return `// Auto-generated by @mionjs/server-pure-functions
28
- // Do not edit manually
29
-
30
- export const serverPureFnsCache = {
31
- ${namespaceEntries.join(',\n')}
32
- };
33
- `;
34
- }
35
-
36
- /** Generates the code for a single server pure function entry */
37
- function generateEntryCode(fn: ExtractedPureFn): string {
38
- const paramsArray = fn.paramNames.map((p) => JSON.stringify(p)).join(', ');
39
-
40
- // Convert dependencies from "namespace::fnName" to just "fnName" (same-namespace resolution)
41
- const depsArray = [...fn.dependencies].map((d) => {
42
- const parts = d.split('::');
43
- return JSON.stringify(parts.length === 2 ? parts[1] : d);
44
- });
45
-
46
- // Generate the function code
47
- const fnCode = fn.isFactory ? generateFactoryFn(fn) : generateDirectFn(fn);
48
-
49
- const depsLine = depsArray.length > 0 ? `\n pureFnDependencies: [${depsArray.join(', ')}],` : '';
50
-
51
- return ` ${JSON.stringify(fn.fnName)}: {
52
- namespace: ${JSON.stringify(fn.namespace)},
53
- fnName: ${JSON.stringify(fn.fnName)},
54
- paramNames: [${paramsArray}],
55
- code: ${JSON.stringify(fn.fnBody)},
56
- bodyHash: ${JSON.stringify(fn.bodyHash)},${depsLine}
57
- isFactory: ${fn.isFactory},
58
- ${fnCode}
59
- }`;
60
- }
61
-
62
- /** Generates a direct fn property for a regular pure function */
63
- function generateDirectFn(fn: ExtractedPureFn): string {
64
- const params = fn.paramNames.join(', ');
65
- const safeName = makeSafeFunctionName(fn.fnName);
66
-
67
- return ` fn: function ${safeName}(${params}) {
68
- ${fn.fnBody}
69
- },`;
70
- }
71
-
72
- /** Generates createFn + fn: undefined for a factory function */
73
- function generateFactoryFn(fn: ExtractedPureFn): string {
74
- const params = fn.paramNames.join(', ');
75
- const safeName = makeSafeFunctionName(fn.fnName);
76
-
77
- return ` fn: undefined,
78
- createFn: function ${safeName}(jitUtils) {
79
- return (function factory(${params}) {
80
- ${fn.fnBody}
81
- })(jitUtils);
82
- },`;
83
- }
84
-
85
- /** Makes a function name safe for use as a JavaScript identifier */
86
- function makeSafeFunctionName(name: string): string {
87
- // Replace any non-alphanumeric characters with underscores
88
- const safe = name.replace(/[^a-zA-Z0-9_$]/g, '_');
89
- // Ensure it starts with a letter or underscore
90
- if (/^[0-9]/.test(safe)) {
91
- return '_' + safe;
92
- }
93
- return safe || 'anonymous';
94
- }