vite-plugin-solid 2.8.3 → 2.9.1

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.
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var core = require('@babel/core');
4
- var ts = require('@babel/preset-typescript');
3
+ var babel = require('@babel/core');
5
4
  var solid = require('babel-preset-solid');
6
5
  var fs = require('fs');
7
6
  var mergeAnything = require('merge-anything');
@@ -11,6 +10,25 @@ var vite = require('vite');
11
10
  var vitefu = require('vitefu');
12
11
 
13
12
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
13
+ function _interopNamespaceDefault(e) {
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var babel__namespace = /*#__PURE__*/_interopNamespaceDefault(babel);
31
+
14
32
  const require$1 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));
15
33
  const runtimePublicPath = '/@solid-refresh';
16
34
  const runtimeFilePath = require$1.resolve('solid-refresh/dist/solid-refresh.mjs');
@@ -92,9 +110,7 @@ function solidPlugin(options = {}) {
92
110
  * We only need esbuild on .ts or .js files.
93
111
  * .tsx & .jsx files are handled by us
94
112
  */
95
- esbuild: {
96
- include: /\.ts$/
97
- },
113
+ // esbuild: { include: /\.ts$/ },
98
114
  resolve: {
99
115
  conditions: ['solid', ...(replaceDev ? ['development'] : []), ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : [])],
100
116
  dedupe: nestedDeps,
@@ -125,11 +141,11 @@ function solidPlugin(options = {}) {
125
141
  async transform(source, id, transformOptions) {
126
142
  const isSsr = transformOptions && transformOptions.ssr;
127
143
  const currentFileExtension = getExtension(id);
128
- const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];
144
+ const extensionsToWatch = options.extensions || [];
129
145
  const allExtensions = extensionsToWatch.map(extension =>
130
146
  // An extension can be a string or a tuple [extension, options]
131
147
  typeof extension === 'string' ? extension : extension[0]);
132
- if (!filter(id) || !allExtensions.includes(currentFileExtension)) {
148
+ if (!filter(id) || !(/\.[mc]?[tj]sx$/i.test(id) || allExtensions.includes(currentFileExtension))) {
133
149
  return null;
134
150
  }
135
151
  const inNodeModules = /node_modules/.test(id);
@@ -153,9 +169,21 @@ function solidPlugin(options = {}) {
153
169
  };
154
170
  }
155
171
  id = id.replace(/\?.+$/, '');
172
+
173
+ // We need to know if the current file extension has a typescript options tied to it
174
+ const shouldBeProcessedWithTypescript = /\.[mc]?tsx$/i.test(id) || extensionsToWatch.some(extension => {
175
+ if (typeof extension === 'string') {
176
+ return extension.includes('tsx');
177
+ }
178
+ const [extensionName, extensionOptions] = extension;
179
+ if (extensionName !== currentFileExtension) return false;
180
+ return extensionOptions.typescript;
181
+ });
182
+ const plugins = ['jsx'];
183
+ if (shouldBeProcessedWithTypescript) {
184
+ plugins.push('typescript');
185
+ }
156
186
  const opts = {
157
- babelrc: false,
158
- configFile: false,
159
187
  root: projectRoot,
160
188
  filename: id,
161
189
  sourceFileName: id,
@@ -166,23 +194,14 @@ function solidPlugin(options = {}) {
166
194
  plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {
167
195
  bundler: 'vite'
168
196
  }]] : [],
197
+ ast: false,
169
198
  sourceMaps: true,
170
- // Vite handles sourcemap flattening
171
- inputSourceMap: false
172
- };
173
-
174
- // We need to know if the current file extension has a typescript options tied to it
175
- const shouldBeProcessedWithTypescript = extensionsToWatch.some(extension => {
176
- if (typeof extension === 'string') {
177
- return extension.includes('tsx');
199
+ configFile: false,
200
+ babelrc: false,
201
+ parserOpts: {
202
+ plugins
178
203
  }
179
- const [extensionName, extensionOptions] = extension;
180
- if (extensionName !== currentFileExtension) return false;
181
- return extensionOptions.typescript;
182
- });
183
- if (shouldBeProcessedWithTypescript) {
184
- opts.presets.push([ts, options.typescript || {}]);
185
- }
204
+ };
186
205
 
187
206
  // Default value for babel user options
188
207
  let babelUserOptions = {};
@@ -198,7 +217,7 @@ function solidPlugin(options = {}) {
198
217
  const {
199
218
  code,
200
219
  map
201
- } = await core.transformAsync(source, babelOptions);
220
+ } = await babel__namespace.transformAsync(source, babelOptions);
202
221
  return {
203
222
  code,
204
223
  map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import { transformAsync, TransformOptions } from '@babel/core';\nimport ts from '@babel/preset-typescript';\nimport solid from 'babel-preset-solid';\nimport { readFileSync } from 'fs';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel';\nimport { createFilter } from 'vite';\nimport type { Alias, AliasOptions, Plugin, FilterPattern } from 'vite';\nimport { crawlFrameworkPkgs } from 'vitefu';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * the plugin should operate on.\n */\n include?: FilterPattern;\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * to be ignored by the plugin.\n */\n exclude?: FilterPattern;\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | TransformOptions\n | ((source: string, id: string, ssr: boolean) => TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<TransformOptions>);\n typescript: {\n /**\n * Forcibly enables jsx parsing. Otherwise angle brackets will be treated as\n * typescript's legacy type assertion var foo = <string>bar;. Also, isTSX:\n * true requires allExtensions: true.\n *\n * @default false\n */\n isTSX?: boolean;\n\n /**\n * Replace the function used when compiling JSX expressions. This is so that\n * we know that the import is not a type import, and should not be removed.\n *\n * @default React\n */\n jsxPragma?: string;\n\n /**\n * Replace the function used when compiling JSX fragment expressions. This\n * is so that we know that the import is not a type import, and should not\n * be removed.\n *\n * @default React.Fragment\n */\n jsxPragmaFrag?: string;\n\n /**\n * Indicates that every file should be parsed as TS or TSX (depending on the\n * isTSX option).\n *\n * @default false\n */\n allExtensions?: boolean;\n\n /**\n * Enables compilation of TypeScript namespaces.\n *\n * @default uses the default set by @babel/plugin-transform-typescript.\n */\n allowNamespaces?: boolean;\n\n /**\n * When enabled, type-only class fields are only removed if they are\n * prefixed with the declare modifier:\n *\n * > NOTE: This will be enabled by default in Babel 8\n *\n * @default false\n *\n * @example\n * ```ts\n * class A {\n * declare foo: string; // Removed\n * bar: string; // Initialized to undefined\n * prop?: string; // Initialized to undefined\n * prop1!: string // Initialized to undefined\n * }\n * ```\n */\n allowDeclareFields?: boolean;\n\n /**\n * When set to true, the transform will only remove type-only imports\n * (introduced in TypeScript 3.8). This should only be used if you are using\n * TypeScript >= 3.8.\n *\n * @default false\n */\n onlyRemoveTypeImports?: boolean;\n\n /**\n * When set to true, Babel will inline enum values rather than using the\n * usual enum output:\n *\n * This option differs from TypeScript's --isolatedModules behavior, which\n * ignores the const modifier and compiles them as normal enums, and aligns\n * Babel's behavior with TypeScript's default behavior.\n *\n * ```ts\n * // Input\n * const enum Animals {\n * Fish\n * }\n * console.log(Animals.Fish);\n *\n * // Default output\n * var Animals;\n *\n * (function (Animals) {\n * Animals[Animals[\"Fish\"] = 0] = \"Fish\";\n * })(Animals || (Animals = {}));\n *\n * console.log(Animals.Fish);\n *\n * // `optimizeConstEnums` output\n * console.log(0);\n * ```\n *\n * However, when exporting a const enum Babel will compile it to a plain\n * object literal so that it doesn't need to rely on cross-file analysis\n * when compiling it:\n *\n * ```ts\n * // Input\n * export const enum Animals {\n * Fish,\n * }\n *\n * // `optimizeConstEnums` output\n * export var Animals = {\n * Fish: 0,\n * };\n * ```\n *\n * @default false\n */\n optimizeConstEnums?: boolean;\n };\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * Removed unnecessary closing tags from template strings. More info here:\n * https://github.com/solidjs/solid/blob/main/CHANGELOG.md#smaller-templates\n *\n * @default false\n */\n omitNestedClosingTags: boolean;\n\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields: Record<string, any>) {\n const keys = Object.keys(fields);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key === 'solid') return true;\n if (typeof fields[key] === 'object' && fields[key] != null && containsSolidField(fields[key]))\n return true;\n }\n return false;\n}\n\nfunction getJestDomExport(setupFiles: string[]) {\n return setupFiles?.some((path) => /jest-dom/.test(path))\n ? undefined\n : ['@testing-library/jest-dom/vitest', '@testing-library/jest-dom/extend-expect'].find(\n (path) => {\n try {\n require.resolve(path);\n return true;\n } catch (e) {\n return false;\n }\n },\n );\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n const filter = createFilter(options.include, options.exclude);\n\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n async config(userConfig, { command }) {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidPkgsConfig = await crawlFrameworkPkgs({\n viteUserConfig: userConfig,\n root: projectRoot || process.cwd(),\n isBuild: command === 'build',\n isFrameworkPkgByJson(pkgJson) {\n return containsSolidField(pkgJson.exports || {});\n },\n });\n\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n const test = (userConfig as any).test || {};\n\n if (userConfig.mode === 'test') {\n // to simplify the processing of the config, we normalize the setupFiles to an array\n const userSetupFiles: string[] =\n typeof test.setupFiles === 'string' ? [test.setupFiles] : test.setupFiles || [];\n\n if (!test.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n test.server = test.server || {};\n test.server.deps = test.server.deps || {};\n if (!test.server.deps.inline?.find((item: string | RegExp) => /solid-js/.test(item.toString()))) {\n test.server.deps.inline = [...(test.server.deps.inline || []), /solid-js/];\n }\n\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [...userSetupFiles, jestDomImport];\n }\n }\n\n return {\n /**\n * We only need esbuild on .ts or .js files.\n * .tsx & .jsx files are handled by us\n */\n esbuild: { include: /\\.ts$/ },\n resolve: {\n conditions: [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : []),\n ],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],\n exclude: solidPkgsConfig.optimizeDeps.exclude,\n },\n ssr: solidPkgsConfig.ssr,\n ...(test.server ? { test } : {}),\n };\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!filter(id) || !allExtensions.includes(currentFileExtension)) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n const opts: TransformOptions = {\n babelrc: false,\n configFile: false,\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n sourceMaps: true,\n // Vite handles sourcemap flattening\n inputSourceMap: false as any,\n };\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n\n if (shouldBeProcessedWithTypescript) {\n opts.presets.push([ts, options.typescript || {}]);\n }\n\n // Default value for babel user options\n let babelUserOptions: TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as TransformOptions;\n\n const { code, map } = await transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","getJestDomExport","setupFiles","some","path","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","name","enforce","config","userConfig","command","dev","root","alias","normalizeAliases","solidPkgsConfig","crawlFrameworkPkgs","viteUserConfig","isBuild","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","mode","userSetupFiles","environment","ssr","server","deps","inline","item","toString","jestDomImport","esbuild","conditions","dedupe","replacement","optimizeDeps","configResolved","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","opts","babelrc","configFile","sourceFileName","presets","solid","plugins","solidRefresh","bundler","sourceMaps","inputSourceMap","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","push","ts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import * as babel from '@babel/core';\nimport solid from 'babel-preset-solid';\nimport { readFileSync } from 'fs';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel';\nimport { createFilter } from 'vite';\nimport type { Alias, AliasOptions, Plugin, FilterPattern } from 'vite';\nimport { crawlFrameworkPkgs } from 'vitefu';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * the plugin should operate on.\n */\n include?: FilterPattern;\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * to be ignored by the plugin.\n */\n exclude?: FilterPattern;\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | babel.TransformOptions\n | ((source: string, id: string, ssr: boolean) => babel.TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<babel.TransformOptions>);\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * Removed unnecessary closing tags from template strings. More info here:\n * https://github.com/solidjs/solid/blob/main/CHANGELOG.md#smaller-templates\n *\n * @default false\n */\n omitNestedClosingTags: boolean;\n\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields: Record<string, any>) {\n const keys = Object.keys(fields);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key === 'solid') return true;\n if (typeof fields[key] === 'object' && fields[key] != null && containsSolidField(fields[key]))\n return true;\n }\n return false;\n}\n\nfunction getJestDomExport(setupFiles: string[]) {\n return setupFiles?.some((path) => /jest-dom/.test(path))\n ? undefined\n : ['@testing-library/jest-dom/vitest', '@testing-library/jest-dom/extend-expect'].find(\n (path) => {\n try {\n require.resolve(path);\n return true;\n } catch (e) {\n return false;\n }\n },\n );\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n const filter = createFilter(options.include, options.exclude);\n\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n async config(userConfig, { command }) {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidPkgsConfig = await crawlFrameworkPkgs({\n viteUserConfig: userConfig,\n root: projectRoot || process.cwd(),\n isBuild: command === 'build',\n isFrameworkPkgByJson(pkgJson) {\n return containsSolidField(pkgJson.exports || {});\n },\n });\n\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n const test = (userConfig as any).test || {};\n\n if (userConfig.mode === 'test') {\n // to simplify the processing of the config, we normalize the setupFiles to an array\n const userSetupFiles: string[] =\n typeof test.setupFiles === 'string' ? [test.setupFiles] : test.setupFiles || [];\n\n if (!test.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n test.server = test.server || {};\n test.server.deps = test.server.deps || {};\n if (!test.server.deps.inline?.find((item: string | RegExp) => /solid-js/.test(item.toString()))) {\n test.server.deps.inline = [...(test.server.deps.inline || []), /solid-js/];\n }\n\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [...userSetupFiles, jestDomImport];\n }\n }\n\n return {\n /**\n * We only need esbuild on .ts or .js files.\n * .tsx & .jsx files are handled by us\n */\n // esbuild: { include: /\\.ts$/ },\n resolve: {\n conditions: [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : []),\n ],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],\n exclude: solidPkgsConfig.optimizeDeps.exclude,\n },\n ssr: solidPkgsConfig.ssr,\n ...(test.server ? { test } : {}),\n };\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = options.extensions || [];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!filter(id) || !(/\\.[mc]?[tj]sx$/i.test(id) || allExtensions.includes(currentFileExtension))) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = /\\.[mc]?tsx$/i.test(id) || extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n const plugins: NonNullable<NonNullable<babel.TransformOptions['parserOpts']>['plugins']> = ['jsx']\n\n if (shouldBeProcessedWithTypescript) {\n plugins.push('typescript');\n }\n\n const opts: babel.TransformOptions = {\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n ast: false,\n sourceMaps: true,\n configFile: false,\n babelrc: false,\n parserOpts: {\n plugins,\n },\n };\n\n // Default value for babel user options\n let babelUserOptions: babel.TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as babel.TransformOptions;\n\n const { code, map } = await babel.transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","getJestDomExport","setupFiles","some","path","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","name","enforce","config","userConfig","command","dev","root","alias","normalizeAliases","solidPkgsConfig","crawlFrameworkPkgs","viteUserConfig","isBuild","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","mode","userSetupFiles","environment","ssr","server","deps","inline","item","toString","jestDomImport","conditions","dedupe","replacement","optimizeDeps","configResolved","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","plugins","push","opts","sourceFileName","presets","solid","solidRefresh","bundler","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { transformAsync } from '@babel/core';
2
- import ts from '@babel/preset-typescript';
1
+ import * as babel from '@babel/core';
3
2
  import solid from 'babel-preset-solid';
4
3
  import { readFileSync } from 'fs';
5
4
  import { mergeAndConcat } from 'merge-anything';
@@ -89,9 +88,7 @@ function solidPlugin(options = {}) {
89
88
  * We only need esbuild on .ts or .js files.
90
89
  * .tsx & .jsx files are handled by us
91
90
  */
92
- esbuild: {
93
- include: /\.ts$/
94
- },
91
+ // esbuild: { include: /\.ts$/ },
95
92
  resolve: {
96
93
  conditions: ['solid', ...(replaceDev ? ['development'] : []), ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : [])],
97
94
  dedupe: nestedDeps,
@@ -122,11 +119,11 @@ function solidPlugin(options = {}) {
122
119
  async transform(source, id, transformOptions) {
123
120
  const isSsr = transformOptions && transformOptions.ssr;
124
121
  const currentFileExtension = getExtension(id);
125
- const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];
122
+ const extensionsToWatch = options.extensions || [];
126
123
  const allExtensions = extensionsToWatch.map(extension =>
127
124
  // An extension can be a string or a tuple [extension, options]
128
125
  typeof extension === 'string' ? extension : extension[0]);
129
- if (!filter(id) || !allExtensions.includes(currentFileExtension)) {
126
+ if (!filter(id) || !(/\.[mc]?[tj]sx$/i.test(id) || allExtensions.includes(currentFileExtension))) {
130
127
  return null;
131
128
  }
132
129
  const inNodeModules = /node_modules/.test(id);
@@ -150,9 +147,21 @@ function solidPlugin(options = {}) {
150
147
  };
151
148
  }
152
149
  id = id.replace(/\?.+$/, '');
150
+
151
+ // We need to know if the current file extension has a typescript options tied to it
152
+ const shouldBeProcessedWithTypescript = /\.[mc]?tsx$/i.test(id) || extensionsToWatch.some(extension => {
153
+ if (typeof extension === 'string') {
154
+ return extension.includes('tsx');
155
+ }
156
+ const [extensionName, extensionOptions] = extension;
157
+ if (extensionName !== currentFileExtension) return false;
158
+ return extensionOptions.typescript;
159
+ });
160
+ const plugins = ['jsx'];
161
+ if (shouldBeProcessedWithTypescript) {
162
+ plugins.push('typescript');
163
+ }
153
164
  const opts = {
154
- babelrc: false,
155
- configFile: false,
156
165
  root: projectRoot,
157
166
  filename: id,
158
167
  sourceFileName: id,
@@ -163,23 +172,14 @@ function solidPlugin(options = {}) {
163
172
  plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {
164
173
  bundler: 'vite'
165
174
  }]] : [],
175
+ ast: false,
166
176
  sourceMaps: true,
167
- // Vite handles sourcemap flattening
168
- inputSourceMap: false
169
- };
170
-
171
- // We need to know if the current file extension has a typescript options tied to it
172
- const shouldBeProcessedWithTypescript = extensionsToWatch.some(extension => {
173
- if (typeof extension === 'string') {
174
- return extension.includes('tsx');
177
+ configFile: false,
178
+ babelrc: false,
179
+ parserOpts: {
180
+ plugins
175
181
  }
176
- const [extensionName, extensionOptions] = extension;
177
- if (extensionName !== currentFileExtension) return false;
178
- return extensionOptions.typescript;
179
- });
180
- if (shouldBeProcessedWithTypescript) {
181
- opts.presets.push([ts, options.typescript || {}]);
182
- }
182
+ };
183
183
 
184
184
  // Default value for babel user options
185
185
  let babelUserOptions = {};
@@ -195,7 +195,7 @@ function solidPlugin(options = {}) {
195
195
  const {
196
196
  code,
197
197
  map
198
- } = await transformAsync(source, babelOptions);
198
+ } = await babel.transformAsync(source, babelOptions);
199
199
  return {
200
200
  code,
201
201
  map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import { transformAsync, TransformOptions } from '@babel/core';\nimport ts from '@babel/preset-typescript';\nimport solid from 'babel-preset-solid';\nimport { readFileSync } from 'fs';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel';\nimport { createFilter } from 'vite';\nimport type { Alias, AliasOptions, Plugin, FilterPattern } from 'vite';\nimport { crawlFrameworkPkgs } from 'vitefu';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * the plugin should operate on.\n */\n include?: FilterPattern;\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * to be ignored by the plugin.\n */\n exclude?: FilterPattern;\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | TransformOptions\n | ((source: string, id: string, ssr: boolean) => TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<TransformOptions>);\n typescript: {\n /**\n * Forcibly enables jsx parsing. Otherwise angle brackets will be treated as\n * typescript's legacy type assertion var foo = <string>bar;. Also, isTSX:\n * true requires allExtensions: true.\n *\n * @default false\n */\n isTSX?: boolean;\n\n /**\n * Replace the function used when compiling JSX expressions. This is so that\n * we know that the import is not a type import, and should not be removed.\n *\n * @default React\n */\n jsxPragma?: string;\n\n /**\n * Replace the function used when compiling JSX fragment expressions. This\n * is so that we know that the import is not a type import, and should not\n * be removed.\n *\n * @default React.Fragment\n */\n jsxPragmaFrag?: string;\n\n /**\n * Indicates that every file should be parsed as TS or TSX (depending on the\n * isTSX option).\n *\n * @default false\n */\n allExtensions?: boolean;\n\n /**\n * Enables compilation of TypeScript namespaces.\n *\n * @default uses the default set by @babel/plugin-transform-typescript.\n */\n allowNamespaces?: boolean;\n\n /**\n * When enabled, type-only class fields are only removed if they are\n * prefixed with the declare modifier:\n *\n * > NOTE: This will be enabled by default in Babel 8\n *\n * @default false\n *\n * @example\n * ```ts\n * class A {\n * declare foo: string; // Removed\n * bar: string; // Initialized to undefined\n * prop?: string; // Initialized to undefined\n * prop1!: string // Initialized to undefined\n * }\n * ```\n */\n allowDeclareFields?: boolean;\n\n /**\n * When set to true, the transform will only remove type-only imports\n * (introduced in TypeScript 3.8). This should only be used if you are using\n * TypeScript >= 3.8.\n *\n * @default false\n */\n onlyRemoveTypeImports?: boolean;\n\n /**\n * When set to true, Babel will inline enum values rather than using the\n * usual enum output:\n *\n * This option differs from TypeScript's --isolatedModules behavior, which\n * ignores the const modifier and compiles them as normal enums, and aligns\n * Babel's behavior with TypeScript's default behavior.\n *\n * ```ts\n * // Input\n * const enum Animals {\n * Fish\n * }\n * console.log(Animals.Fish);\n *\n * // Default output\n * var Animals;\n *\n * (function (Animals) {\n * Animals[Animals[\"Fish\"] = 0] = \"Fish\";\n * })(Animals || (Animals = {}));\n *\n * console.log(Animals.Fish);\n *\n * // `optimizeConstEnums` output\n * console.log(0);\n * ```\n *\n * However, when exporting a const enum Babel will compile it to a plain\n * object literal so that it doesn't need to rely on cross-file analysis\n * when compiling it:\n *\n * ```ts\n * // Input\n * export const enum Animals {\n * Fish,\n * }\n *\n * // `optimizeConstEnums` output\n * export var Animals = {\n * Fish: 0,\n * };\n * ```\n *\n * @default false\n */\n optimizeConstEnums?: boolean;\n };\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * Removed unnecessary closing tags from template strings. More info here:\n * https://github.com/solidjs/solid/blob/main/CHANGELOG.md#smaller-templates\n *\n * @default false\n */\n omitNestedClosingTags: boolean;\n\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields: Record<string, any>) {\n const keys = Object.keys(fields);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key === 'solid') return true;\n if (typeof fields[key] === 'object' && fields[key] != null && containsSolidField(fields[key]))\n return true;\n }\n return false;\n}\n\nfunction getJestDomExport(setupFiles: string[]) {\n return setupFiles?.some((path) => /jest-dom/.test(path))\n ? undefined\n : ['@testing-library/jest-dom/vitest', '@testing-library/jest-dom/extend-expect'].find(\n (path) => {\n try {\n require.resolve(path);\n return true;\n } catch (e) {\n return false;\n }\n },\n );\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n const filter = createFilter(options.include, options.exclude);\n\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n async config(userConfig, { command }) {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidPkgsConfig = await crawlFrameworkPkgs({\n viteUserConfig: userConfig,\n root: projectRoot || process.cwd(),\n isBuild: command === 'build',\n isFrameworkPkgByJson(pkgJson) {\n return containsSolidField(pkgJson.exports || {});\n },\n });\n\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n const test = (userConfig as any).test || {};\n\n if (userConfig.mode === 'test') {\n // to simplify the processing of the config, we normalize the setupFiles to an array\n const userSetupFiles: string[] =\n typeof test.setupFiles === 'string' ? [test.setupFiles] : test.setupFiles || [];\n\n if (!test.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n test.server = test.server || {};\n test.server.deps = test.server.deps || {};\n if (!test.server.deps.inline?.find((item: string | RegExp) => /solid-js/.test(item.toString()))) {\n test.server.deps.inline = [...(test.server.deps.inline || []), /solid-js/];\n }\n\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [...userSetupFiles, jestDomImport];\n }\n }\n\n return {\n /**\n * We only need esbuild on .ts or .js files.\n * .tsx & .jsx files are handled by us\n */\n esbuild: { include: /\\.ts$/ },\n resolve: {\n conditions: [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : []),\n ],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],\n exclude: solidPkgsConfig.optimizeDeps.exclude,\n },\n ssr: solidPkgsConfig.ssr,\n ...(test.server ? { test } : {}),\n };\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = [...(options.extensions || []), '.tsx', '.jsx'];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!filter(id) || !allExtensions.includes(currentFileExtension)) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n const opts: TransformOptions = {\n babelrc: false,\n configFile: false,\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n sourceMaps: true,\n // Vite handles sourcemap flattening\n inputSourceMap: false as any,\n };\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n\n if (shouldBeProcessedWithTypescript) {\n opts.presets.push([ts, options.typescript || {}]);\n }\n\n // Default value for babel user options\n let babelUserOptions: TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as TransformOptions;\n\n const { code, map } = await transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","meta","url","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","getJestDomExport","setupFiles","some","path","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","name","enforce","config","userConfig","command","dev","root","alias","normalizeAliases","solidPkgsConfig","crawlFrameworkPkgs","viteUserConfig","isBuild","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","mode","userSetupFiles","environment","ssr","server","deps","inline","item","toString","jestDomImport","esbuild","conditions","dedupe","replacement","optimizeDeps","configResolved","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","opts","babelrc","configFile","sourceFileName","presets","solid","plugins","solidRefresh","bundler","sourceMaps","inputSourceMap","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","push","ts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import * as babel from '@babel/core';\nimport solid from 'babel-preset-solid';\nimport { readFileSync } from 'fs';\nimport { mergeAndConcat } from 'merge-anything';\nimport { createRequire } from 'module';\nimport solidRefresh from 'solid-refresh/babel';\nimport { createFilter } from 'vite';\nimport type { Alias, AliasOptions, Plugin, FilterPattern } from 'vite';\nimport { crawlFrameworkPkgs } from 'vitefu';\n\nconst require = createRequire(import.meta.url);\n\nconst runtimePublicPath = '/@solid-refresh';\nconst runtimeFilePath = require.resolve('solid-refresh/dist/solid-refresh.mjs');\nconst runtimeCode = readFileSync(runtimeFilePath, 'utf-8');\n\n/** Possible options for the extensions property */\nexport interface ExtensionOptions {\n typescript?: boolean;\n}\n\n/** Configuration options for vite-plugin-solid. */\nexport interface Options {\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * the plugin should operate on.\n */\n include?: FilterPattern;\n /**\n * A [picomatch](https://github.com/micromatch/picomatch) pattern, or array of patterns, which specifies the files\n * to be ignored by the plugin.\n */\n exclude?: FilterPattern;\n /**\n * This will inject solid-js/dev in place of solid-js in dev mode. Has no\n * effect in prod. If set to `false`, it won't inject it in dev. This is\n * useful for extra logs and debugging.\n *\n * @default true\n */\n dev: boolean;\n /**\n * This will force SSR code in the produced files. This is experiemental\n * and mostly not working yet.\n *\n * @default false\n */\n ssr: boolean;\n\n /**\n * This will inject HMR runtime in dev mode. Has no effect in prod. If\n * set to `false`, it won't inject the runtime in dev.\n *\n * @default true\n */\n hot: boolean;\n /**\n * This registers additional extensions that should be processed by\n * vite-plugin-solid.\n *\n * @default undefined\n */\n extensions?: (string | [string, ExtensionOptions])[];\n /**\n * Pass any additional babel transform options. They will be merged with\n * the transformations required by Solid.\n *\n * @default {}\n */\n babel:\n | babel.TransformOptions\n | ((source: string, id: string, ssr: boolean) => babel.TransformOptions)\n | ((source: string, id: string, ssr: boolean) => Promise<babel.TransformOptions>);\n /**\n * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).\n * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).\n *\n * @default {}\n */\n solid: {\n /**\n * Removed unnecessary closing tags from template strings. More info here:\n * https://github.com/solidjs/solid/blob/main/CHANGELOG.md#smaller-templates\n *\n * @default false\n */\n omitNestedClosingTags: boolean;\n\n /**\n * The name of the runtime module to import the methods from.\n *\n * @default \"solid-js/web\"\n */\n moduleName?: string;\n\n /**\n * The output mode of the compiler.\n * Can be:\n * - \"dom\" is standard output\n * - \"ssr\" is for server side rendering of strings.\n * - \"universal\" is for using custom renderers from solid-js/universal\n *\n * @default \"dom\"\n */\n generate?: 'ssr' | 'dom' | 'universal';\n\n /**\n * Indicate whether the output should contain hydratable markers.\n *\n * @default false\n */\n hydratable?: boolean;\n\n /**\n * Boolean to indicate whether to enable automatic event delegation on camelCase.\n *\n * @default true\n */\n delegateEvents?: boolean;\n\n /**\n * Boolean indicates whether smart conditional detection should be used.\n * This optimizes simple boolean expressions and ternaries in JSX.\n *\n * @default true\n */\n wrapConditionals?: boolean;\n\n /**\n * Boolean indicates whether to set current render context on Custom Elements and slots.\n * Useful for seemless Context API with Web Components.\n *\n * @default true\n */\n contextToCustomElements?: boolean;\n\n /**\n * Array of Component exports from module, that aren't included by default with the library.\n * This plugin will automatically import them if it comes across them in the JSX.\n *\n * @default [\"For\",\"Show\",\"Switch\",\"Match\",\"Suspense\",\"SuspenseList\",\"Portal\",\"Index\",\"Dynamic\",\"ErrorBoundary\"]\n */\n builtIns?: string[];\n };\n}\n\nfunction getExtension(filename: string): string {\n const index = filename.lastIndexOf('.');\n return index < 0 ? '' : filename.substring(index).replace(/\\?.+$/, '');\n}\nfunction containsSolidField(fields: Record<string, any>) {\n const keys = Object.keys(fields);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key === 'solid') return true;\n if (typeof fields[key] === 'object' && fields[key] != null && containsSolidField(fields[key]))\n return true;\n }\n return false;\n}\n\nfunction getJestDomExport(setupFiles: string[]) {\n return setupFiles?.some((path) => /jest-dom/.test(path))\n ? undefined\n : ['@testing-library/jest-dom/vitest', '@testing-library/jest-dom/extend-expect'].find(\n (path) => {\n try {\n require.resolve(path);\n return true;\n } catch (e) {\n return false;\n }\n },\n );\n}\n\nexport default function solidPlugin(options: Partial<Options> = {}): Plugin {\n const filter = createFilter(options.include, options.exclude);\n\n let needHmr = false;\n let replaceDev = false;\n let projectRoot = process.cwd();\n\n return {\n name: 'solid',\n enforce: 'pre',\n\n async config(userConfig, { command }) {\n // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode\n replaceDev = options.dev === true || (options.dev !== false && command === 'serve');\n projectRoot = userConfig.root;\n\n if (!userConfig.resolve) userConfig.resolve = {};\n userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);\n\n const solidPkgsConfig = await crawlFrameworkPkgs({\n viteUserConfig: userConfig,\n root: projectRoot || process.cwd(),\n isBuild: command === 'build',\n isFrameworkPkgByJson(pkgJson) {\n return containsSolidField(pkgJson.exports || {});\n },\n });\n\n // fix for bundling dev in production\n const nestedDeps = replaceDev\n ? ['solid-js', 'solid-js/web', 'solid-js/store', 'solid-js/html', 'solid-js/h']\n : [];\n\n const test = (userConfig as any).test || {};\n\n if (userConfig.mode === 'test') {\n // to simplify the processing of the config, we normalize the setupFiles to an array\n const userSetupFiles: string[] =\n typeof test.setupFiles === 'string' ? [test.setupFiles] : test.setupFiles || [];\n\n if (!test.environment && !options.ssr) {\n test.environment = 'jsdom';\n }\n\n test.server = test.server || {};\n test.server.deps = test.server.deps || {};\n if (!test.server.deps.inline?.find((item: string | RegExp) => /solid-js/.test(item.toString()))) {\n test.server.deps.inline = [...(test.server.deps.inline || []), /solid-js/];\n }\n\n const jestDomImport = getJestDomExport(userSetupFiles);\n if (jestDomImport) {\n test.setupFiles = [...userSetupFiles, jestDomImport];\n }\n }\n\n return {\n /**\n * We only need esbuild on .ts or .js files.\n * .tsx & .jsx files are handled by us\n */\n // esbuild: { include: /\\.ts$/ },\n resolve: {\n conditions: [\n 'solid',\n ...(replaceDev ? ['development'] : []),\n ...(userConfig.mode === 'test' && !options.ssr ? ['browser'] : []),\n ],\n dedupe: nestedDeps,\n alias: [{ find: /^solid-refresh$/, replacement: runtimePublicPath }],\n },\n optimizeDeps: {\n include: [...nestedDeps, ...solidPkgsConfig.optimizeDeps.include],\n exclude: solidPkgsConfig.optimizeDeps.exclude,\n },\n ssr: solidPkgsConfig.ssr,\n ...(test.server ? { test } : {}),\n };\n },\n\n configResolved(config) {\n needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;\n },\n\n resolveId(id) {\n if (id === runtimePublicPath) return id;\n },\n\n load(id) {\n if (id === runtimePublicPath) return runtimeCode;\n },\n\n async transform(source, id, transformOptions) {\n const isSsr = transformOptions && transformOptions.ssr;\n const currentFileExtension = getExtension(id);\n\n const extensionsToWatch = options.extensions || [];\n const allExtensions = extensionsToWatch.map((extension) =>\n // An extension can be a string or a tuple [extension, options]\n typeof extension === 'string' ? extension : extension[0],\n );\n\n if (!filter(id) || !(/\\.[mc]?[tj]sx$/i.test(id) || allExtensions.includes(currentFileExtension))) {\n return null;\n }\n\n const inNodeModules = /node_modules/.test(id);\n\n let solidOptions: { generate: 'ssr' | 'dom'; hydratable: boolean };\n\n if (options.ssr) {\n if (isSsr) {\n solidOptions = { generate: 'ssr', hydratable: true };\n } else {\n solidOptions = { generate: 'dom', hydratable: true };\n }\n } else {\n solidOptions = { generate: 'dom', hydratable: false };\n }\n\n id = id.replace(/\\?.+$/, '');\n\n // We need to know if the current file extension has a typescript options tied to it\n const shouldBeProcessedWithTypescript = /\\.[mc]?tsx$/i.test(id) || extensionsToWatch.some((extension) => {\n if (typeof extension === 'string') {\n return extension.includes('tsx');\n }\n\n const [extensionName, extensionOptions] = extension;\n if (extensionName !== currentFileExtension) return false;\n\n return extensionOptions.typescript;\n });\n const plugins: NonNullable<NonNullable<babel.TransformOptions['parserOpts']>['plugins']> = ['jsx']\n\n if (shouldBeProcessedWithTypescript) {\n plugins.push('typescript');\n }\n\n const opts: babel.TransformOptions = {\n root: projectRoot,\n filename: id,\n sourceFileName: id,\n presets: [[solid, { ...solidOptions, ...(options.solid || {}) }]],\n plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, { bundler: 'vite' }]] : [],\n ast: false,\n sourceMaps: true,\n configFile: false,\n babelrc: false,\n parserOpts: {\n plugins,\n },\n };\n\n // Default value for babel user options\n let babelUserOptions: babel.TransformOptions = {};\n\n if (options.babel) {\n if (typeof options.babel === 'function') {\n const babelOptions = options.babel(source, id, isSsr);\n babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;\n } else {\n babelUserOptions = options.babel;\n }\n }\n\n const babelOptions = mergeAndConcat(babelUserOptions, opts) as babel.TransformOptions;\n\n const { code, map } = await babel.transformAsync(source, babelOptions);\n\n return { code, map };\n },\n };\n}\n\n/**\n * This basically normalize all aliases of the config into\n * the array format of the alias.\n *\n * eg: alias: { '@': 'src/' } => [{ find: '@', replacement: 'src/' }]\n */\nfunction normalizeAliases(alias: AliasOptions = []): Alias[] {\n return Array.isArray(alias)\n ? alias\n : Object.entries(alias).map(([find, replacement]) => ({ find, replacement }));\n}\n"],"names":["require","createRequire","import","meta","url","runtimePublicPath","runtimeFilePath","resolve","runtimeCode","readFileSync","getExtension","filename","index","lastIndexOf","substring","replace","containsSolidField","fields","keys","Object","i","length","key","getJestDomExport","setupFiles","some","path","test","undefined","find","e","solidPlugin","options","filter","createFilter","include","exclude","needHmr","replaceDev","projectRoot","process","cwd","name","enforce","config","userConfig","command","dev","root","alias","normalizeAliases","solidPkgsConfig","crawlFrameworkPkgs","viteUserConfig","isBuild","isFrameworkPkgByJson","pkgJson","exports","nestedDeps","mode","userSetupFiles","environment","ssr","server","deps","inline","item","toString","jestDomImport","conditions","dedupe","replacement","optimizeDeps","configResolved","hot","resolveId","id","load","transform","source","transformOptions","isSsr","currentFileExtension","extensionsToWatch","extensions","allExtensions","map","extension","includes","inNodeModules","solidOptions","generate","hydratable","shouldBeProcessedWithTypescript","extensionName","extensionOptions","typescript","plugins","push","opts","sourceFileName","presets","solid","solidRefresh","bundler","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","code","transformAsync","Array","isArray","entries"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TransformOptions } from '@babel/core';
1
+ import * as babel from '@babel/core';
2
2
  import type { Plugin, FilterPattern } from 'vite';
3
3
  /** Possible options for the extensions property */
4
4
  export interface ExtensionOptions {
@@ -51,119 +51,7 @@ export interface Options {
51
51
  *
52
52
  * @default {}
53
53
  */
54
- babel: TransformOptions | ((source: string, id: string, ssr: boolean) => TransformOptions) | ((source: string, id: string, ssr: boolean) => Promise<TransformOptions>);
55
- typescript: {
56
- /**
57
- * Forcibly enables jsx parsing. Otherwise angle brackets will be treated as
58
- * typescript's legacy type assertion var foo = <string>bar;. Also, isTSX:
59
- * true requires allExtensions: true.
60
- *
61
- * @default false
62
- */
63
- isTSX?: boolean;
64
- /**
65
- * Replace the function used when compiling JSX expressions. This is so that
66
- * we know that the import is not a type import, and should not be removed.
67
- *
68
- * @default React
69
- */
70
- jsxPragma?: string;
71
- /**
72
- * Replace the function used when compiling JSX fragment expressions. This
73
- * is so that we know that the import is not a type import, and should not
74
- * be removed.
75
- *
76
- * @default React.Fragment
77
- */
78
- jsxPragmaFrag?: string;
79
- /**
80
- * Indicates that every file should be parsed as TS or TSX (depending on the
81
- * isTSX option).
82
- *
83
- * @default false
84
- */
85
- allExtensions?: boolean;
86
- /**
87
- * Enables compilation of TypeScript namespaces.
88
- *
89
- * @default uses the default set by @babel/plugin-transform-typescript.
90
- */
91
- allowNamespaces?: boolean;
92
- /**
93
- * When enabled, type-only class fields are only removed if they are
94
- * prefixed with the declare modifier:
95
- *
96
- * > NOTE: This will be enabled by default in Babel 8
97
- *
98
- * @default false
99
- *
100
- * @example
101
- * ```ts
102
- * class A {
103
- * declare foo: string; // Removed
104
- * bar: string; // Initialized to undefined
105
- * prop?: string; // Initialized to undefined
106
- * prop1!: string // Initialized to undefined
107
- * }
108
- * ```
109
- */
110
- allowDeclareFields?: boolean;
111
- /**
112
- * When set to true, the transform will only remove type-only imports
113
- * (introduced in TypeScript 3.8). This should only be used if you are using
114
- * TypeScript >= 3.8.
115
- *
116
- * @default false
117
- */
118
- onlyRemoveTypeImports?: boolean;
119
- /**
120
- * When set to true, Babel will inline enum values rather than using the
121
- * usual enum output:
122
- *
123
- * This option differs from TypeScript's --isolatedModules behavior, which
124
- * ignores the const modifier and compiles them as normal enums, and aligns
125
- * Babel's behavior with TypeScript's default behavior.
126
- *
127
- * ```ts
128
- * // Input
129
- * const enum Animals {
130
- * Fish
131
- * }
132
- * console.log(Animals.Fish);
133
- *
134
- * // Default output
135
- * var Animals;
136
- *
137
- * (function (Animals) {
138
- * Animals[Animals["Fish"] = 0] = "Fish";
139
- * })(Animals || (Animals = {}));
140
- *
141
- * console.log(Animals.Fish);
142
- *
143
- * // `optimizeConstEnums` output
144
- * console.log(0);
145
- * ```
146
- *
147
- * However, when exporting a const enum Babel will compile it to a plain
148
- * object literal so that it doesn't need to rely on cross-file analysis
149
- * when compiling it:
150
- *
151
- * ```ts
152
- * // Input
153
- * export const enum Animals {
154
- * Fish,
155
- * }
156
- *
157
- * // `optimizeConstEnums` output
158
- * export var Animals = {
159
- * Fish: 0,
160
- * };
161
- * ```
162
- *
163
- * @default false
164
- */
165
- optimizeConstEnums?: boolean;
166
- };
54
+ babel: babel.TransformOptions | ((source: string, id: string, ssr: boolean) => babel.TransformOptions) | ((source: string, id: string, ssr: boolean) => Promise<babel.TransformOptions>);
167
55
  /**
168
56
  * Pass any additional [babel-plugin-jsx-dom-expressions](https://github.com/ryansolid/dom-expressions/tree/main/packages/babel-plugin-jsx-dom-expressions#plugin-options).
169
57
  * They will be merged with the defaults sets by [babel-preset-solid](https://github.com/solidjs/solid/blob/main/packages/babel-preset-solid/index.js#L8-L25).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-solid",
3
- "version": "2.8.3",
3
+ "version": "2.9.1",
4
4
  "description": "solid-js integration plugin for vite 3/4/5",
5
5
  "type": "module",
6
6
  "files": [
@@ -36,7 +36,6 @@
36
36
  "homepage": "https://github.com/solidjs/vite-plugin-solid#readme",
37
37
  "dependencies": {
38
38
  "@babel/core": "^7.23.3",
39
- "@babel/preset-typescript": "^7.23.3",
40
39
  "@types/babel__core": "^7.20.4",
41
40
  "babel-preset-solid": "^1.8.4",
42
41
  "merge-anything": "^5.1.7",
@@ -44,7 +43,7 @@
44
43
  "vitefu": "^0.2.5"
45
44
  },
46
45
  "devDependencies": {
47
- "@babel/plugin-transform-typescript": "^7.23.3",
46
+ "@babel/preset-typescript": "^7.23.3",
48
47
  "@babel/preset-env": "^7.23.3",
49
48
  "@rollup/plugin-babel": "^6.0.4",
50
49
  "@rollup/plugin-commonjs": "^25.0.7",
@@ -63,7 +62,7 @@
63
62
  "solid-js": "^1.7.2",
64
63
  "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
65
64
  },
66
- "peerDependencyMeta": {
65
+ "peerDependenciesMeta": {
67
66
  "@testing-library/jest-dom": {
68
67
  "optional": true
69
68
  }