vite-plugin-solid 2.10.0 → 2.10.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.
@@ -74,7 +74,7 @@ function solidPlugin(options = {}) {
74
74
  }) {
75
75
  // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode
76
76
  replaceDev = options.dev === true || options.dev !== false && command === 'serve';
77
- projectRoot = userConfig.root || projectRoot;
77
+ projectRoot = userConfig.root;
78
78
  if (!userConfig.resolve) userConfig.resolve = {};
79
79
  userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);
80
80
  const solidPkgsConfig = await vitefu.crawlFrameworkPkgs({
@@ -130,7 +130,7 @@ function solidPlugin(options = {}) {
130
130
  };
131
131
  },
132
132
  configResolved(config) {
133
- needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false && !options.refresh?.disabled;
133
+ needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;
134
134
  },
135
135
  resolveId(id) {
136
136
  if (id === runtimePublicPath) return id;
@@ -179,17 +179,7 @@ function solidPlugin(options = {}) {
179
179
  if (extensionName !== currentFileExtension) return false;
180
180
  return extensionOptions.typescript;
181
181
  });
182
- const plugins = ['jsx',
183
- // import { example } from 'example' with { example: true };
184
- 'importAttributes',
185
- // () => throw example
186
- 'throwExpressions',
187
- // You know what this is
188
- 'decorators',
189
- // const { #example: example } = this;
190
- 'destructuringPrivate',
191
- // using example = myExample()
192
- 'explicitResourceManagement'];
182
+ const plugins = ['jsx'];
193
183
  if (shouldBeProcessedWithTypescript) {
194
184
  plugins.push('typescript');
195
185
  }
@@ -202,10 +192,7 @@ function solidPlugin(options = {}) {
202
192
  ...(options.solid || {})
203
193
  }]],
204
194
  plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {
205
- bundler: 'vite',
206
- fixRender: true,
207
- imports: options.refresh?.imports,
208
- granular: options.refresh?.granular
195
+ bundler: 'vite'
209
196
  }]] : [],
210
197
  ast: false,
211
198
  sourceMaps: true,
@@ -220,20 +207,20 @@ function solidPlugin(options = {}) {
220
207
  let babelUserOptions = {};
221
208
  if (options.babel) {
222
209
  if (typeof options.babel === 'function') {
223
- const babelOptions = options.babel(source, id, !!isSsr);
210
+ const babelOptions = options.babel(source, id, isSsr);
224
211
  babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;
225
212
  } else {
226
213
  babelUserOptions = options.babel;
227
214
  }
228
215
  }
229
216
  const babelOptions = mergeAnything.mergeAndConcat(babelUserOptions, opts);
230
- const result = await babel__namespace.transformAsync(source, babelOptions);
231
- if (!result) {
232
- return undefined;
233
- }
217
+ const {
218
+ code,
219
+ map
220
+ } = await babel__namespace.transformAsync(source, babelOptions);
234
221
  return {
235
- code: result.code || '',
236
- map: result.map
222
+ code,
223
+ map
237
224
  };
238
225
  }
239
226
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import * as babel from '@babel/core';\n// @ts-ignore\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';\n// TODO use proper path\nimport type { Options as RefreshOptions } from 'solid-refresh/babel';\nimport type { Alias, AliasOptions, FilterPattern, Plugin } from 'vite';\nimport { createFilter } 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 * @deprecated use `refresh` instead\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 refresh: Omit<RefreshOptions & { disabled: boolean }, 'bundler' | 'fixRender'>;\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 || projectRoot;\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 && !options.refresh?.disabled);\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']> = [\n 'jsx',\n // import { example } from 'example' with { example: true };\n 'importAttributes',\n // () => throw example\n 'throwExpressions',\n // You know what this is\n 'decorators',\n // const { #example: example } = this;\n 'destructuringPrivate',\n // using example = myExample()\n 'explicitResourceManagement',\n ];\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, {\n bundler: 'vite',\n fixRender: true,\n imports: options.refresh?.imports,\n granular: options.refresh?.granular,\n }]] : [],\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 result = await babel.transformAsync(source, babelOptions);\n if (!result) {\n return undefined;\n }\n return { code: result.code || '', map: result.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","refresh","disabled","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","fixRender","imports","granular","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","result","transformAsync","code","Array","isArray","entries"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAMA,SAAO,GAAGC,sBAAa,CAACC,8LAAe,CAAC,CAAA;AAE9C,MAAMC,iBAAiB,GAAG,iBAAiB,CAAA;AAC3C,MAAMC,eAAe,GAAGJ,SAAO,CAACK,OAAO,CAAC,sCAAsC,CAAC,CAAA;AAC/E,MAAMC,WAAW,GAAGC,eAAY,CAACH,eAAe,EAAE,OAAO,CAAC,CAAA;;AAE1D;;AAKA;;AAgIA,SAASI,YAAYA,CAACC,QAAgB,EAAU;AAC9C,EAAA,MAAMC,KAAK,GAAGD,QAAQ,CAACE,WAAW,CAAC,GAAG,CAAC,CAAA;AACvC,EAAA,OAAOD,KAAK,GAAG,CAAC,GAAG,EAAE,GAAGD,QAAQ,CAACG,SAAS,CAACF,KAAK,CAAC,CAACG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AACxE,CAAA;AACA,SAASC,kBAAkBA,CAACC,MAA2B,EAAE;AACvD,EAAA,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACD,MAAM,CAAC,CAAA;AAChC,EAAA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;AACpC,IAAA,MAAME,GAAG,GAAGJ,IAAI,CAACE,CAAC,CAAC,CAAA;AACnB,IAAA,IAAIE,GAAG,KAAK,OAAO,EAAE,OAAO,IAAI,CAAA;IAChC,IAAI,OAAOL,MAAM,CAACK,GAAG,CAAC,KAAK,QAAQ,IAAIL,MAAM,CAACK,GAAG,CAAC,IAAI,IAAI,IAAIN,kBAAkB,CAACC,MAAM,CAACK,GAAG,CAAC,CAAC,EAC3F,OAAO,IAAI,CAAA;AACf,GAAA;AACA,EAAA,OAAO,KAAK,CAAA;AACd,CAAA;AAEA,SAASC,gBAAgBA,CAACC,UAAoB,EAAE;EAC9C,OAAOA,UAAU,EAAEC,IAAI,CAAEC,IAAI,IAAK,UAAU,CAACC,IAAI,CAACD,IAAI,CAAC,CAAC,GACpDE,SAAS,GACT,CAAC,kCAAkC,EAAE,yCAAyC,CAAC,CAACC,IAAI,CACjFH,IAAI,IAAK;IACR,IAAI;AACFxB,MAAAA,SAAO,CAACK,OAAO,CAACmB,IAAI,CAAC,CAAA;AACrB,MAAA,OAAO,IAAI,CAAA;KACZ,CAAC,OAAOI,CAAC,EAAE;AACV,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GACF,CAAC,CAAA;AACP,CAAA;AAEe,SAASC,WAAWA,CAACC,OAAyB,GAAG,EAAE,EAAU;EAC1E,MAAMC,MAAM,GAAGC,iBAAY,CAACF,OAAO,CAACG,OAAO,EAAEH,OAAO,CAACI,OAAO,CAAC,CAAA;EAE7D,IAAIC,OAAO,GAAG,KAAK,CAAA;EACnB,IAAIC,UAAU,GAAG,KAAK,CAAA;AACtB,EAAA,IAAIC,WAAW,GAAGC,OAAO,CAACC,GAAG,EAAE,CAAA;EAE/B,OAAO;AACLC,IAAAA,IAAI,EAAE,OAAO;AACbC,IAAAA,OAAO,EAAE,KAAK;IAEd,MAAMC,MAAMA,CAACC,UAAU,EAAE;AAAEC,MAAAA,OAAAA;AAAQ,KAAC,EAAE;AACpC;AACAR,MAAAA,UAAU,GAAGN,OAAO,CAACe,GAAG,KAAK,IAAI,IAAKf,OAAO,CAACe,GAAG,KAAK,KAAK,IAAID,OAAO,KAAK,OAAQ,CAAA;AACnFP,MAAAA,WAAW,GAAGM,UAAU,CAACG,IAAI,IAAIT,WAAW,CAAA;MAE5C,IAAI,CAACM,UAAU,CAACtC,OAAO,EAAEsC,UAAU,CAACtC,OAAO,GAAG,EAAE,CAAA;AAChDsC,MAAAA,UAAU,CAACtC,OAAO,CAAC0C,KAAK,GAAGC,gBAAgB,CAACL,UAAU,CAACtC,OAAO,IAAIsC,UAAU,CAACtC,OAAO,CAAC0C,KAAK,CAAC,CAAA;AAE3F,MAAA,MAAME,eAAe,GAAG,MAAMC,yBAAkB,CAAC;AAC/CC,QAAAA,cAAc,EAAER,UAAU;AAC1BG,QAAAA,IAAI,EAAET,WAAW,IAAIC,OAAO,CAACC,GAAG,EAAE;QAClCa,OAAO,EAAER,OAAO,KAAK,OAAO;QAC5BS,oBAAoBA,CAACC,OAAO,EAAE;UAC5B,OAAOxC,kBAAkB,CAACwC,OAAO,CAACC,OAAO,IAAI,EAAE,CAAC,CAAA;AAClD,SAAA;AACF,OAAC,CAAC,CAAA;;AAEF;AACA,MAAA,MAAMC,UAAU,GAAGpB,UAAU,GACzB,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,GAC7E,EAAE,CAAA;AAEN,MAAA,MAAMX,IAAI,GAAIkB,UAAU,CAASlB,IAAI,IAAI,EAAE,CAAA;AAE3C,MAAA,IAAIkB,UAAU,CAACc,IAAI,KAAK,MAAM,EAAE;AAC9B;AACA,QAAA,MAAMC,cAAwB,GAC5B,OAAOjC,IAAI,CAACH,UAAU,KAAK,QAAQ,GAAG,CAACG,IAAI,CAACH,UAAU,CAAC,GAAGG,IAAI,CAACH,UAAU,IAAI,EAAE,CAAA;QAEjF,IAAI,CAACG,IAAI,CAACkC,WAAW,IAAI,CAAC7B,OAAO,CAAC8B,GAAG,EAAE;UACrCnC,IAAI,CAACkC,WAAW,GAAG,OAAO,CAAA;AAC5B,SAAA;QAEAlC,IAAI,CAACoC,MAAM,GAAGpC,IAAI,CAACoC,MAAM,IAAI,EAAE,CAAA;AAC/BpC,QAAAA,IAAI,CAACoC,MAAM,CAACC,IAAI,GAAGrC,IAAI,CAACoC,MAAM,CAACC,IAAI,IAAI,EAAE,CAAA;QACzC,IAAI,CAACrC,IAAI,CAACoC,MAAM,CAACC,IAAI,CAACC,MAAM,EAAEpC,IAAI,CAAEqC,IAAqB,IAAK,UAAU,CAACvC,IAAI,CAACuC,IAAI,CAACC,QAAQ,EAAE,CAAC,CAAC,EAAE;UAC/FxC,IAAI,CAACoC,MAAM,CAACC,IAAI,CAACC,MAAM,GAAG,CAAC,IAAItC,IAAI,CAACoC,MAAM,CAACC,IAAI,CAACC,MAAM,IAAI,EAAE,GAAG,UAAU,CAAC,CAAA;AAC5E,SAAA;AAEA,QAAA,MAAMG,aAAa,GAAG7C,gBAAgB,CAACqC,cAAc,CAAC,CAAA;AACtD,QAAA,IAAIQ,aAAa,EAAE;UACjBzC,IAAI,CAACH,UAAU,GAAG,CAAC,GAAGoC,cAAc,EAAEQ,aAAa,CAAC,CAAA;AACtD,SAAA;AACF,OAAA;MAEA,OAAO;AACL;AACR;AACA;AACA;AACQ;AACA7D,QAAAA,OAAO,EAAE;AACP8D,UAAAA,UAAU,EAAE,CACV,OAAO,EACP,IAAI/B,UAAU,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,GACrC,IAAIO,UAAU,CAACc,IAAI,KAAK,MAAM,IAAI,CAAC3B,OAAO,CAAC8B,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAClE;AACDQ,UAAAA,MAAM,EAAEZ,UAAU;AAClBT,UAAAA,KAAK,EAAE,CAAC;AAAEpB,YAAAA,IAAI,EAAE,iBAAiB;AAAE0C,YAAAA,WAAW,EAAElE,iBAAAA;WAAmB,CAAA;SACpE;AACDmE,QAAAA,YAAY,EAAE;UACZrC,OAAO,EAAE,CAAC,GAAGuB,UAAU,EAAE,GAAGP,eAAe,CAACqB,YAAY,CAACrC,OAAO,CAAC;AACjEC,UAAAA,OAAO,EAAEe,eAAe,CAACqB,YAAY,CAACpC,OAAAA;SACvC;QACD0B,GAAG,EAAEX,eAAe,CAACW,GAAG;QACxB,IAAInC,IAAI,CAACoC,MAAM,GAAG;AAAEpC,UAAAA,IAAAA;SAAM,GAAG,EAAE;OAChC,CAAA;KACF;IAED8C,cAAcA,CAAC7B,MAAM,EAAE;MACrBP,OAAO,GAAGO,MAAM,CAACE,OAAO,KAAK,OAAO,IAAIF,MAAM,CAACe,IAAI,KAAK,YAAY,IAAK3B,OAAO,CAAC0C,GAAG,KAAK,KAAK,IAAI,CAAC1C,OAAO,CAAC2C,OAAO,EAAEC,QAAS,CAAA;KAC9H;IAEDC,SAASA,CAACC,EAAE,EAAE;AACZ,MAAA,IAAIA,EAAE,KAAKzE,iBAAiB,EAAE,OAAOyE,EAAE,CAAA;KACxC;IAEDC,IAAIA,CAACD,EAAE,EAAE;AACP,MAAA,IAAIA,EAAE,KAAKzE,iBAAiB,EAAE,OAAOG,WAAW,CAAA;KACjD;AAED,IAAA,MAAMwE,SAASA,CAACC,MAAM,EAAEH,EAAE,EAAEI,gBAAgB,EAAE;AAC5C,MAAA,MAAMC,KAAK,GAAGD,gBAAgB,IAAIA,gBAAgB,CAACpB,GAAG,CAAA;AACtD,MAAA,MAAMsB,oBAAoB,GAAG1E,YAAY,CAACoE,EAAE,CAAC,CAAA;AAE7C,MAAA,MAAMO,iBAAiB,GAAGrD,OAAO,CAACsD,UAAU,IAAI,EAAE,CAAA;AAClD,MAAA,MAAMC,aAAa,GAAGF,iBAAiB,CAACG,GAAG,CAAEC,SAAS;AACpD;MACA,OAAOA,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAAC,CAAC,CACzD,CAAC,CAAA;MAED,IAAI,CAACxD,MAAM,CAAC6C,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAACnD,IAAI,CAACmD,EAAE,CAAC,IAAIS,aAAa,CAACG,QAAQ,CAACN,oBAAoB,CAAC,CAAC,EAAE;AAChG,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;AAEA,MAAA,MAAMO,aAAa,GAAG,cAAc,CAAChE,IAAI,CAACmD,EAAE,CAAC,CAAA;AAE7C,MAAA,IAAIc,YAA8D,CAAA;MAElE,IAAI5D,OAAO,CAAC8B,GAAG,EAAE;AACf,QAAA,IAAIqB,KAAK,EAAE;AACTS,UAAAA,YAAY,GAAG;AAAEC,YAAAA,QAAQ,EAAE,KAAK;AAAEC,YAAAA,UAAU,EAAE,IAAA;WAAM,CAAA;AACtD,SAAC,MAAM;AACLF,UAAAA,YAAY,GAAG;AAAEC,YAAAA,QAAQ,EAAE,KAAK;AAAEC,YAAAA,UAAU,EAAE,IAAA;WAAM,CAAA;AACtD,SAAA;AACF,OAAC,MAAM;AACLF,QAAAA,YAAY,GAAG;AAAEC,UAAAA,QAAQ,EAAE,KAAK;AAAEC,UAAAA,UAAU,EAAE,KAAA;SAAO,CAAA;AACvD,OAAA;MAEAhB,EAAE,GAAGA,EAAE,CAAC/D,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;;AAE5B;AACA,MAAA,MAAMgF,+BAA+B,GAAG,cAAc,CAACpE,IAAI,CAACmD,EAAE,CAAC,IAAIO,iBAAiB,CAAC5D,IAAI,CAAEgE,SAAS,IAAK;AACvG,QAAA,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;AACjC,UAAA,OAAOA,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClC,SAAA;AAEA,QAAA,MAAM,CAACM,aAAa,EAAEC,gBAAgB,CAAC,GAAGR,SAAS,CAAA;AACnD,QAAA,IAAIO,aAAa,KAAKZ,oBAAoB,EAAE,OAAO,KAAK,CAAA;QAExD,OAAOa,gBAAgB,CAACC,UAAU,CAAA;AACpC,OAAC,CAAC,CAAA;MACF,MAAMC,OAAkF,GAAG,CACzF,KAAK;AACL;MACA,kBAAkB;AAClB;MACA,kBAAkB;AAClB;MACA,YAAY;AACZ;MACA,sBAAsB;AACtB;AACA,MAAA,4BAA4B,CAC7B,CAAA;AAED,MAAA,IAAIJ,+BAA+B,EAAE;AACnCI,QAAAA,OAAO,CAACC,IAAI,CAAC,YAAY,CAAC,CAAA;AAC5B,OAAA;AAEA,MAAA,MAAMC,IAA4B,GAAG;AACnCrD,QAAAA,IAAI,EAAET,WAAW;AACjB5B,QAAAA,QAAQ,EAAEmE,EAAE;AACZwB,QAAAA,cAAc,EAAExB,EAAE;AAClByB,QAAAA,OAAO,EAAE,CAAC,CAACC,KAAK,EAAE;AAAE,UAAA,GAAGZ,YAAY;AAAE,UAAA,IAAI5D,OAAO,CAACwE,KAAK,IAAI,EAAE;AAAE,SAAC,CAAC,CAAC;AACjEL,QAAAA,OAAO,EAAE9D,OAAO,IAAI,CAAC8C,KAAK,IAAI,CAACQ,aAAa,GAAG,CAAC,CAACc,YAAY,EAAE;AAC7DC,UAAAA,OAAO,EAAE,MAAM;AACfC,UAAAA,SAAS,EAAE,IAAI;AACfC,UAAAA,OAAO,EAAE5E,OAAO,CAAC2C,OAAO,EAAEiC,OAAO;AACjCC,UAAAA,QAAQ,EAAE7E,OAAO,CAAC2C,OAAO,EAAEkC,QAAAA;SAC5B,CAAC,CAAC,GAAG,EAAE;AACRC,QAAAA,GAAG,EAAE,KAAK;AACVC,QAAAA,UAAU,EAAE,IAAI;AAChBC,QAAAA,UAAU,EAAE,KAAK;AACjBC,QAAAA,OAAO,EAAE,KAAK;AACdC,QAAAA,UAAU,EAAE;AACVf,UAAAA,OAAAA;AACF,SAAA;OACD,CAAA;;AAED;MACA,IAAIgB,gBAAwC,GAAG,EAAE,CAAA;MAEjD,IAAInF,OAAO,CAACoF,KAAK,EAAE;AACjB,QAAA,IAAI,OAAOpF,OAAO,CAACoF,KAAK,KAAK,UAAU,EAAE;AACvC,UAAA,MAAMC,YAAY,GAAGrF,OAAO,CAACoF,KAAK,CAACnC,MAAM,EAAEH,EAAE,EAAE,CAAC,CAACK,KAAK,CAAC,CAAA;UACvDgC,gBAAgB,GAAGE,YAAY,YAAYC,OAAO,GAAG,MAAMD,YAAY,GAAGA,YAAY,CAAA;AACxF,SAAC,MAAM;UACLF,gBAAgB,GAAGnF,OAAO,CAACoF,KAAK,CAAA;AAClC,SAAA;AACF,OAAA;AAEA,MAAA,MAAMC,YAAY,GAAGE,4BAAc,CAACJ,gBAAgB,EAAEd,IAAI,CAA2B,CAAA;MAErF,MAAMmB,MAAM,GAAG,MAAMJ,gBAAK,CAACK,cAAc,CAACxC,MAAM,EAAEoC,YAAY,CAAC,CAAA;MAC/D,IAAI,CAACG,MAAM,EAAE;AACX,QAAA,OAAO5F,SAAS,CAAA;AAClB,OAAA;MACA,OAAO;AAAE8F,QAAAA,IAAI,EAAEF,MAAM,CAACE,IAAI,IAAI,EAAE;QAAElC,GAAG,EAAEgC,MAAM,CAAChC,GAAAA;OAAK,CAAA;AACrD,KAAA;GACD,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAStC,gBAAgBA,CAACD,KAAmB,GAAG,EAAE,EAAW;EAC3D,OAAO0E,KAAK,CAACC,OAAO,CAAC3E,KAAK,CAAC,GACvBA,KAAK,GACL9B,MAAM,CAAC0G,OAAO,CAAC5E,KAAK,CAAC,CAACuC,GAAG,CAAC,CAAC,CAAC3D,IAAI,EAAE0C,WAAW,CAAC,MAAM;IAAE1C,IAAI;AAAE0C,IAAAA,WAAAA;AAAY,GAAC,CAAC,CAAC,CAAA;AACjF;;;;"}
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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"}
@@ -52,7 +52,7 @@ function solidPlugin(options = {}) {
52
52
  }) {
53
53
  // We inject the dev mode only if the user explicitely wants it or if we are in dev (serve) mode
54
54
  replaceDev = options.dev === true || options.dev !== false && command === 'serve';
55
- projectRoot = userConfig.root || projectRoot;
55
+ projectRoot = userConfig.root;
56
56
  if (!userConfig.resolve) userConfig.resolve = {};
57
57
  userConfig.resolve.alias = normalizeAliases(userConfig.resolve && userConfig.resolve.alias);
58
58
  const solidPkgsConfig = await crawlFrameworkPkgs({
@@ -108,7 +108,7 @@ function solidPlugin(options = {}) {
108
108
  };
109
109
  },
110
110
  configResolved(config) {
111
- needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false && !options.refresh?.disabled;
111
+ needHmr = config.command === 'serve' && config.mode !== 'production' && options.hot !== false;
112
112
  },
113
113
  resolveId(id) {
114
114
  if (id === runtimePublicPath) return id;
@@ -157,17 +157,7 @@ function solidPlugin(options = {}) {
157
157
  if (extensionName !== currentFileExtension) return false;
158
158
  return extensionOptions.typescript;
159
159
  });
160
- const plugins = ['jsx',
161
- // import { example } from 'example' with { example: true };
162
- 'importAttributes',
163
- // () => throw example
164
- 'throwExpressions',
165
- // You know what this is
166
- 'decorators',
167
- // const { #example: example } = this;
168
- 'destructuringPrivate',
169
- // using example = myExample()
170
- 'explicitResourceManagement'];
160
+ const plugins = ['jsx'];
171
161
  if (shouldBeProcessedWithTypescript) {
172
162
  plugins.push('typescript');
173
163
  }
@@ -180,10 +170,7 @@ function solidPlugin(options = {}) {
180
170
  ...(options.solid || {})
181
171
  }]],
182
172
  plugins: needHmr && !isSsr && !inNodeModules ? [[solidRefresh, {
183
- bundler: 'vite',
184
- fixRender: true,
185
- imports: options.refresh?.imports,
186
- granular: options.refresh?.granular
173
+ bundler: 'vite'
187
174
  }]] : [],
188
175
  ast: false,
189
176
  sourceMaps: true,
@@ -198,20 +185,20 @@ function solidPlugin(options = {}) {
198
185
  let babelUserOptions = {};
199
186
  if (options.babel) {
200
187
  if (typeof options.babel === 'function') {
201
- const babelOptions = options.babel(source, id, !!isSsr);
188
+ const babelOptions = options.babel(source, id, isSsr);
202
189
  babelUserOptions = babelOptions instanceof Promise ? await babelOptions : babelOptions;
203
190
  } else {
204
191
  babelUserOptions = options.babel;
205
192
  }
206
193
  }
207
194
  const babelOptions = mergeAndConcat(babelUserOptions, opts);
208
- const result = await babel.transformAsync(source, babelOptions);
209
- if (!result) {
210
- return undefined;
211
- }
195
+ const {
196
+ code,
197
+ map
198
+ } = await babel.transformAsync(source, babelOptions);
212
199
  return {
213
- code: result.code || '',
214
- map: result.map
200
+ code,
201
+ map
215
202
  };
216
203
  }
217
204
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import * as babel from '@babel/core';\n// @ts-ignore\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';\n// TODO use proper path\nimport type { Options as RefreshOptions } from 'solid-refresh/babel';\nimport type { Alias, AliasOptions, FilterPattern, Plugin } from 'vite';\nimport { createFilter } 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 * @deprecated use `refresh` instead\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 refresh: Omit<RefreshOptions & { disabled: boolean }, 'bundler' | 'fixRender'>;\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 || projectRoot;\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 && !options.refresh?.disabled);\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']> = [\n 'jsx',\n // import { example } from 'example' with { example: true };\n 'importAttributes',\n // () => throw example\n 'throwExpressions',\n // You know what this is\n 'decorators',\n // const { #example: example } = this;\n 'destructuringPrivate',\n // using example = myExample()\n 'explicitResourceManagement',\n ];\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, {\n bundler: 'vite',\n fixRender: true,\n imports: options.refresh?.imports,\n granular: options.refresh?.granular,\n }]] : [],\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 result = await babel.transformAsync(source, babelOptions);\n if (!result) {\n return undefined;\n }\n return { code: result.code || '', map: result.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","refresh","disabled","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","fixRender","imports","granular","ast","sourceMaps","configFile","babelrc","parserOpts","babelUserOptions","babel","babelOptions","Promise","mergeAndConcat","result","transformAsync","code","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,6 +1,5 @@
1
1
  import * as babel from '@babel/core';
2
- import type { Options as RefreshOptions } from 'solid-refresh/babel';
3
- import type { FilterPattern, Plugin } from 'vite';
2
+ import type { Plugin, FilterPattern } from 'vite';
4
3
  /** Possible options for the extensions property */
5
4
  export interface ExtensionOptions {
6
5
  typescript?: boolean;
@@ -36,7 +35,6 @@ export interface Options {
36
35
  * This will inject HMR runtime in dev mode. Has no effect in prod. If
37
36
  * set to `false`, it won't inject the runtime in dev.
38
37
  *
39
- * @deprecated use `refresh` instead
40
38
  * @default true
41
39
  */
42
40
  hot: boolean;
@@ -118,8 +116,5 @@ export interface Options {
118
116
  */
119
117
  builtIns?: string[];
120
118
  };
121
- refresh: Omit<RefreshOptions & {
122
- disabled: boolean;
123
- }, 'bundler' | 'fixRender'>;
124
119
  }
125
120
  export default function solidPlugin(options?: Partial<Options>): Plugin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-solid",
3
- "version": "2.10.0",
3
+ "version": "2.10.1",
4
4
  "description": "solid-js integration plugin for vite 3/4/5",
5
5
  "type": "module",
6
6
  "files": [
@@ -39,7 +39,7 @@
39
39
  "@types/babel__core": "^7.20.4",
40
40
  "babel-preset-solid": "^1.8.4",
41
41
  "merge-anything": "^5.1.7",
42
- "solid-refresh": "^0.7.4",
42
+ "solid-refresh": "^0.6.3",
43
43
  "vitefu": "^0.2.5"
44
44
  },
45
45
  "devDependencies": {