@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.
- package/LICENSE +1 -1
- package/README.md +34 -0
- package/dist/core/apply-edits.d.ts +8 -0
- package/dist/core/apply-edits.js +24 -0
- package/dist/core/apply-edits.js.map +1 -0
- package/dist/core/bundledApiStub.d.ts +4 -0
- package/dist/core/bundledApiStub.js +4 -0
- package/dist/core/bundledApiStub.js.map +1 -0
- package/dist/core/devReporter.d.ts +19 -0
- package/dist/core/devReporter.js +91 -0
- package/dist/core/devReporter.js.map +1 -0
- package/dist/core/diagnosticCatalog.d.ts +5 -0
- package/dist/core/diagnosticCatalog.js +18 -0
- package/dist/core/diagnosticCatalog.js.map +1 -0
- package/dist/core/downgradeErrors.d.ts +11 -0
- package/dist/core/downgradeErrors.js +34 -0
- package/dist/core/downgradeErrors.js.map +1 -0
- package/dist/core/edit-buffer.d.ts +26 -0
- package/dist/core/edit-buffer.js +209 -0
- package/dist/core/edit-buffer.js.map +1 -0
- package/dist/core/go-generated/diagnosticCatalog.generated.d.ts +9 -0
- package/dist/core/go-generated/diagnosticCatalog.generated.js +1008 -0
- package/dist/core/go-generated/diagnosticCatalog.generated.js.map +1 -0
- package/dist/core/go-generated/reflectionKind.generated.d.ts +60 -0
- package/dist/core/go-generated/reflectionKind.generated.js +60 -0
- package/dist/core/go-generated/reflectionKind.generated.js.map +1 -0
- package/dist/core/go-generated/runtypes-constants.generated.d.ts +197 -0
- package/dist/core/go-generated/runtypes-constants.generated.js +110 -0
- package/dist/core/go-generated/runtypes-constants.generated.js.map +1 -0
- package/dist/core/go-generated/tsconfig-plugin-keys.generated.d.ts +3 -0
- package/dist/core/go-generated/tsconfig-plugin-keys.generated.js +23 -0
- package/dist/core/go-generated/tsconfig-plugin-keys.generated.js.map +1 -0
- package/dist/core/groupedLog.d.ts +6 -0
- package/dist/core/groupedLog.js +163 -0
- package/dist/core/groupedLog.js.map +1 -0
- package/dist/core/levels.d.ts +6 -0
- package/dist/core/levels.js +22 -0
- package/dist/core/levels.js.map +1 -0
- package/dist/core/markerImports.d.ts +8 -0
- package/dist/core/markerImports.js +149 -0
- package/dist/core/markerImports.js.map +1 -0
- package/dist/core/option-guards.d.ts +4 -0
- package/dist/core/option-guards.js +12 -0
- package/dist/core/option-guards.js.map +1 -0
- package/dist/core/plugin-option-keys.d.ts +3 -0
- package/dist/core/plugin-option-keys.js +35 -0
- package/dist/core/plugin-option-keys.js.map +1 -0
- package/dist/core/protocol.d.ts +244 -0
- package/dist/core/protocol.js +23 -0
- package/dist/core/protocol.js.map +1 -0
- package/dist/core/resolver-client.d.ts +160 -0
- package/dist/core/resolver-client.js +354 -0
- package/dist/core/resolver-client.js.map +1 -0
- package/dist/core/scan-batcher.d.ts +6 -0
- package/dist/core/scan-batcher.js +36 -0
- package/dist/core/scan-batcher.js.map +1 -0
- package/dist/core/surface.d.ts +23 -0
- package/dist/core/surface.js +77 -0
- package/dist/core/surface.js.map +1 -0
- package/dist/core/type-deps.d.ts +11 -0
- package/dist/core/type-deps.js +72 -0
- package/dist/core/type-deps.js.map +1 -0
- package/dist/core/types.d.ts +13 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/typescript-floor.d.ts +5 -0
- package/dist/core/typescript-floor.js +33 -0
- package/dist/core/typescript-floor.js.map +1 -0
- package/dist/core/unplugin.d.ts +67 -0
- package/dist/core/unplugin.js +636 -0
- package/dist/core/unplugin.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/diagnosticRouting.d.ts +28 -0
- package/dist/lint/diagnosticRouting.js +74 -0
- package/dist/lint/diagnosticRouting.js.map +1 -0
- package/dist/lint/index.d.ts +49 -0
- package/dist/lint/index.js +96 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/lint-worker.d.ts +2 -0
- package/dist/lint/lint-worker.js +116 -0
- package/dist/lint/lint-worker.js.map +1 -0
- package/dist/lint/prefilter.d.ts +7 -0
- package/dist/lint/prefilter.js +31 -0
- package/dist/lint/prefilter.js.map +1 -0
- package/dist/lint/session-protocol.d.ts +38 -0
- package/dist/lint/session-protocol.js +11 -0
- package/dist/lint/session-protocol.js.map +1 -0
- package/dist/lint/session.d.ts +27 -0
- package/dist/lint/session.js +149 -0
- package/dist/lint/session.js.map +1 -0
- package/dist/lint/spawn-shim.d.ts +2 -0
- package/dist/lint/spawn-shim.js +23 -0
- package/dist/lint/spawn-shim.js.map +1 -0
- package/dist/next/index.d.ts +11 -0
- package/dist/next/index.js +17 -0
- package/dist/next/index.js.map +1 -0
- package/dist/options.d.ts +29 -0
- package/dist/options.js +36 -0
- package/dist/options.js.map +1 -0
- package/dist/runtypes/bun.d.ts +25 -0
- package/dist/runtypes/bun.js +62 -0
- package/dist/runtypes/bun.js.map +1 -0
- package/dist/runtypes/esbuild.d.ts +4 -0
- package/dist/runtypes/esbuild.js +4 -0
- package/dist/runtypes/esbuild.js.map +1 -0
- package/dist/runtypes/next/broker.d.ts +15 -0
- package/dist/runtypes/next/broker.js +316 -0
- package/dist/runtypes/next/broker.js.map +1 -0
- package/dist/runtypes/next/index.d.ts +30 -0
- package/dist/runtypes/next/index.js +57 -0
- package/dist/runtypes/next/index.js.map +1 -0
- package/dist/runtypes/next/loader.d.ts +13 -0
- package/dist/runtypes/next/loader.js +64 -0
- package/dist/runtypes/next/loader.js.map +1 -0
- package/dist/runtypes/next/wire.d.ts +17 -0
- package/dist/runtypes/next/wire.js +15 -0
- package/dist/runtypes/next/wire.js.map +1 -0
- package/dist/runtypes/rolldown.d.ts +4 -0
- package/dist/runtypes/rolldown.js +4 -0
- package/dist/runtypes/rolldown.js.map +1 -0
- package/dist/runtypes/rollup.d.ts +4 -0
- package/dist/runtypes/rollup.js +4 -0
- package/dist/runtypes/rollup.js.map +1 -0
- package/dist/runtypes/rspack.d.ts +4 -0
- package/dist/runtypes/rspack.js +4 -0
- package/dist/runtypes/rspack.js.map +1 -0
- package/dist/runtypes/vite.d.ts +4 -0
- package/dist/runtypes/vite.js +4 -0
- package/dist/runtypes/vite.js.map +1 -0
- package/dist/runtypes/webpack.d.ts +4 -0
- package/dist/runtypes/webpack.js +4 -0
- package/dist/runtypes/webpack.js.map +1 -0
- package/dist/vite/buildEntries.d.ts +2 -0
- package/dist/vite/buildEntries.js +28 -0
- package/dist/vite/buildEntries.js.map +1 -0
- package/dist/vite/cjsPackageJsonPlugin.d.ts +3 -0
- package/dist/vite/cjsPackageJsonPlugin.js +12 -0
- package/dist/vite/cjsPackageJsonPlugin.js.map +1 -0
- package/dist/vite/index.d.ts +6 -0
- package/dist/vite/index.js +5 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/middlewareMode.d.ts +10 -0
- package/dist/vite/middlewareMode.js +227 -0
- package/dist/vite/middlewareMode.js.map +1 -0
- package/dist/vite/mionVitePlugin.d.ts +23 -0
- package/dist/vite/mionVitePlugin.js +115 -0
- package/dist/vite/mionVitePlugin.js.map +1 -0
- package/dist/vite/nodeWebBridge.d.ts +5 -0
- package/dist/vite/nodeWebBridge.js +59 -0
- package/dist/vite/nodeWebBridge.js.map +1 -0
- package/dist/vite/sfcTransform.d.ts +8 -0
- package/dist/vite/sfcTransform.js +142 -0
- package/dist/vite/sfcTransform.js.map +1 -0
- package/oxlint-recommended.json +11 -0
- package/package.json +91 -56
- package/build/eslint/cjs/index.cjs +0 -41
- package/build/eslint/cjs/index.cjs.map +0 -1
- package/build/eslint/cjs/package.json +0 -1
- package/build/eslint/cjs/src/eslint/index.cjs +0 -13
- package/build/eslint/cjs/src/eslint/index.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/index.d.ts +0 -4
- package/build/eslint/cjs/src/eslint/index.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.cjs +0 -121
- package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.d.ts +0 -8
- package/build/eslint/cjs/src/eslint/rules/enforce-type-imports.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/formatTypeNames.cjs +0 -71
- package/build/eslint/cjs/src/eslint/rules/formatTypeNames.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/formatTypeNames.d.ts +0 -4
- package/build/eslint/cjs/src/eslint/rules/formatTypeNames.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.cjs +0 -220
- package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.d.ts +0 -4
- package/build/eslint/cjs/src/eslint/rules/no-mixed-union-properties.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-type-imports.cjs +0 -251
- package/build/eslint/cjs/src/eslint/rules/no-type-imports.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-type-imports.d.ts +0 -4
- package/build/eslint/cjs/src/eslint/rules/no-type-imports.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.cjs +0 -72
- package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.d.ts +0 -4
- package/build/eslint/cjs/src/eslint/rules/no-typeof-runtype.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.cjs +0 -220
- package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.d.ts +0 -4
- package/build/eslint/cjs/src/eslint/rules/no-unreachable-union-types.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-vite-client.cjs +0 -71
- package/build/eslint/cjs/src/eslint/rules/no-vite-client.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/no-vite-client.d.ts +0 -5
- package/build/eslint/cjs/src/eslint/rules/no-vite-client.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/pure-functions.cjs +0 -346
- package/build/eslint/cjs/src/eslint/rules/pure-functions.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/pure-functions.d.ts +0 -5
- package/build/eslint/cjs/src/eslint/rules/pure-functions.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.cjs +0 -328
- package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.d.ts +0 -5
- package/build/eslint/cjs/src/eslint/rules/strong-typed-routes.d.ts.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/type-formats-imports.cjs +0 -52
- package/build/eslint/cjs/src/eslint/rules/type-formats-imports.cjs.map +0 -1
- package/build/eslint/cjs/src/eslint/rules/type-formats-imports.d.ts +0 -4
- package/build/eslint/cjs/src/eslint/rules/type-formats-imports.d.ts.map +0 -1
- package/build/eslint/cjs/src/pureFns/purityRules.cjs +0 -67
- package/build/eslint/cjs/src/pureFns/purityRules.cjs.map +0 -1
- package/build/eslint/cjs/src/pureFns/purityRules.d.ts +0 -5
- package/build/eslint/cjs/src/pureFns/purityRules.d.ts.map +0 -1
- package/build/eslint/esm/index.js +0 -42
- package/build/eslint/esm/index.js.map +0 -1
- package/build/eslint/esm/src/eslint/index.d.ts +0 -4
- package/build/eslint/esm/src/eslint/index.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/index.js +0 -14
- package/build/eslint/esm/src/eslint/index.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/enforce-type-imports.d.ts +0 -8
- package/build/eslint/esm/src/eslint/rules/enforce-type-imports.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/enforce-type-imports.js +0 -122
- package/build/eslint/esm/src/eslint/rules/enforce-type-imports.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/formatTypeNames.d.ts +0 -4
- package/build/eslint/esm/src/eslint/rules/formatTypeNames.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/formatTypeNames.js +0 -71
- package/build/eslint/esm/src/eslint/rules/formatTypeNames.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.d.ts +0 -4
- package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.js +0 -221
- package/build/eslint/esm/src/eslint/rules/no-mixed-union-properties.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-type-imports.d.ts +0 -4
- package/build/eslint/esm/src/eslint/rules/no-type-imports.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-type-imports.js +0 -252
- package/build/eslint/esm/src/eslint/rules/no-type-imports.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.d.ts +0 -4
- package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.js +0 -73
- package/build/eslint/esm/src/eslint/rules/no-typeof-runtype.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.d.ts +0 -4
- package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.js +0 -221
- package/build/eslint/esm/src/eslint/rules/no-unreachable-union-types.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-vite-client.d.ts +0 -5
- package/build/eslint/esm/src/eslint/rules/no-vite-client.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/no-vite-client.js +0 -72
- package/build/eslint/esm/src/eslint/rules/no-vite-client.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/pure-functions.d.ts +0 -5
- package/build/eslint/esm/src/eslint/rules/pure-functions.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/pure-functions.js +0 -347
- package/build/eslint/esm/src/eslint/rules/pure-functions.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/strong-typed-routes.d.ts +0 -5
- package/build/eslint/esm/src/eslint/rules/strong-typed-routes.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/strong-typed-routes.js +0 -329
- package/build/eslint/esm/src/eslint/rules/strong-typed-routes.js.map +0 -1
- package/build/eslint/esm/src/eslint/rules/type-formats-imports.d.ts +0 -4
- package/build/eslint/esm/src/eslint/rules/type-formats-imports.d.ts.map +0 -1
- package/build/eslint/esm/src/eslint/rules/type-formats-imports.js +0 -53
- package/build/eslint/esm/src/eslint/rules/type-formats-imports.js.map +0 -1
- package/build/eslint/esm/src/pureFns/purityRules.d.ts +0 -5
- package/build/eslint/esm/src/pureFns/purityRules.d.ts.map +0 -1
- package/build/eslint/esm/src/pureFns/purityRules.js +0 -67
- package/build/eslint/esm/src/pureFns/purityRules.js.map +0 -1
- package/build/vite-plugin/cjs/index.cjs +0 -13
- package/build/vite-plugin/cjs/index.cjs.map +0 -1
- package/build/vite-plugin/cjs/package.json +0 -1
- package/build/vite-plugin/cjs/src/pureFns/purityRules.cjs +0 -65
- package/build/vite-plugin/cjs/src/pureFns/purityRules.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/pureFns/purityRules.d.ts +0 -5
- package/build/vite-plugin/cjs/src/pureFns/purityRules.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.cjs +0 -271
- package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.d.ts +0 -32
- package/build/vite-plugin/cjs/src/vite-plugin/aotCacheGenerator.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.cjs +0 -135
- package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.d.ts +0 -7
- package/build/vite-plugin/cjs/src/vite-plugin/aotDiskCache.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.cjs +0 -15
- package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.d.ts +0 -3
- package/build/vite-plugin/cjs/src/vite-plugin/cjsPackageJsonPlugin.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/constants.cjs +0 -29
- package/build/vite-plugin/cjs/src/vite-plugin/constants.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/constants.d.ts +0 -13
- package/build/vite-plugin/cjs/src/vite-plugin/constants.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.cjs +0 -628
- package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.d.ts +0 -14
- package/build/vite-plugin/cjs/src/vite-plugin/extractPureFn.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/index.cjs +0 -13
- package/build/vite-plugin/cjs/src/vite-plugin/index.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/index.d.ts +0 -6
- package/build/vite-plugin/cjs/src/vite-plugin/index.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.cjs +0 -511
- package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.d.ts +0 -37
- package/build/vite-plugin/cjs/src/vite-plugin/mionVitePlugin.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.cjs +0 -55
- package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.d.ts +0 -2
- package/build/vite-plugin/cjs/src/vite-plugin/resolveModule.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/transformers.cjs +0 -166
- package/build/vite-plugin/cjs/src/vite-plugin/transformers.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/transformers.d.ts +0 -11
- package/build/vite-plugin/cjs/src/vite-plugin/transformers.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/types.cjs +0 -2
- package/build/vite-plugin/cjs/src/vite-plugin/types.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/types.d.ts +0 -60
- package/build/vite-plugin/cjs/src/vite-plugin/types.d.ts.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/virtual-modules.d.cjs +0 -2
- package/build/vite-plugin/cjs/src/vite-plugin/virtual-modules.d.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.cjs +0 -69
- package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.cjs.map +0 -1
- package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.d.ts +0 -3
- package/build/vite-plugin/cjs/src/vite-plugin/virtualModule.d.ts.map +0 -1
- package/build/vite-plugin/esm/index.js +0 -13
- package/build/vite-plugin/esm/index.js.map +0 -1
- package/build/vite-plugin/esm/src/pureFns/purityRules.d.ts +0 -5
- package/build/vite-plugin/esm/src/pureFns/purityRules.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/pureFns/purityRules.js +0 -65
- package/build/vite-plugin/esm/src/pureFns/purityRules.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.d.ts +0 -32
- package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.js +0 -271
- package/build/vite-plugin/esm/src/vite-plugin/aotCacheGenerator.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.d.ts +0 -7
- package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.js +0 -134
- package/build/vite-plugin/esm/src/vite-plugin/aotDiskCache.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.d.ts +0 -3
- package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.js +0 -15
- package/build/vite-plugin/esm/src/vite-plugin/cjsPackageJsonPlugin.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/constants.d.ts +0 -13
- package/build/vite-plugin/esm/src/vite-plugin/constants.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/constants.js +0 -29
- package/build/vite-plugin/esm/src/vite-plugin/constants.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.d.ts +0 -14
- package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.js +0 -611
- package/build/vite-plugin/esm/src/vite-plugin/extractPureFn.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/index.d.ts +0 -6
- package/build/vite-plugin/esm/src/vite-plugin/index.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/index.js +0 -13
- package/build/vite-plugin/esm/src/vite-plugin/index.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.d.ts +0 -37
- package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.js +0 -493
- package/build/vite-plugin/esm/src/vite-plugin/mionVitePlugin.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/resolveModule.d.ts +0 -2
- package/build/vite-plugin/esm/src/vite-plugin/resolveModule.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/resolveModule.js +0 -33
- package/build/vite-plugin/esm/src/vite-plugin/resolveModule.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/transformers.d.ts +0 -11
- package/build/vite-plugin/esm/src/vite-plugin/transformers.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/transformers.js +0 -149
- package/build/vite-plugin/esm/src/vite-plugin/transformers.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/types.d.ts +0 -60
- package/build/vite-plugin/esm/src/vite-plugin/types.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/types.js +0 -2
- package/build/vite-plugin/esm/src/vite-plugin/types.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/virtual-modules.d.js +0 -2
- package/build/vite-plugin/esm/src/vite-plugin/virtual-modules.d.js.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/virtualModule.d.ts +0 -3
- package/build/vite-plugin/esm/src/vite-plugin/virtualModule.d.ts.map +0 -1
- package/build/vite-plugin/esm/src/vite-plugin/virtualModule.js +0 -69
- package/build/vite-plugin/esm/src/vite-plugin/virtualModule.js.map +0 -1
- package/src/eslint/index.ts +0 -53
- package/src/eslint/rules/enforce-type-imports.ts +0 -157
- package/src/eslint/rules/formatTypeNames.ts +0 -92
- package/src/eslint/rules/no-mixed-union-properties.ts +0 -276
- package/src/eslint/rules/no-type-imports.ts +0 -386
- package/src/eslint/rules/no-typeof-runtype.ts +0 -112
- package/src/eslint/rules/no-unreachable-union-types.ts +0 -357
- package/src/eslint/rules/no-vite-client.ts +0 -101
- package/src/eslint/rules/pure-functions.ts +0 -523
- package/src/eslint/rules/strong-typed-routes.ts +0 -537
- package/src/eslint/rules/type-formats-imports.ts +0 -73
- package/src/pureFns/purityRules.ts +0 -76
- package/src/vite-plugin/README.md +0 -399
- package/src/vite-plugin/aotCacheGenerator.ts +0 -397
- package/src/vite-plugin/aotDiskCache.ts +0 -193
- package/src/vite-plugin/cjsPackageJsonPlugin.ts +0 -21
- package/src/vite-plugin/constants.ts +0 -50
- package/src/vite-plugin/extractPureFn.ts +0 -845
- package/src/vite-plugin/index.ts +0 -27
- package/src/vite-plugin/mionVitePlugin.ts +0 -738
- package/src/vite-plugin/resolveModule.ts +0 -50
- package/src/vite-plugin/transformers.ts +0 -209
- package/src/vite-plugin/types.ts +0 -182
- package/src/vite-plugin/virtual-modules.d.ts +0 -48
- 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
|